Cuprins:

Cum să lucrați cu JSON în Node-RED: 13 pași
Cum să lucrați cu JSON în Node-RED: 13 pași

Video: Cum să lucrați cu JSON în Node-RED: 13 pași

Video: Cum să lucrați cu JSON în Node-RED: 13 pași
Video: How to install Node red on Ubuntu 2024, Noiembrie
Anonim
Cum să lucrați cu JSON în Node-RED
Cum să lucrați cu JSON în Node-RED

Acest instructable vă va învăța cum să lucrați cu JSON în nod-RED. Vă voi arăta cum să controlați prizele de alimentare în rețea cu transferul fișierelor json prin http get și post. Și puteți utiliza aceste cunoștințe mai târziu pentru a controla orice dispozitiv care acceptă protocolul JSON.

În scopuri didactice, voi folosi soclul de rețea NETIO 4All, dar nu vă faceți griji, nu trebuie să cumpărați nimic. NETIO are o demonstrație uimitoare de 4All pe care o puteți folosi.

Provizii

NETIO 4Toate priza de rețea sau demo online 4All:

Nod-ROȘU

Pasul 1: REST protocol JSON Http (s)

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

Această parte este puțin tehnică, dar vă rog să vă purtați cu mine. Dacă nu aș explica această parte, atunci veți avea probleme în înțelegerea valorilor din fișierele json pe care le vom trimite în nod-RED.

Acțiuni aplicabile fiecărei ieșiri (priză electrică):

În toate protocoalele M2M, prizele de alimentare NETIO utilizează aceleași acțiuni care pot fi aplicate ieșirilor individuale. De exemplu, o acțiune Toggle sau Short Off poate fi scrisă în orice ieșire.

Cu toate acestea, variabila Action poate fi utilizată numai pentru scrierea valorilor, nu poate fi utilizată pentru a citi starea curentă de ieșire.

Acestea sunt acțiuni pe care le puteți aplica fiecărei ieșiri:

0 = Ieșire dezactivată (Off)

1 = Ieșire activată (Activată)

2 = Ieșire oprită pentru o perioadă scurtă de timp (scurt Off)

3 = Ieșire activată pentru scurt timp (scurt Pornit)

4 = Ieșire comutată de la o stare la alta (comutare)

5 = Starea de ieșire neschimbată (fără modificări)

6 = Ignorat

Exemplu - fișier JSON pentru a comuta nr. 1:

{

„Rezultate”: [{

„ID”: 1, „Acțiune”: 4

}]

}

ID - acest număr indică ce ieșire vom folosi

Acțiune - această parte, este acțiunea pe care o va face ieșirea (de ex. 1 (Activați ieșirea))

Pasul 2: Flux

curgere
curgere

Și acum partea principală. Așa arată mediul node-RED.

Am importat fluxul API URL (proiectul pe care îl vedeți. Mai târziu vă voi arăta cum să importați fluxurile și acest proiect) Acest proiect constă din două părți:

  1. Flux NETIO AN30 (API JSON REST)
  2. Tablou de bord (interfață grafică prin care puteți opera programul)

Pasul 3: Tablou de bord

Bord
Bord

Așa arată tabloul de bord din nod-ROȘU pentru acest instructable. Îl puteți personaliza dacă doriți să vă potriviți gustul.

Tabloul de bord al acestui proiect este împărțit în 4 părți:

  1. Stare dispozitiv - afișează informații despre dispozitiv, cum ar fi modelul, adresa Mac sau versiunea de firmware.
  2. (POST) Control Output 1 - Conține 5 butoane care controlează ieșirea 1. Fiecare buton execută acțiuni diferite
  3. (GET) O1 - O4 Stări de ieșire - Această parte prezintă starea curentă a fiecărei ieșiri de pe dispozitiv.
  4. Managementul dispozitivelor - În această parte puteți găsi tot felul de grafice și indicatoare care arată valorile curente măsurate de pe dispozitivul NETIO 4Aall

Pasul 4: Importați fluxul (proiect, script, etc.)

Flux de import (proiect, script, etc.)
Flux de import (proiect, script, etc.)

În meniu (colțul din dreapta sus) selectați Import și apoi Clipboard.

Apoi, copiați textul de mai jos în câmpul indicat și faceți clic pe Import.

