Innholdsfortegnelse:

Hvordan arbeide med JSON i Node-RED: 13 trinn
Hvordan arbeide med JSON i Node-RED: 13 trinn

Video: Hvordan arbeide med JSON i Node-RED: 13 trinn

Video: Hvordan arbeide med JSON i Node-RED: 13 trinn
Video: Полный курс TypeScript за час | Тайпскрипт для начинающих 2024, November
Anonim
Hvordan jobbe med JSON i Node-RED
Hvordan jobbe med JSON i Node-RED

Denne instruksen vil lære deg hvordan du jobber med JSON i node-RED. Jeg vil vise deg hvordan du kontrollerer nettverkskontakter med overføring av json -filer via http get and post. Og du kan bruke denne kunnskapen senere til å kontrollere alle enheter som støtter JSON -protokollen.

For undervisningsformål bruker jeg NETIO 4All nettverkskontakt, men ikke bekymre deg, du trenger ikke kjøpe noe. NETIO har fantastisk 4Al online demonstrasjon du kan bruke.

Rekvisita

NETIO 4 Alle nettverkskrefter eller 4Al online demonstrasjon:

Node-RØD

Trinn 1: REST JSON Http (s) -protokoll

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

Denne delen er litt teknisk, men vær så snill å ta med meg. Hvis jeg ikke forklarte denne delen, ville du ha problemer med å forstå verdiene i json-filer vi sender i node-RED.

Handlinger som gjelder for hver utgang (stikkontakt):

I alle M2M -protokoller bruker NETIO -stikkontakter de samme handlingene som kan brukes på individuelle utganger. For eksempel kan en Toggle- eller Short Off -handling skrives til hvilken som helst utgang.

Handlingsvariabelen kan imidlertid bare brukes til å skrive verdier, den kan ikke brukes til å lese gjeldende utløpstilstand.

Dette er handlinger du kan bruke på hver utgang:

0 = Utgang slått av (Av)

1 = Utgang slått på (På)

2 = Utgang slått av for en kort stund (kort av)

3 = Utgang slått på kort tid (kort På)

4 = Utgang byttet fra en tilstand til den andre (veksle)

5 = Utgangstilstand uendret (ingen endring)

6 = ignorert

Eksempel - JSON -fil for å bytte utgangsnummer. 1:

{

"Utganger": [{

"ID": 1, "Handling": 4

}]

}

ID - dette tallet angir hvilken utgang vi skal bruke

Handling - denne delen er handlingen utgangen vil utføre (f.eks. 1 (Slå på utgang))

Trinn 2: Flyt

Strømme
Strømme

Og nå hoveddelen. Slik ser node-RED-miljøet ut.

Vi har importert URL API -flyt (Prosjektet du ser. Senere viser jeg deg hvordan du importerer flyter og dette prosjektet) Dette prosjektet består av to deler:

  1. NETIO AN30 (JSON REST API) -flyt
  2. Dashboard (grafisk grensesnitt som du kan bruke programmet til)

Trinn 3: Dashboard

Dashboard
Dashboard

Slik ser dashbordet i node-RED for denne instruerbare ut. Du kan tilpasse den hvis du vil passe til din smak.

Dashbordet for dette prosjektet er delt inn i 4 deler:

  1. Enhetsstatus - viser enhetsinformasjon som modell, mac -adresse eller fastvareversjon.
  2. (POST) Kontrollutgang 1 - Inneholder 5 knapper som styrer utgang 1. Hver knapp utfører forskjellige handlinger
  3. (GET) O1 - O4 Utgangsstater - Denne delen viser gjeldende tilstand for hver utgang fra enheten.
  4. Enhetsbehandling - I denne delen kan du finne alle slags grafer og målere som viser gjeldende målte verdier fra NETIO 4Aall -enheten

Trinn 4: Importer flyt (prosjekt, skript, osv.)

Importer flyt (prosjekt, skript, osv.)
Importer flyt (prosjekt, skript, osv.)

I menyen (øverst til høyre) velger du Importer og deretter Utklippstavle.

Kopier deretter teksten nedenfor til det angitte feltet og klikk på Importer.

