Zápisník experimentátora
Hierarchy: Node.js
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.
Ladiť obidva programy naraz je zbytočne komplikované a pomalé. Pokiaľ máte jasnú predstavu o rozhraní, ktoré budú oba programy používať, môžete si vývoj značne zjednodušiť. A môžete si nachystať aj sadu testov, ktoré toto rozhranie odskúšajú.
Program Postman nájdete na adrese https://www.getpostman.com/. Tento program umožňuje navrhnúť si súbor HTTP požiadaviek a sledovať odpovede, ktoré HTTP server zašle naspäť. HTTP požiadavky si môžete vytvoriť pre všetky bežne používané spôsoby komunikácie pomocou protokolu HTTP. My sa budeme venovať iba požiadavkám typu POST, ktoré odosielajú a prijímajú obsah v podobe JSON dát. Ale nič vám nebráni komunikovať aj ostatnými spôsobmi.
Postman používam preto, pretože je v ňom jednoduché pripraviť si niekoľko požiadaviek na rovnakú URL, ktoré odošlú rôzne parametre. Takto môžete pohodlne otestovať správanie svojho rozhrania na výskyt rozličných chýb. V článku o ESP8266 sa budeme venovať ošetreniu rôznych chýb a preto som si navrhol rozhranie v Node-RED, ktoré bude odolné voči viacerým chybám.
Výsledná HTTP požiadavka musí vyzerať rovnako bez ohľadu na to, či ju vytvorí Postman alebo ESP8266. Vďaka tomu nemusím všetky testy postupne nahrávať do ESP8266, ale si ich môžem pohodlne pripraviť. Až keď budem s odpoveďmi zo servera spokojný, budem programovať výsledný kód pre ESP8266.
Vzorové údaje obsahujú pole informácií o senzoroch a hodnotách teploty. Takto vyzerá správne vytvorené pole s údajmi.
[ { "id": "0011223344556677", "value": 25 }, { "id": "0011223344556688", "value": 26 } ]
Navrhol som tri kontroly, ktoré na serveri otestujú odoslané údaje. Iba správne údaje sú ďalej posunuté v toku a akékoľvek chyby sú odoslané ako odpoveď naspäť na HTTP klienta.
Na nasledujúcich troch obrázkoch je vidno, ako vyzerajú údaje HTTP požiadavky a aká odpoveď prišla naspäť z HTTP servera.
V Node-RED môžete v uzloch typu Function vypisovať ladiace informácie na konzolu, musíte však namiesto príkazu console.log
použiť príkaz node.log
.
22.04.2019