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

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.

07.09.2019


Menu