Instalarea nodurilor lipsă

Nodurile sunt încărcate în fluxul selectat. Este posibil ca un mesaj de eroare să fie afișat cu o listă de noduri care sunt importate, dar care nu sunt încă instalate în Node-RED. În acest caz, nodurile lipsă trebuie instalate.

Dacă lipsesc noduri, selectați Gestionare paletă din meniu, faceți clic pe Instalare și găsiți și instalați nodurile care vă lipsesc.

Importați textul:

[{"id": "56b9510c.98c6f", "type": "tab", "label": "NETIO AN30 (REST JSON)", "disabled": false, "info": ""}, {"id ":" 6a66b637.da1558 "," tip ":" cerere http "," z ":" 56b9510c.98c6f "," nume ":" Cerere HTTP (POST) "," metodă ":" POST "," ret ": "txt", "url": "https://netio-4All.netio-products.com:8080/netio.json", "tls": "", "x": 430, "y": 100, "fire":

Pasul 5: Cum funcționează toate împreună

Cum funcționează împreună
Cum funcționează împreună

Fluxul este practic împărțit în două părți: POST și GET.

POST: Scrierea pe O1

  • Cinci butoane create în tabloul de bord din flux sunt afișate în tabloul de bord.
  • După ce faceți clic pe butonul Ieșire 1 = PORNIT din tabloul de bord, sarcina utilă este setată la fișierul netio.json care specifică ieșirea și acțiunea (definită pentru fiecare dintre butoane).
  • Blocul HTTP Request (POST) trimite fișierul netio.json ca cerere la o adresă IP.
  • Răspunsul serverului (starea) este returnat ca ieșire.
  • Blocul Msg.payload afișează rezultatul din cererea HTTP (POST).

OBȚINE: Citirea din O1 - O4

  • Blocul Repetare 1 secundă activează, cu o perioadă de o secundă, blocul HTTP Request (GET), care la rândul său trimite netio.json ca o solicitare GET și returnează un fișier JSON complet cu starea socketului, așa cum a fost primit de la server.
  • Blocul JSON Parse transformă fișierul JSON din blocul HTTP Request (GET) într-un obiect JSON astfel încât să fie posibilă manipularea proprietăților din fișierul JSON.
  • Blocul funcțional ia părți individuale ale obiectului JSON și le transformă în proprietăți ale unui obiect msg pentru utilizare ulterioară.
  • Blocul Chart curent setează msg.payload la proprietatea msg. TotalCurrent a obiectului msg, deoarece blocul Chart curent (dispozitiv) ulterior poate afișa doar valoarea msg.payload.
  • Apoi urmează diferite noduri de ieșire pentru a afișa proprietățile selectate ale obiectului msg, preluate din obiectul JSON, în Tabloul de bord.

Obiectul msg și msg.payload

Pentru o explicație simplă și concisă, consultați aici:

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

Pasul 6: HTTP POST și GET

HTTP POST și GET
HTTP POST și GET
HTTP POST și GET
HTTP POST și GET

Cerere HTTP (POST)

Acest nod trimite un fișier de comandă netio.json ca o cerere HTTP (POST) pentru a controla dispozitivul NETIO 4All.

Solicitare HTTP (GET)

Acest nod trimite o solicitare HTTP (GET) și returnează răspunsul de stare.

Adresa completată indică demo-ul online NETIO 4All, unde puteți testa conexiunea fără a avea un dispozitiv NETIO la birou.

netio-4all.netio-products.com

Este posibil să vă setați propria adresă IP în aceste noduri; cu toate acestea, adresa IP trebuie modificată atât în nodurile HTTP Request, POST, cât și în GET.

Pasul 7: Noduri de butoane

Noduri de butoane
Noduri de butoane
Noduri de butoane
Noduri de butoane

Dacă faceți clic pe butonul nodului, se generează un mesaj care conține un fișier netio.json (imaginea din dreapta), care este apoi trimis prin nodul post http către priza de alimentare inteligentă netio.

Pasul 8: Nodul funcției

Funcția Nod
Funcția Nod
Funcția Nod
Funcția Nod

Un nod funcțional este un nod special care permite scrierea unei funcții JavaScript personalizate.

În acest instructable, funcția alege valorile din fișierul JSON analizat (acum un obiect JSON) și le atribuie proprietăților obiectului msg.

Codul este împărțit în patru secțiuni:

  1. Atribuirea valorilor de la obiectul JSON la proprietățile individuale ale obiectului msg
  2. Tratarea erorilor în cazul în care priza de rețea nu acceptă măsurători globale

    Dacă priza de rețea nu acceptă măsurarea valorilor globale, Node-RED ar afișa erori deoarece această funcție nu ar găsi proprietatea respectivă, de ex. msg.payload. GlobalMeasure. Voltage, deoarece nu ar fi prezent în obiectul JSON. În acest caz, proprietatea obiectului msg, de ex. msg. Voltage, este setat la 0 și eroarea este surprinsă.

  3. Atribuirea valorilor stării de ieșire
  4. Setarea culorilor valorilor afișate ale stării de ieșire în funcție de stările de ieșire

Pasul 9: nodul JSON și nodul de injectare

JSON Node și Inject Node
JSON Node și Inject Node
JSON Node și Inject Node
JSON Node și Inject Node

Nod JSON

Nodul JSON analizează fișierul JSON și îl transformă într-un obiect JSON.

Ca răspuns de la server la cererea GET, nodul Cerere HTTP returnează un fișier JSON care conține starea curentă a dispozitivului NETIO 4x, dar este pur și simplu un fișier text, astfel încât, pentru a lucra cu datele, fișierul JSON are nevoie pentru a fi analizat într-un obiect JSON.

Injectează nodul

În fiecare secundă, acest nod activează nodul Cerere HTTP care trimite o cerere GET.

Ca urmare, valorile din tabloul de bord sunt actualizate cu o perioadă de o secundă

Pasul 10: Nod de text și Nod de depanare

Nod de text și nod de depanare
Nod de text și nod de depanare
Nod de text și nod de depanare
Nod de text și nod de depanare

Nod de text

Afișează un câmp de text în tabloul de bord. În acest instructabil, nodurile text afișează curentul, tensiunea, modelul, versiunea de firmware sau versiunea JSON.

Eticheta este afișată în tabloul de bord, iar numele este numele nodului afișat în fluxul din nodul-RED.

Nod de depanare

Afișează msg.payload.

Pasul 11: nodul graficului

Nodul graficului
Nodul graficului
Nodul graficului
Nodul graficului

Acest nod trasează graficul curent în tabloul de bord în funcție de valoarea sarcinii utile.

Acest nod poate trasa numai diagrame în funcție de valoarea sarcinii utile.

Din acest motiv, un nod funcțional este utilizat pentru a seta msg.payload la valoarea care trebuie afișată.

msg.payload = msg. TotalCurrent;

Pasul 12: noduri de măsurare și noduri de legătură

Gauge Node și Link Nodes
Gauge Node și Link Nodes
Gauge Node și Link Nodes
Gauge Node și Link Nodes

Nodul gabaritului

Acest nod adaugă un widget de calibru în tabloul de bord.

În acest instructable, fiecare ecartament vizualizează o proprietate a obiectului msg: tensiunea [V], curentul [A], frecvența [Hz] și factorul de putere adevărat global (TPF).

Linkuri noduri

Conectarea și conectarea nodurilor funcționează ca un tunel. Msg.payload ajunge în linkul din nod și iese din nodul link-ului.

L-am folosit pentru a face fluxul puțin mai clar și mai ușor de citit.

Pasul 13: Vă mulțumesc că ați citit instructabilul meu

Sper că ți-a plăcut instructivul meu și sper că ai învățat cu adevărat ceva nou.

Această instrucțiune este doar o versiune scurtată a ghidului diferit pe care l-am făcut

Ghidul original este mai lung și mult mai orientat spre detalii și, în general, mai bine structurat. Dacă nu ați înțeles ceva sau credeți că am ratat sau nu am explicat suficient ceva, atunci îl puteți găsi cu siguranță acolo.

Promit că nu vei fi dezamăgit

Original:

De asemenea, există ghiduri similare despre diferite utilizări ale nodului-RED, așa că, dacă sunteți interesat, nu ezitați să explorați:

Lucrul cu API-ul URL REST în nod-RED

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

Lucrul cu REST XML în nod-RED

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

Lucrul cu TCP / Modbus în nod-RED

În curând:)

Recomandat: