Node-RED: Ladění HTTP endpointu

Zápisník experimentátora

Hierarchy: Node.js

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.

Ladit oba programy najednou je zbytečně komplikované a pomalé. Pokud máte jasnou představu o rozhraní, které budou oba programy používat, můžete si vývoj značně zjednodušit. A můžete si nachystat i sadu testů, které toto rozhraní odzkouší.

Postman

Program Postman naleznete na adrese https://www.getpostman.com/. Tento program umožňuje navrhnout si soubor HTTP požadavků a sledovat odpovědi, které HTTP server zašle zpět. HTTP požadavky si můžete vytvořit pro všechny běžně používané způsoby komunikace pomocí protokolu HTTP. My se budeme věnovat pouze požadavkům typu POST, které odesílají a přijímají obsah v podobě JSON dat. Ale nic vám nebrání komunikovat i ostatními způsoby.

Postman používám proto, protože je v něm jednoduché připravit si několik požadavků na stejnou URL, které odešlou různé parametry. Takto můžete pohodlně otestovat chování svého rozhraní na výskyt různých chyb. V článku o ESP8266 se budeme věnovat ošetření různých chyb a proto jsem si navrhl rozhraní v Node-RED, které bude odolné vůči více chybám.

HTTP požadavek musí vypadat stejně bez ohledu na to, zda ji vytvoří Postman nebo ESP8266. Díky tomu nemusím všechny testy postupně nahrávat do ESP8266, ale si je můžu pohodlně připravit. Teprve když budu s odpověďmi ze serveru spokojený, budu programovat výsledný kód pro ESP8266.

Vzorové údaje

Vzorové údaje obsahují pole informací o senzorech a hodnotách teploty. Takto vypadá správně vytvořené pole s údaji.

[
    {
        "id": "0011223344556677",
        "value": 25
    },
    {
        "id": "0011223344556688",
        "value": 26
    }
]

Navrhl jsem tři kontroly, které na serveru otestují odeslány údaje. Pouze správné údaje jsou dále posunuty v toku a jakékoliv chyby jsou odeslány jako odpověď zpět na HTTP klienta.

  • POST požadavek musí mít jako tělo JSON pole.
  • Položka pole musí být objekt s parametry id a value.
  • Parametr id musí mít 16 hexadecimálních znaků, což je odvozeno od identifikátoru čidla teploty DS18B20.

HTTP požadavek

Na následujících třech obrázcích je vidět, jak vypadají údaje HTTP požadavky a jaká odpověď přišla zpět z HTTP serveru.

Úplně špatně sestavené tělo požadavky

Tělo požadavky jako pole ale s nesprávnými parametry

Správně sestavené tělo HTTP požadavky

Ladění chyb v Node-RED

V Node-RED můžete v uzlech typu Function vypisovat ladicí informace na konzolu, musíte však namísto příkazu console.log použít příkaz node.log.


23.04.2019


Menu