Node-RED: Ladenie HTTP endpointu

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

Postman

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

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.

  • POST požiadavka musí mať ako telo JSON pole.
  • Položka poľa musí byť objekt s parametrami id a value.
  • Parameter id musí mať 16 hexadecimálnych znakov, čo je odvodené od identifikátora senzora teploty DS18B20.

HTTP požiadavka

Na nasledujúcich troch obrázkoch je vidno, ako vyzerajú údaje HTTP požiadavky a aká odpoveď prišla naspäť z HTTP servera.

Úplne zle zostavené telo požiadavky

Telo požiadavky ako pole ale s nesprávnymi parametrami

Správne zostavené telo HTTP požiadavky

Ladenie chýb v Node-RED

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


Menu