Shelly Plug S sur mqtt2

Bonjour
J’essaye de passer mes Shelly Plug S du plugin Shelly vers mqtt2
J’ai passé mes Shelly sans problème grâce au tuto
Mais pour mes plug S, j’ai un problème de retour d’état qui n’est pas « stable »
Je ne touche pas au Plug S mais il passe régulièrement de on à off et inversement
image

Toutes les mises à jours sont faites
Avez vous une idée ?
Merci
Cordialement

En fait dans le log, j’ai une mise à jour de l’état à vide :

[shellyplug-s-LV][Etat]  mise à jour de  la valeur avec  : {}

Et après j’ai une mise à jour normal
En fait c’est l’envoi des infos concernant la consommation qui met le statut à null
Toujours personne qui a une idée ?
Merci

Bonjour,
As tu regarder avec mqtt manager si le module ne renvoyer pas une mauvaise valeur ? Aussi hésite pas a poster des logs complet car la en l’état c’est normal que personne ne répond vu qu’il n’y a pas matière a chercher.

1 « J'aime »

@Loic Merci pour ta réponse
Après analyse, je vois que le shelly envoi 2 trames :
Le 1er avec l’info sur l’état du relay et la température et le second avec la consommation. MQTT a l’air d’interpréter que le statut est nul
voici un bout de log

[2023-07-29 22:45:43]DEBUG : [Cuisine][shellyplug-s-LV][Etat]  mise à jour de  la valeur avec  : on
[2023-07-29 22:45:43]DEBUG : [Cuisine][shellyplug-s-LV][Température]  mise à jour de  la valeur avec  : 34.58
[2023-07-29 22:45:58]DEBUG : Message reçu sans prise en charge par un plugin : {"shellies":{"shellyplug-s-LV":{"relay":["on"],"temperature":34.74,"temperature_f":94.53,"overtemperature":0},"shelly1pm-int-jardin":{"relay":["on"],"input":[0],"temperature":47.73,"temperature_f":117.92,"overtemperature":0,"temperature_status":"Normal"}}}
[2023-07-29 22:45:58]DEBUG : [Cuisine][shellyplug-s-LV][Etat]  mise à jour de  la valeur avec  : on
[2023-07-29 22:45:58]DEBUG : [Cuisine][shellyplug-s-LV][Température]  mise à jour de  la valeur avec  : 34.74
[2023-07-29 22:46:08]DEBUG : Message reçu sans prise en charge par un plugin : {"shellies":{"shellyplug-s-LV":{"relay":[{"energy":572}]}}}
[2023-07-29 22:46:08]DEBUG : [Cuisine][shellyplug-s-LV][Etat]  mise à jour de  la valeur avec  : {}
[2023-07-29 22:46:08]DEBUG : [Cuisine][shellyplug-s-LV][Consommation]  mise à jour de  la valeur avec  : 572
[2023-07-29 22:46:13]DEBUG : Message reçu sans prise en charge par un plugin : {"shellies":{"shellyplug-s-LV":{"relay":["on"],"temperature":34.69,"temperature_f":94.44,"overtemperature":0},"shelly1pm-int-jardin":{"relay":["on"],"input":[0],"temperature":47.1,"temperature_f":116.79,"overtemperature":0,"temperature_status":"Normal"}}}
[2023-07-29 22:46:13]DEBUG : [Cuisine][shellyplug-s-LV][Etat]  mise à jour de  la valeur avec  : on
[2023-07-29 22:46:13]DEBUG : [Cuisine][shellyplug-s-LV][Température]  mise à jour de  la valeur avec  : 34.69
[2023-07-29 22:46:28]DEBUG : Message reçu sans prise en charge par un plugin : {"shellies":{"shellyplug-s-LV":{"relay":["on"],"temperature":34.74,"temperature_f":94.53,"overtemperature":0},"shelly1pm-int-jardin":{"relay":["on"],"input":[0],"temperature":47.31,"temperature_f":117.17,"overtemperature":0,"temperature_status":"Normal"}}}

PS : je pense que c’est la réponse de 22:46:08 qui pose problème

1 « J'aime »

Je sais pas trop la. Après domadoo m’a envoyé des modules Shelly donc si j’ai ton cas je corrigerais. Par contre étant en vacances 3 semaines il faudra attendre mon retour de vacances (a moins que madame m’autorise à travailler mais j’en doute)

Bonjour,
Il faut que tu gères ton état du shelly avec comme paramètres « info » et « autre » comme cela tu auras on ou off. Ensuite dans la configuration de ton état , tu indiques {}; comme valeur interdite.
Avec cela ça marche bien chez moi…

