Problème création Infos dans Jmqtt avec Zigbee2mqtt

Bonjour,

J’ai un souci que je n’arrive pas à régler sur JMQTT. Je pense que c’est tout bête mais je dois rater un truc.

J’ai ajouté une 40aine de module principalement Xiaomi et Ikea, et réussi à récupérer les différentes commandes en JSON.

Par exemple sur un interrupteur Aqara sans fil.

Dans un scénario de lumière avec comme déclencheur [CLICK] # et comme SI :

Dans un 2è scénario j’ai comme déclencheur [CLICK] # == « double » et comme ACTION :

Quand je fais un single ou un double j’ai la lumière qui Toggle tout comme le garage. Je ne comprends pas.

J’ai également un souci avec un capteur de vibration, je poste ensemble car je pense que mes problèmes sont liés.

Ce capteur Aqara lui ne met pas la variable Statut à jour. Comme vous pouvez le voir
dans le screen ci-dessous. Zigbee2mqtt remonte bien l’info comme quoi il n’y a plus d’action (au bout de 30s) mais mon Statut ne change jamais.

Je l’utilise dans mon scénario d’alarme et du coup dès que l’active elle se déclenche.

Je pense que je dois avoir mal paramétré un truc et du coup pour l’interrupteur et le capteur le Statut reste incrusté.

Merci.

Pour CLICK, ta commande info est en numérique alors que c’est du texte.
Passe la en « autre ».

:sweat: merci. Des fois on a beau tout vérifier les yeux se croisent.

Donc ce n’est pas le même problème avec mon capteur de vibration.

Salut,

Pour mon capteur de vibration j’ai vu ce comportement… En fait comme le JSON ne contient pas l’information action, jMQTT ne sait pas que ça existe et donc pas possible de mettre à jour (aka effacer) l’info
Au final on s’en sort en analysant le payload complet dans un info binaire d’un virtuel par exemple
urlencode(#[Au sous-sol][SecheLingeMQTT][SecheLinge]#) matches "/.*vibration.*/i"

Chez toi le payload a ce nom

Salut, pour les capteurs de vibration tu ne peux pas les utiliser tel quel car pas du binaire pour l’alarme, il faut faire scénario / virtuel, chercher le sujet sur le plugin xiaomi.

Merci je vais essayer.

Peux-tu me mettre un screen de ton virtuel car je ne suis pas bon en virtuel. Merci.

Parfait Merci, ça marche. Bon et bien je crois que tout fonctionne parfaitement maintenant !

J’en profite, sur un double interrupteur AQARA filaire, quand j’appui sur l’interrupteur gauche :
un click simple allume une lumière via un scénario (non branchée sur l’interrupteur)
un click release fait un toggle pour allumer/éteindre l’alarme

Mais l’info du click et click_left reste dans le playload (sauf bien-sur si je fais du click droit) donc des fois quand click simple sur le left l’alarme s’allume (car toujours dans le playload).

Merci.

Je me réponds à moi-même, ce que je ne comprends pas c’est que quand je cliques sur mon bouton gauche, (simple click) dans les logs j’ai les deux infos, CLICK : LEFT et CLICKLEFT : RELEASE et donc les 2 scénarios se lancent celui avec la lumière en simple click gauche et l’alarme en release gauche.


(le reset c’est car j’ai essayé de changer l’info après chaque click pour voir)

A priori, tu repères beaucoup d’informations : le coté : click=left (ou right) et le fait de relâcher le bouton : clickleft=release (et j’imagine clickright)… Probablement que ces valeurs se suivent dans le temps:

  • à t0 click = left
  • à t1-clickleft =release

ça semble logique par exemple pour pouvoir déterminer la durée du maintien du bouton (en faisant t1-t0)… A mon avis tu confonds le payload (le message qui est émis) avec les états que construit jMQTT. Comme pour les vibrations, si l’infos n’est pas dans le payload, jMQTT ne sais pas effacer les infos… et donc tu vois toujours la dernière valeur.

Maintenant sans historique et sans le détails de tes scénarios c’est pas possible de confirmer… Regarde et fait l’analyse précisément. Une fois que tu vois ce que ça fait, adapte tes scénarios

Oui le playload est très chargé. Juste pour parler du click (sans compter linkquality et tout) :
Click qui peut donner : left ou right
Button_left : release ou hold
Button_right : release ou hold

Pour mes deux scénarios j’ai mis :
1er : Lumière
Déclencheur : Click
Si Click == Left

2eme : Alarme
Déclencheur : Bouton_left
Si Bouton_left == Release

Quand je click sur l’interrupteur, single, le playload remonte le click et le dernier statut de button_left en même temps.

Je ferais des screen demain.

Je mets de coté les noms qui sont pas forcement corrects (Bouton_left ?) mais l’idée est là je pense.

En gros, tu déclenches le scénario 1 quand tu appuis sur le bouton gauche… jusque là ça va…
Mais tu déclenches aussi le scénario 2 quand tu relâches le bouton gauche…

On est bien d’accord que tu va forcement relâcher le bouton à un moment ou un autre quand tu veux juste allumer la lumière non ?

Donc c’est purement un souci de conception …

Tu as plusieurs options à la place : simple click/ double click etc… ou bien clic droit /clic gauche

Merci pour ton aide. C’est moi qui suis parti sur RELEASE mais j’aurais du mettre HOLD. Car comme tu dis j’ai forcément un RELEASE après un CLICK

Bonjour,

Je pensais le problème réglé, mais non. En fait maintenant quand je fais un double ckick dans les logs du scénario de la lumière qui fonctionne avec un simple click :

[2020-06-09 18:26:58][SCENARIO] Start : Scenario execute automatiquement sur evenement venant de : [Garage][Interrupteur garage][CLICK].
[2020-06-09 18:26:59][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-09 18:26:59][SCENARIO] Evaluation de la condition : **[0 == "single" OU "double" == "single"] = Vrai**
[2020-06-09 18:26:59][SCENARIO] Exécution du sous-élément de type [action] : then
[2020-06-09 18:26:59][SCENARIO] Exécution d'un bloc élément : 29
[2020-06-09 18:26:59][SCENARIO] Exécution du sous-élément de type [condition] : if
[2020-06-09 18:26:59][SCENARIO] Evaluation de la condition : [0 == "OFF"  ] = Vrai
[2020-06-09 18:26:59][SCENARIO] Exécution du sous-élément de type [action] : then
[2020-06-09 18:26:59][SCENARIO] Exécution de la commande [Sous-sol][Interrupteur sous-sol][ON]
[2020-06-09 18:26:59][SCENARIO] Fin correcte du scénario

Je ne comprends pas.