Table des matières:

Comment travailler avec JSON dans Node-RED : 13 étapes
Comment travailler avec JSON dans Node-RED : 13 étapes

Vidéo: Comment travailler avec JSON dans Node-RED : 13 étapes

Vidéo: Comment travailler avec JSON dans Node-RED : 13 étapes
Vidéo: Руководство по JSON API и источнику данных Infinity для Grafana | Как отобразить уровень безработицы 2024, Novembre
Anonim
Comment travailler avec JSON dans Node-RED
Comment travailler avec JSON dans Node-RED

Cette instructable vous apprendra comment travailler avec JSON dans node-RED. Je vais vous montrer comment contrôler les prises de courant en réseau avec le transfert de fichiers json via http get et post. Et vous pouvez utiliser ces connaissances plus tard pour contrôler tout appareil prenant en charge le protocole JSON.

À des fins d'enseignement, j'utiliserai la prise de courant réseau NETIO 4All, mais ne vous inquiétez pas, vous n'avez rien à acheter. NETIO propose une incroyable démo en ligne 4All que vous pouvez utiliser.

Fournitures

Powersocket en réseau NETIO 4All ou démo en ligne 4All:

Noeud-ROUGE

Étape 1: protocole REST JSON

Protocole REST JSON Http(s)
Protocole REST JSON Http(s)

Cette partie est un peu technique mais s'il vous plaît soyez indulgent avec moi. Si je n'expliquais pas cette partie, vous auriez des problèmes à comprendre les valeurs des fichiers json que nous enverrons dans node-RED.

Actions applicables à chaque sortie (prise électrique):

Dans tous les protocoles M2M, les prises de courant NETIO utilisent les mêmes actions qui peuvent être appliquées aux sorties individuelles. Par exemple, une action Toggle ou Short Off peut être écrite sur n'importe quelle sortie.

Cependant, la variable Action ne peut être utilisée que pour écrire des valeurs, elle ne peut pas être utilisée pour lire l'état actuel de la prise.

Voici les actions que vous pouvez appliquer à chaque sortie:

0 = Sortie désactivée (Off)

1 = Sortie activée (On)

2 = Sortie désactivée brièvement (short Off)

3 = Sortie activée brièvement (short On)

4 = Sortie commutée d'un état à l'autre (toggle)

5 = état de sortie inchangé (pas de changement)

6 = Ignoré

Exemple - Fichier JSON pour basculer le numéro de sortie. 1:

{

"Les sorties": [{

"Identifiant": 1, "Action": 4

}]

}

ID - ce numéro indique quelle sortie nous utiliserons

Action - cette partie est l'action que la sortie fera (par exemple 1 (Activer la sortie))

Étape 2: Flux

Couler
Couler

Et maintenant l'essentiel. Voici à quoi ressemble l'environnement node-RED.

Nous avons importé le flux d'API d'URL (Le projet que vous voyez. Plus tard, je vous montrerai comment importer des flux et ce projet) Ce projet se compose de deux parties:

  1. Flux NETIO AN30 (API REST JSON)
  2. Tableau de bord (interface graphique par laquelle vous pouvez utiliser votre programme)

Étape 3: Tableau de bord

Tableau de bord
Tableau de bord

Voici à quoi ressemble le tableau de bord dans node-RED pour cette instructable. Vous pouvez le personnaliser si vous le souhaitez selon vos goûts.

Le tableau de bord de ce projet est divisé en 4 parties:

  1. État de l'appareil - affiche des informations sur l'appareil telles que le modèle, l'adresse mac ou la version du micrologiciel.
  2. (POST) Sortie de contrôle 1 - Contient 5 boutons qui contrôlent la sortie 1. Chaque bouton exécute une action différente
  3. (GET) O1 - O4 Output States - Cette partie affiche l'état actuel de chaque sortie de votre appareil.
  4. Gestion des appareils - Dans cette partie, vous pouvez trouver toutes sortes de graphiques et de jauges qui affichent les valeurs mesurées actuelles de l'appareil NETIO 4Aall

Étape 4: Importer le flux (projet, script, etc.)

Flux d'importation (projet, script, etc.)
Flux d'importation (projet, script, etc.)

