3.15.3. Tweede flow: HTTP request¶
 
HTTP-flow met selectie uit HTML-document¶
In deze tweede flow gebruiken we de http-request node: dit is een knoop waarmee je een http request naar een webserver kunt sturen.
Dit kun je bijvoorbeeld gebruiken voor het raadplegen van een web-API, zoals we later zullen zien.
In dit geval gebruiken deze node voor het opvragen van de webpagina (HTML-document) van i&i. Daarmee kunnen we controleren of deze website online is. We gebruiken de HTML-node om de “H1”-elementen van het HTML-document te selecteren.
We gebruiken voor deze flow de volgende nodes:
| figuur | naam | soort node | 
| http-request-node | function (in/out) | |
| html-node | function (in/out) | 
Met de http-request-node verstuur je een HTTP-request; het resultaat is de response van de server. Dit kun je dan weer verder bewerken.
Met de html-node kun je elementen in een HTML-document selecteren.
 
Flow met HTTP-request node¶
Opdracht A
- Maak de bovenstaande flow 
- Configureer de HTTP-request-node: Method: - GET; URL:- https://ieni.org
- Configureer de HTML-node: Selector: h1 
- Deploy 
Als je nu de inject-node activeert (klik op de knop links), dan stuurt NodeRed een HTTP-request met de opgegeven URL. Het HTML-document dat de webserver terugstuurt wordt gefilterd: het resultaat (msg.payload) is een array met alle H1-titels. Controleer dit.
- Verander de bovenstaande flow door het configureren van de inject-node zodat deze elke 5 minuten het HTTP-request verstuurt, 
- Deploy 
Controleer dat je elke 5 minuten een bericht van de website krijgt. Als de server de juiste HTML-pagina terugstuurt, is de website nog “online”.
- De-activeer de flow, door een dubbele klik op de flow-tab, en in het configuratie-venster van de flow de “enabled”-schakelaar op “uit” te zetten. 
Controleer dat je nu geen berichten meer krijgt.
Opdracht B
 
Aansturen van een paar LEDs in een IoT-knoop¶
Een volgende stap is dat je dit hele proces automatiseert, en afhankelijk van het resultaat de ene of de andere LED van je IoT-knoop aanstuurt. We beginnen met het aan- en uitzetten van de LEDs van de IoT-knoop.
- Maak de bovenstaande flow: 
De template-node “Led 1 on, Led 0 off” configureer je als volgt:
- Format: plain text 
- Syntax Highlight: JSON 
- Output as: plain text (of: parsed JSON) 
- Template: - {"0": {"dOut": 0}, "1": {"dOut": 1}}
Bij de template-node “Led 0 on, Led 1 off” zijn de getalwaarden voor de actuatoren net omgekeerd.
De MQTT-output-node configureer je als volgt:
- topic: - node/xxxx/actuators, met voor- xxxxde node-ID van je eigen knoop.
- Server: - als je al een server hebt, selecteer je de juiste server; 
- als je nog geen server hebt, selecteer je: “add new mqtt broker…” 
- klik op het pen-symbool ernaast om de server te configureren: 
- vul onder de tab Connection de domeinnaam van de server in, en het poortnummer (meestal 1883) 
- vul onder de tab Security de username en het password van de server in; vraag dit eventueel aan je docent. 
 
- Deploy 
Controleer nu of je met behulp van de inject-nodes de LEDs aan- en uit kunt zetten. De ene knop zet de ene LED aan en de andere uit, en omgekeerd.
Opdracht C
 
Controleren van de inhoud van een webpagina¶
- Maak de bovenstaande flow: 
In de functie-node gebruik je de volgende tekst voor de functie:
var title = msg.payload[0] || "";
if (title == "Informatica is de Toekomst.") {
    result = [{payload: title}, null];
} else {
    result = [null, {payload: "ERROR"}];
}
return result;
Zoals je ziet levert de functie een array op met twee resultaten,
waarvan in dit geval altijd één “leeg” is (null).
Configureer ook de function-node zo dat deze twee outputs oplevert.
Je krijgt dan een function-node met twee output-bolletjes,
waaraan je twee verschillende flows kunt verbinden.
Op deze manier kun je, afhankelijk van een voorwaarde, verschillende flows activeren.
Opdracht D
 
Controleren en signaleren van de server-activiteit¶
Als laatste stap combineer je de verschillende onderdelen, in een flow zoals hierboven.
Als het goed is brandt alleen LED1 van de IoT-knoop, omdat de server meestal “up” is.
Test Je kunt met de hand de LED0 aanzetten, door een inject-node te verbinden met de input van “Led 0 on, led 1 off”. Controleer hiermee dat LED0 aangaat, en na verloop van tijd LED1 - als de server “up” is. Verwijder na deze test de inject-node weer.

