Node-RED: První tok

Zápisník experimentátora

Hierarchy: Node.js

V tomto článku si ukážeme, jak se vytvářejí toky. Bude to jednoduchý příklad, který je založen na příkladu z oficiální dokumentace. Vytvořený tok bude mít jeden vstup, jednu funkci, která data modifikuje a jeden výstup na debug konzoli. V předchozím článku jsme si ukázali, jak se Node-RED instaluje a jak se pracuje s editorem toků. Pojďme si vytvořit první tok, který nám pomůže si představit, na co jsou toky dobré.

Uzly

Pomocí techniky drag-drop si potáhněte tři uzly do editoru. Navzájem je propojte.

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

Uzel inject

Tento uzel nám slouží k vytvoření zprávy. Je to ideální uzel na vyzkoušení možností Node-RED, protože po stisknutí tlačítka na uzlu vygeneruje zprávu, která putuje přes celý tok. V tomto případě je nastavena jako timestamp, což je čas v milisekundách od 1.1.1970. Ale můžete si vybrat z mnoho možností. Například můžete vytvořit tok zpráv, které obsahují čas a jsou generovány každých N sekund.

Toto je jen příklad pro vytvoření jednoho typu vstupu. Vstupem ale může být prakticky cokoliv. Například v pokračování tohoto článku budeme intenzivně používat dva typy vstupních uzlů.

  • serial - Pomocí něj si připojíme Arduino Uno, které nám bude generovat libovolný výstup na sériový port.
  • http - Pomocí tohoto uzlu budeme připojovat ESP8266.

Uzel function

Pomocí funkce můžete zprávu v daném uzlu modifikovat. Na obrázku vidíte příklad funkce, která mění původní zprávu na jinou. V tomto případě vytvoříme z původní hodnoty v milisekundách objekt Date, pomocí kterého si vytvoříme tři atributy nového objektu, který bude pokračovat jako zpráva dále v toku. Funkce se programují v JavaScriptu. Funkce toString převede datum do textového řetězce ve vašem jazyce. Funkce toISOString převede datum do univerzálnější podoby, kterou pochopí programátor v libovolné zemi na světě.

Uzel debug

Tento typ uzlu nám slouží k vypisování kontrolních výpisů. Během navrhování toků se potřebujete přesvědčit, že vám vše funguje správně. Proto v průběhu návrhu obvykle připojíte na důležitá místa několik takových uzlů a když máte celý tok odladěný, necháte v toku pouze ty nejdůležitější.

Výstup na debug konzoli

Po stisknutí tlačítka na uzlu inject se vytvoří zpráva, která obsahuje čas v milisekundách od 1.1.1970. Zpráva je v uzlu function překonvertována na objekt se třemi parametry. Objekt je v uzlu debug vypsán na konzoli. Na obrázku vidíte všechny tři atributy src, asdate a asiso.

Zdrojový kód

Zdrojový kód příkladu si můžete do svého projektu vložit pomocí funkce 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