Inhoudsopgave:

Werken met JSON in Node-RED: 13 stappen
Werken met JSON in Node-RED: 13 stappen

Video: Werken met JSON in Node-RED: 13 stappen

Video: Werken met JSON in Node-RED: 13 stappen
Video: Node RED en MQTT: maak je eerste automation flow 2024, November
Anonim
Hoe te werken met JSON in Node-RED
Hoe te werken met JSON in Node-RED

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

REST JSON HTTP(s)-protocol
REST JSON HTTP(s)-protocol

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

Stromen
Stromen

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:

  1. NETIO AN30 (JSON REST API) stroom
  2. Dashboard (grafische interface waarmee u uw programma kunt bedienen)

Stap 3: Dashboard

Dashboard
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:

  1. Apparaatstatus - toont apparaatinformatie zoals model, mac-adres of firmwareversie.
  2. (POST) Besturingsuitgang 1 - Bevat 5 knoppen die uitgang 1 regelen. Elke knop voert een andere actie uit
  3. (GET) O1 - O4 Uitvoerstatussen - Dit deel toont de huidige status van elke uitvoer van uw apparaat.
  4. 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.)

Importstroom (project, script, enz.)
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

Hoe het allemaal samenwerkt
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 POST en GET
HTTP POST en GET
HTTP POST en GET
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

Knopknooppunten
Knopknooppunten
Knopknooppunten
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

Functie Knooppunt
Functie Knooppunt
Functie Knooppunt
Functie Knooppunt

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:

  1. Waarden toewijzen van het JSON-object aan de individuele eigenschappen van het msg-object
  2. 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.

  3. Uitgangsstatuswaarden toewijzen
  4. De kleuren van de weergegeven uitvoerstatuswaarden instellen volgens de uitvoerstatussen

Stap 9: JSON Node en Inject Node

JSON-knooppunt en Inject-knooppunt
JSON-knooppunt en Inject-knooppunt
JSON-knooppunt en Inject-knooppunt
JSON-knooppunt en Inject-knooppunt

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 en foutopsporingsknooppunt
Tekstknooppunt en foutopsporingsknooppunt
Tekstknooppunt en foutopsporingsknooppunt
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

Kaartknooppunt
Kaartknooppunt
Kaartknooppunt
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

Gauge Node en Link Nodes
Gauge Node en Link Nodes
Gauge Node en Link Nodes
Gauge Node en Link Nodes

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: