Inhoudsopgave:
- Benodigdheden
- Stap 1: REST JSON
- Stap 2: Stroom
- Stap 3: Dashboard
- Stap 4: Importstroom (project, script, enz.)
- Stap 5: Hoe het allemaal samenwerkt
- Stap 6: HTTP POST en GET
- Stap 7: Knopknooppunten
- Stap 8: Functieknooppunt
- Stap 9: JSON Node en Inject Node
- Stap 10: Tekstknooppunt en foutopsporingsknooppunt
- Stap 11: Kaartknooppunt
- Stap 12: Meetknooppunten en koppelknooppunten
- Stap 13: Bedankt voor het lezen van mijn Instructable
Video: Werken met JSON in Node-RED: 13 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
Deze instructable leert je hoe je met JSON in node-RED kunt werken. Ik zal je laten zien hoe je genetwerkte stopcontacten kunt bedienen door json-bestanden over te zetten via http get en post. En u kunt deze kennis later gebruiken om elk apparaat te besturen dat het JSON-protocol ondersteunt.
Voor lesdoeleinden zal ik de NETIO 4All-netwerkstopcontact gebruiken, maar maak je geen zorgen, je hoeft niets te kopen. NETIO heeft een geweldige 4All online demo die je kunt gebruiken.
Benodigdheden
NETIO 4All netwerk powersocket of 4All online demo:
Knooppunt-RED
Stap 1: REST JSON
Dit deel is een beetje technisch, maar heb alsjeblieft even geduld. Als ik dit deel niet heb uitgelegd, zou je problemen hebben met het begrijpen van de waarden in json-bestanden die we in node-RED zullen verzenden.
Acties van toepassing op elke uitgang (stopcontact):
In alle M2M-protocollen gebruiken NETIO-stopcontacten dezelfde acties die kunnen worden toegepast op individuele uitgangen. Er kan bijvoorbeeld een Toggle- of Short Off-actie naar elke uitgang worden geschreven.
De variabele Action kan echter alleen worden gebruikt voor het schrijven van waarden, het kan niet worden gebruikt om de huidige uitgangsstatus te lezen.
Dit zijn acties die u op elke uitvoer kunt toepassen:
0 = Uitgang uitgeschakeld (Uit)
1 = Uitgang ingeschakeld (Aan)
2 = Uitgang korte tijd uitgeschakeld (kort uit)
3 = Uitgang kort ingeschakeld (kort Aan)
4 = Uitgang geschakeld van de ene toestand naar de andere (toggle)
5 = Uitgangsstatus ongewijzigd (geen wijziging)
6 = Genegeerd
Voorbeeld - JSON-bestand om het uitvoernr. 1:
{
"Uitgangen": [{
"ID": 1, "Actie": 4
}]
}
ID - dit nummer geeft aan welke uitvoer we gaan gebruiken
Actie - dit deel is de actie die de uitgang zal uitvoeren (bijv. 1 (Uitgang inschakelen))
Stap 2: Stroom
En nu het hoofdgedeelte. Zo ziet de node-RED-omgeving eruit.
We hebben de URL API-stroom geïmporteerd (het project dat u ziet. Later zal ik u laten zien hoe u stromen en dit project kunt importeren) Dit project bestaat uit twee delen:
- NETIO AN30 (JSON REST API) stroom
- Dashboard (grafische interface waarmee u uw programma kunt bedienen)
Stap 3: Dashboard
Dit is hoe het dashboard in node-RED voor deze instructable eruitziet. U kunt het aanpassen als u uw smaak wilt aanpassen.
Het dashboard voor dit project is opgedeeld in 4 delen:
- Apparaatstatus - toont apparaatinformatie zoals model, mac-adres of firmwareversie.
- (POST) Besturingsuitgang 1 - Bevat 5 knoppen die uitgang 1 regelen. Elke knop voert een andere actie uit
- (GET) O1 - O4 Uitvoerstatussen - Dit deel toont de huidige status van elke uitvoer van uw apparaat.
- Apparaatbeheer - In dit deel vindt u allerlei grafieken en meters die de huidige gemeten waarden van het NETIO 4Aall-apparaat weergeven
Stap 4: Importstroom (project, script, enz.)
Selecteer in het menu (rechter bovenhoek) Importeren en vervolgens Klembord.
Kopieer vervolgens onderstaande tekst naar het aangegeven veld en klik op Importeren.
Ontbrekende nodes installeren
De knooppunten worden in de geselecteerde stroom geladen. Het is mogelijk dat er een foutmelding wordt weergegeven met een lijst van nodes die worden geïmporteerd maar nog niet zijn geïnstalleerd in Node-RED. In dit geval moeten de ontbrekende knooppunten worden geïnstalleerd.
Als er knooppunten ontbreken, selecteert u Palet beheren in het menu, klikt u op Installeren en zoekt en installeert u de ontbrekende knooppunten.
Tekst importeren:
[{"id":"56b9510c.98c6f", "type":"tab", "label":"NETIO AN30 (REST JSON)", "disabled":false, "info":""}, {"id ":"6a66b637.da1558", "type":"http request", "z":"56b9510c.98c6f", "name":"HTTP Request (POST)", "method":"POST", "ret":"txt", "url":"https://netio-4All.netio-products.com:8080/netio.json", "tls":"", "x":430, "y":100, "wires":
Stap 5: Hoe het allemaal samenwerkt
De stroom is in principe verdeeld in twee delen: POST en GET.
POST: Schrijven naar O1
- Vijf knoppen die in het Dashboard in de Flow zijn gemaakt, worden weergegeven in het Dashboard.
- Nadat u op de knop Uitvoer 1 = AAN in het dashboard hebt geklikt, wordt de payload ingesteld op het bestand netio.json dat de uitvoer en de actie specificeert (gedefinieerd voor elk van de knoppen).
- Het HTTP Request-blok (POST) stuurt het netio.json-bestand als een verzoek naar een IP-adres.
- De serverreactie (status) wordt geretourneerd als uitvoer.
- Het blok Msg.payload geeft het resultaat van HTTP Request (POST) weer.
GET: Lezen van O1 – O4
- Het 1 Second Repeat-blok activeert, met een periode van één seconde, het HTTP Request (GET)-blok, dat op zijn beurt netio.json als een GET-verzoek verzendt en een volledig JSON-bestand retourneert met de socketstatus zoals ontvangen van de server.
- Het JSON Parse-blok transformeert het JSON-bestand van het HTTP Request (GET)-blok naar een JSON-object zodat het mogelijk is om de eigenschappen in het JSON-bestand te manipuleren.
- Het functieblok neemt afzonderlijke delen van het JSON-object en transformeert ze in eigenschappen van een msg-object voor later gebruik.
- Het Current Chart-blok stelt msg.payload in op de eigenschap msg. TotalCurrent van het msg-object, omdat het daaropvolgende Current Chart (Device)-blok alleen de waarde msg.payload kan weergeven.
- Vervolgens volgen verschillende uitvoerknooppunten om geselecteerde eigenschappen van het msg-object, zoals overgenomen van het JSON-object, in het Dashboard weer te geven.
Het msg-object en msg.payload
Voor een eenvoudige en beknopte uitleg, zie hier:
www.steves-internet-guide.com/node-red-mess…
Stap 6: HTTP POST en GET
HTTP-verzoek (POST)
Dit knooppunt verzendt een netio.json-opdrachtbestand als een HTTP-verzoek (POST) om het NETIO 4All-apparaat te besturen.
HTTP-verzoek (GET)
Dit knooppunt verzendt een HTTP-verzoek (GET) en retourneert het statusantwoord.
Het vooraf ingevulde adres verwijst naar de NETIO 4All online demo, waar u de verbinding kunt testen zonder dat u een NETIO-apparaat aan uw bureau hoeft te hebben.
netio-4all.netio-products.com
In deze nodes is het mogelijk om je eigen IP-adres in te stellen; het IP-adres moet echter worden gewijzigd in zowel de HTTP-verzoekknooppunten, POST als GET.
Stap 7: Knopknooppunten
Als u op de knopknoop klikt, wordt een bericht gegenereerd met een netio.json-bestand (rechter afbeelding) dat vervolgens via http-postknooppunt naar de netio smart power socket wordt verzonden.
Stap 8: Functieknooppunt
Een functieknooppunt is een speciaal knooppunt waarmee een aangepaste JavaScript-functie kan worden geschreven.
In deze instructable kiest de functie waarden uit het geparseerde JSON-bestand (nu een JSON-object) en wijst deze toe aan de eigenschappen van het msg-object.
De code is verdeeld in vier secties:
- Waarden toewijzen van het JSON-object aan de individuele eigenschappen van het msg-object
-
Foutafhandeling in het geval dat het genetwerkte stopcontact geen globale metingen ondersteunt
Als het genetwerkte stopcontact de meting van globale waarden niet ondersteunt, zou Node-RED fouten weergeven omdat deze functie de betreffende eigenschap niet zou vinden, b.v. msg.payload. GlobalMeasure. Voltage, omdat het niet aanwezig zou zijn in het JSON-object. In dit geval is de eigenschap van het msg-object, b.v. msg. Voltage, is ingesteld op 0 en de fout wordt opgevangen en afgehandeld.
- Uitgangsstatuswaarden toewijzen
- De kleuren van de weergegeven uitvoerstatuswaarden instellen volgens de uitvoerstatussen
Stap 9: JSON Node en Inject Node
JSON-knooppunt
JSON-knooppunt parseert het JSON-bestand en transformeert het in een JSON-object.
Als reactie van de server op het GET-verzoek retourneert het HTTP-verzoekknooppunt een JSON-bestand met de huidige status van het NETIO 4x-apparaat, maar het is gewoon een tekstbestand, dus om met de gegevens te kunnen werken, moet het JSON-bestand om te worden geparseerd in een JSON-object.
Injecteer knooppunt
Elke seconde activeert dit knooppunt het HTTP-verzoekknooppunt dat een GET-verzoek verzendt.
Als gevolg hiervan worden de waarden in het Dashboard bijgewerkt met een periode van één seconde
Stap 10: Tekstknooppunt en foutopsporingsknooppunt
Tekstknooppunt
Toont een tekstveld in het Dashboard. In deze instructable geven de tekstknooppunten de stroom, spanning, model, firmwareversie of JSON-versie weer.
Het label wordt weergegeven in het dashboard en de naam is de naam van het knooppunt die wordt weergegeven in de stroom in de Node-RED.
Debug-knooppunt
Geeft het bericht.payload weer.
Stap 11: Kaartknooppunt
Dit knooppunt plot de huidige grafiek in het dashboard op basis van de payload-waarde.
Dit knooppunt kan alleen grafieken plotten op basis van de payload-waarde.
Om deze reden wordt een functieknooppunt gebruikt om msg.payload in te stellen op de waarde die moet worden weergegeven.
msg.payload = msg. TotalCurrent;
Stap 12: Meetknooppunten en koppelknooppunten
Meterknooppunt
Dit knooppunt voegt een meterwidget toe aan het dashboard.
In deze instructable visualiseert elke meter één eigenschap van het msg-object: spanning [V], stroom [A], frequentie [Hz] en de algehele True Power Factor (TPF).
Koppel knooppunten
Link in en link out nodes werken als een tunnel. De msg.payload arriveert in de link in node en gaat uit de link out node.
Ik heb het gebruikt om de stroom een beetje duidelijker en gemakkelijker te lezen te maken.
Stap 13: Bedankt voor het lezen van mijn Instructable
Ik hoop dat je genoten hebt van mijn instructable en hopelijk heb je iets nieuws geleerd.
Deze instructable is slechts een verkorte versie van de verschillende gids die ik heb gemaakt
De originele gids is langer en veel gedetailleerder en over het algemeen beter gestructureerd. Als je iets niet hebt begrepen of denkt dat ik iets heb gemist of niet genoeg heb uitgelegd, dan kun je het daar zeker vinden.
Ik beloof je dat je niet teleurgesteld zult zijn
Origineel:
Er zijn ook vergelijkbare handleidingen over verschillende toepassingen van node-RED, dus als je geïnteresseerd bent, voel je dan vrij om te verkennen:
Werken met REST URL API in node-RED
www.netio-products.com/en/application-notes/an29-node-red-example-of-url-api-communicatie-met-netio-4x
Werken met REST XML in node-RED
www.netio-products.com/en/application-notes/an31-node-red-example-of-rest-xml-communicatie-met-netio-4x
Werken met TCP/Modbus in node-RED
Komt zeer binnenkort:)
Aanbevolen:
Werken met LCD (Arduino): 4 stappen
Werken met LCD (Arduino): Hallo, vandaag ga ik laten zien hoe te werken met een eenvoudig LCD-scherm met behulp van Arduino Uno. Hiervoor ga ik TinkerCAD gebruiken, dat vrij gemakkelijk te gebruiken is voor het testen van eenvoudige projecten zoals deze. Als je wilt weten hoe je TinkerCAD gebruikt, kun je de
Arduino Werken met meerdere bestanden (LEZEN/SCHRIJVEN): 4 stappen
Arduino werkt met meerdere bestanden (LEZEN/SCHRIJVEN): Hallo allemaal, vandaag presenteer ik jullie een Arduino-project dat werkt met een RTC-schild dat gegevens kan opslaan. De hoofdtaak van dit project is het werken met meerdere bestanden die op de sc-kaart zijn opgeslagen. Dit project bevat code die werkt met drie bestanden die
Crimson Fox: bewustmaking om een pauze te nemen tijdens het werken: 8 stappen (met afbeeldingen)
Crimson Fox: bewustwording om een pauze te nemen tijdens het werken: voor een cursus die we volgden bij KTH in Zweden, kregen we de opdracht om een artefact te maken dat van vorm kon veranderen. We hebben een artefact in de vorm van een vos gemaakt, bedoeld om je eraan te herinneren een pauze te nemen van je werk of studie. Het algemene concept is dat de vos zal vertonen
Hoe de Arduino IDE in te stellen om te werken met de Tinusaur-borden: 3 stappen
Hoe de Arduino IDE in te stellen om te werken met de Tinusaur-borden. Dit is een korte handleiding hoe de Arduino IDE in te stellen om met de Tinusaur-kaarten te werken. Wat het in feite doet, is om het te laten werken met de Atmel ATtiny85/45/25 microcontrollers . Het enige verschil is dat het op de lijst met borden zal verschijnen als Tinusau
Palm Os-apparaat om te werken als een LCD-statusdisplay. (nu met afbeeldingen!): 4 stappen
Palm Os-apparaat om te werken als een LCD-statusdisplay. (nu met afbeeldingen!): Dit artikel gaat helemaal over hoe u uw Palm OS-apparaat kunt gebruiken om een LCD-statusweergave voor uw computer te emuleren! U kunt systeemstatistieken weergeven (zoals: CPU-belastinggrafieken, CPU-temperaturen, vrije schijfruimte), nieuwswaarschuwingen, aandelenindexen, WinAmp-grafieken, enz