Node-RED: Prvý tok

Zápisník experimentátora

Hierarchy: Node.js

V tomto článku si ukážeme, ako sa vytvárajú toky. Bude to jednoduchý príklad, ktorý je založený na príklade z oficiálnej dokumentácie. Vytvorený tok bude mať jeden vstup, jednu funkciu, ktorá dáta modifikuje a jeden výstup na debug konzolu. V predchádzajúcom článku sme si ukázali, ako sa Node-RED inštaluje a ako sa pracuje s editorom tokov. Poďme si vytvoriť prvý tok, ktorý nám pomôže si predstaviť, na čo sú toky dobré.

Uzly

Pomocou techniky drag-drop si potiahnite tri uzly do editora. Navzájom ich prepojte.

  • input/inject - Na obrázku má názov InjectedTimestamp.
  • function/function - Na obrázku má názov FuncTime.
  • output/debug - Na obrázku má názov Debug.

Uzol inject

Tento uzol nám slúži na vytvorenie správy. Je to ideálny uzol na vyskúšanie možností Node-RED, pretože po stlačení tlačidla na uzle vygeneruje správu, ktorá putuje cez celý tok. V tomto prípade je nastavená ako timestamp, čo je čas v milisekundách od 1.1.1970. Ale môžete si vybrať spomedzi veľa možností. Napríklad môžete vytvoriť tok správ, ktoré obsahujú čas a sú generované každých N sekúnd.

Toto je len príklad na vytvorenie jedného typu vstupu. Vstupom ale môže byť prakticky čokoľvek. Napríklad v pokračovaní tohoto článku budeme intenzívne používať dva typy vstupných uzlov.

  • serial - Pomocou neho si pripojíme Arduino Uno, ktoré nám bude generovať ľubovoľný výstup na sériový port.
  • http - Pomocou tohto uzla budeme pripájať ESP8266.

Uzol function

Pomocou funkcie môžete správu v danom uzle modifikovať. Na obrázku vidíte príklad funkcie, ktorá mení pôvodnú správu na inú. V tomto prípade vytvoríme z pôvodnej hodnoty v milisekundách objekt Date, pomocou ktorého si vytvoríme tri atribúty nového objektu, ktorý bude pokračovať ako správa ďalej v toku. Funkcie sa programujú v javascripte. Funkcia toString skonvertuje dátum do textového reťazca vo vašom jazyku. Funkcia toISOString skonvertuje dátum do univerzálnejšej podoby, ktorú pochopí programátor v ľubovoľnej krajine na svete.

Uzol debug

Tento typ uzla nám slúži na vypisovanie kontrolných výpisov. Počas navrhovania tokov sa potrebujete presvedčiť, že vám všetko funguje správne. Preto v priebehu návrhu obvykle pripojíte na dôležité miesta niekoľko takýchto uzlov a keď máte celý tok odladený, necháte v toku iba tie najdôležitejšie.

Výstup na debug konzolu

Po stlačení tlačidla na uzle inject sa vytvorí správa, ktorá obsahuje čas v milisekundách od 1.1.1970. Správa je v uzle function prekonvertovaná na objekt s tromi parametrami. Objekt je v uzle debug vypísaný na konzolu. Na obrázku vidíte všetky tri atribúty src, asdate a asiso.

Zdrojový kód

Zdrojový kód príkladu si môžete do svojho projektu vložiť pomocou funkcie Import.

[
{"id":"be3232a0.de3ee","type":"tab","label":"Flow 1","disabled":false},{"id":"6e0c7bbd.5d5cac","type":"inject","z":"be3232a0.de3ee","name":"InjectedTimestamp","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":"","x":197,"y":100,"wires":[["52d2378d.017e48"]]},
{"id":"2ee8df4.1d535a","type":"debug","z":"be3232a0.de3ee","name":"Debug","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","x":410,"y":138,"wires":[]},
{"id":"52d2378d.017e48","type":"function","z":"be3232a0.de3ee","name":"FuncTime","func":"var date = new Date(msg.payload);\nmsg.payload = {\n    src: msg.payload,\n    asdate: date.toString(),\n    asiso: date.toISOString()\n};\nreturn msg;","outputs":1,"noerr":0,"x":313,"y":259,"wires":[["2ee8df4.1d535a"]]}
]

28.03.2019


Menu