JSON gegevens verder verwerken
Last updated
Last updated
In je laatst gemaakte flow heb je gezien hoe je een JSON string kunt converteren naar JSON objecten (eigenlijk een JSON array met objecten), waarbij elk JSON object een key:value paar vormt, bijvoorbeeld temperature: 206. De key ‘temperature’ heeft de value ‘206’.
In de volgende stap gaan we met JavaScript deze JSON objecten omzetten in het message formaat dat in NodeRed wordt gebruikt. Sleep een function node van het palette naar je werkplek, zet er de volgende code in en noem deze “Converteer”:
Zoals steeds, druk op de rode Done knop. Plaats de function node in je flow, als volgt, en druk op de rode Deploy knop. Als de data is binnengekomen zie je nu alle gegevens in het message formaat van NodeRed:
Je ziet nu duidelijk dat de temperatuur, druk en vochtigheid als message kenmerken beschikbaar zijn. Overigens is de oorspronkelijke JSON data ook nog steeds beschikbaar, als je eerst op het pijltje naast je node:id en daarna op het pijltje naast het payload:object drukt zie je de JSON objecten nog staan. Je JavaScript heeft message kenmerken toegevoegd aan de oorspronkelijke message.
Als volgende stap ga je de gegevens van de sensor op school weergeven op je dashboard. We maken een meter voor de temperatuur, de luchtdruk en de relatieve vochtigheid.
Je kunt een extra Tabblad op je dashboard maken, zodat de meters met temperatuur,luchtdruk en relatieve vochtigheid niet naast je eerder gemaakte seconde teller komen. Het is wel aardig als die een eigen tabblad hebben. Dat doe je door in de rechterkolom van NodeRed eerst je dashboard te selecteren, en dan op de ‘+tab’ knop te drukken. Er komt onder in de lijst een nieuw tab, door daar met je muis boven te gaan staan kun je de knop ‘+edit’ selecteren en kun je de naam veranderen. Geef hem een naam zoals ‘Metis weer’, en voeg op dezelfde manier een groep toe (‘+group’) en noem die ‘Meters’. Druk op de rode ‘Deploy’ knop.
Op je NodeRed werkplek kun je nu de debug node weghalen en een gauge node (uit de dashboard sectie van je nodes palette) toevoegen. Configureer die als volgt om de temperatuur op het Metis op je dashboard weer te geven:
Hierin zijn de items Group (op deze plaats komt je meter te staan op je dashboard) en Value format (dit onderdeel van je message wordt weergegeven) met name belangrijk. Druk op de rode Deploy knop en ga naar je dashboard. Je moet nu het juiste Tabblad selecteren, dat doe je door linksboven de drie streepjes (de hamburger) te selecteren, en dan je tabblad Metis Weer. Je krijgt dan je Temperatuur te zien:
Voer bovenstaande nog twee keer uit, één keer voor de luchtdruk, en de andere keer voor de relatieve luchtvochtigheid, zodat je dashboard compleet is met alle informatie over de situatie op het Metis:
Om te achterhalen wat je bij de gegevens van de twee extra meters moet invullen kun je de JavaScript code van de function node die je net hebt gemaakt eens goed bekijken!
Je hebt nu een dashboard gemaakt met zinvolle gegevens, die je van ergens anders hebt opgehaald! Dit is een goed voorbeeld van wat je met IoT en NodeRed kunt doen!
Als je het leuk vindt kun je je dashboard ook nog uitbreiden met grafieken voor de temperatuur, luchtdruk en luchtvochtigheid! Net als je eerder met de teller hebt gedaan! Daarmee kun je vastleggen hoe bijvoorbeeld de temperatuur verloopt gedurende de dag! Let wel op dat je pas een eerste lijn begint te zien in je grafiek als je twee meetpunten hebt, dus worst-case moet je bijna acht minuten wachten voordat je iets ziet.Tenslotte wordt er vanaf de sensor bij het Metis nog één leuke meetwaarde meegestuurd, namelijk de lichtsterkte. Deze waarde geeft aan hoe licht het is, en geeft dat weer met een waarde tussen de 0 en de 1000. De waarde wordt meegestuurd en staat in de JSON string als aIn, kun jij je hele flow zo aanpassen dat deze waarde ook wordt weergegeven op je dashboard, zowel met een meter als met een grafiek?