Migrace NodeRED z node-red-contrib-loxone na UDP/HTTP vstupy/výstupy

Migrace NodeRED z node-red-contrib-loxone na UDP/HTTP vstupy/výstupy

Tohle bude trochu víc technický článek a hodim si ho sem hlavně i pro sebe, abych po čase zas věděl, jak mám ty vstupy a výstupy konfigurovat :). Už tentokrát mi dost pomohl tento můj historický článek, kde sem podobný problém jednou řešil.

Důvod celé migrace byl, že tento na první pohled skvělý plugin se občas odpojil od Loxone a už se nedokázal sám připojit zpět. Většinou se odpojil v situaci, kdy se Loxone svévolně zrestartoval a nebo když jsem dělal nějaké změny a vícekrát za sebou do něj nahrával nový LoxConfig. Bohužel, komponenta nejen že se neumí nějak snadno sama připojit, ale nemá ani žádný vstup/příkaz na to, aby se reconnect dal ručně vyvolat. Zkoušel jsem bug párkrát reportovat na githubu, ale bohužel marně. Poslední verze je rok a půl stará, takže to vypadá, že je možná plugin i lehce opuštěný.

Jediné řešení vždy bylo připojit se do NodeREDu, pohnout nějakým prvkem a dát znovu deployment. V tu chvíli se prvek krásně znovu připojil. Drobnost, ale vysvětlovat ženě, jak se má připojit k NodeRED, nebo večer před koupáním vždy běžet k počítači, protože nefungují světla nebylo úplně to pravé ořechové.

A tak i díky podnětům z komentářů pod minulým článkům jsem to hecl a rozhodl se včera zkusit pár zásuvek/světel předělat na UDP/HTTP vstupy/výstupy. Celý proces by trval určitě o dost kratší dobu, kdyby můj MS1 nedělal upload každého LoxConfigu cca minutu a hlavně, kdyby LoxConfig měl pořádně zdokumentované parametry vstupů + k nim měl nějaký debugging. Ale to už jsou spíš mokré sny 🙂

A tak pro sebe i ostatní sem nahážu pár ukázek, jak UDP/HTTP vstupy natavit na straně Loxone i NodeRED, ať to příště už nemusím zas složitě dohledávat. Pojďme na to:

Loxone Virtual UDP input / Virtuální UDP vstupy

Vytvořit Virtuální UDP vstup, nastavit mu unikátní UDP port:

Do něj pak vložit Virtual UDP input command, nastavit “Command recognition”. Pro On/Off jen samotnou hodnotu:

V případě potřeby načítat hodnotu, vložit do recognition \v pro “value”. (tady je to chyták, u vstupů se používá \v zatímco u výstupů <v>).

Loxone Virtual UDP/HTTP output / Virtuální UDP/HTTP výstupy

Vytvořit Virtual Output. V případě HTTP NESMÍ být v adrese celá cesta, ale vždy jen název serveru. Koumáci z Loxone to sice pojmenovali address, ale není to tak. Pokud je tam pak jakákoli URI, loxone dle logů padá na tom, že ji neumí přes DNS přeložit.

Do něj vložit Virtual output command. Pro on/off vyplnit Command for ON, Command for OFF (to je v případě HTTP URL za doménou zadanou v Address)

HTTP extensions je opět blbě pojmenované, jde o HTTP headers, které se mají vložit k požadavku. HTTP post command zvládli v Loxone pojmenovat správně a HTTP method také. V případě, že chceme zasílat při zapnutí i vypnutí různé data, vyplní se oboje, pokud chceme zasílat jen při zapnutí/změně hodnoty, vyplní se jen atributy pro ON.

Pokud potřebuje odeslat nejen ON/OFF, ale právě nějakou hodnotu, použijeme značku <v> (pozor, nikoli \v jako v případě vstupů).

Značku <v> můžeme použít i kdekoli uvnitř textu, tzn například “value:<v>” a podobně. Údajně jde takto poslat i textový výstup. Nemám to ale vyzkoušené.

NodeRED příjem dat

Vložit http-in (nebo UDP-ip), nastavit URL nebo port pro daný příkaz. Co je důležité, krom HTTP-in je potřeba také vložit a propojit HTTP response, aby po zavolání požadavku NodeRED požadavek ukončil a odeslal OK response.

Z prvku pak leze textový řetězec, který jsme do něj poslali. Pokud bychom posílali JSON, je potřeba vložit ještě “JSON parse” prvek, který text převede na objekt.

NodeRED odeslální dat

Vložit UDP-out prvek, nastavit cílovou adresu a port, na který se májí UDP data odeslat

Do prvku pak už jen krmíme data a on je odesílá směr Loxone

 

Závěr

A to je vše, takto lze propojit vstupy i výstupy z Loxone s NodeRED bez nutnosti použít nodered-contrib-loxone knihovnu. Je to škoda, protože jinak se knihovna používala parádně, ale bohužel absence automatického reconnectu ji dost vylučuje pro reálné použití (minimálně u nás doma 🙂 ).

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

4 Komentáře
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
_Petr_
1 month ago

K tomu <v>. Ono je to nejspíš proto, že lze použít <v.1> a tím naformátovat hodnotu na 1 desetinné místo.

V nové vezi jsou některé věci opravené, například “Http extensions”. Chtěl jsem sem dát jako obrázek příklad jak posílám json ze statusu, ale nejde mi to. Bylo by vidět, že už je v nastavení HTTP header.

Patrick: InLiving.CZ
1 month ago

K tomu automatickému reconnectu knihovny. Někde jsem na to něco našel a zdá se, že mi to funguje fajn. Jakmile detekuje výpadek, sám se zrestartuje. I bych vložil printscreen, ale nenašel jsem jak.

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