Dans le menu (coin supérieur droit), sélectionnez Importer puis Presse-papiers.

Ensuite, copiez le texte ci-dessous dans le champ indiqué et cliquez sur Importer.

Installation des nœuds manquants

Les nœuds sont chargés dans le flux sélectionné. Il est possible qu'un message d'erreur s'affiche avec une liste de nœuds en cours d'importation mais qui ne sont pas encore installés dans Node-RED. Dans ce cas, les nœuds manquants doivent être installés.

S'il manque des nœuds, sélectionnez Gérer la palette dans le menu, cliquez sur Installer et recherchez et installez les nœuds qui vous manquent.

Importer du texte:

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

Étape 5: Comment tout fonctionne ensemble

Comment tout fonctionne ensemble
Comment tout fonctionne ensemble

Le flux est fondamentalement divisé en deux parties: POST et GET.

POST: écriture à O1

  • Cinq boutons créés dans le tableau de bord dans le flux sont affichés dans le tableau de bord.
  • Après avoir cliqué sur le bouton Sortie 1 = ON dans le tableau de bord, la charge utile est définie sur le fichier netio.json qui spécifie la sortie et l'action (définie pour chacun des boutons).
  • Le bloc HTTP Request (POST) envoie le fichier netio.json en tant que requête à une adresse IP.
  • La réponse du serveur (état) est renvoyée en tant que sortie.
  • Le bloc Msg.payload affiche le résultat de la requête HTTP (POST).

OBTENIR: lecture de O1 à O4

  • Le bloc 1 Second Repeat active, avec une période d'une seconde, le bloc HTTP Request (GET), qui à son tour envoie netio.json en tant que requête GET et renvoie un fichier JSON complet avec l'état du socket tel qu'il a été reçu du serveur.
  • Le bloc JSON Parse transforme le fichier JSON du bloc HTTP Request (GET) en un objet JSON afin qu'il soit possible de manipuler les propriétés dans le fichier JSON.
  • Le bloc Function prend des parties individuelles de l'objet JSON et les transforme en propriétés d'un objet msg pour une utilisation ultérieure.
  • Le bloc Current Chart définit msg.payload sur la propriété msg. TotalCurrent de l'objet msg, car le bloc Current Chart (Device) suivant ne peut afficher que la valeur msg.payload.
  • Divers nœuds de sortie suivent ensuite afin d'afficher les propriétés sélectionnées de l'objet msg, telles qu'elles sont extraites de l'objet JSON, dans le tableau de bord.

L'objet msg et msg.payload

Pour une explication simple et concise, voir ici:

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

Étape 6: HTTP POST et GET

HTTP POST et GET
HTTP POST et GET
HTTP POST et GET
HTTP POST et GET

Requête HTTP (POST)

Ce nœud envoie un fichier de commande netio.json en tant que requête HTTP (POST) afin de contrôler le périphérique NETIO 4All.

Requête HTTP (GET)

Ce nœud envoie une requête HTTP (GET) et renvoie la réponse d'état.

L'adresse pré-remplie pointe vers la démo en ligne NETIO 4All, où vous pouvez tester la connexion sans avoir un appareil NETIO à votre bureau.

netio-4all.netio-products.com

Il est possible de définir votre propre adresse IP dans ces nœuds; cependant, l'adresse IP doit être modifiée dans les deux nœuds de requête HTTP, POST et GET.

Étape 7: Nœuds de bouton

Nœuds de bouton
Nœuds de bouton
Nœuds de bouton
Nœuds de bouton

Cliquer sur le nœud du bouton génère un message contenant un fichier netio.json (image de droite) qui est ensuite envoyé via le nœud http post à la prise d'alimentation intelligente netio.

Étape 8: Nœud de fonction

Nœud de fonction
Nœud de fonction
Nœud de fonction
Nœud de fonction

Un nœud de fonction est un nœud spécial qui permet d'écrire une fonction JavaScript personnalisée.

Dans cette instructable, la fonction sélectionne des valeurs dans le fichier JSON analysé (maintenant un objet JSON) et les affecte aux propriétés de l'objet msg.

Le code est divisé en quatre sections:

  1. Attribution de valeurs de l'objet JSON aux propriétés individuelles de l'objet msg
  2. Traitement des erreurs dans le cas où la prise de courant en réseau ne prend pas en charge les mesures globales

    Si la prise de courant en réseau ne prend pas en charge la mesure des valeurs globales, Node-RED afficherait des erreurs car cette fonction ne trouverait pas la propriété respective, par ex. msg.payload. GlobalMeasure. Voltage, car il ne serait pas présent dans l'objet JSON. Dans ce cas, la propriété de l'objet msg, par ex. msg. Voltage, est défini sur 0 et l'erreur est détectée et traitée.

  3. Affectation des valeurs d'état de sortie
  4. Réglage des couleurs des valeurs d'état de sortie affichées en fonction des états de sortie

Étape 9: nœud JSON et nœud d'injection

Nœud JSON et nœud d'injection
Nœud JSON et nœud d'injection
Nœud JSON et nœud d'injection
Nœud JSON et nœud d'injection

Nœud JSON

Le nœud JSON analyse le fichier JSON et le transforme en un objet JSON.

En réponse du serveur à la requête GET, le nœud de requête HTTP renvoie un fichier JSON contenant l'état actuel du périphérique NETIO 4x, mais il s'agit simplement d'un fichier texte, donc pour travailler avec les données, le fichier JSON a besoin à analyser dans un objet JSON.

Nœud d'injection

Chaque seconde, ce nœud active le nœud de requête HTTP qui envoie une requête GET.

En conséquence, les valeurs dans le tableau de bord sont mises à jour avec une période d'une seconde

Étape 10: Nœud de texte et nœud de débogage

Nœud de texte et nœud de débogage
Nœud de texte et nœud de débogage
Nœud de texte et nœud de débogage
Nœud de texte et nœud de débogage

Nœud de texte

Affiche un champ de texte dans le tableau de bord. Dans cette instructable, les nœuds de texte affichent le courant, la tension, le modèle, la version du firmware ou la version JSON.

L'étiquette est affichée dans le tableau de bord et le nom est le nom du nœud affiché dans le flux dans le nœud-RED.

Nœud de débogage

Affiche le msg.payload.

Étape 11: Nœud de graphique

Nœud de graphique
Nœud de graphique
Nœud de graphique
Nœud de graphique

Ce nœud trace le graphique actuel dans le tableau de bord en fonction de la valeur de la charge utile.

Ce nœud ne peut tracer des graphiques qu'en fonction de la valeur de la charge utile.

Pour cette raison, un nœud de fonction est utilisé pour définir msg.payload sur la valeur qui doit être affichée.

msg.payload = msg. TotalCurrent;

Étape 12: Nœud de jauge et nœuds de liaison

Nœud de jauge et nœuds de lien
Nœud de jauge et nœuds de lien
Nœud de jauge et nœuds de lien
Nœud de jauge et nœuds de lien

Noeud de jauge

Ce nœud ajoute un widget de jauge au tableau de bord.

Dans cette instructable, chaque jauge visualise une propriété de l'objet msg: tension [V], courant [A], fréquence [Hz] et le vrai facteur de puissance global (TPF).

Nœuds de liaison

Les nœuds d'entrée et de sortie fonctionnent comme un tunnel. Le msg.payload arrive dans le nœud de liaison et sort du nœud de sortie de liaison.

Je l'ai utilisé pour rendre le flux un peu plus clair et plus facile à lire.

Étape 13: Merci d'avoir lu mon Instructable

J'espère que vous avez apprécié mon instructable et j'espère que vous avez appris quelque chose de nouveau.

Cette instructable n'est qu'une version abrégée du guide différent que j'ai fait

Le guide original est plus long et beaucoup plus détaillé et généralement mieux structuré. Si vous n'avez pas compris quelque chose ou pensez que j'ai raté ou pas assez expliqué quelque chose, alors vous pouvez certainement le trouver là-bas.

je vous promets que vous ne serez pas déçu

Original:

Il existe également des guides similaires sur les différentes utilisations de node-RED, donc si vous êtes intéressé, n'hésitez pas à explorer:

Travailler avec l'API d'URL REST dans node-RED

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

Travailler avec REST XML dans node-RED

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

Travailler avec TCP/Modbus dans node-RED

A très bientôt:)

Conseillé: