Node red MQTT json

Bonjour,

Je met en place mqtt avec node red et je ne sais pas trop comment récupérer une partie d’un topic qui arrive au format string du genre : STATE = {« Time »:« 2023-01-04T13:27:55 »,« Uptime »:« 0T00:00:09 »,« UptimeSec »:9,« Heap »:28,« SleepMode »:« Dynamic »,« Sleep »:50,« LoadAvg »:19,« MqttCount »:1,« Wifi »:{« AP »:1,« SSId »:« freecheznous »,« BSSId »:« 14:0C:76:9E:0B:40 »,« Channel »:1,« Mode »:« 11n »,« RSSI »:82,« Signal »:-59,« LinkCount »:1,« Downtime »:« 0T00:00:03 »}}
nodemcu-v3-2 … etc

outre ma « brique » « mqtt in » quelle brique je rajoute derrière pour pouvoir séparer mes champs pour par exemple ne récupérer que la valeur « Uptime » ?

image

Merci a tous pour votre Aide

Ma configuration


System Information

version core-2022.12.8
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.10.0-19-amd64
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4971
Installed Version 1.29.0
Stage running
Available Repositories 1272
Downloaded Repositories 4
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 1
resources 0
views 1
mode storage
Recorder
oldest_recorder_run 28 décembre 2022 à 16:35
current_recorder_run 4 janvier 2023 à 08:49
estimated_db_size 37.66 MiB
database_engine mysql
database_version 8.0.28
___

C’est le b.-a.-ba de NodeRed bien expliqué dans la doc.
https://nodered.org/docs/user-guide/messages

Tu as essayé quelque chose?

Salut, Attention les maçons parlent de briques. Dans NodeRed on parle de Node.
Plusieurs briques constituent un mur (toujours en maçonnerie)
Dans NR, plusieurs Nodes constituent un Flow.
Donc pour ta problématique, il faudrat commencer par découper (split) ton message puis isoler la partie qui tu souhaites (switch)

Pour connaitre le message réel en sortie du Node Mqtt IN, possitionne directement à sa sortie un Node Débug et postes le résultat pour valider sa composition. Pas sûr qu’il corresponde à ce que tu as posté.

Salut,

Techniquement moi je me pose la question de savoir c’est ce n’est pas plus utile de traiter le MQTT à travers les templates de HA qu’avec Nodered et pourtant j’ai Nodered comme automatisme principal.
Si en plus derrière, il faut remettre le uptime dans une entité quelconque, c’est beaucoup de boulot en plus et ça n’apprends pas à manipuler les base HA

On peut en discuter mais pas tout à fait d’accord avec toi.
J’ai des choses stocker en MQTT sans passer par HA et tous mes automatismes sont en NR et rien sur HA.

Oui, c’est bien pour ça que je me pose la question aussi, le contexte d’utilisation permettrai de trancher.
Là, j’ai juste un doute sur l’objectif d’extraire un uptime qui est déjà stocké…

Bonsoir à tous,
Donc j’explique le contexte, j’ai un rf 433 bridge sonoff sous tasmota, j’ai des détecteurs d’ouverture de porte qui me renvois des résultats sous cette forme :
ele/tasmota_bridge_blanc/RESULT : msg.payload : string[111] "{"Time":"2023-01-04T18:16:09","RfReceived":{"Sync":19164,"Low":734,"High":1882,"Data":"154557","RfKey":"None"}}"

Je souhaite donc pouvoir différencier mes détecteurs grâce au « Data »:« 154557 » qui bien évidemment est différent sur chaque détecteur, ceci afin de connaitre la porte restée ouverte et aussi de pouvoirs « construire » (pourtant je ne suis pas maçon :wink: ) mon Alarme.

j’ai regardé un petit peu ce soir en rentrant du boulot et j’ai effectivement repéré ce node « split » reste a comprendre comment s’en servir

Merci pour votre aide

En sortie du noeud mqtt, mettre un noeud « json ». En sortie du noeud json mettre un noeud debug en affichant msg.payload.RfReceived.Data

Sinon, poster en Texte préformaté ce qui sort du noeud mqtt.

Et enfin, regarder la doc indiquée plus haut. Ca aidera pour comprendre…

1 « J'aime »

Merci @golfvert c’est le « msg.payload.RfReceived.Data » qu’il me manquais et que je n’avais pas encore eu l’occasion d’utiliser .C’est cool !!! ca marche je reçois bien mes SMS.

Merci encore à tous

Bonjour,
Je relance le sujet car cela fonctionnait très bien jusqu’à le mise à jour de l’image docker de nodered.
En effet depuis la mise à jour de nodered 3.0.2 , le node « in mqtt » ne reçois plus infos de la même façon dirait-on .
avant hier en mettant un node « debug » derrière mon node « in mqtt » je recevais ça:
image
Aujourd’hui mon node « debug » me renvois çà :
image

Annotation 2023-01-10 104141

Je ne comprend pas pourquoi, mon mqttexplorer lui, affiche toujours les bonnes infos:

J’ai testé plusieurs config dans le node « in mqtt » et je n’arrive pas à récupérer le message payload comme avant hier.
ma config in mqtt :

Avez vous une idée
Merci à tous

J’en reviens à la suggestion du dessus:

Là, avec des copies d’écran, ce n’est pas possible de savoir.
Et normalement, la doc aide à comprendre et à tester.

Comme ça, on dirait que le topic d’abonnement a changé.

D’ou vient ce homeassistant. dans le topic qui n’y était pas avant??

Bonjour,
merci pour les conseils, j’essai de comprend la doc. En fait, effectivement cela s’affiche différemment a la sortie du node in mqtt,

tele/homeassistant.tasmota_bridge_blanc/RESULT : msg : Object
{ topic: "tele/homeassistant.tasmota_bri…", payload: object, qos: 0, retain: false, _msgid: "6d8063b5613d4961" }

en fait en cliquant sur « objet » le message complet s’affiche et j’avais pas capté cela hier

tele/homeassistant.tasmota_bridge_blanc/RESULT : msg : Object
object
topic: "tele/homeassistant.tasmota_bridge_blanc/RESULT"
payload: object
Time: "2023-01-11T07:54:39"
RfReceived: object
Sync: 31348
Low: 644
High: 2016
Data: "D37038"
RfKey: "None"
qos: 0
retain: false
_msgid: "6d8063b5613d4961"

Merci des conseils

Il manque le détail du payload. C’est le morceau important…