Node.js

Page

Stránky / Softvér /

Toto je úvodná stránka k využitiu Node.js na spoluprácu s Arduinom. Node.js je vývojové prostredie, umožňujúce spúšťanie javascriptu priamo na vašom počítači, alebo na serveri v cloude. Postupne tu pribudnú aj informácie, ktoré úplne nesúvisia s Arduinom. Ale mnohým z vás sa môžu hodiť, pretože vývoj serverov na Internete sa presúva práve ku takýmto technológiám.

Node.js na Internete

Node.js nájdete na tejto stránke. Zo stránky si môžete vývojové prostredie nainštalovať a nájdete tam aj niekoľko tutoriálov, ktoré vás vedia dostať do problematiky. Javascript je syntaxou veľmi podobný c++, preto by pre vás pochopenie príkladov nemalo byť ťažšie, než používate pri písaní programov pre Arduino.

npm

Prakticky neoddeliteľnou súčasťou je program npm (node package manager). Je to balíčkovací systém, ktorý umožňuje spravovať všetky balíčky, ktoré vo svojich projektoch potrebujete. Balíček si môžete nainštalovať do lokálneho alebo globálneho adresára. Balíček v lokálnom adresári je umiestnený v podadresári node_modules a je prístupný len pre konkrétny projekt. Balíček v globálnom adresári je nainštalovaný iba raz a je prístupný pre všetky projekty. Obvyklá prax je taká, že skoro všetko je v lokálnych balíčkoch a globálnych máte iba veľmi špecifické balíčky.

Užitočné príkazy:

  • npm install <package> - Nainštalovanie balíčka do lokálneho adresára.
  • npm install --save <package> - Nainštalovanie balíčka do lokálneho adresára a pridanie odkazu do súboru package.json.
  • npm install -g <package> - Nainštalovanie balíčka do globálneho adresára.
  • npm list -g --depth=0 - Zoznam globálnych balíčkov.
  • npm uninstall <package> - Odinštalovanie lokálneho balíčka.
  • npm install - Nainštalujú sa do lokálneho adresára všetky balíčky, ktoré sú vymenované v súbore package.json.
  • npm init - Keď príkaz spustíte v prázdnom adresári projektu, vytvorí vám súbor package.json. Program sa bude postupne pýtať na niektoré parametre.
  • npm init -f - Keď príkaz spustíte v prázdnom adresári projektu, vytvorí vám súbor package.json. Program sa nebude nič pýtať.

package.json

Tento súbor popisuje inštaláciu vášho balíčka. Obsahuje základné informácie o autorovi balíćka a zoznam používaných balíčkov iných autorov. Napríklad keď som vytváral ukážku pre Arduino a sériový port, najprv som príkazom npm init vytvoril základný balíček. Potom som do neho príkazom npm install --save serialport doinštaloval balíček pre komunikáciu cez sériový port. Na záver som ešte ručne doplnil niektoré parametre spustenia do súboru. Výsledný súbor vyzerá naprí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

Skôr alebo neskôr narazíte na potrebu, spustiť vo virtuálnom stroji svoj server aj po reštarte. Môžete na to využiť balíček pm2. Dokumentáciu nájdete na stránke http://pm2.keymetrics.io/. Pokiaľ nechcete študovať tento balíček do hĺbky, tu je postup pre virtuálny stroj vo VirtualBoxe. Použijeme hotový stroj Node.js od firmy Bitnami. Tá používa Ubuntu vo verzii 14.

  • sudo npm install -g pm2 - Nainštalujete balíček globálne.
  • git clone https://github.com/roboulbricht/node.js-tests - Stiahnete si moje príklady.
  • cd node.js-tests - Presun do adresára.
  • cd 05-express-json - Presun do adresára.
  • npm install - Nainštalovanie balíčkov.
  • sudo ufw allow 3000/tcp - Povolíte si port vo firewalle.
  • npm start - Pokusné spustenie servera. Ak sa rozbehne, zastavte ho klávesovou skratkou Ctrl-C. Vyskúšajte sa pripojiť k serveru. Napríklad u mňa doma je to adresa http://192.168.0.31:3000.
  • cd ~ - Vrátite sa do svojho koreňového adresára.
  • pm2 start --name www node.js-tests/05-express-json/bin/www - Spustíte server.
  • pm2 startup - Toto zlyhá, ale vypíše vám presný príkaz, ktorý máte napísať miesto 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 bolo v mojom prípade.
  • pm2 save - Uloženie konfigurácie. Po reštarte virtuálneho stroja by to malo zase všetko fungovať a server by mal byť spustený.

