Shelly a OpenHAB
Značka Shelly je známa svými produkty komunikujicími hlavně přes WiFi a zahrnujicími ovládané zásuvky, relé pod vypínače, relé pro ovládaní žaluzíí a mnoho dalších produktů. Jedna z výhod pro nasazení je možnost načítat a taky ovládat tyto zařízení pomocí univerzálního protokolu MQTT. Napříč existujícímu addonu pro OpenHAB i Home Assistant si ukážeme jak používat Shelly zařízení bez instalace jakéhokoliv rozšíření.
Hardware
Shelly zařízení podporující WiFi a MQTT (v tomto tutoriálu Shelly Plus Plug S, Shelly Smoke Sensor Plus)
Pi-Home - pokud nemáte, viz sekci Jak na to
Software
OpenHAB
Addon JSONPath Transofrmation (Settings->Bindings->Search JSON)
Úvodem
Shelly Plus Plug S
Je napájen ze sítě, je pořád online na WiFi a lze jej ovládat přes MQTT.
Shelly Smoke Plus
Je napájen z baterie, po dvou minutách se uspí a vzbudí se až při požáru, rychle připojí a odešle MQTT správu. Po dobu alarmu je možné jej vypnout přes webové rozhraní. Není možné ovládat sirénu externě! (Škoda, hodilo by se také možnost externího USB napájení a funkce always online)
Využijeme již nainstalovaný Pi-Home v základu s existujícím MQTT serverem. Jako první připojíme zařízení Shelly k napájení, v tomto případě Shelly Plus Plug S zapojíme do zásuvky. Objeví se nám WiFi síť s názvem "ShellyPLusPLug.......". Připojíme se k dané síti a zadáme do prohlížeče univerzální adresu pro Shelly a to http://192.168.33.1
Po načtení okna nastavte v Settings->WiFi vaši domácí WiFi a uložte. Z vašeho routeru zjistíte adresu Shelly a můžete zde také nastavit tuto adresu jako statickou což doporučuji. Zařízení by se mělo připojit k vaší WiFi. Pak lze v Settings-> MQTT zapnout protokol MQTT. Adresa serveru je adresa vašeho Raspberry Pi s OpenHABem a MQTT serverem.
*U Shelly Smoke zaškrtněte RPC status not. over MQTT, budeme odsud odchytavat stav alarmu
Můžete také v Settings authentication zaheslovat přístup k Shelly rozhraní a pak vypnout Bluetooth a AP funkci ať Shelly zbytečně nesvítí nezabezpečenou sítí. Po uložení by Shelly již mělo začat posílat po MQTT nĚjaké informace. Na odchycení těchto informací pro diagnostické účely lze použít jakýkoliv MQTT listener nebo jednoduše přejít přes SSH na Raspberry Pi a zadat příkaz:
sudo mosquitto_sub -h localhost -t '#' -v -u openhabian -P vašeMQTTheslokserveru
Pak uvidíte veškerou MQTT komunikaci a mezi ní i něco takového:
Pozor: Shelly může být Generace 1 nebo 2. Dle toho se může měnit struktura zprávy MQTT. Níže ukážeme reálný příklad pro obě varianty. Na obrázku je Shelly Gen2 MQTT message
Shelly Generace 1
V OpenHAB přejděte do Things, přidejte nový (ikona plus), vyberte MQTT Binding -> Generic MQTT Thing. V Bridge vyberte svůj MQTT Broker, zadejte nějaké smysluplné ID a popis a vytvořte Thing. Pak si otevřete záložky "Code" a vložte následující kód. Změňte případně hlavičku dle potřeby a hlavně změňte ID na vaše reálne Shelly ID. Najdete jej na webovém rozhraní nebo v MQTT topicu z předešlého bodu.
Shelly Plus Plug S
UID: mqtt:topic:pihome:shelly
label: Shelly zásuvka
thingTypeUID: mqtt:topic
configuration:
payloadNotAvailable: off
payloadAvailable: on
bridgeUID: mqtt:broker:pihome
location: MQTT
channels:
- id: Relay0
channelTypeUID: mqtt:switch
label: Relay0
description: null
configuration:
commandTopic: shellies/shellyplug-s-XXXXXXXXX/relay/0/command
stateTopic: shellies/shellyplug-s-XXXXXXXXXXX/relay/0
off: off
on: on
Uložte a vytvořte na novém Channel novou položku Add and Link Item a pojmenujte jej nějak. Vznikne vám položka typu switch (přepínač), která by měla ovládat danou zásuvku. Na tuto novou položku pak lze v OpenHAB aplikovat různé pravidla kdy se zásuvka má sepínat.
Shelly Generace 2
V OpenHAB přejděte do Things, přidejte nový (ikona plus), vyberte MQTT Binding -> Generic MQTT Thing. V Bridge vyberte svůj MQTT Broker, zadejte nějaké smysluplné ID a popis a vytvořte Thing. Pak si otevřete záložky "Code" a vložte následující kód. Změňte případně hlavičku dle potřeby a hlavně změňte ID na vaše reálne Shelly ID. Najdete jej na webovém rozhraní nebo v MQTT topicu z předešlého bodu.
Shelly Plus Plug S
UID: mqtt:topic:pihome:shellyplusplugs-xxxxxxxxxx
label: Shelly PLug SW001
thingTypeUID: mqtt:topic
configuration:
payloadNotAvailable: off
payloadAvailable: on
bridgeUID: mqtt:broker:pihome
location: MQTT
channels:
- id: relay0
channelTypeUID: mqtt:switch
label: Power Switch
description: null
configuration:
commandTopic: shellyplusplugs-xxxxxxxxxxxx/rpc
formatBeforePublish: '{"id":0, "src":"MQTT","method":"Switch.Set", "params":{"id":0,"on":%s}}'
stateTopic: shellyplusplugs-xxxxxxxxxxxxxx/status/switch:0
transformationPattern: JSONPATH:$.output
off: "false"
on: "true"
Shelly Smoke Plus
- id: relay1
channelTypeUID: mqtt:switch
label: Fire alarm 1
description: null
configuration:
commandTopic: shellyplussmoke-xxxxxxxxx/rpc
formatBeforePublish: '{"id":0, "params":{"id":0,"alarm":%s}}'
stateTopic: shellyplussmoke-xxxxxxxxxxx/status/smoke:0
transformationPattern: JSONPATH:$.alarm
off: "false"
on: "true"
Uložte a vytvořte na novém Channel novou položku Add and Link Item a pojmenujte jej nějak. Vznikne vám položka typu switch (přepínač), která by měla ovládat danou zásuvku. Na tuto novou položku pak lze v OpenHAB aplikovat různé pravidla kdy se zásuvka má sepínat.
Příklady použití:
- spínaní zásuvek v interiéru (vánoční stromek, světla, čerpadla atd.)
- spínaní topení, bojleru v závislosti na FVE (je potřeba použít relé na DIN nebo robustní zásuvku alespoň 16A)
- upgrade klasických vypínačů na chytré přes Shelly relé
- ovládaní žaluzíí přes Shelly relé
- alarm požáru - notifikace + automatické vypnutí elektřiny
Přidat komentář