Récupérer le nom d'un capteur pour personnaliser un message

Bonjour à tous,

J’utilise actuellement ce schéma qui fonctionne parfaitement pour récupérer certaines valeurs de capteurs :

  • Je récupère la valeur de mon capteur et j’envoie un message pour récupérer l’état. Je limite ici l’envoi à 1 message par tranche de 4h.

Le problème est que je suis obligé de faire un message personnalisé pour chaque capteur.

Est-il possible de faire en sorte de récupérer le nom du capteur afin de ne pas faire 1 capteur = 1 message ?
Concrètement, est-il possible d’envisager le schéma ci-dessous et si oui, comment le paramétrer ?

Merci par avance pour votre aide.
Aurel

Salut,

Par défaut le noeud « Event:State » que tu utilises envoie toutes les infos de l’entité dans « msg.data ».
Si tu l’envoie dans une débug tu verra la structure de mst.data et tu pourra retoruver toutes les valeurs et attributs de ton entité. Et les utiliser comme variables.

Exemple pour une entité type light, tu as : « msg.data.attributes.brightness »

Salut,

Je ne sais pas trop comment envoyer dans une débug à partir d’un noeud « Event:State » puisqu’il n’y a pas d’input. Mais je vais creuser.

Par contre à partir d’un « Current:State » j’arrive à le faire.

J’arrive donc à récupérer dans ma boite message ce que je souhaite :
image

Par contre, comment faire un message qui concatène plusieurs « attributes » (c à dire dans mon cas « NOM CAPTEUR » + « VALEUR ») puisque si je rajoute un « msg.payload » juste après, uniquement la dernière ligne sera pris en compte dans le message transmis (et les options SET / CHANGE / MOVE ne semblent pas réaliser cela).

C’est l’output l’important
image

En tout cas, s’il n’est pas possible de concaténer des valeurs dans la boite « msg » directement, une solution consiste à utiliser la FONCTION qui est placée juste après dans mon cas où on peut concaténer toutes les valeurs :

  • Soit la fonction :

@Pulpy-Luke,

Je ne comprends pas désolé! :wink:

Où placer le « timestamp » dans le cas d’un « Event:State » ?

image

Comme ça

Ok donc c’est bien comme je faisais c-à-dire en passant par un « current:state » et non directement par le « Events:state ».

Merci.
Aurel

Ton last_boot donne une date/heure ça dépends de ce que tu veux faire mais c’est pas forcement le plus simple à manipuler

J’ai refais le flow pour l’exemple: last_boot n’est peut-être pas le plus opportun dans mon cas effectivement. :slight_smile:

Faut aussi penser à changer ce que tu veux afficher dasn le noeud Debug. Là dans ton screenshot tu affiches le msg.payload par défaut.
Tu peux changer avec : msg.data

Oui biensûr. Il faut modifier le debug de msg.payload à msg.data, ce qui permet de récupérer toutes les infos. :+1: