Shelly gen3 et jmqtt

Bonjour,
Je cherche à utiliser un shelly gen4 avec jmqtt.


La config est bonne puisque je recois bien les messages d’évènement. Si j"'allume ou j’éteins le module shelly (on / off par l’interface web shelly) je recoit bien un json. Par exemple

{"src":"shelly1pmmini-348518df3d7c","dst":"shellies/portegarage/events","method":"NotifyStatus","params":{"ts":1706716053.80,"switch:0":{"id":0,"apower":0,"current":0,"output":false,"source":"WS_in","timer_duration":null,"timer_started_at":null}}}

Ou si vous préférez :

{
  "src": "shelly1pmmini-348518df3d7c",
  "dst": "shellies/portegarage/events",
  "method": "NotifyStatus",
  "params": {
    "ts": 1706716053.8,
    "switch:0": {
      "id": 0,
      "apower": 0,
      "current": 0,
      "output": false,
      "source": "WS_in",
      "timer_duration": null,
      "timer_started_at": null
    }
  }
}

Où « output » représente bien si c’est allumé ou éteint.
Problème : je cherche à ajouter une commande info Output qui me donnera directement l’info allumé ou éteint (True ou False).
J’ai dons fait ce que l’on voit sur l’image précédente, mais ça ne se change jamais, enfin presque, ça l’a fait une ou deux fois. Pourtant, je vois bien le Json de la commande rpc (voir image écran) qui est bon au sens que Output se met bien en true ou False en fonction de si le module Shelly est à On ou Off.
C’est comme si jmqtt décodait mal le Json.
PS : j’ai essayé de mettre la commande output en binaire. Pareil.
J’ai essayé de cliquer sur Json et de récupérer la ligne output en lui donnant un nom (difficile car beaucoup de rpc qui changent et sans l’info output. Cette dernière n’arrive que lorsque l’on met sur On ou Off le module). Pareil
Comment faite vous ?

Fonctionne comme ça.

[params]['switch:0'][output]

Aux dernières nouvelles, ils en sont à la version Gen3.

online et output à mettre en binaire.

Oui, pardon gen3. J’ai édité le titre.
Sinon, comme dit dans mon message, j’avais testé aussi en boolean, mais pareil. Online fonctionne bien, en boolean ou pas. La logique étant de le mettre en boolean.
Et effectivement, je suis bien avec

[params]['switch:0'][output]

Enfin, j’ai des guillemets à output, mais avec ou sans, j’ai essayé, c’est pareil
Et donc je ne comprends pas pourquoi ça ne fonctionne pas.

@Jeandhom tu as le même et chez toi ça fonctionne ?

Comme ce module remonte beaucoup d’info (consommation…), il y a beaucoup de messages qui transitent. Cela ne plait peut être pas à MQTT ?

Au fait, tu sais ce qu’il faut faire comme message / topic pour actionner On et Off ?

PS : le firmware du Shelly est à jour avec la version non béta

Pour illustrer mon problème.
A gauche un morceau de l’interface web shelly (via son adresse IP)

2024020301

Comme pour la génération 2 : dans le topic shelly-ID/rpc → {
« method »:« Switch.Set »,
« params »: {
« id »:1,
« on »:true
}
}

Avec « id » le numero du relais et le true/false pour l’état

Dans le « chemin Json » de jmqtt (en haut a droite), tu devrais avoir le retour du relais directement normalement


Capture d’écran 2024-02-03 à 08.30.13

Hello,

Essaye de mettre ta commande info « output » en type autre, pour voir si elle change ou non et si le problème ne vient pas de la conversion de true en bool.

Bad

Ça fonctionne très bien avec les Gen2.

Peux-tu donner le modèle exact que tu utilises ?

Après modification de la commande en binaire il faut rebooter le module pour un retour 0/1

Salut,
Lorsque vous partagez une valeur, pensez à la mettre entre les balises </> sinon ça ne veut pas dire grand chose

{"method":"Switch.Set","params":{"id":1,"on":true}}
1 « J'aime »

Ou attendre la mise à jour de la commande info.

On

Topic : xxxxx/rpc
Valeur: {"method":"Switch.Set","params":{"id":0,"on":true}}

Off

Topic : xxxxx/rpc
Valeur: {"method":"Switch.Set","params":{"id":0,"on":false}}

Mea culpa, j’ai fais ça au réveil encore dans le lit…

Un Shelly Plus 1PM mini

Non, ça ne change rien…

Ca marche :smiley:

Du nouveau : En allant voir dans les messages, j’ai ce message :

2024-02-03 19:20:00 jMQTT jMQTTComFromDaemon::msgIn() a levé l’Exception: [MySQL] Error code : 22001 (1406). Data too long for column ‹ value › at row 1 : REPLACE INTO history SET cmd_id=:cmd_id, datetime=:datetime, value=:value

Donc, ce module Shelly enverrait des messages trop longs pour jMQTT ? (je n’ai pas tout compris de ce message)

C’est un autre sujet mais vous avez certainement historisé une info/autre

Bien vue, certaines infos étaient historisées, et en supprimant toutes les historisations pour les infos de ce module, ça marche ! merci @ Furaxworld
Je suppose que cette erreur coupait cours dans l’analyse de ce message avant d’avoir rempli les infos qui m’intéressaient.

Je n’avais pas coché volontairement ces historisations. Donc il est important de connaitre ce problème pour les utilisateurs futurs.
C’est sans doute dommage que par défaut, lorsque l’on crée une nouvelle info, par défaut dans jMQTT, la case historique est cochée.

Voir ça avec le développeur.
C’est Monsieur @Bad

Pensez un jour à clôturer

Pour continuer avec l’utilisation de ce module, j’ai vu que l’on peut sécuriser MQTT. Je parle de ceci :
image

Avez vous déjà pratiqué ? où trouver de la documentation ?

Et dans le même genre, lorsque l’on se connecte au module via son adresse ip dans un navigateur via wifi, il n’accepte pas de le faire en https. Ce n’est pas possible de sécuriser un peu la chose ?