Sommario:

Come lavorare con JSON in Node-RED: 13 passaggi
Come lavorare con JSON in Node-RED: 13 passaggi

Video: Come lavorare con JSON in Node-RED: 13 passaggi

Video: Come lavorare con JSON in Node-RED: 13 passaggi
Video: Node JS EXPRESS Tutorial Italiano 19 - Usare JSON per passare dati 2024, Dicembre
Anonim
Come lavorare con JSON in Node-RED
Come lavorare con JSON in Node-RED

Questo tutorial ti insegnerà come lavorare con JSON in node-RED. Ti mostrerò come controllare le prese di corrente in rete con il trasferimento di file json tramite http get e post. E puoi usare questa conoscenza in seguito per controllare qualsiasi dispositivo che supporti il protocollo JSON.

Per scopi didattici userò la presa di rete NETIO 4All, ma non preoccuparti, non è necessario acquistare nulla. NETIO ha un'incredibile demo online di 4All che puoi usare.

Forniture

NETIO 4All powersocket in rete o demo online 4All:

Nodo-RED

Passaggio 1: protocollo REST JSON

REST JSON protocollo HTTP(s)
REST JSON protocollo HTTP(s)

Questa parte è un po' tecnica, ma per favore abbiate pazienza. Se non avessi spiegato questa parte, avresti problemi a comprendere i valori nei file json che invieremo in node-RED.

Azioni applicabili a ciascuna uscita (presa elettrica):

In tutti i protocolli M2M, le prese di alimentazione NETIO utilizzano le stesse azioni che possono essere applicate alle singole uscite. Ad esempio, un'azione Toggle o Short Off può essere scritta su qualsiasi output.

Tuttavia, la variabile Action può essere utilizzata solo per scrivere valori, non può essere utilizzata per leggere lo stato corrente della presa.

Queste sono le azioni che puoi applicare a ciascun output:

0 = Uscita disattivata (Off)

1 = Uscita attivata (On)

2 = Uscita disattivata per breve tempo (breve Off)

3 = Uscita accesa per breve tempo (short On)

4 = Uscita commutata da uno stato all'altro (toggle)

5 = Stato uscita invariato (nessuna modifica)

6 = Ignorato

Esempio: file JSON per attivare o disattivare l'output n. 1:

{

"Uscite": [{

"ID": 1, "Azione": 4

}]

}

ID: questo numero indica quale output utilizzeremo

Azione - questa parte, è l'azione che farà l'uscita (es. 1 (Attiva uscita))

Passaggio 2: flusso

Flusso
Flusso

E ora la parte principale. Ecco come appare l'ambiente node-RED.

Abbiamo importato il flusso API URL (il progetto che vedi. Più avanti ti mostrerò come importare i flussi e questo progetto) Questo progetto è composto da due parti:

  1. Flusso NETIO AN30 (API JSON REST)
  2. Dashboard (interfaccia grafica tramite la quale è possibile utilizzare il programma)

Passaggio 3: dashboard

Pannello di controllo
Pannello di controllo

Ecco come appare la dashboard in node-RED per questo istruibile. Puoi personalizzarlo se vuoi secondo i tuoi gusti.

La dashboard di questo progetto è divisa in 4 parti:

  1. Stato del dispositivo: mostra le informazioni sul dispositivo come modello, indirizzo mac o versione del firmware.
  2. (POST) Uscita di controllo 1 - Contiene 5 pulsanti che controllano l'uscita 1. Ogni pulsante esegue un'azione diversa
  3. (GET) O1 - Stati di uscita O4 - Questa parte mostra lo stato corrente di ogni uscita dal tuo dispositivo.
  4. Gestione del dispositivo - In questa parte puoi trovare tutti i tipi di grafici e indicatori che mostrano i valori misurati correnti dal dispositivo NETIO 4Aall

Passaggio 4: flusso di importazione (progetto, script, ecc.)

Flusso di importazione (progetto, script, ecc.)
Flusso di importazione (progetto, script, ecc.)

Nel menu (angolo in alto a destra) seleziona Importa e poi Appunti.

Quindi, copia il testo sottostante nel campo indicato e fai clic su Importa.

Installazione di nodi mancanti

I nodi vengono caricati nel flusso selezionato. È possibile che venga visualizzato un messaggio di errore con un elenco di nodi che vengono importati ma non sono ancora installati in Node-RED. In questo caso, è necessario installare i nodi mancanti.

Se mancano dei nodi, seleziona Gestisci tavolozza nel menu, fai clic su Installa e trova e installa i nodi mancanti.

Importa testo:

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

Passaggio 5: come funziona tutto insieme

Come funziona tutto insieme
Come funziona tutto insieme

Il flusso è sostanzialmente diviso in due parti: POST e GET.

POST: Scrivere su O1

  • Nella Dashboard vengono visualizzati cinque pulsanti creati nel dashboard nel flusso.
  • Dopo aver fatto clic sul pulsante Output 1 = ON nella Dashboard, il payload viene impostato sul file netio.json che specifica l'output e l'azione (definita per ciascuno dei pulsanti).
  • Il blocco HTTP Request (POST) invia il file netio.json come richiesta a un indirizzo IP.
  • La risposta del server (stato) viene restituita come output.
  • Il blocco Msg.payload visualizza il risultato della richiesta HTTP (POST).

GET: Lettura da O1 – O4

  • Il blocco 1 Second Repeat attiva, con un periodo di un secondo, il blocco HTTP Request (GET), che a sua volta invia netio.json come richiesta GET e restituisce un file JSON completo con lo stato del socket ricevuto dal server.
  • Il blocco JSON Parse trasforma il file JSON dal blocco HTTP Request (GET) in un oggetto JSON in modo che sia possibile manipolare le proprietà nel file JSON.
  • Il blocco funzione prende singole parti dell'oggetto JSON e le trasforma in proprietà di un oggetto msg per un uso successivo.
  • Il blocco Current Chart imposta msg.payload sulla proprietà msg. TotalCurrent dell'oggetto msg, poiché il successivo blocco Current Chart (Device) può visualizzare solo il valore msg.payload.
  • Seguono quindi vari nodi di output per visualizzare le proprietà selezionate dell'oggetto msg, come prese dall'oggetto JSON, nella Dashboard.

L'oggetto msg e msg.payload

Per una spiegazione semplice e concisa, vedi qui:

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

Passaggio 6: HTTP POST e GET

HTTP POST e GET
HTTP POST e GET
HTTP POST e GET
HTTP POST e GET

Richiesta HTTP (POST)

Questo nodo invia un file di comando netio.json come richiesta HTTP (POST) per controllare il dispositivo NETIO 4All.

Richiesta HTTP (GET)

Questo nodo invia una richiesta HTTP (GET) e restituisce la risposta di stato.

L'indirizzo precompilato punta alla demo online di NETIO 4All, dove puoi testare la connessione senza avere un dispositivo NETIO alla tua scrivania.

netio-4all.netio-products.com

È possibile impostare il proprio indirizzo IP in questi nodi; tuttavia, l'IP deve essere modificato in entrambi i nodi di richiesta HTTP, POST e GET.

Passaggio 7: nodi pulsanti

Nodi pulsanti
Nodi pulsanti
Nodi pulsanti
Nodi pulsanti

Facendo clic sul nodo del pulsante viene generato un messaggio contenente un file netio.json (immagine a destra) che viene quindi inviato tramite il nodo post http alla presa di alimentazione intelligente netio.

Passaggio 8: nodo funzione

Nodo funzione
Nodo funzione
Nodo funzione
Nodo funzione

Un nodo funzione è un nodo speciale che consente di scrivere una funzione JavaScript personalizzata.

In questa istruzione, la funzione seleziona i valori dal file JSON analizzato (ora un oggetto JSON) e li assegna alle proprietà dell'oggetto msg.

