Innehållsförteckning:

Hur man arbetar med JSON i Node-RED: 13 steg
Hur man arbetar med JSON i Node-RED: 13 steg

Video: Hur man arbetar med JSON i Node-RED: 13 steg

Video: Hur man arbetar med JSON i Node-RED: 13 steg
Video: Полный курс по Next js - Изучи Nextjs за 2 часа! | React SSR +таймкоды 2024, November
Anonim
Hur man arbetar med JSON i Node-RED
Hur man arbetar med JSON i Node-RED

Denna instruerbara lär dig hur du arbetar med JSON i nod-RÖD. Jag kommer att visa dig hur du styr nätverksuttag med överföring av json -filer via http get and post. Och du kan använda denna kunskap senare för att styra alla enheter som stöder JSON -protokoll.

För undervisningsändamål kommer jag att använda NETIO 4All nätverksuttag, men oroa dig inte, du behöver inte köpa någonting. NETIO har fantastiska 4All online -demo du kan använda.

Tillbehör

NETIO 4All nätverksansluten powerocket eller 4All online-demo:

Nod-RÖD

Steg 1: REST JSON Http (s) Protocol

REST JSON Http (s) Protocol
REST JSON Http (s) Protocol

Den här delen är lite teknisk, men snälla bära med mig. Om jag inte förklarade den här delen skulle du ha problem med att förstå värdena i json-filer som vi kommer att skicka i nod-RÖD.

Åtgärder som gäller för varje utgång (eluttag):

I alla M2M -protokoll använder NETIO -uttag samma åtgärder som kan tillämpas på enskilda utgångar. Till exempel kan en Toggle- eller Short Off -åtgärd skrivas till valfri utdata.

Aktionsvariabeln kan dock bara användas för att skriva värden, den kan inte användas för att läsa det aktuella utloppstillståndet.

Det här är åtgärder du kan tillämpa på varje utdata:

0 = Utgången avstängd (Av)

1 = Utgång påslagen (På)

2 = Utgången avstängd under en kort tid (kort av)

3 = Utgången påslagen under en kort tid (kort på)

4 = Utgång växlat från ett tillstånd till det andra (växling)

5 = Utgångsläge oförändrat (ingen ändring)

6 = ignoreras

Exempel - JSON -fil för att växla utmatningsnr. 1:

{

"Utgångar": [{

"ID": 1, "Åtgärd": 4

}]

}

ID - det här numret anger vilken utgång vi ska använda

Åtgärd - denna del är åtgärden som utgången kommer att göra (t.ex. 1 (Slå på utmatning))

Steg 2: Flöde

Flöde
Flöde

Och nu huvuddelen. Så här ser nod-RÖD miljö ut.

Vi har importerat URL -API -flöde (projektet du ser. Senare visar jag dig hur du importerar flöden och detta projekt) Detta projekt består av två delar:

  1. NETIO AN30 (JSON REST API) flöde
  2. Instrumentpanel (grafiskt gränssnitt där du kan styra ditt program)

Steg 3: Instrumentpanel

instrumentbräda
instrumentbräda

Så här ser instrumentpanelen i nod-RÖD ut för denna instruerbara. Du kan anpassa den om du vill passa din smak.

Instrumentpanelen för detta projekt är uppdelad i 4 delar:

  1. Enhetsstatus - visar enhetsinformation som modell, mac -adress eller firmwareversion.
  2. (POST) Kontrollutgång 1 - Innehåller 5 knappar som styr utgång 1. Varje knapp utför olika åtgärder
  3. (GET) O1 - O4 Output States - Den här delen visar det aktuella tillståndet för varje utmatning från din enhet.
  4. Enhetshantering - I den här delen kan du hitta alla typer av grafer och mätare som visar aktuella uppmätta värden från NETIO 4Aall -enheten

Steg 4: Importera flöde (projekt, skript, etc.)

Importera flöde (projekt, skript, etc.)
Importera flöde (projekt, skript, etc.)

