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 😉

14 thoughts on “Jak ovládat MQTT z Loxone

  1. @L
    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 🙁

    1. No ten NodeRed a MQTT je už trochu vyšší dívčí. Ale je to pořád ještě docela snadné, mám tu na to návody a klidně se ptej, kdyby něco nebylo jasné.

      Ohledně levnější varianty, existuje swifitch projekt, který dal dohromady Martin Doubek ještě s jedním známým. Komponenty za pár korun, ale musíš si to složit sám a nechat vyrobit plošná v Číně. 🙂

      Pak je varianta různý relatka z Číny s tím prehranym SW.

      A nebo pak asi docela dobře řešení jsou zigbee zásuvky, ale potrebujes rozchodit zigbee to MQTT bránu, pak MQTT server, NodeRed a propojit to do loxone (návod na to je na blogu taky).

      Úplně nějaká snadná varianta mne teď moc nenapadá. Bohuzel, snadná řešení jsou zatím pořád takto dráha, protože jich moc není 🙁

    2. 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.

      1. Ta shelly zasuvka je kompletne “offline” a jede jen v ramci lokalni wifi site? Nebo to ma zase nejake cloudy a dalsi ptakoviny, takze to komunikuje ven?

        Mne se na tech zigbee zasuvkach libi, ze nemuzou komunikovat s nicim jinym, nez se zigbee branou.

        Co by to z meho pohledu chtelo, je nejaka zigbee 2 ethernet brana na DIN listu. To mi chybi.

        Zigbee jako protokol je na ruzna svetla/zasuvky mnohem lepsi nez wifi. Bohuzel by to chtelo i rozumne zigbee brany.

        1. 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ě 🙂

        2. 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é.

        3. 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.

          1. jasne, ta nezabezpecena wifi je klasika, to mi ani tak nevadi.

            spis mi pak vadi, ze jakmile to dostane pristup do site, tak se to zacne pripojovat na nejaky cinsky cloud a ty nevis,co vsechno to v tve siti dela.

            co se tyka te velikosti, tak na zigbee je i spoustu jinych relatkovych veci, vcetne ruznych dimmeru a tak.

            1. 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.

              1. jojo, izolace podobnych wifi zarizeni pres VLAN je asi nezbytnost, ale jak pises, uz to neni neco, co zvladne kazdy.

                Ona ta wifi je proste univerzalni a tak je snazsi to pouzivat. Ja mam jen proste problem s tim, mit zbytecne chytrou zasuvku, kdyz zigbee prokol je na to staveny, ma mensi spotrebu a jeste je tam minimalni (nebo temer zadny) prostor pro nejaky utok.

                Jenze, je to o te snadosti. Az budou univerzalni zigbee brany s hezkym GUI, tak to budou pouzivat vsichni. Do te doby holt prevlada wifi.

                1. 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.

            2. Čí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

              1. 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.

  2. 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).

Leave a Reply

Your email address will not be published. Required fields are marked *


Subscribe without commenting