Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
it:iot:nodered [2023/01/18 17:25] – Petr Nosek | it:iot:nodered [2023/10/06 13:30] (aktuální) – [tutoriály na Node RED] Petr Nosek | ||
---|---|---|---|
Řádek 200: | Řádek 200: | ||
{{: | {{: | ||
+ | |||
+ | ===== node-red-node-mysql | ||
+ | |||
+ | Chtěl jsem využít node [[https:// | ||
+ | |||
+ | V Dockeru mi ale běží Node RED a chci, aby přistupoval k localhostu hostnovaného počítače, | ||
+ | |||
+ | První překážka k tomu, aby se Node RED dokázal připojit k databázi je, že pokud zadám v Node RED localhost, tak se bude snažit připojit na port MySQL databáze v Node RED, kde žádná databáze neběží. O mém problému popisuje tato [[https:// | ||
+ | |||
+ | Zkoušel jsem nejdříve, aby MySQL naslouchala na IP adrese síťového bridge Node RED, ale pak bych musel vyřadit naslouchání MySQL na localhostu. A to jsme nechtěl. Proto jsem zvolil variantu, kdy kontejner v Node RED dostane k dispozici localhost hostitelského počítače. Není to úplně doporučované řešení, nicméně aktuálně mi to problém řeší a tím, že Node RED také může běžet pouze na localhostu, tak mi to až tak nevadí. | ||
+ | |||
+ | Konfigurace Node RED pro docker-composer tedy vypadá takto (přidán parametr **network_mode: | ||
+ | |||
+ | <code yaml> | ||
+ | version: ' | ||
+ | |||
+ | services: | ||
+ | |||
+ | nodered: | ||
+ | container_name: | ||
+ | ports: | ||
+ | - ' | ||
+ | environment: | ||
+ | - LANG=cs_CZ.UTF-8 | ||
+ | - TZ=Europe/ | ||
+ | volumes: | ||
+ | - ' | ||
+ | image: nodered/ | ||
+ | network_mode: | ||
+ | |||
+ | </ | ||
+ | |||
+ | To mi pomohlo, aby byla databáze dostupná. Pak jsem ale narazil na to, že uživatel neměl do databáze přístup. Setkal jsem se s hlášením: | ||
+ | |||
+ | Z hostitelského počítače jsem problém s připojením neměl, takže to byl problém z kontejneru s Node RED. Někdo přede mnou měl také podobný problém: [[https:// | ||
+ | |||
+ | <code JavaScript> | ||
+ | const mysql = require(' | ||
+ | |||
+ | var connection = mysql.createConnection({ | ||
+ | host : ' | ||
+ | user : ' | ||
+ | port : ' | ||
+ | password : ' | ||
+ | database : ' | ||
+ | }); | ||
+ | |||
+ | |||
+ | connection.connect((err) => { | ||
+ | if(!err) | ||
+ | console.log(' | ||
+ | else | ||
+ | console.log(' | ||
+ | }); | ||
+ | </ | ||
+ | |||
+ | |||
+ | Skript jsem pak spustil v kontejneru: | ||
+ | |||
+ | <code bash> | ||
+ | node jmenoskriptu.js | ||
+ | </ | ||
+ | |||
+ | |||
+ | Nakonec jsem přišel na to, že problém byl v MySQL databázi u uživatele. Vytvořil jsem uživatele s omezeným oprávněním přístupu do databáze. Namísto uživatele **mujzivatel@localhost** jsem měl vytvořil uživatele **mujuzivatel@%**. Tady se promítá to, že nepřistupuji jako uživatel z localhostu, ale kontejneru. | ||
+ | |||
+ | |||
+ | V mém případě jsem u modulu zjistil ještě jednu zradu. Pro každý příkaz, který jde na nod MySQL, se vytvoří zvlášť připojení do MySQL databáze. Protože mám počet připojení do databáze limitovaný, | ||
+ | |||
+ | Dalším průzkumem jsem zjistil, že v pluginu je max connection nastaven na 50. Například [[https:// | ||
+ | |||
+ | Pro vypsání všech uživatelů a procesů v databázi slouží dotaz: | ||
+ | |||
+ | <code sql> | ||
+ | show processlist; | ||
+ | </ | ||
+ | |||
+ | |||
+ | V kódu pluginu jsem vyčetl tento řádek: | ||
+ | |||
+ | <code JavaScript> | ||
+ | connectionLimit: | ||
+ | </ | ||
+ | |||
+ | Řádek říká, že pokud je nastavená proměnná **RED.settings.mysqlConnectionLimit** v Node RED, tak vezme číslo z ní a pokud nastavená není, tak defaultní connectionLimit je 50. | ||
+ | |||
+ | Řešením pro mě bylo nastavit proměnnou v Node RED v souboru **settings.js**: | ||
+ | |||
+ | <code JavaScript> | ||
+ | module.exports = { | ||
+ | |||
+ | // tady přidávám proměnnou pro limit spojení s databází | ||
+ | // přidání musí být za definicí module.exports = { | ||
+ | mysqlConnectionLimit: | ||
+ | |||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Animace v Node RED ===== | ||
+ | |||
+ | Toto video popisuje práci s pluginem [[https:// | ||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | Nabízí se připravit si v Inkscape SVG grafiku a pak jí v NodeRED dodělat " | ||
+ | |||
+ | {{youtube> | ||
Řádek 206: | Řádek 314: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | |||
+ | {{youtube> | ||
+ | ==== InfluxDB ==== | ||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | ==== InfluxDB2 ==== | ||
+ | Zdá se, že je pouze pro 64 bit verzi operačního systému. Takže minimálně RPi4 a 64 bit verzi. | ||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | {{youtube> | ||
+ | |||
+ | {{youtube> |