Installere manglende noder

Nodene lastes inn i den valgte strømmen. Det er mulig at det vises en feilmelding med en liste over noder som importeres, men som ikke er installert i Node-RED ennå. I dette tilfellet må de manglende nodene installeres.

Hvis det mangler noder, velger du Behandle palett i menyen, klikker på Installer og finner og installerer nodene du mangler.

Importer tekst:

[{"id": "56b9510c.98c6f", "type": "tab", "label": "NETIO AN30 (REST JSON)", "deaktivert": false, "info": ""}, {"id ":" 6a66b637.da1558 "," type ":" http -forespørsel "," z ":" 56b9510c.98c6f "," name ":" HTTP -forespørsel (POST) "," method ":" POST "," ret ": "txt", "url": "https://netio-4All.netio-products.com:8080/netio.json", "tls": "", "x": 430, "y": 100, "ledninger":

Trinn 5: Hvordan alt fungerer sammen

Hvordan alt fungerer sammen
Hvordan alt fungerer sammen

Flyten er i utgangspunktet delt inn i to deler: POST og GET.

POST: Skriver til O1

  • Fem knapper som er opprettet i instrumentbordet i flyt, vises på oversikten.
  • Etter å ha klikket på Output 1 = ON -knappen i dashbordet, settes nyttelasten til netio.json -filen som spesifiserer utdata og handling (definert for hver av knappene).
  • HTTP -forespørselsblokken (POST) sender netio.json -filen som en forespørsel til en IP -adresse.
  • Serverresponsen (status) returneres som utdata.
  • Msg.payload -blokken viser resultatet fra HTTP -forespørsel (POST).

FÅ: Lesing fra O1 - O4

  • 1 Second Repeat -blokken aktiverer, med en periode på ett sekund, HTTP Request (GET) -blokken, som igjen sender netio.json som en GET -forespørsel og returnerer en komplett JSON -fil med socketstatusen som mottatt fra serveren.
  • JSON Parse -blokken transformerer JSON -filen fra HTTP -forespørselsblokken (GET) til et JSON -objekt, slik at det er mulig å manipulere egenskapene i JSON -filen.
  • Funksjonsblokken tar individuelle deler av JSON -objektet og forvandler dem til egenskaper for et msg -objekt for senere bruk.
  • Gjeldende diagramblokk angir msg.payload til msg. TotalCurrent -egenskapen til msg -objektet, fordi den påfølgende Current Chart (Device) -blokken bare kan vise msg.payload -verdien.
  • Ulike utgangsnoder følger deretter for å vise utvalgte egenskaper for msg -objektet, tatt fra JSON -objektet, i dashbordet.

Msg -objektet og msg.payload

For en enkel og kortfattet forklaring, se her:

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

Trinn 6: HTTP POST og GET

HTTP POST og GET
HTTP POST og GET
HTTP POST og GET
HTTP POST og GET

HTTP -forespørsel (POST)

Denne noden sender en netio.json -kommandofil som en HTTP -forespørsel (POST) for å kontrollere NETIO 4All -enheten.

HTTP -forespørsel (GET)

Denne noden sender en HTTP -forespørsel (GET) og returnerer statusresponsen.

Den forhåndsfylte adressen peker til NETIO 4All online demo, der du kan teste tilkoblingen uten å ha en NETIO-enhet ved skrivebordet.

netio-4all.netio-products.com

Det er mulig å angi din egen IP -adresse i disse nodene; IP -en må imidlertid endres i både HTTP -forespørselsnodene, POST og GET.

Trinn 7: Knappnoder

Knappnoder
Knappnoder
Knappnoder
Knappnoder

Ved å klikke på knappenoden genereres en melding som inneholder en netio.json -fil (høyre bilde) som deretter sendes via http -postnoden til netio smart strømuttak.

Trinn 8: Funksjonsnode

Funksjonsnode
Funksjonsnode
Funksjonsnode
Funksjonsnode

En funksjonsnode er en spesiell node som gjør det mulig å skrive en tilpasset JavaScript -funksjon.

I denne instruksen plukker funksjonen verdier fra den analyserte JSON -filen (nå et JSON -objekt) og tilordner dem til egenskapene til msg -objektet.

Koden er delt inn i fire seksjoner:

  1. Tilordne verdier fra JSON -objektet til de individuelle egenskapene til msg -objektet
  2. Feilhåndtering i tilfelle strømuttaket i nettverket ikke støtter globale målinger

    Hvis stikkontakten i nettverket ikke støtter måling av globale verdier, vil Node-RED vise feil fordi denne funksjonen ikke finner den respektive egenskapen, f.eks. msg.payload. GlobalMeasure. Voltage, siden den ikke ville være tilstede i JSON -objektet. I dette tilfellet er egenskapen til msg -objektet, f.eks. msg. Voltage, er satt til 0 og feilen blir fanget opp og håndtert.

  3. Tilordne verdier for utgangstilstand
  4. Angi fargene på de viste utgangstilstandsverdiene i henhold til utgangstilstandene

Trinn 9: JSON Node og injiser node

JSON Node og Inject Node
JSON Node og Inject Node
JSON Node og Inject Node
JSON Node og Inject Node

JSON -node

JSON -noden analyserer JSON -filen og forvandler den til et JSON -objekt.

Som et svar fra serveren på GET -forespørselen, returnerer HTTP -forespørselsnoden en JSON -fil som inneholder gjeldende status for NETIO 4x -enheten, men er ganske enkelt en tekstfil, så for å jobbe med dataene trenger JSON -filen for å bli analysert i et JSON -objekt.

Injiser node

Hvert sekund aktiverer denne noden HTTP -forespørselsnoden som sender en GET -forespørsel.

Som et resultat oppdateres verdiene i oversikten med en periode på ett sekund

Trinn 10: Tekstnode og feilsøkingsnode

Tekstnode og feilsøkingsnode
Tekstnode og feilsøkingsnode
Tekstnode og feilsøkingsnode
Tekstnode og feilsøkingsnode

Tekstnode

Viser et tekstfelt i oversikten. I denne instruksen viser tekstnodene gjeldende, spenning, modell, fastvareversjon eller JSON -versjon.

Etiketten vises på oversikten, og navnet er nodenavnet som vises i flyten i Noden-RØD.

Feilsøkingsnode

Viser meldingsbelastningen.

Trinn 11: Kartnode

Diagramnode
Diagramnode
Diagramnode
Diagramnode

Denne noden plotter det nåværende diagrammet i dashbordet i henhold til nyttelastverdien.

Denne noden kan bare plotte diagrammer i henhold til nyttelastverdien.

Av denne grunn brukes en funksjonsnode for å angi msg. Payload til verdien som må vises.

msg.payload = msg. TotalCurrent;

Trinn 12: Gauge Node og Link Nodes

Gauge Node og Link Nodes
Gauge Node og Link Nodes
Gauge Node og Link Nodes
Gauge Node og Link Nodes

Måleknute

Denne noden legger til en måle -widget til oversikten.

I denne instruksen visualiserer hver måler en egenskap for msg -objektet: spenning [V], strøm [A], frekvens [Hz] og den samlede virkningsfaktoren (TPF).

Linknoder

Koble inn og koble ut noder fungerer som en tunnel. Meldingsbetalingen kommer inn i lenken i noden og går ut av koblingen ut -noden.

Jeg brukte den til å gjøre flyten litt tydeligere og lettere å lese.

Trinn 13: Takk for at du leser My Instructable

Jeg håper du likte det instruerbare og forhåpentligvis lærte noe nytt.

Denne instruerbare er bare en forkortet versjon av forskjellige guider jeg har laget

Den originale guiden er lengre og mye mer detaljorientert og generelt bedre strukturert. Hvis du ikke forsto noe eller tror jeg savnet eller ikke forklarte nok noe, så kan du definitivt finne det der.

Jeg lover at du ikke blir skuffet

Original:

Det finnes også lignende guider om ulike bruksområder for nod-RED, så hvis du er interessert, kan du utforske:

Jobber med REST URL API i node-RED

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

Jobber med REST XML i node-RED

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

Jobber med TCP/Modbus i node-RED

Kommer snart:)

Anbefalt: