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