Débuter avec NodeRed

J’ai essayé comme Bob m’a dit, mais rien à faire.
Voilà 2 sortes de données que je reçois, le premier via une fonction JSON

object
sn: object
Time: "1970-01-01T00:01:33"
ENERGY: object
TotalStartTime: "1970-01-01T00:00:00"
Total: 0
Yesterday: 0
Today: 0
ExportActive: array[3]
0: 0
1: 0
2: 0
Power: array[3]
0: 0
1: 0
2: 0
ApparentPower: array[3]
0: 0
1: 0
2: 0
ReactivePower: array[3]
0: 0
1: 0
2: 0
Factor: array[3]
0: 1
1: 1
2: 1
Frequency: 50
Voltage: array[3]
0: 0
1: 0
2: 0
Current: array[3]
0: 0
1: 0
2: 0
ver: 1

Et ici via une fonction

""{\"sn\":{\"Time\":\"1970-01-01T00:01:33\",\"ENERGY\":{\"TotalStartTime\":\"1970-01-01T00:00:00\",\"Total\":0.000,\"Yesterday\":0.000,\"Today\":0.000,\"ExportActive\":[0.000,0.000,0.000],\"Power\":[ 0, 0, 0],\"ApparentPower\":[ 0, 0, 0],\"ReactivePower\":[ 0, 0, 0],\"Factor\":[1.00,1.00,1.00],\"Frequency\":50,\"Voltage\":[ 0, 0, 0],\"Current\":[0.000,0.000,0.000]}},\"ver\":1}""

Comment faire pour récupérer telle ou telle données pour pouvoir injecter les données récupérées dans ma base de données influx ?

Merci d’avance pour votre aide.
John

Bonjour @jfery

On va prendre les choses dans l’ordre si tu veux bien, je ne suis pas expert :slight_smile:
J’utilise HA OS et chez moi tout est installé sur un PI 4B.
Dans les intégrations j’ai Node-Red Companion:

Dans les modules complémentaires j’ai installé Node Red:

Quand j’ouvre le module complémentaire Node-Red j’ai cette interface.

As-tu quelque de comparable ?

Bob

Dans le fichier configuration.yaml j’ai mis ça pour influxDB:

influxdb:
  host: a0d7b954-influxdb
  port: 8086
  database: haBobinfluxDB
  username: !secret influxdb_user
  password: !secret influxdb_password
  max_retries: 3
  default_measurement: state
  exclude:
    entity_globs:
      - sensor.*battery_level*
      - sensor.freebox*

Voici une affichage de mon node-red
j’ai une sortie, sur la droite de l’image, JSON et une via une fonction

et c’est là que je bloque car je ne sais pas envoyer comme ça le résultat dans ma Db
En fait, si je veux récupérer la valeur de TotalStratTime ou la « Frequency » ou pour entrer dans les autres zones du style « power » qui se trouve dans l’oject « ENERGY », comment puis-je faire ?
Je me doute qu’il doit y avoir un script avec une ou des boucles pour pouvoir lire la totalité de l’oject « sn », mais je ne vois pas comment faire ne connaissance pas trop la programmation objects.

Merci d’avance.

Voilà j’ai enfin trouvé ce que je voulais faire, c’est tout con, mais quand on ne connait pas le language et les possibilités avec les fonctions node-red, ce n’est pas évident du tout.
Voici le code dans une fonction dès la sortie de JSON

var temp = msg.payload.sn.ENERGY.Frequency;
message = [{"value" : temp},{"host" : "sent"}];
msg.payload = message;
return msg;

Donc je créé un tableau avec 2 objets
creation-objets-script
Et comme ça je peux envoyer ces 2 objets dans ma base de données.

Je déclare la variable temp qui va recherche la valeur de la fréquence, donc il faut mettre au msg.payload tous les objets qui sont imbriqués les uns dans les autres et si dans un objet vous avez 3 valeurs possible, il faut ajouter [ici l’emplacement de la valeur (ex : 0, 1, 2,…) et vous fermer avec un ]
Voci un exemple de ce que je viens de vous expliquer
creation-objets-script2
Je devrais pointer comme ceci

var temp = msg.payload.sn.ENERGY.Frequency.ExportActive[1];

> Ceci pour obtenir la valeur qui correspond à 1 (donc la deuxième valeur)

J’espère que ça pourra servir à quelqu’un.

Merci à tout ceux qui se sont penchés sur mon soucis.

John

1 « J'aime »