Botão giratório Zigbee Moes

Caros,

Como houve algum interesse no funcionamento do botão giratório zigbee da Moes e eu adquiri um, faço aqui um mini-review / tutorial de como usa-lo.

Não vou fazer uma descrição muito detalhada do botão porque isso pode ser encontrada nos anúncios/pagina do fabricante, mas vou direto ao que interessa: o botão aceita dois tipos de “ação”, a óbvia que é girar para um lado e para o outro, e “clicar” (pressionando ele para baixo). O “giro” dele é “infinito”, ou seja, pode girar a vontade para qualquer um dos lados e apresenta um pequeno “clique” a cada passo.

Parear ele com o zig2mqtt foi bem fácil, mas ao contrário do que diz o anuncio, o z2m só consegue reconhecer as duas ações listadas acima. No anúncio diz que ele aceita duplo clique, clique longo, girar pressionado. Talvez o z2m em algum momento implemente isso, mas no momento ainda não funciona.

Uma característica interessante do botão é que ele “não espera” vc parar de girar para enviar eventos para o z2m, então, por exemplo, se vc começar a girar o botão devagar, mas de maneira continua, ele irá reportar um evento a cada poucos décimos de segundo. Se vc girar o botão rapidamente, ele envia menos eventos, mas a cada um deles reporta o tamanho do “step_size”. Acho que fica mais simples etender olhando o log abaixo do z2m:

z2mqtt/botao_rotatorio_1 {"action":"brightness_step_up","action_step_size":13,"action_transition_time":0.01,"linkquality":174}
z2mqtt/botao_rotatorio_1 {"action":"","linkquality":174}
z2mqtt/botao_rotatorio_1 {"action":"brightness_step_up","action_step_size":49,"action_transition_time":0.02,"linkquality":174}
z2mqtt/botao_rotatorio_1 {"action":"","linkquality":174}

O primeiro giro acima foi apenas 1 passo e no debaixo foram mais ou menos uns 3 ou 4. Eu configurei ele direto no home-assistant e criei o seguinte “esqueleto” de automação:

- id: botao_rotatorio_1
  mode: queued
  max_exceeded: silent
  trigger:
    platform: state
    entity_id: sensor.botao_rotatorio_1_action
    attribute: action
    from: ''
  action:
  - variables:
       action: '{{ trigger.to_state.attributes.action }}'
    - choose:
      - conditions:
        - '{{ action == ''brightness_step_down'' }}'
        sequence:
          repeat:
            count: '{{ (trigger.to_state.attributes.action_step_size / 13) | round }}'
            sequence:
              - service: <seu servico aqui>
    - conditions:
      - '{{ action == ''brightness_step_up'' }}'
      sequence:
        repeat:
          count: '{{ (trigger.to_state.attributes.action_step_size / 13) | round }}'
          sequence:
            - service: <seu servico aqui>
    - conditions:
      - '{{ action == ''toggle'' }}'            
      sequence:
         - service: homeassistant.toggle
           entity_id: <seu switch/light aqui>

Por fim, o video abaixo mostra o funcionamento do botão. Possivelmente dá para conseguir um efeito mais “suave” colocando alguns tempos de espera (delays) na automação, etc. Eu considerei o “step_size” na automação e isso tb pode ser melhorado… ele reporta os valores de 13, 25, 37, 49, para 1, 2, 3, 4 “cliques” respectivamente, então por isso fiz aquela divisão por 13.

Video do funcionamento do botão

2 curtidas

Boa tarde.
Já adicionei ele no Z2M, tirei e adicionei de novo, e em todos os testes o action_step_size vem como null.
Faz idéia do que pode ser? Sem isso eu não consigo fazer nada com o giro.
Abs.