Aide sur Nodered mqtt sensor

Mon problème

J’ai un Awtrix.
Je communique avec Mqtt.
J’arrive à lui envoyer un message « en dur » via un node inject et un node Mqtt publish
J’arrive à lui dire de s’alumer/s’éteindre via un node inject et un node Mqtt publish
J’ai réussi via un tuto du site à allumer/éteindre des lampes sivant un capteur de présence et l’heure

Je souhaiterai :

  • Pouvoir l’allumer/éteindre suivant un capteur de présence et une heure précise : comment formatter un message mqtt (payload) et l’envoyer au node mqtt
  • Pouvoir lui envoyer la température (issu d’un capteur) à intervalle régulier : Comment formatter un message mqtt (payload) contenant la valeur d’un sensor pour l’envoyer dans le node Mqtt

D’avance merci.

Fabien

Il « suffit » de formater le payload comme l’attend l’awtrix.
C’est documenté? N’ayant pas d’awtrix, je ne sais pas.
Une forme le format connu, c’est normalement assez simple de mettre ça comme il faut dans le payload (et il faudra aussi le topic…)

Dans le payload il faut mettre : {« text »:« texte a passer »}
ca j’arrive à le faire, par contre ce que je n’arrive pas c’est de mettre à la place de « texte çà passer » la valeur d’un sensor.

Ca, par exemple:

[{"id":"b7fc690.b6ce198","type":"trigger-state","z":"d59703d6.87ebf","name":"","server":"d28c9492.f419c8","exposeToHomeAssistant":false,"haConfig":[{"property":"name","value":""},{"property":"icon","value":""}],"entityid":"sensor.mon_capteur","entityidfiltertype":"exact","debugenabled":false,"constraints":[{"targetType":"this_entity","targetValue":"","propertyType":"current_state","comparatorType":"is","comparatorValueDatatype":"str","comparatorValue":"","propertyValue":"new_state.state"}],"outputs":2,"customoutputs":[],"outputinitially":false,"state_type":"str","x":260,"y":4220,"wires":[["6c0ad32d.315ccc"],[]]},{"id":"6c0ad32d.315ccc","type":"mqtt out","z":"d59703d6.87ebf","name":"","topic":"/le/topic/qui/va/bien","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"","x":580,"y":4220,"wires":[]},{"id":"d28c9492.f419c8","type":"server","name":"hassio","legacy":false,"addon":false,"rejectUnauthorizedCerts":false,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]

Le noeud trigger est activé sur changement de valeur du sensor. La valeur est dans msg.payload et il suffit d’appeler le noeud mqtt out

Bonjour golfvert.
Merci pour tes réponses.
Il y a quelque chose que je ne comprend pas
voici ce que je fais

[{"id":"6fe46aa7.9dc1ec","type":"api-current-state","z":"fb49e400.b7da2","name":"Etat capteur température","server":"4e801e3f.b30a6","version":2,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.temperature_158d0002451bf6","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"}],"override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":430,"y":240,"wires":[["2995d3a4.40181c"]]},{"id":"272839bb.1043ee","type":"inject","z":"fb49e400.b7da2","name":"","props":[],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":170,"y":240,"wires":[["6fe46aa7.9dc1ec"]]},{"id":"2995d3a4.40181c","type":"debug","z":"fb49e400.b7da2","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":690,"y":240,"wires":[]},{"id":"93852e84.e88e98","type":"inject","z":"fb49e400.b7da2","name":"","props":[{"p":"topic","vt":"str"},{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"awtrix/notify","payload":"{\"text\":\"test\"}","payloadType":"str","x":430,"y":400,"wires":[["5b5c8bd0.3170e4"]]},{"id":"5b5c8bd0.3170e4","type":"mqtt out","z":"fb49e400.b7da2","name":"","topic":"","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"18e0e9d5.2c8936","x":690,"y":400,"wires":[]},{"id":"4e801e3f.b30a6","type":"server","name":"Home Assistant","version":1,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true},{"id":"18e0e9d5.2c8936","type":"mqtt-broker","name":"","broker":"192.168.0.12","port":"1883","clientid":"","usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""}]

Dans le premier j’envoie l’état du capteur vers un node debug, j’obtient :
Capture d’écran du 2021-06-17 21-05-12

Dans le second je formatte :

  • un msg.payload : {« text »:« test »}
  • un msg.topic : awtrix/notify
    vers un node MQTT out et le message test s’affiche sur awtrix

Ce que je n’arrive pas à faire c’est à partir du node currentState générer un msg.payload du type : {« text »:" entity state"} où entity state est la valeur du capteur.

Je pense que je tourne autour, que cela doit être évident, mais je sèche :disappointed:

En sortie du noeud Etat capteur et avant l’appel à mqtt rajouter un noeud change comme ça:

[{"id":"2fb370e2.b1c","type":"change","z":"f5b50430.ea48b8","name":"To Payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"{ \"text\": payload }","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":390,"y":1180,"wires":[["aeec184f.06dd38"]]}]

Ou alors un noeud template :

[{"id":"593f7bd1.d4e414","type":"template","z":"f5b50430.ea48b8","name":"","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"{ \"text\": {{payload}} }","output":"json","x":400,"y":1160,"wires":[["9804b1bc.16a3d"]]}]

Le premier utilise jsonata pour le formatage, l’autre du mustache.

Ca va mettre le payload (la température) dans le bon format de message dans les deux cas. Après, c’est une affaire de goût.

Jsonata est assez ardu à comprendre (un peu comme jinja2 natif de HA). Mais, c’est très puissant. Voir la doc http://docs.jsonata.org

Merci,
je vais tester ca

Cool, ca marche.
Du coup je vais explorer tout ça.
Encore merci.

Bonsoir Fabien,

Pourrais-tu partager ton flow stp :slight_smile:
Merci