Ovládání garážových vrat v Homekitu
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“
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.