Ovládání garážových vrat v Homekitu

Pokud máte garážová vrata nebo elektricky ovládanou branku či bránu, určitě jste přemýšleli, jak je pochytřit tak, aby je bylo možné implementovat do nějaké formy řízení (v ideálním případě do oblíbeného Node-RED). A přesně to si ukážeme v dnešním článku při vstupní investici pod 1000 Kč.

Cílem je „propálit“ stávající ovládání garážových vrat do aplikace Domácnost pro možnost ovládání z telefonu, hodinek atd…

Výchozí vybavení:

  • Pohon vrat Genius Zodiac
  • 2x dveřní/okenní senzor Aquara
  • 1x Shelly 1
  • …a tradiční sestava s IOTstackem – ConBeeII, Node-Red, Mosquitto.

Shelly 1 jsem použil pro variabilitu napájení – chtěl jsem využít 24 VAC napájení z pohonu vrat a zároveň bylo potřeba využít bezpotenciálového výstupu, který Shelly 1 má (a kromě toho byly z důvodu výprodeje nedávno v akci). Aktuálně byla první generace Shelly 1 nahrazena druhou generací s označením Shelly Plus 1.

Pohony vrat/bran jsou obvykle velmi podobné napříč různými výrobci a snad všechny mají svorky pro ovládání tlačítkem na stěně. A přesně těchto svorek využijeme pro napojení bezpotenciálového spínacího relé Shelly. Inspirovat se můžete na fotografii níže (ale už se rozhodně neinspirujte barvou vodičů – bohužel jsem jiné neměl k dispozici):

Dva senzory Aquara jsou použity pro indikaci vrat v horní i dolní poloze – jedno čidlo je umístěno na spodní úvrati vrat, druhé na horní a mohu si tedy do Homekitu poslat správnou informaci o tom, zda jsou vrata plně otevřená, či zavřená.

Prvním krokem je tedy spárování senzorů v aplikaci PhosconApp a jejich korektní umístění tak, aby korektně hlásily polohu (samozřejmě, v horní poloze hlásí senzor „sepnuto“ což znamená „otevřeno“).

Dále si připravíme Shelly 1, podle návodu jej zprovozníme, přihlásíme k WiFi síti a ve webovém rozhraní jej odpojíme od cloudu a zadáme přihlašovací údaje k mqtt serveru (v mém případě Mosquitto).

Protože pohon brány Zodac rozeznává jen impuls a nerozlišuje, zda chci bránu otevřít, či zavřít (po pravdě jsem nestudoval dělá-li to nějaký jiný pohon jinak) musíme si nastavit délku doby po kterou zůstane relé sepnuté, než se zase rozepne, nastavil jsem si 1 sekundu – tedy po pokynu ON čeká relé 1 sekundu a zase se rozepne.

Zapojení Shelly bylo bez nutnosti přehazování jumperu, tedy stačilo připojit správně polarizované napájení a výstup I-O připojíme ke svorkám tlačítka – viz obrázek (musel jsem použít wago svvorku, jde mi tam ovládání z tlačítka na zdi a ještě z přijímače CAME, který tam mám kvůli ovládání vjezdové brány.) PEN vodiče prosím nechte bez komentáře, nechtělo se mi párat další kus kabelu 🙂

Pak už následuje jen práce v NODE-RED – výstupy z čidel Deconz vyfiltrujeme pouze pro hodnotu true a v dalším – nodu Change si změníme payload na CurrentDoorState: 1 respektive 0 podle toho, ze kterého čidla sbíráme payload a co chceme, aby nám tlačítko v Domácnosti ukázalo. Je třeba přidat i TargetDoorState pro případ otevření tlačítkem na stěně, nebo DO, bez toho by tlačítko v HK zůstalo zmatené a ukazovalo by jen „Otvírání“ nebo „Zavírání„.

Tímto máme vyřešeno zobrazení.


Následuje vlastní ovládání – tedy na výstup z HomeKit tlačítka navážeme template, který do mqtt out nodu pošle povel „on“ jak víme, po jedné sekundě se relé opět rozepne, takže se o to dál nemusíme starat.

V plánu je ještě dodělat trigger, který zahlásí chybu v případě, že se do 25 sekund vrata neotevřou, nebo nezavřou.

A celé flow, jako obvykle.

