[Zigbee ZHA] - Bouton rotatif (Smart Knob) MOES

Bonjour à tous,

Je viens d’acheter ce petit bouton Zigbee que j’essaye d’intégrer via ZHA Zigbee. Je suis en HA 2022.9.6

Si j’ai bien réussi l’appairage et à récupérer les événèments (ZHA_EVENT)

J’ai un problème quand j’appuie sur le bouton, ça agit directement sur un autre dispositif Zigbee (une prise) qui n’a rien à voir (en mode Toggle), c’est assez gênant puisque ça éteint mon routeur.

De fait, je n’arrive pas à comprendre par quel mécanisme ce bouton Zigbee interfère directement avec une prise Zigbee alors que je n’ai rien configuré, toute aide ou explication sera la bienvenue.

Merci à tous.

Salut,

ça ressemble à un bind zigbee … Je ne sais plus qui ici, avait aussi le souci récemment : bilan reset des 2 appareils en question

Merci. le sujet a l’air complexe sans que jamais personne ne comprenne vraiment comment tout cela fonctionne.

J’ai passé un peu de temps à regarder les groupes et les bindings, mais sans avoir résolu le problème à ce jour.

Salut,
J’ai ce Knob.
Il a 2 modes de fonctionnement Un mode télécommande et un mode scene.
Je n’avais pas tout compris à ces modes, mais en tous cas si tu fais un triple clic sur le bouton ça change de mode.
Si je comprends le chinglish de la notice, le mode télécommande peut contrôler directement un device tuya sans passer par un hub… c’est peut-être ce que tu as.
A essayer peut-être…

Pas directement lié à la question mais plus simplement au titre, je me permets de partager mon expérience avec cet appareil et surtout la manière dont j’ai configuré le variateur sur HA (en espérant que cela puisse servir à d’autres utilisateurs).

Je n’ai pas eu le problème cité par l’OP, j’ai pu intégrer l’appareil avec ZHA et j’ai voulu créer une automatisation pour contrôler la luminosité d’une de mes ampoules (Hue en l’occurrence).

Le trigger de type « Device » me montrait ces événements liés à la rotation:

  • « right » device_rotated_slow
  • « left » device_rotated_slow
  • « right » device_rotated_fast ← jamais déclenché
  • « left » device_rotated_fast ← jamais déclenché
  • Device rotated « Right » ← jamais déclenché
  • Device rotated « Left » ← jamais déclenché

Aujourd’hui (07/12/2023) seuls les device_rotated_slow se déclenchent, donc j’ai décidé de passer sur un événement manuel (Manual Event)

Voila l’automatisation que j’ai créée et qui fonctionne parfaitement pour moi:

alias: Chambre - Variateur
trigger:
  - platform: event
    event_type: zha_event
    event_data:
      device_id: d0ecf2fed74hd47hb069b49ad8
condition:
  - condition: template
    value_template: "{{ trigger.event.data.command == 'step' }}"
#   ^ Pour ne capturer que les événements de rotation ^
action:
  - service: light.turn_on
#   ^ Ce service permet de régler une luminosité précise
    data:
      brightness_step_pct: >
        {{ (1 if trigger.event.data.params.step_mode == 0 else -1) *
        trigger.event.data.params.step_size }}
#       ^ Cela va augmenter ou diminuer la luminosité
#       en fonction de l'angle de rotation
      transition: 0.1
    target:
      entity_id: light.chambre
mode: single

Il faut remplacer d0ecf2fed74hd47hb069b49ad8 par l’identifiant de notre appareil.

Bien entendu, il est possible modifier le facteur d’amplification de la luminosité en multipliant trigger.event.data.params.step_size par un nombre inférieur ou supérieur à 1 selon le besoin. Mais j’ai trouvé que le nombre en question (qui semble correspondre à un angle en dégré) était déjà bien réglé pour avoir un effet sur le pourcentage de luminosité (ex: 20° → 20%)

Pour plus de détail il est possible d’écouter les événements « zha_event » depuis Developper tools > Events > Listen to events > « zha_event ». Voici un exemple d’événement lu:

event_type: zha_event
data:
# [...]
  device_id: d0ecf2fed74hd47hb069b49ad8 # <- Notre appareil
  endpoint_id: 1
  cluster_id: 8
  command: step # <- La commande de rotation
  args:
    - 0
    - 13
    - 1
  params:
    step_mode: 0 # <- 0 pour droite, 1 pour gauche
    step_size: 13 # <- Angle roté
    transition_time: 1
    options_mask: null
    options_override: null
# [...]