Node.js

Page

Stránky / Softvér /

Toto je úvodní stránka k využití Node.js na spolupráci s Arduinem. Node.js je vývojové prostředí, umožňující spouštění javascriptu přímo na počítači nebo na serveru v cloudu. Postupně zde přibudou i informace, které zcela nesouvisí s Arduinem. Ale mnohým z vás se mohou hodit, protože vývoj serverů na Internetu se přesouvá právě k takovým technologiím.

Node.js na Internetu

Node.js najdete na této stránce. Ze stránky můžete vývojové prostředí nainstalovat a najdete tam i několik tutoriálů, které vás umí dostat do problematiky. Javascript je syntaxí velmi podobný c ++, proto by pro vás pochopení příkladů nemělo být těžší, než používáte při psaní programů pro Arduino.

npm

Prakticky nedílnou součástí je program npm  (node package manager). Je to balíčkovací systém, který umožňuje spravovat všechny balíčky, které ve svých projektech potřebujete. Balíček si můžete nainstalovat do lokálního nebo globálního adresáře. Balíček v lokálním adresáři je umístěn v podadresáři node_modules a je přístupný pouze pro konkrétní projekt. Balíček v globálním adresáři je nainstalován pouze jednou a je přístupný pro všechny projekty. Obvyklá praxe je taková, že skoro všechno je v lokálních balíčcích a globálních máte pouze velmi specifické balíčky.

Užitečné příkazy:

  • npm install <package> - Nainstalování balíčku do lokálního adresáře.
  • npm install --save <package> - Nainstalování balíčku do lokálního adresáře a přidání odkazu do souboru package.json.
  • npm install -g <package> - Nainstalování balíčku do globálního adresáře.
  • npm list -g --depth=0 - Seznam globálních balíčků.
  • npm uninstall <package> - Odinstalování lokálního balíčku.
  • npm install - Nainstalují se do lokálního adresáře všechny balíčky, které jsou vyjmenovány v souboru package.json.
  • npm init - Když příkaz spustíte v prázdném adresáři projektu, vytvoří vám soubor package.json. Program se bude postupně ptát na některé parametry.
  • npm init -f - Když příkaz spustíte v prázdném adresáři projektu, vytvoří vám soubor package.json. Program se nebude nic ptát.

package.json

Tento soubor popisuje instalaci vašeho balíčku. Obsahuje základní informace o autorovi balíčků a seznam používaných balíčků jiných autorů. Například když jsem vytvářel ukázku pro Arduino a sériový port, nejprve jsem příkazem npm init vytvořil základní balíček. Pak jsem do něj příkazem npm install --save serialport doinstalovat balíček pro komunikaci přes sériový port. Na závěr jsem ještě ručně doplnil některé parametry spuštění do souboru. Výsledný soubor vypadá například takto.