[{"id":"fe16489c4b9e1f17","type":"tab","label":"Garážová vrata","disabled":false,"info":"","env":[]},{"id":"d632e91fd9ab1ce2","type":"deconz-input","z":"fe16489c4b9e1f17","name":"Garáž Vrata Dole","topic":"","config_version":2,"server":"e221de0a.a80488","statustext":"","statustext_type":"default","search_type":"device","device_list":["sensors/uniqueid/00:15:8d:00:01:e4:eb:29-01-0006"],"device_name":"","query":"{}","outputs":1,"output_rules":[{"type":"state","format":"single","output":"always","onstart":true,"payload":["open"],"uniqueId":"ui-id-5"}],"x":208,"y":432,"wires":[["6fa7cedfe0ceb5b2"]]},{"id":"f58863939d629c83","type":"deconz-input","z":"fe16489c4b9e1f17","name":"Garáž Vrata Nahoře","topic":"","config_version":2,"server":"e221de0a.a80488","statustext":"","statustext_type":"default","search_type":"device","device_list":["sensors/uniqueid/00:15:8d:00:01:e4:eb:3a-01-0006"],"device_name":"","query":"{}","outputs":1,"output_rules":[{"type":"state","format":"single","output":"always","onstart":true,"payload":["open"]}],"x":202,"y":544,"wires":[["fa03a60dc9b3c4be"]]},{"id":"c7bae47aa989ba87","type":"debug","z":"fe16489c4b9e1f17","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":906,"y":416,"wires":[]},{"id":"6fa7cedfe0ceb5b2","type":"switch","z":"fe16489c4b9e1f17","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":462,"y":432,"wires":[["fb4c06ed4780e4f9"]]},{"id":"fb4c06ed4780e4f9","type":"change","z":"fe16489c4b9e1f17","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.CurrentDoorState","tot":"msg"},{"t":"change","p":"payload.CurrentDoorState","pt":"msg","from":"false","fromt":"bool","to":"1","tot":"num"},{"t":"set","p":"payload.TargetDoorState","pt":"msg","to":"1","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":656,"y":432,"wires":[["c7bae47aa989ba87","cbb6e580c561f7df"]]},{"id":"bc638f6a46ceb6c9","type":"debug","z":"fe16489c4b9e1f17","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":902,"y":544,"wires":[]},{"id":"fa03a60dc9b3c4be","type":"switch","z":"fe16489c4b9e1f17","name":"","property":"payload","propertyType":"msg","rules":[{"t":"false"}],"checkall":"true","repair":false,"outputs":1,"x":458,"y":544,"wires":[["41df5a8f0aeaba5f"]]},{"id":"41df5a8f0aeaba5f","type":"change","z":"fe16489c4b9e1f17","name":"","rules":[{"t":"move","p":"payload","pt":"msg","to":"payload.CurrentDoorState","tot":"msg"},{"t":"change","p":"payload.CurrentDoorState","pt":"msg","from":"false","fromt":"bool","to":"0","tot":"num"},{"t":"set","p":"payload.TargetDoorState","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":652,"y":544,"wires":[["bc638f6a46ceb6c9","cbb6e580c561f7df"]]},{"id":"cbb6e580c561f7df","type":"homekit-service","z":"fe16489c4b9e1f17","isParent":true,"hostType":"0","bridge":"f58cd248.29b9e8","accessoryId":"","parentService":"","name":"Garage Door","serviceName":"GarageDoorOpener","topic":"","filter":false,"manufacturer":"NRCHKB","model":"1.5.0","serialNo":"Default Serial Number","firmwareRev":"1.5.0","hardwareRev":"1.5.0","softwareRev":"1.5.0","cameraConfigVideoProcessor":"ffmpeg","cameraConfigSource":"","cameraConfigStillImageSource":"","cameraConfigMaxStreams":2,"cameraConfigMaxWidth":1280,"cameraConfigMaxHeight":720,"cameraConfigMaxFPS":10,"cameraConfigMaxBitrate":300,"cameraConfigVideoCodec":"libx264","cameraConfigAudioCodec":"libfdk_aac","cameraConfigAudio":false,"cameraConfigPacketSize":1316,"cameraConfigVerticalFlip":false,"cameraConfigHorizontalFlip":false,"cameraConfigMapVideo":"0:0","cameraConfigMapAudio":"0:1","cameraConfigVideoFilter":"scale=1280:720","cameraConfigAdditionalCommandLine":"-tune zerolatency","cameraConfigDebug":false,"cameraConfigSnapshotOutput":"disabled","cameraConfigInterfaceName":"","characteristicProperties":"{}","waitForSetupMsg":false,"outputs":2,"x":902,"y":480,"wires":[["d0f9acb023afc65d"],[]]},{"id":"931299c852f8728f","type":"debug","z":"fe16489c4b9e1f17","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1318,"y":416,"wires":[]},{"id":"15e24b3d683e2bf4","type":"mqtt out","z":"fe16489c4b9e1f17","name":"","topic":"shellies/Garaz/relay/0/command","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"fa3e9351.1808f8","x":1374,"y":480,"wires":[]},{"id":"d0f9acb023afc65d","type":"template","z":"fe16489c4b9e1f17","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"on","output":"str","x":1124,"y":480,"wires":[["931299c852f8728f","15e24b3d683e2bf4"]]},{"id":"e221de0a.a80488","type":"deconz-server","name":"Deconz","config_version":1,"ip":"192.168.1.163","port":"8090","ws_port":"443","secure":false,"polling":"15"},{"id":"f58cd248.29b9e8","type":"homekit-bridge","bridgeName":"Deploy","pinCode":"111-11-112","port":"","allowInsecureRequest":false,"manufacturer":"NRCHKB","model":"1.2.0","serialNo":"Default Serial Number","firmwareRev":"1.2.0","hardwareRev":"1.2.0","softwareRev":"1.2.0","customMdnsConfig":false,"mdnsMulticast":true,"mdnsInterface":"","mdnsPort":"","mdnsIp":"","mdnsTtl":"","mdnsLoopback":true,"mdnsReuseAddr":true,"allowMessagePassthrough":false},{"id":"fa3e9351.1808f8","type":"mqtt-broker","name":"Mosquitto","broker":"192.168.1.163","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthRetain":"false","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closeRetain":"false","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willRetain":"false","willPayload":"","willMsg":{},"sessionExpiry":""}]
Jedna myšlenka na „$ s“
  1. Super. Jen doplním, že než používat Aqara (nebo jakákoli jiná Zigbee čidla), je lépe použít GPIO PINy na samotných spínacích modulech, které je možno osadit jazýčkovým relé a na bránu dát jen magnety. B aqara čidlech dřív nebo později doudou baterie a vůbec v zimě. Kontakt s jazýčkovým relé stojí pár korun a nepotřebuje externí napájení. Já jsem to rozjel přes upravenej Sonoff Mini. V nouzi stačí i jeden senzor, kterej hlídá bránu zavřenou.

Zanechat komentář