V oblasti moderních IoT zařízení se stále více prosazuje jejich vzdálené ovládání prostřednictvím JSON datového zápisu. Ten umožňuje díky v zařízení implementovaného JSON API rozhraní poměrně jednoduché vzdálené ovládání, identifikaci stavu či získávání naměřených hodnot zařízení prostřednictvím ethernetové či internetové sítě prostřednictvím zasílání nebo příjmu ASCII textových zpráv. Jejich výhoda v oblasti počítačových systémů je jejich snadná okamžitá čitelnost bez nutnosti nějakého převodu (narozdíl například od přenosu dat průmyslovými protokoly Modbus-TCP, Profinet apod.).
Mezi moderní IoT zařízení využívající JSON patří i vzdáleně ovládané 230V AC napájecí kabely a zdroje NETIO. Jejich JSON API režim umožňuje nejen přečtení stavu přepnutí a zaslat příkaz k přepnutí, ale i přečíst aktuální hodnoty el. napětí (V), odebíraného el. proudu (A), el. příkonu /W) a i dlouhodobou spotřebu (Wh).
Co je to JSON a jak jej použít s NETIO?
Pod zkratkou JSON se skrývá označení "JavaScript Object Notation", tedy v překladu "JavaScriptový objektový zápis" a je to způsob zápisu dat (datový formát) nezávislý na počítačové platformě, určený pro přenos dat, která mohou být organizována v polích nebo agregována v objektech. Zatímco pro základní příjem a přečtení JSON zpráv stačí použít jen obyčejný webový prohlížeč, pro vyslání JSON ovládacích příkazů (JSON zasílání zpráv) metodou POST je již nutné využít nějaký k tomu určený klient.
Konkrétně v případě napájecích kabelů a zdrojů NETIO stačí pro přečtení parametrů běžnou metodou "GET", kterou využívá i webový prohlížeč k přijmu obsahu webových stránek, načíst webovou adresu zařízení "http://xxx.xxx.xxx.xxx/netio.json" (místo xxx je nutno zadat konkrétní IP adresu). Avšak pro přepnutí jeho napájecího výstupu (jeho zapnutí či vypnutí) je nutné vyslat konkrétní přesný JSON formát řídící zprávy metodou POST.
Jen pro potřeby zkoušení a testování lze využít různých univerzálních PC programů (utility) fungující jako webový klienti a umožňující jednorázově vyslat do zařízení (příjemce = serveru) různé JSON zprávy. Například velmi dobré je známá konzolová utilita cURL nebo pak doplňková funkce k webovým prohlížečům Chrome se jménem ARC (Advanced REST Client).
Pokud však má JSON ovládání sloužit pro běžné technicky méně vzdělané uživatele, je nutné jej zakomponovat do nějakého řídícího a vizualizačního systému, kde běžný uživatel vyšle příslušný JSON příkaz jen stiskem / poklepáním nějaké ikony tlačítka na monitoru panelu či počítače. Pro nepříliš náročnou realizaci takové ovládací vizualizace lze použít velmi zajímavý PC software "Node-RED".
Příklad programu (skriptu) pro komunikaci a ovládání zařízení NETIO v aplikaci Node-RED ukazující část přijímací informace (GET) a část odesílající řídící informace (POST).
Co je to Node-RED?
Jednoduše řečeno je Node-RED programovací softwarový nástroj pro navázání ethernetové komunikace a ovládání s různými IoT zařízeními. Na jedné straně umožňuje realizovat vyžádání a přijetí JSON, XML či emailových zpráv a následně "dekódovat" pro grafické zobrazení na vizualizační obrazovce. Na druhé straně pak realizovat odesílání JSON či XML neb e-mailových zpráv buď časově automaticky nebo na stisk ikony tlačítka na vizualizační obrazovce.
Zajímavé je, že celé "programování" se provádí grafickou formou tzv. vývojových diagramů (flow diagram), tedy vhodným pospojováním bloků jednotlivých funkcí a jejich nastavení v jejich nastavovacím menu. K dispozici jsou nejen bloky provádějící odesílání či zpracování zpráv, ale i bloky realizující grafické ovládací rozhraní ve grafické formě ovládací obrazovky. A to vše prostřednictvím webového prohlížeče, který se odkazuje na lokální webovou stránky v PC běžícího softwaru Node-RED. Toto řešení totiž také umožňuje snadno nainstalovat Node-Red například na PC server a k nastavení se snadno připojovat z kteréhokoliv jiného počítače v síti. Stačí znát jen IP adresu počítače, kde Node-RED běží.
Pokud do programovacího prostředí Node-RED přistupujete přímo z PC, na kterém je Node-RED nainstalován a běží, stačí do libovolného webového prohlížeče zavolat stránku "http://127.0.0.1:1880" nebo "http://localhost:1880" a hned se objeví programovací obrazovka. Pokud pak otevřete stránku "http://127.0.0.1:1880/ui" nebo "http://localhost:1880/ui" pak se zobrazí vytvořená grafická ovládací obrazovka realizovaná právě v běžícím programu. Navíc lze program nastavit, aby se zapínal i automaticky při spuštění počítače / zařízení, kde je nainstalován, takže nevyžaduje náběh ovládání žádný jiný spouštěcí úkon.
Příklad Node-RED skriptu pro řízení a vizualizace řízených zásuvek NETIO, která je na stránkách výrobce k dispozici ke stažení v příkladu AN30 Node-RED příklad REST JSON komunikace s NETIO 4x.
Software Node-RED je k dispozici je primárně určen pro populární IoT destičky Raspberry Pi a jejich OS Linux Raspbian, ale stejně dobře jej lze provozovat prakticky na jakémkoliv běžném počítači s OS Linux nebo případně i OS Windows. Ideální je však počítač s OS Linux typu Debian, tedy například OS Linux Ubuntu nebo OS Linux Mint, které jsou oba zcela zdarma a dokáží běžet i na starých počítačích. Já osobně například celý Node-RED systém zprovoznil na stařičkém "netbooku" Acer Aspire One se málo výkonným jednojádrovým procesorem Intel Atom a 2 GB RAM s OS Linux Mint 19.1 Tessa s xfce4.
Instalace Node-RED na OS Linux
I pro málo znalé uživatele OS Linux, není instalace nijak extrémně složitá, i když se k instalaci využívá terminálu, pokud se pracuje přesně a pečlivě. Na webu Node-RED je pak i poměrně podrobný návod (https://nodered.org/docs/getting-started/local). Nicméně v případě, že při instalaci nastanou nějaké problémy, již může být náprava trošku složitější. Hlavní je, aby se nějakým nedopatřením neprovedla instalace Node-RED více než jednou. Pokud se například z nějakého důvodu první instalace nepodaří (Node-RED z nějakého důvodu neběží jak má), je dobré nejdříve veškeré komponenty Node-RED opět odinstalovat než se pustíte do instalace nové. V opačném případě se Vám může stát, že Vám na PC poběží více instancí Node-RED současně na stejném TCP kanále 1880 a v důsledku toho pak nebude ani jedna pracovat správně a budete dostávat různé chybové hlášky, ne vždy zcela jasně ukazující, kde je problém.
Ideální pro bezproblémovou instalaci je spustit v Linuxu příkazový terminál a nejdříve zadáním příkazů "nodejs -v" nebo "node -v"
a "npm -v
" zjistit, zda máte v Linux systému nainstalovanou podporu "NPM" a "Node.js". Ten je totiž potřeba k jednoduchému procesu instalace Node-RED. NPM je otevřený softwarový registr pro sdílení programů a skriptů. "Node.js" je pak otevřená platforma prostředí běhu Javascriptů jako server.
Pokud Vám terminál nevypíše žádné číslo verze a vypíše zprávu, že "npm" nenašel, tak je nutné jej nejdříve nainstalovat současně NPM i Node.js příkazem
sudo apt install nodejs
Někdy se může stát, že máte nainstalovaný "Node.js" (vypíše správně jeho verzi), ale nemáte nainstalovaný NPM. To by sice nemělo nastat, ale pokud tomu tak je, lze i nainstalovat jen samotnou NPM podporu příkazem:
sudo apt install npm
Pak je možné již zahájit instalaci samotného Node-RED. Nejjednodušší to je v případě distribucí Linuxu vycházející z Debianu, tedy například právě populární distribuce Ubuntu, české Mint, včetně i linuxu Raspbian. Zde stačí do příkazové řádky terminálu jen zkopírovat:
bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
A následně se celá instalace již sama pojede od začátku až dokonce bez nutnosti nějakého zásahu.
Jedna možnost spuštění instalace v OS Linux Ubuntu či Mint.
Případně pokud tato instalace uvedené plné automatické instalace z nějakého důvodu neproběhne úspěšně, zkuste přímou instalaci pouze samotného programu Node-RED pomocí příkazu:
sudo npm install -g --unsafe-perm node-red
Druhá možnost spuštění instalace v OS Linux Ubuntu či Mint.
Pokud instalace úspěšně proběhla, mělo by již jít software Node-RED spustit zadáním do příkazového řádku jen prostě "node-red
". Následně by jste měli vidět výpis podobný následujícímu obrázku níže:
Úspěšné spuštění aplikace Node-RED po úspěšné instalaci.
Pak již je možné otevřít nějaký webový prohlížeč (já používám Mozilla Firefox) a v něm jako stránku zadat "http://127.0.0.1:1880" nebo "http://localhost:1880" a již by mělo se zobrazit programovací okno softwaru Node-RED:
Prázdná plocha aplikace Node-RED po instalaci a před vložením programu (scriptu).
Node-RED program pro napojení na zařízení NETIO 4x
Pro vytvoření programu pro ovládání kabelů a zásuvek Netio není nutné nic složitě vymýšlet. Totiž společnost NETIO na svých stránkách dala celý hotový ovládací program (skript) k dispozici na svém webu v aplikační poznámce AN30 Node-RED příklad REST JSON komunikace s NETIO 4x, kde jej stačí jen označit a zkopírovat do schránky.
Následně v programovacím prostředí Node-RED jen zvolit "Menu->Import->Clipboard" a zde do okénka vložit program ze schránky a potvrdit. Poté se již textový formát programu zobrazí v grafické podobě propojených bloků na programovací ploše.
Import programu (scriptu) zkopírováním příkladu z webu Netio (http://https://www.netio-products.com/cs/aplikacni-poznamky/an30-node-red-priklad-rest-json-komunikace-s-netio-4x)
S největší pravděpodobností bude při prvním vložení programu NETIO programovací prostředí Node-Red informovat, že chybí některé bloky / knihovny. Ty je bohužel nutné ručně nainstalovat, ale zase to není moc složité. Stačí jen zvolit "Menu->Manage palette->Install" a zde zadat do vyhledávání "node-red-dashboard" a nabídnutou položku nainstalovat. Právě bloky pro vytvářející grafické ovládání, při prvním použití softwaru Node-Red nejsou přítomny.
Při prvním importu NETIO programu (scriptu) do Node-RED se obvykle zobrazí červená chybová hlášení o chybějících knihovnách. Ty se týkají vizualizace "ui" a je nutné doinstalovat knihovnu "node-red-dashboard".
Pak bude ještě nutné celý Node-RED v okně terminálu stiskem "Ctrl+C" a následně Node-RED opět spustit zapsáním " node-red
" a stiskem "Enter".
Náběh aplikace Node-RED po spuštění - bez hlášení chyb.
Vizualizace spuštěného programu (skriptu).
Uvedené skripty jsou však určeny pro zařízení NETIO 4x vyznačující se hned čtyřmi ovládanými zásuvkami. Avšak pro "kabelové" provedené NETIO PowerCable REST, je nutné skript upravit jen pro jednu zásuvku. V opačném případě bude vykazovat chyby při běhu.
Node-RED program pro napojení na zařízení NETIO PowerCable
Pro jednozásuvkový kabel Netio PowerCable REST (viz článek Dálkově WIFI ovládaný kabel - NETIO PowerCable REST), je nutné ze ovládacího programů (skriptů) pro NETIO 4x vymazat všechny položky týkající se zásuvek 2, 3 a 4. Zde je již takto upravený skript s jednodušší vizualizací, který jsem si upravil a i provozně odzkoušel:
Základní jednoduchý program provádějící zapnutí a vypnutí napájení NETIO PowerCable REST - skript pro stažení a import do Node-RED: node-red_netio_powercable_rest.txt
Jednoduchá vizulizace běžící na serveru Node-RED definovaná programem (skriptem).
Závěr
Aplikace Node-RED patří mezi velmi zajímavé bezplatné programy, které není příliš složité používat a zároveň dokáží realizovat základní řízení i vizualizaci pro většinu moderních IoT zařízení s LAN komunikací. Například použití za ovládanými zásuvkami a kabely NETIO je zcela bezproblémové a díky zdrojovému kódu ovládacího programu volně ke stažení na stránkách výrobce NETIO je i realizace ovládání na libovolném PC je zručnějšímu uživateli PC a internetu otázkou max. několika hodin.
Odkazy:
- Web aplikace Node-RED: https://nodered.org
- Popis připojení IoT zařízení NETIO k Node-RED:
- s použitím formátu JSON: https://www.netio-products.com/cs/aplikacni-poznamky/an30-node-red-priklad-rest-json-komunikace-s-netio-4x
- s použitím URL API: https://www.netio-products.com/cs/aplikacni-poznamky/an29-node-red-priklad-url-api-komunikace-s-netio-4x
- S použitím XML: https://www.netio-products.com/cs/aplikacni-poznamky/an31-node-red-priklad-rest-xml-komunikace-s-netio-4x
- Článek "Dálkově WIFI ovládaný kabel - NETIO PowerCable REST" na serveru automatizace.hw.cz