I menyn (högra övre hörnet) väljer du Importera och sedan Urklipp.

Kopiera sedan texten nedan till det angivna fältet och klicka på Importera.

Installera saknade noder

Noderna laddas in i det valda flödet. Det är möjligt att ett felmeddelande visas med en lista över noder som importeras men inte är installerade i Node-RED än. I det här fallet måste de saknade noder installeras.

Om det saknas noder, välj Hantera palett i menyn, klicka på Installera och hitta och installera de noder du saknar.

Importera text:

[{"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":

Steg 5: Hur allt fungerar tillsammans

Hur allt fungerar tillsammans
Hur allt fungerar tillsammans

Flödet är i princip uppdelat i två delar: POST och GET.

POST: Skriver till O1

  • Fem knappar som skapats i instrumentpanelen i flödet visas i instrumentpanelen.
  • Efter att ha klickat på knappen Output 1 = ON i instrumentpanelen ställs nyttolasten in på filen netio.json som specificerar utdata och åtgärd (definierad för var och en av knapparna).
  • HTTP -förfrågningsblocket (POST) skickar filen netio.json som en begäran till en IP -adress.
  • Serverns svar (status) returneras som utdata.
  • Msg.payload -blocket visar resultatet från HTTP -begäran (POST).

FÅ: Läser från O1 - O4

  • Blocket 1 sekund upprepa aktiverar, med en period av en sekund, HTTP -förfrågan (GET) -blocket, som i sin tur skickar netio.json som en GET -begäran och returnerar en komplett JSON -fil med sockelstatus som mottagen från servern.
  • JSON Parse -blocket omvandlar JSON -filen från HTTP Request (GET) -blocket till ett JSON -objekt så att det är möjligt att manipulera egenskaperna i JSON -filen.
  • Funktionsblocket tar enskilda delar av JSON -objektet och omvandlar dem till egenskaper för ett msg -objekt för senare användning.
  • Aktuellt diagramblock anger msg.payload till msg. TotalCurrent -egenskapen för msg -objektet, eftersom det efterföljande blocket Current Chart (Device) endast kan visa msg.payload -värdet.
  • Olika utgångsnoder följer sedan för att visa utvalda egenskaper för msg -objektet, taget från JSON -objektet, i instrumentpanelen.

Msg -objektet och msg.payload

För en enkel och kortfattad förklaring, se här:

www.steves-internet-guide.com/node-red-mess…

Steg 6: HTTP POST och GET

HTTP POST och GET
HTTP POST och GET
HTTP POST och GET
HTTP POST och GET

HTTP -begäran (POST)

Denna nod skickar en netio.json -kommandofil som en HTTP -begäran (POST) för att styra NETIO 4All -enheten.

HTTP -begäran (GET)

Denna nod skickar en HTTP -begäran (GET) och returnerar statussvaret.

Den förfyllda adressen pekar på NETIO 4All online-demo, där du kan testa anslutningen utan att ha en NETIO-enhet vid ditt skrivbord.

netio-4all.netio-products.com

Det är möjligt att ange din egen IP -adress i dessa noder; IP -adressen måste dock ändras i både HTTP -begäranoderna, POST och GET.

Steg 7: Knappnoder

Knappnoder
Knappnoder
Knappnoder
Knappnoder

Genom att klicka på knappnoden genereras ett meddelande som innehåller en netio.json -fil (höger bild) som sedan skickas via http -postnoden till netio smart eluttag.

Steg 8: Funktionsnod

Funktionsnod
Funktionsnod
Funktionsnod
Funktionsnod

En funktionsnod är en speciell nod som gör det möjligt att skriva en anpassad JavaScript -funktion.

I denna instruerbara funktion väljer funktionen värden från den analyserade JSON -filen (nu ett JSON -objekt) och tilldelar dem till msg -objektets egenskaper.

Koden är uppdelad i fyra avsnitt:

  1. Tilldela värden från JSON -objektet till de enskilda egenskaperna för msg -objektet
  2. Felhantering om nätuttaget inte stöder globala mätningar

    Om nätverksuttaget inte stöder mätning av globala värden, visar Node-RED fel eftersom den här funktionen inte hittar respektive egenskap, t.ex. msg.payload. GlobalMeasure. Voltage, eftersom det inte skulle finnas i JSON -objektet. I detta fall är egenskapen för msg -objektet, t.ex. msg. Voltage, är inställt på 0 och felet fångas upp och hanteras.

  3. Tilldela värden för utdatatillstånd
  4. Ställa in färgerna på de visade utgångstillståndsvärdena enligt utgångslägena

Steg 9: JSON -nod och injicera nod

JSON -nod och injektionsnod
JSON -nod och injektionsnod
JSON -nod och injektionsnod
JSON -nod och injektionsnod

JSON -nod

JSON -nod analyserar JSON -filen och omvandlar den till ett JSON -objekt.

Som ett svar från servern på GET -begäran returnerar HTTP -förfrågningsnoden en JSON -fil som innehåller den aktuella statusen för NETIO 4x -enheten, men är bara en textfil, så för att kunna arbeta med data behöver JSON -filen att analyseras i ett JSON -objekt.

Injicera nod

Varje sekund aktiverar denna nod HTTP -förfrågningsnoden som skickar en GET -begäran.

Som ett resultat uppdateras värdena i instrumentpanelen med en period på en sekund

Steg 10: Textnod och felsökningsnod

Textnod och felsökningsnod
Textnod och felsökningsnod
Textnod och felsökningsnod
Textnod och felsökningsnod

Textnod

Visar ett textfält i instrumentpanelen. I denna instruktion visar textnoderna ström, spänning, modell, firmwareversion eller JSON -version.

Etiketten visas i instrumentpanelen och namnet är nodnamnet som visas i flödet i Noden-RÖD.

Felsök noden

Visar msg.payload.

Steg 11: Diagramnod

Diagramnod
Diagramnod
Diagramnod
Diagramnod

Denna nod plottar det aktuella diagrammet i instrumentpanelen enligt nyttolastvärdet.

Denna nod kan bara plotta diagram enligt nyttolastvärdet.

Av denna anledning används en funktionsnod för att ställa in msg.payload till det värde som måste visas.

msg.payload = msg. TotalCurrent;

Steg 12: Mätnod och länknoder

Mätnod och länknoder
Mätnod och länknoder
Mätnod och länknoder
Mätnod och länknoder

Mätnod

Denna nod lägger till en mätarwidget till instrumentpanelen.

I denna instruerbara visualiserar varje mätare en egenskap hos msg -objektet: spänning [V], ström [A], frekvens [Hz] och den övergripande sanna effektfaktorn (TPF).

Länk noder

Länka in och länka ut noder fungerar som en tunnel. Msg. Payload kommer in i länken i noden och går ut från länken ut -noden.

Jag använde det för att göra flödet lite tydligare och lättare att läsa.

Steg 13: Tack för att du läser Min instruerbara

Jag hoppas att du tyckte om min instruerbara och hoppas verkligen att du lärde dig något nytt.

Denna instruerbara är bara en förkortad version av olika guider jag gjorde

Den ursprungliga guiden är längre och mycket mer detaljerad och i allmänhet bättre strukturerad. Om du inte förstod något eller tror att jag missat eller inte förklarat tillräckligt med något, så kan du definitivt hitta det där.

Jag lovar att du inte blir besviken

Original:

Det finns också liknande guider om olika användningsområden för nod-RED, så om du är intresserad kan du utforska:

Arbetar med REST URL API i nod-RED

www.netio-products.com/en/application-notes/an29-node-red-example-of-url-api-communication-with-netio-4x

Arbetar med REST XML i nod-RED

www.netio-products.com/en/application-notes/an31-node-red-example-of-rest-xml-communication-with-netio-4x

Arbetar med TCP/Modbus i nod-RÖD

Kommer snart:)

Rekommenderad: