## Node-RED: Tipy a triky #1
[D. Bruothová, P. Bálint, M. Biňas](https://bletvaska.github.io)
/ [**Namakaný webinár**](http://www.namakanyden.sk)
[![Node-RED Logo](images/logo-node.red.png)](https://nodered.org)
## Čo je Node-RED I.?
> Node-RED is a **visual tool** for **wiring** the Internet of Things. (2016)
> **Flow-based programming** for the Internet of Things. (2017)
> **Low-code programming** for **event-driven applications**. (2019)
## Čo je to Node-RED II.?
> [Node-RED](https://nodered.org) is a **programming tool** for **wiring** together hardware devices, APIs and online services in new and interesting ways. ([homepage](https://nodered.org))
## A okrem toho...
* open source (zadarmo)
* platformovo nezávislý ([nodejs](https://nodejs.org/))
* aplikácia v prehliadači
## Tip #1
### Spustenie ako Docker kontajner
![Virtual Machines vs Containers](images/virtual.vs.container.jpg)
## Skúsenosti a vlastnosti
* skúsenosti z predmetu [Základy IoT](https://kurzy.kpi.fei.tuke.sk/iot1/)
* výhody spustenia v kontajneri
* izolované a bezpečné
* posledná verzia
* "prenositeľné" riešenie
* oficiálna [dokumentácia](https://nodered.org/docs/getting-started/docker)
* [(oficiálny) obraz na hub.docker.com](https://hub.docker.com/r/nodered/node-red/)
## Spustenie
```bash
$ docker container run -it --rm \
--publish 1880:1880 \
--volume $(pwd)/data:/data \
--name nodered \
nodered/node-red
```
## Tip #2
### Použitie dát z externého CSV súboru
## Houston, we have a problem
odkiaľ získať reálne dáta?
## Riešenie problému
1. kde získať dáta?
* vlastná príprava v tabuľkovom procesore
* vlastné reálne získané dáta
* stiahnuť z internetu (napr. [Kaggle](https://www.kaggle.com/))
2. použitie zabudovaného uzla `csv` z kategórie `parser`
## Výsledný flow
[![Reading data from CSV file](images/reading.csv.file.png)](resources/read.from.csv.json)
## Tip #3
### Node-RED na Raspberry Pi
## Node-RED na RPi OS
* je súčasťou obrazu [RPi OS with desktop and recommended software](https://www.raspberrypi.org/software/operating-systems/)
* môžete si ho doinštalovať:
```bash
$ sudo apt update
$ sudo apt install nodered
```
* spustíte ho z menu `Programming`
![Difference on RPi](images/nodered.on.rpi.png)
### [`node-red-contrib-play-audio`](https://flows.nodered.org/node/node-red-contrib-play-audio)
A node-red node for playing audio in the browser
### Uzol `play audio`
[![Ukážka použitia uzla `play audio`](images/play.audio.png)](resources/play.audio.json)
### [`node-red-node-pi-gpio`](https://flows.nodered.org/node/node-red-node-pi-gpio)
The basic Node-RED node for Pi GPIO
[![RPi GPIO Pinout](images/rpi.gpio.pinout.png)](https://www.raspberrypi.org/documentation/usage/gpio/)
### Uzly `Pi Keyboard` a `Pi Mouse`
[![Ukážka použitia uzlov `Pi Keyboard` a `Pi Mouse`](images/keyboard.and.mouse.png)](resources/pi.keyboard.and.mouse.json)
### Uzol `gpio out`
[![Ukážka použitia uzlu `gpio out`](images/gpio.out.png)](resources/gpio.out.json)
### Uzol `gpio in`
[![Ukážka použitia uzlu `gpio in`](images/gpio.in.png)](resources/gpio.in.json)
## Zdroje
* [domovská stránka nástroja Node-RED](https://nodered.org)
* [Node-RED kanál na YouTube](https://www.youtube.com/channel/UCQaB8NXBEPod7Ab8PPCLLAA)
* [Úvod do Internetu vecí](https://youtu.be/coqzmKypHyE)
* [Getting started with Node-RED](https://projects.raspberrypi.org/en/projects/getting-started-with-node-red)
## Dnešné ukážky
* [Načítanie údajov z CSV súboru](resources/read.from.csv.json) ([weather.csv](resources/weather.csv))
* [Prehrávanie zvuku na RPi](resources/play.audio.json)
* [Čítanie z klávesnice a z myši na RPi](resources/pi.keyboard.and.mouse.json)
* [GPIO Out uzol](resources/gpio.out.json)
* [GPIO In uzol](resources/gpio.in.json)
![qr code](https://api.qrserver.com/v1/create-qr-code/?data=https://bit.ly/2SX3j0t&size=300x300)
(**https://bit.ly/2SX3j0t**)