Heu je ne sais pas si je peux attendre 3 semaines :grin:
Repose toi bien et bonne vacances
Pas de problème et merci

Merci pour l’idée mais il ne veut pas sauvegarder {} et je ne sais pas pourquoi

Ça fonctionne comme cela chez moi sans problème. Bien mettre le ; après {}

Bonjour
@DJo86 Ta solution a l’air de fonctionner
@Loic As tu reçu tes shelly et constates tu la même chose que moi ?
Cordialement

Oula j’ai tellement de boulot sur les bug et autres demandes que j’ai pu en tester sur un truc plus et c’est juste pas fini le firmware partie Mqtt ça renvoi pas du tout ce que la Doc dit. Pour le moment je peux rien en faire j’attends les mises a jour.

Mais au vu de tes logs si vraiment le module renvoi ça yaura rien a y faire je pourrais pas corriger faut que Shelly corrige de leur côté.

Ok en attendant, je valide la réponse de @DJo86 comme solution (temporaire)
Bon courage :wink:

1 « J'aime »

Aucun problème de ce type avec le plugin-jmqtt.

Oui car il doit filtrer sur les valeurs ce que je ne ferais pas dans le plugin car c’est un coup a rater de possible valeur surtout que le core peut gérer

Il me semble que les payloads sont remontés par le plugin-jmqtt tels qu’ils arrivent sur le broker.
Je pense que @Bad sera plus à même que moi pour te répondre.

Hello,

Vous avez tous les deux raison.

jMQTT ne modifie pas les payload qu’il reçoit, éventuellement il décompresse un payload compressé ou le convertit en base64 s’il me peut pas être interprété intégralement en UTF-8.

Mais si un jsonPath est appliqué et qu’il ne match pas, la commande n’est pas mise à jour, car il n’y a rien à mettre à jour.

Je pense que le problème vient de là dans mqtt2 : si le json du payload ne contient pas une clé, la cmd est mise à jour avec une valeur considéré nulle.

Bad

1 « J'aime »

Ce qui va rendre difficile l’utilisation avec les modules qui publient sur un topic unique avec un JSON différent suivant les données à transmettre. C’est le cas pour les Shelly Gen2.

Bonjour
Non pour eux ça va si il respecte clef valeur. La le soucis c’est qu’il publie son état dans un tableau qui contient un coup juste une valeur (on/off) et un coup un objet donc clef valeur dans un tableau. C’est le premier module que je vois faire ça même sur tout les module Shelly que j’ai testé.

1 « J'aime »

Ce type de payload ?

{"src":"shellyplusi4-XXXXXXXXXXXX","dst":"shellies/plusI4/cmdVR/events","method":"NotifyEvent","params":{"ts":1694253551.68,"events":[{"component":"input:0", "id":0, "event":"btn_up", "ts":1694253551.68}]}}
{"src":"shellyplusi4-XXXXXXXXXXXX","dst":"shellies/plusI4/cmdVR/events","method":"NotifyEvent","params":{"ts":1694253559.24,"events":[{"component":"input:2", "id":2, "event":"btn_up", "ts":1694253559.24}]}}
{"src":"shellyplusi4-XXXXXXXXXXXX","dst":"shellies/plusI4/cmdVR/events","method":"NotifyEvent","params":{"ts":1694254433.17,"events":[{"component":"input:0", "id":0, "event":"btn_down", "ts":1694254433.17}]}}
{"src":"shellyplusi4-XXXXXXXXXXXX","dst":"shellies/plusI4/cmdVR/events","method":"NotifyEvent","params":{"ts":1694254434.17,"events":[{"component":"input:0", "id":0, "event":"long_push", "ts":1694254434.17}]}}
{"src":"shellyplusi4-XXXXXXXXXXXX","dst":"shellies/plusI4/cmdVR/events","method":"NotifyEvent","params":{"ts":1694254438.21,"events":[{"component":"input:2", "id":2, "event":"btn_down", "ts":1694254438.21}]}}
{"src":"shellyplusi4-XXXXXXXXXXXX","dst":"shellies/plusI4/cmdVR/events","method":"NotifyEvent","params":{"ts":1694254439.21,"events":[{"component":"input:2", "id":2, "event":"long_push", "ts":1694254439.21}]}}

J’applique le chemin JSON.

$..events[?(@.id==0)].event
$..events[?(@.id==2)].event

D’ailleurs, il y aura probablement des changements d’ici quelques temps sur le champ jsonPath :wink:

Spoiler

En effet, le MQTT Discovery utilisant des templates Jinja, il sera possible d’utiliser directement ces templates dans ce champ, ou un jsonPath, au choix.

Je ne sais encore comment le matérialiser, mais la mise en place du Jinja est nécessaire.

1 « J'aime »