Skip to main content

Node-RED cvičení

Node-RED

Node-RED je programovací nástroj určený k propojení hardwarových zařízení, API a online služeb dle individuálních potřeb. 

Node-RED je blokový programovací nástroj, který je založen na runtime prostředí Node.js, tudíž Node-RED běží jako serverový nástroj (lokální či s vzdáleným přístupem). Pro přístup k vývojovému prostředí se používá webový prohlížeč. Vývojové prostředí – respektive editor programu – se skládá z palety nodů a pracovního prostoru nazývaného „flow“ (tok, proud). Do pracovního prostředí přetahujeme jednotlivé nody a spojujeme je. Tím vzniká náš program, který se může dokonce skládat z více jednotlivých „flow“ – toků. Nody představují jednotlivé akce, které se odehrávají ve vašem programu. Ať už se jedná o zpracování dat, připojení k serveru, odeslání zprávy na mobil, zobrazení grafů a mnohé další. Mezi jednotlivými nody tečou jednotlivé zprávy, které nesou obsaženou samotnou informaci. Základním programovacím jazykem, který se používá pro vývoj programů, je JavaScript. Před možným spuštěním našeho programu je vždy nutné změny provedené v editoru nahrát na server pomocí tlačítka „Deploy“

https://nodered.org/

Cvičení 1. Covid-19 data

Úkoly:

1. Vypište do debugu kompletně první položku pole data

2. Vypište do debugu věk první osoby v poli data

3. Vypište do debugu věk poslední osoby v poli data

4. Vypište do debugu průměrný věk všech osob

5. Vypište do debugu, kolik je žen a kolik mužů

6. Vytvořte webovou stránku pod jménem localhost:1880/covid a vypište do nadpisu h1 aktuální počet osob s prokázanou nákazou dle hlášení KH, (včetně html) (odkaz 2.)

7. Nainstalujte si paletu dashboard a do nodu text (ikona abc) zapište počet všech 16letých nakažených včetně popisku

8. Vypište do debugu věk prvních 20 osob s prokázanou nákazou jako samostatný msg.payload, využijte node split

9. Zapište do souboru věk posledních 20 osob s prokázanou nákazou na samostatný řádek, s každým novým zápisem se stávající zápis přepíše. + výpis do debugu ze souboru

10. Zapište do souboru věk posledních 20 osob s prokázanou nákazou bez odřádkování, tzn za sebe. Do souboru se s každým zápisem pouze připíše. + výpis do debugu ze souboru

12. Rozdělte flow pomocí nodů link in a link out + výpis do debugu ze souboru

13. Využijte node delay a do grafu s názvem gauge vypište každou sekundu věk jedné osoby s prokázanou nemocí. Celkem vypište prvních 50 osob.

14. Okomentujte každé vlákno pomocí nodu comment

15. Nastavte zapisování do souboru roků posledních 10 osob s prokázanou nemocí automaticky každých 5 sekund. Soubor se tedy každých 5 sekund automaticky přepíše.

16. Nastavte odesílání hlášení o počtu nakažených za včerejší den jednou denně v 6:00 na váš školní email ve formátu: "Počet nakažených za včerejší den je: 5394 + nový řádek + odesláno: 9.10.2020"

Nápověda pro 16. - server: mail.ssps.cz, port: 465

Zdroje

Zdroj dat: https://onemocneni-aktualne.mzcr.cz/api/v2/covid-19

Odkaz data 1. https://onemocneni-aktualne.mzcr.cz/api/v2/covid-19/osoby.json - Pro všechny úkoly kromě 6.

Odkaz data 2. : https://onemocneni-aktualne.mzcr.cz/api/v2/covid-19/zakladni-prehled.json Základní přehled pro 6. úkol

Návody:

JSON, Javascript:

https://www.w3schools.com/js/js_json_objects.asp

https://www.w3schools.com/js/js_arrays.asp

https://cookbook.nodered.org/#http-requests

Také po kliknutí na ikonu knihy v Node-redu->

image.png

Ukázka možného zapojení

 

image.png

Příklad výpisů

image.png

image.png

 

image.png

Cvičení 2. DPP real-time data

Úkoly

1. Vytvořit funkční flow které do debugu vypíše kompletní data o aktuálních polohách všech autobusů na libovolné, vámi zvolené autobusové lince.

2. Vytvořit funkci, která zvládne vypsat podrobnosti o příští a minulé zastávce se zpožděním a konečnou zastávkou prvního autobusu v poli.

3. Vytvořit nějaký výstup kromě debugu. Ať už webovou stránku, nebo nějaký výstup pomocí nodů v sekci dashboard. Jeho obsah je na vás, ať hlavně dává smysl a je užitečný.

Pro přístup k API si vygenerujte API klíč

(x-access-token) zde: https://api.golemio.cz/api-keys/auth/sign-in

API jsou k dispozici: https://golemioapi.docs.apiary.io

Návod na vytvoření request header:https://cookbook.nodered.org/http/set-request-header

Jízdní řády jsou na IDOSu.

Odkazy

JSON, Javascript:

https://www.w3schools.com/js/js_json_objects.asp

https://www.w3schools.com/js/js_arrays.asp

Příloha - soubor ID zastávek, autobusů atd.