Články v blogu

V blogu som písal aj o týchto veciach.

Node.js aplikácia ako Windows služba

V tomto článku si ukážeme, ako nainštalovať Node.js aplikáciu do Windows ako službu. To zabezpečí, že po zapnutí počítača bude aplikácia spustená. Tento postup využíva balíček PM2.

Node.js - Parsovanie MIDI súboru

V tomto článku si ukážeme, ako sa dá parsovať MIDI súbor pomocou javascriptu. Ako MIDI súbor použijeme stupnicu, ktorú si vygenerujeme v programe MuseScore. Na parsovanom obsahu si ukážeme, čo sa v samotnom súbore skrýva.

Node-RED

Node-RED je tokovo orientované prostredie, pomocou ktorého sa ľahko vytvárajú toky dát z jedného uzla do druhého. Znie to možno podivne, ale neskutočne to uľahčuje návrh spracovania dát. Napríklad Arduino produkuje záznamy o teplote a s týmito záznamami robíte postupne nejaké operácie. Arduino je pripojené do Node-RED cez sériový port. Ale môžete použiť aj napríklad ESP8266 alebo ESP32 a pripojiť ich k Node-RED pomocou HTTP.

Node-RED je nadstavbou v Node.js. Je vhodné si ho nainštalovať ako globálny balíček. Po spustení vám vypíše číslo portu na počítači, na ktorom sa spustil HTTP server. Na danej adrese nájdete editor, pomocou ktorého si vytvárate jednotlivé toky.

Node-RED: Inštalácia

Node-RED je tokovo orientované prostredie, ktoré umožňuje vytvárať toky dát. Funguje ako balíček pre Node.js, ktorý sa nainštaluje na počítač. Po spustení programu sa pripojíte na lokálny HTTP server. Tam nájdete editor tokov, ktorý umožňuje vytvárať rozmanité toky, ktoré sa skladajú z uzlov a prepojení medzi nimi. Vytvorený tok si nahráte na server, kde sa spustí a bude spracovávať údaje, ktoré do neho pošlete.

Node-RED: Prvý tok

V tomto článku si ukážeme, ako sa vytvárajú toky. Bude to jednoduchý príklad, ktorý je založený na príklade z oficiálnej dokumentácie. Vytvorený tok bude mať jeden vstup, jednu funkciu, ktorá dáta modifikuje a jeden výstup na debug konzolu. V predchádzajúcom článku sme si ukázali, ako sa Node-RED inštaluje a ako sa pracuje s editorom tokov. Poďme si vytvoriť prvý tok, ktorý nám pomôže si predstaviť, na čo sú toky dobré.

Node-RED: Ladenie HTTP endpointu

Pracujem na pokračovaní článku o Node-RED. V pokračovaní článku sa budem venovať ESP8266 a senzoru teploty DS18B20. Ale predtým, ako to celé naprogramujeme, napíšem tento článok o ladení HTTP servera, ktorým je v podstate samotný tok, ktorý pripravujem pre ESP8266. ESP8266 funguje ako HTTP klient a Node-RED ako HTTP server.

Node-RED: Arduino a DS18B20

Node-RED vie pracovať so sériovým portom. V tomto článku si na sériový port pripojíme Arduino a senzor teploty DS18B20. Arduino bude výsledky merania odosielať cez sériový port a Node-RED ich bude parsovať do podoby, ktorá umožňuje ľahšie spracovanie. Tok v Node-RED bude prispôsobený tak, aby vedel spracovať údaje z viacerých senzorov teploty DS18B20.

Node-RED: ESP8266 a DS18B20

V dnešnom článku prepojíme dve úžasné technológie. Node-RED a jeho toky nám budú slúžiť ako server a ESP8266 budeme používať ako HTTP klienta, ktorý bude na server odosielať nameranú teplotu. V tomto článku využijeme vedomosti z dvoch predchádzajúcich článkov. Arduino nahradíme za ESP8266 a meranú teplotu nebudeme prenášať cez sériový port, ale pomocou protokolu HTTP. V Node-RED budeme používať HTTP server, na ktorý bude ESP8266 odosielať nameranú teplotu. Poďme na to.

Publikované balíčky

Pretože som Node.js použil aj pri niektorých projektoch, publikoval som aj niekoľko balíčkov. Všetky balíčky sú s licenciou MIT.

  • mssql-functions (npm, GitHub) - Funkcie na pohodlnú prácu s databázovým serverom MS SQL Server.
  • mysql-functions (npm, GitHub) - Funkcie na pohodlnú prácu s databázovým serverom MySQL.

08.05.2017


Menu