{
  "name": "arduinoserialtest",
  "version": "1.0.0",
  "description": "Receiver from Arduino.",
  "main": "index.js",
  "scripts": {
    "ports": "node list.js",
    "console": "node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "Robo Ulbricht",
  "license": "ISC",
  "dependencies": {
    "serialport": "^4.0.7"
  }
}

pm2

Dříve nebo později narazíte na potřebu, spustit ve virtuálním stroji svůj server i po restartu. Můžete na to využít balíček pm2. Dokumentaci naleznete na stránce http://pm2.keymetrics.io/. Pokud nechcete studovat tento balíček do hloubky, zde je postup pro virtuální stroj ve VirtualBoxu. Použijeme hotový stroj Node.js od firmy Bitnami. Ta používá Ubuntu ve verzi 14.

  • sudo npm install -g pm2 - Nainstalujete balíček globálně.
  • git clone https://github.com/roboulbricht/node.js-tests - Stáhnete si mé příklady.
  • cd node.js-tests - Přesun do adresáře.
  • cd 05-express-json - Přesun do adresáře.
  • npm install - Nainstalování balíčků.
  • sudo ufw allow 3000/tcp - Povolíte si port ve firewallu.
  • npm start - Pokusné spuštění serveru. Pokud se rozběhne, zastavte ho klávesovou zkratkou Ctrl-C. Vyzkoušejte se připojit k serveru. Například u mě doma je to adresa http://192.168.0.31:3000.
  • cd ~ - Vrátíte se do svého kořenového adresáře.
  • pm2 start --name www node.js-tests/05-express-json/bin/www - Spustíte server.
  • pm2 startup - Toto selže, ale vypíše vám přesný příkaz, který máte napsat místo toho.
  • sudo env PATH=$PATH:/opt/bitnami/nodejs/bin /opt/bitnami/nodejs/lib/node_modules/pm2/bin/pm2 startup upstart -u bitnami --hp /home/bitnami - Takto to bylo v mém případě.
  • pm2 save - Uložení konfigurace. Po restartu virtuálního stroje by to mělo zase všechno fungovat a server by měl být spuštěn.

Články v blogu

V blogu jsem psal i o těchto věcech.

Node.js aplikace jako Windows služba

V tomto článku si ukážeme, jak nainstalovat Node.js aplikaci do Windows jako službu. To zajistí, že po zapnutí počítače bude aplikace spuštěna. Tento postup využívá balíček PM2.

Node-RED

Node-RED je tokově orientované prostředí, pomocí kterého se snadno vytvářejí toky dat z jednoho uzlu do druhého. Zní to možná podivně, ale neskutečně to usnadňuje návrh zpracování dat. Například Arduino produkuje záznamy o teplotě a s těmito záznamy děláte postupně nějaké operace. Arduino je připojeno do Node-RED přes sériový port. Ale můžete použít i například ESP8266 nebo ESP32 a připojit je k Node-RED pomocí HTTP.

Node-RED je nadstavbou v Node.js. Je vhodné si jej nainstalovat jako globální balíček. Po spuštění vám vypíše číslo portu na počítači, na kterém se spustil HTTP server. Na dané adrese najdete editor, pomocí kterého si vytváříte jednotlivé toky.

Node-RED: Instalace

Node-RED je tokově orientované prostředí, které umožňuje vytvářet toky dat. Funguje jako balíček pro Node.js, který se nainstaluje na počítač. Po spuštění programu se připojíte na lokální HTTP server. Tam najdete editor toků, který umožňuje vytvářet rozmanité toky, které se skládají z uzlů a vazeb mezi nimi. Vytvořený tok si nahrajete na server, kde se spustí a bude zpracovávat údaje, které do něj pošlete.

Node-RED: První tok

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é.

Node-RED: Ladění HTTP endpointu

Pracuji na pokračování článku o Node-RED. V pokračování článku se budu věnovat ESP8266 a senzoru teploty DS18B20. Ale předtím, než to celé naprogramujeme, napíšu tento článek o ladění HTTP serveru, kterým je v podstatě samotný tok, který připravuji pro ESP8266. ESP8266 funguje jako HTTP klient a Node-RED jako HTTP server.

Node-RED: Arduino a DS18B20

Node-RED umí pracovat se sériovým portem. V tomto článku si na sériový port připojíme Arduino a senzor teploty DS18B20. Arduino bude výsledky měření odesílat přes sériový port a Node-RED je bude parsovat do podoby, která umožňuje snadnější zpracování. Tok v Node-RED bude přizpůsoben tak, aby věděl zpracovat údaje z více senzorů teploty DS18B20.

Node-RED: ESP8266 a DS18B20

V dnešním článku propojíme dvě úžasné technologie. Node-RED a jeho toky nám budou sloužit jako server a ESP8266 budeme používat jako HTTP klienta, který bude na server odesílat naměřenou teplotu. V tomto článku využijeme znalosti ze dvou předchozích článků. Arduino nahradíme za ESP8266 a měřenou teplotu nebudeme přenášet přes sériový port, ale pomocí protokolu HTTP. V Node-RED budeme používat HTTP server, na který bude ESP8266 odesílat naměřenou teplotu. Pojďme na to.

Publikované balíčky

Protože jsem Node.js použít i při některých projektech, publikoval jsem i několik balíčků. Všechny balíčky jsou s licencí MIT.

  • mssql-functions (npm, GitHub) - Funkce na pohodlnou práci s databázovým serverem MS SQL Server.
  • mysql-functions (npm, GitHub) - Funkce na pohodlnou práci s databázovým serverem MySQL.

03.04.2020


Menu