Jak ovládat MQTT z Loxone

Jak ovládat MQTT z Loxone

Dnešní článek je třetí z mé třídílné minisérie pro začátečníky o tom, jak propojit Loxone s externími systémy. Dnes to bude o komunikaci s MQTT. Předchozí dva se týkaly REST API a ModbusTCP. Všechny tři způsoby využití budu ukazovat na chytrých zásuvkách Netio, které tyto protokoly podporují.

V případě MQTT je to s Loxone trochu složitější. Bohužel Loxone nepodporuje MQTT napřímo (není to zřejmě v jejich ekonomickém zájmu), takže je potřeba si pomoci NodeRED aplikací. V té lze programovat dodatečnou logiku a pomocí například REST API komunikovat pak vůči Loxone.  V tomto článku se už nebudu zabývat základy NodeRED, jelikož jsem o nich psal návody ve starších článcích zde: Zigbee2MQTT a ve článku NodeRED – Propojení všeho se vším. Stejně tak nebudu extra vysvětlovat MQTT, připojení k němu či instalaci serveru, která je popsaná ve článku MQTT Message Broker a Propojení MQTT a Loxone.

 

Takto nějak vypadá cíl našeho dnešního snažení. Stejně jako v případě Modbusu a RESTu budeme implementovat zapnutí a vypnutí zásuvky, tentokrát pomocí MQTT (za pomocí NodeRED a REST API volání).

Podobně jako v případě ModbusTCP propojení začneme tím, že si vyzkoušíme fungování samotného MQTT protokolu a dostupnost cílového zařízení. V případě MQTT používám aplikaci MQTT Explorer, kde se můžete přípojit k Vašemu MQTT serveru a sledovat, jaké topicy jsou k dispozici a případně testovat odesílání topiců vlastních.

Abychom otestovali, že naše cílové zařízení (v tomto případě chytrá zásuvka) naslouchá MQTT zprávám, zkusíme odeslat zapínací příkaz. V tomto případě je to vystavení topicu netio/PowerCable-mqtt-8E/output/1/action s hodnotou 1. Konkrétní nastavení záleží vždy na cílovém zařízení a je potřeba postupovat dle dokumentace. Dokumentace k Netio MQTT zásuvkám je k dispozici zde.

Pokud nám zařízení po MQTT komunikuje, přejdeme do fáze dvě a tím je rozchození komunikace z NodeRED směrem k MQTT. Abychom opět nejprve otestovali základní funkčnost, uděláme si jednoduchý projekt, kde budeme mít dvě tlačítka, která nám budou posílat stav 1 a 0 směrem do MQTT.

Pro tyto účely vložíme prvek MQTT output, nastavíme mu cílový server a topic. Hodnota topicu se pak do MQTT Output node dostane z “Inject” prvku, do kterého nastavíme hodnoty 1 a 0. Dáme deploy na projektu a otestujeme, že po kliknutí na inject prvky se relé zapne či vypne.

Pokud opět funguje vše jak má, pokročíme dále. Testovací vstupy 1/0 si v projektu ponecháme a přídáme dva vstupní REST API pointy. Jednomu dáme adresu /netio/zasuvka/0 a druhému /netio/zasuvka/1. Tento vstup pak napojíme na template prvek, který bude posílat hodnotu 1 a 0 směrem do MQTT output prvku. Zároveň si HTTP vstup pošleme i na debug výstup a samotný HTTP požadavek ukončíme prázdnou odpovědí pomocí HTTP response.

Samozřejmě by to šlo celé udělat mnohem více elegantně, mít například jen jeden REST API vstup, akceptovat vstup ne přes GET, ale POST jako hodnotu 0/1, nebo dokonce třeba “device=1,state=0” a vstupní data rovnou parsovat a posílat směrem do MQTT output.  Cílem této ukázky je ale přehlednost a pokud bych do toho motal ještě parsovaní v Javascriptu, myslím, že by to přehlednosti úplně nepomohlo :).