Il codice è suddiviso in quattro sezioni:

  1. Assegnazione di valori dall'oggetto JSON alle singole proprietà dell'oggetto msg
  2. Gestione degli errori nel caso in cui la presa di rete in rete non supporti le misurazioni globali

    Se la presa di rete in rete non supporta la misurazione dei valori globali, Node-RED visualizzerà errori perché questa funzione non troverebbe la rispettiva proprietà, ad es. msg.payload. GlobalMeasure. Voltage, poiché non sarebbe presente nell'oggetto JSON. In questo caso, la proprietà dell'oggetto msg, ad es. msg. Voltage, è impostato su 0 e l'errore viene rilevato e gestito.

  3. Assegnazione dei valori dello stato delle uscite
  4. Impostazione dei colori dei valori dello stato di uscita visualizzati in base agli stati di uscita

Passaggio 9: nodo JSON e Inject Node

Nodo JSON e Inject Nodo
Nodo JSON e Inject Nodo
Nodo JSON e Inject Nodo
Nodo JSON e Inject Nodo

Nodo JSON

Il nodo JSON analizza il file JSON e lo trasforma in un oggetto JSON.

In risposta dal server alla richiesta GET, il nodo HTTP Request restituisce un file JSON contenente lo stato corrente del dispositivo NETIO 4x, ma è semplicemente un file di testo, quindi per lavorare con i dati, il file JSON ha bisogno da analizzare in un oggetto JSON.

Inietta nodo

Ogni secondo, questo nodo attiva il nodo HTTP Request che invia una richiesta GET.

Di conseguenza, i valori nella Dashboard vengono aggiornati con un periodo di un secondo

Passaggio 10: nodo di testo e nodo di debug

Nodo di testo e nodo di debug
Nodo di testo e nodo di debug
Nodo di testo e nodo di debug
Nodo di testo e nodo di debug

Nodo di testo

Visualizza un campo di testo nel dashboard. In questa istruzione, i nodi di testo visualizzano la corrente, la tensione, il modello, la versione del firmware o la versione JSON.

L'etichetta viene visualizzata nel dashboard e il nome è il nome del nodo visualizzato nel flusso in Node-RED.

Nodo di debug

Visualizza il msg.payload.

Passaggio 11: nodo grafico

Nodo grafico
Nodo grafico
Nodo grafico
Nodo grafico

Questo nodo traccia il grafico corrente nel dashboard in base al valore del payload.

Questo nodo può solo tracciare grafici in base al valore del payload.

Per questo motivo, viene utilizzato un nodo funzione per impostare msg.payload sul valore che deve essere visualizzato.

msg.payload = msg. TotalCurrent;

Passaggio 12: nodo di misura e nodi di collegamento

Nodo di misura e nodi di collegamento
Nodo di misura e nodi di collegamento
Nodo di misura e nodi di collegamento
Nodo di misura e nodi di collegamento

Nodo indicatore

Questo nodo aggiunge un widget indicatore al dashboard.

In questa istruzione, ogni misuratore visualizza una proprietà dell'oggetto msg: tensione [V], corrente [A], frequenza [Hz] e il vero fattore di potenza (TPF) complessivo.

Nodi di collegamento

I nodi di collegamento e di uscita funzionano come un tunnel. Il msg.payload arriva nel nodo link in ed esce dal nodo link out.

L'ho usato per rendere il flusso un po' più chiaro e più facile da leggere.

Passaggio 13: grazie per aver letto il mio Instructable

Spero che ti sia piaciuto il mio istruttivo e spero che tu abbia imparato qualcosa di nuovo.

Questa istruzione è solo una versione abbreviata di una guida diversa che ho creato

La guida originale è più lunga e molto più orientata ai dettagli e generalmente meglio strutturata. Se non hai capito qualcosa o pensi che mi sia sfuggito o non abbia spiegato abbastanza qualcosa, puoi sicuramente trovarlo lì.

Ti prometto che non rimarrai deluso

Originale:

Inoltre ci sono guide simili sui vari usi dinode-RED, quindi se sei interessato sentiti libero di esplorare:

Utilizzo dell'API REST URL in node-RED

www.netio-products.com/it/application-notes/an29-node-red-example-of-url-api-comunicazione-con-netio-4x

Lavorare con REST XML in node-RED

www.netio-products.com/it/application-notes/an31-node-red-example-of-rest-xml-comunicazione-con-netio-4x

Lavorare con TCP/Modbus in node-RED

Prossimamente:)

Consigliato: