NodeRED – Propojení všeho se vším, od Arduina po Loxone
Jak jsem psal v předchozím článku, MQTT i NodeRed instaluji na Ubuntu linuxu. Jde ale rozběhat třeba i na Raspberry Pi nebo Turrisu (OpenWRT).
Instalace NodeRED je relativně jednoduchá. Do ubuntu jsem musel nejprve doinstalovat aplikaci npm (což jsem zjistil, že je balíčkovací služba pro javascript) a následně pak pomocí npm aplikace nainstalovat NodeRED.
sudo apt-get install npm sudo npm install -g --unsafe-perm node-red
Po samo-doinstalování obrovského množství dalších navazujícíh balíků měl začít fungovat příkaz `node-red`. Ale prdlajs. Takže další postup pak byl:
sudo apt-get install nodejs-legacy node -v ##v4.2.6 sudo apt-get install npm npm -v ##3.5.2 sudo npm install -g --unsafe-perm node-red node-red-admin
Dál bylo potřeba otevřít firewall port 1880, který node-red používá pro komunikaci
sudo ufw allow 1880 ##Rules updated ##Rules updated (v6)
A pak už node-red konečně naběhl.
node-red Welcome to Node-RED =================== 9 Dec 15:41:14 - [info] Node-RED version: v0.15.2 9 Dec 15:41:14 - [info] Node.js version: v4.2.6 9 Dec 15:41:14 - [info] Linux 4.4.0-53-generic x64 LE 9 Dec 15:41:14 - [info] Loading palette nodes 9 Dec 15:41:14 - [warn] ------------------------------------------------------ 9 Dec 15:41:14 - [warn] [rpi-gpio] Info : Ignoring Raspberry Pi specific node 9 Dec 15:41:14 - [warn] ------------------------------------------------------ 9 Dec 15:41:14 - [info] Settings file : /home/dev/.node-red/settings.js 9 Dec 15:41:14 - [info] User directory : /home/dev/.node-red 9 Dec 15:41:14 - [info] Flows file : /home/dev/.node-red/flows_home-server.json 9 Dec 15:41:14 - [info] Creating new flow file 9 Dec 15:41:14 - [info] Server now running at http://127.0.0.1:1880/ 9 Dec 15:41:14 - [info] Starting flows 9 Dec 15:41:14 - [info] Started flows
Další krok je nastavení, aby se NodeRED spouštěl sám po startu. To už nebudu popisovat, protože bych jen kopíroval návod, podle kterého jsem postupoval. Ten jde najít v tomto super článku (bod 3 a dál).
Použití NodeRED
Tak jo, nainstalované to je, co teď s tím dál ;-). Vraťme se k naší ukázce z minulého článku o MQTT. V levym okně máme příkaz na poslání zprávy přes kanál(topic) hello/world. V pravém okně nahoře je pak příjemce této zprávy, abychom viděli, že vše funguje.
V pravo dole pak nasloucháme nové zprávě “bye/world”. Jak jde vidět z následujících screenshotů, při poslání zprávy na “hello/world” se tato zpráva ukáže i na “bye/world”. Jak to?
Protože NodeRED ;-). Jako první jsem pro otestování funkčnosti NodeRED a jeho napojení na MQTT udělal jednoduché přeposlání přijaté zprávy z jednoho kanálu na druhý.
A takhle to vypadá v NodeRED. Vlevo je MQTT consumer, nastavený tak, aby naslouchal topic hello/world
V pravo pak MQTT publisher, který přijatou zprávu pošle po kanálu (topicu) bye/world.
Dole pak mám ještě debug výstup, který zobrazuje přijaté zprávy.
A co loxone, jde to propojit?
No jasně! ;-). Pro testování jsem použil zatím jen REST Api loxone, ale NodeRED podporuje i websockets, navíc jsou pro Loxone už naprogramované přímo rozšíření pro NodeRED (viz dále).
Nyní nám ale pro jednoduchý test stačí RestAPI. Upravíme diagram tak, aby po přijetí jakékoli zprávy v topicu hello/world se nám rozsvítilo (nebo zhaslo) světlo v pracovně. To je cool ne? 😉
Samotné nastavení HTTP požadavku vypadá nějak takto. Nic složitého, jen se zavolá HTTP GET na adrese /dev/sps/io/WebApiTest/PulseDown.
Co se týká URL adresy, tak Loxone dokumentace stojí za starou bačkoru. Podle návodu by měla být adresa /prikaz/control/hodnota, coz ale /dev/sps/io/INPUT/PRIKAZ rozhodne není.
Touto url říkáme, že chceme na virtuální vstup “WebApiTest” poslat Impuls Down-Up. V Loxonu tak musíme tento virtuální vstup vytvořit a propojit se světlem.
A to je všechno. Nyní, kdykoli se objeví zpráva, světlo se přepne. Naprostá paráda. Nevím jak vy ostatní, ale já jsem nadšen. Těch možností, k čemu se to využít, je totiž neomezeně. Díky kombinaci NodeRED+Loxone tak jde do Loxonu dostat spoustu nových dat, od Arduino senzorů, dat z externích databází až po informace z Twitteru, Email nebo cokoli jiného vás jen napadne.
Co dál
NodeRED má obrovskou komunitu a kromě základních bloků (Nodes) má parádní knihovn dalších rozšíření – http://flows.nodered.org/. Jsou tam například i bloky na komunikaci s Modbus, KNX nebo Loxone.
Nyní to chce pořádně vyzkoušet a pohrát si s tím víc. V základu mám ověřeno, že vše funguje. Nyní zkusím zprovoznit nad Arduinem nějaký ten senzor a přes MQTT-NodeRed ho posílat do Loxonu. A uvidíme, jak to bude šlapat. Co jsem zatím testoval, tak problémy žádné, ale běží mi to jen chvilku.
Pokud ale vše pojede opravdu jak má a bude to 100% stabilní, vidím v tom obrovský potenciál. Navíc v případě, že by Loxone pokračoval se svými gestapáckými manýry a ještě více uzavíral jeho systém, tak se takto dá udělat kompletní rozšíření a defakto z architektury “Loxone je ten hlavní” udělat “NodeRED je ten hlavní” a Loxone mít jen jako podružný systém.





















































































































































