Takto upravený projekt dáme opět uložit a vyzkoušíme. Pokud vše šlo podle plánu, můžeme nyní pomocí URL adresy vedoucí na náš NodeRed a přidáním “/netio/zasuvka/1” či “/netio/zasuvka/0”  zapínat a vypínat zařízení pověšené na MQTT.

A nyní už zbývá poslední krok, napojit Loxone na náš NodeRED API Restpoint. Tento postup je nyní už naprosto identický s tím, co bylo popisováno v prvním článku o komunikaci mezi Loxone a REST API. Proto to nyní vezmu trochu rychleji. Vytvoříme nový virtuální výstup, který nasměrujeme tentokrát směrem k NodeRED. V mém případě http://nodered.dum.

Do virtuálního výstupu přidáme “Příkaz virtuálního výstupu”, kterému dáme instrukci k zapnutí a vypnutí dle našeho nastavení v NodeRED. V mém případě “/netio/zasuvka/1” a “/netio/zasuvka/0”.

Takto připravený virtuální příkaz pak už jen opět vytáhneme do Loxone plánu a propojíme s tlačítkem. A tím máme cestu z Loxone k MQTT ukončenou.

Tentokrát byla bohužel cesta z Loxone do MQTT trochu složitější. Je to dáno tím, že Loxone úplně neuznává většinu nových formátu (MQTT, Zigbee,…) a razí si jen své proprietární technologie. Naštěstí tu ale máme možnost skrz RestAPI si z/do NodeRED dostat jakákoli data potřebujeme, takže přesto lze MQTT použít.

Pomohl Vám náš blog? Chcete nás podpořit? I málo udělá radost 😉
Become a patron at Patreon!
0 0 votes
Hodnocení články
Subscribe
Notify of
guest

14 Komentáře
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
dalibor
3 years ago


tak ti teda “pěkně děkuju” 🙂 už jsem si myslel, sotva pochopivše základy co s NodeRed ( viz. primitivní propojení ve dvou článcích co jsem dal na wiki ) a už si zase připadám jako nedochůdče ( přečetl jsem si MQTT návody “bé-bé-bé-bé” ). Ale to je v dobrém samozřejmě. Ono dávat zdarma svoje těžce nabyté zkušenosti ( čas and peníze ) není dnes úplně běžné… Takže díky a pusu 🙂
Ještě bych měl přání: ty zásuvky jsou možná supper ale cena tomu taky odpovídá. Je nějaká varianta zásuvky do 500,- která se dá přes NodeRed připojit po fifině do Loxone aniž bych ji musel rozdělávat a trapně ( protože v tom nemám praxi ) přehrávat SW ( jen zapne vypne a nic víc )?
S tím asi zápasíme všichni protože … “tu lampičku bych taky chtěla dát do Loxona a proč to má stát dvaapůl litru” ?!?! Co to je za “hňupy že je to tak drahý” … těžko na to hledám argumenty 🙁

Petr
Guest
Petr
3 years ago
Reply to  dalibor

Levnější variantu z ČR jsem tu zmínil u přechozího článku. Nejjednosušší je Shelly S, je tedy o něco dražší než 500 a pozor na chybějící kolík. Pak jsou i varianty do krabičky a tam se vejdeš i cenou. Ale chce to práci. Například zde: https://www.alza.cz/search.htm?exps=shelly

Ty čínské se musí přehrát, ale s použitím raspberry to jde i bez pájení. Pak bude cena pod 500 (pokud tedy nepřičtu cenu RPI k jednomu kusu)

Shelly má i hlídání teploty, to ty čínské asi ne. Pro mě nepochopitelně ty zásuvky mají relé na nuláku, takže fáze je pořád zapnutá. Leda v zásuvce prohodit fázi a nulák. Norma to umožňuje, ale osobně bych touto cestou nešel.

_Petr_
3 years ago
Reply to  L

Po zapnutí MQTT, které to standardně podporuje, se cloud vypne. https://shelly.cloud/shelly-plug-s/

Taky se mi líbilo Zigbee, ale nakonec bych řekl, že řešení přes WiFi a MQTT je lepší. Na rozdíl od zásuvky Osram, kterou mám, je to výrazně menší, hezčí a ještě to měří spotřebu. Navíc se to dá připojit i přes VPN a mít to v jiné lokalitě 🙂

_Petr_
3 years ago
Reply to  L

Narazil jsem na to náhodou, když jsem našel MQTT Gateway pro Loxberry a tam byla přednastastavená komunikace s Shelly produkty. Rozchození je pak opravdu jednoduché.

_Petr_
3 years ago
Reply to  L

Abych to upřesnil. Když zásuvku nebo modul Shelly poprvé zapneš, tak udělá nezybezpečené APčko, ke kterému se přihlásíš, otevře se okno prohlížeše s webovým rozhraním a můžeš si nastavit připojení do vlastní WiFi. Pak už to můžeš přes web ovládat případně navíc nastavit spojení na MQTT.

_Petr_
3 years ago
Reply to  L

To jsme si úplně nerozumněli.

Ale nejdřív pro upřesnění. Shelly dělají Bulhaři. Možná v Číně, ale to už je jiná.

Nezabecpečené AP zásuvky jsem uváděl jako výhodu, po nakonfigorování už je vypnutá.

1. Ty čínské chtějí nainstalovat aplikaci, z ní se pak dá připojit k zásuvce a nakonfigurovat jí. Nikdy jsem to nezkusil, tak nevím co se děje dál ani jestli je bez internetu zprovozníš.
2. Shelly zprovozníš lokálně a internet ani aplikaci nepotřebují

K zabezpečení volím trochu složitější přístup. WiFi zařízení mi nesmí do počítačové LAN, takže mají vlastní SSID a není problém jin na routeru zakázat volat někam domů. Prostě se dostanou jen na port MQTT. Takhle si ale asi každý neudělá, takže riziko tu určitě je.

Aleq
3 years ago
Reply to  L

Shelly (čínský hw s evropským fw) má cloud volitelný. Lze zapnout nebo vypnout. Dokonce nejde zapnout při současné aktivaci MQTT. A je flash-friendly, tj. pokud by někdo chtěl Tasmotu, mají oficiální postup jak to udělat. Za mě jsou Shelly potěšující produkt.

_Petr_
3 years ago
Reply to  L

Čínskou jsem zkusil také, ale protože chtěla aku v telefonu, tak jsem jí na chvíli odložil. Pak jsem našel jak se dá přes RPI nahrát tasmota a dál už to funguje podobně jako Shelly. Navíc s hromadou konfiguračních parametrů včetně kalibrace měření spotřeby a napětí. Celkem pěkně udělaný FW. Našel jsem na Ali i verzi s kolíkem, tak jsem objednal vzorek – https://www.aliexpress.com/item/33038406713.html

msk
msk
3 years ago
Reply to  _Petr_

U tychto cinskych krabiciek plati pravidlo, ze prvy kus (kludne neopravitelne) rozoberiem a skontrolujem vnutro. Pokial vyhovuje, objednavam dalsie kusy, inak davam na blacklist a hadzem do kosa. Toto pravidlo som zacal uplatnovat po tom, co som kupil v baumaxe nocne svetielka do zasuvky (5ks), pricom hned prve 2 ks po zapojeni do zasuvky strelili. Skoncil som s tym az na COI, kde mi technicka povedala ze je to zjavna mrdka a ze to preveria. Co viem tak spravili vlastny nakup, zbuzerovali bauamax, ten im dodal nejaky ROHS/EU papier a nasledne to uzavreli ze vsetko ok lebo papier.

Zhruba niekedy od tej doby intenzivne nenavidim EU a vsetko s nou spojene.

radek
Guest
radek
3 years ago

Zkoušel jsi klasickou Sonoff S26? Na ali ji koupíš za 11,5$ (když chytneš akci tak i za 10$).
Buď teda musíš flashnout firmware (což není až taková hrůza). Případně existuje i add-on do HomeAssitant (https://github.com/AlexxIT/SonoffLAN) kde nneí potřeba ani flash firmware a z něj to už jednoduše dostaneš do Loxone (přes NodeRed).

14
0
Would love your thoughts, please comment.x
()
x