[RESOLVIDO] Sensores disparando ao reiniciar Zigbee2MQTT

Olá pessoal, esse é meu primeiro tópico e desculpe se irei fazer da maneira errada!

Meu problema é o seguinte:
Toda automação minha que o gatilho é via algum sensor ( porta) via Zigbee2MQTT ela dá o gatilho e dispara a automação. ao reiniciar o HA ou até mesmo se iniciar ou reiniciar o Zigbee2MQTT

Veja um exemplo de minha automação

alias: Porta do escriório foi aberta
description: “”
trigger:

  • type: opened
    platform: device
    device_id: 7a5528429c1acd3fd2ba4a39893794fb
    entity_id: binary_sensor.sensor_porta_escritorio_contact
    domain: binary_sensor
    condition:
    action:
  • service: notify.mobile_app_do_clebe
    data:
    message: Porta do escritório foi aberta
    mode: single

Existe alguma maneira de fazer uma verificação ou até mesmo proteção para evitar isso ?

Isso ocorre também em todas as automação cujo o gatilho são de botões integrado com sonoof brigde 433

Exemplo

alias: Detecção de Fumaça
description: “”
trigger:

  • platform: device
    device_id: 50cc1418f0ccd7365a29f510b529e4be
    domain: button
    entity_id: button.1000bd6189_5
    type: pressed

Eu nunca usei dispositivos como gatilho, mas já vi vários usuários recomendando a não usar.

Tenta mudar o gatilho para estado entidade xx com as 2 opções preenchidas.
De: off
Para: on

2 curtidas

Obrigado pela ajuda, no caso do sensor até posso fazer assim! Mais no caso de Switch que usam pressione não daria certo.

Você não usa dispositivo como gatilho, quando precisa o que você faz nesse caso ?

Sabe se existe alguma forma de quando iniciar o HassOS colocar um estado inicial em x entidade como null por exemplo !

Eu acredito que apesar de o sintoma ser o mesmo nos devices zigbee e rf acredito que a causa do problema seja diferente.
Toda integracao do ha define alguma comunicação para receber valores e então dispara no home asistant um evento de mudanca de estado. A integração pode ou não verificar se o valor recebido é igual ao estado atual e deixar de disparar o evento mas uma vez disparado o home assistant em si não faz essa verificação. Acredito que a integração mqtt não faz essa verificao e um evento é disparado mesmo se o valor for igual. Além disso mesmo se fizesse a verificao o zigbee2mqtt tem configuracao de availability entao quando voce reinicia o estado vai para unavailable, logo o estado apos reiniciar seria diferente e o problema se manteria mesmo com a verificação.

No caso da porta o problema provavelmente é quando voce reinicia com a porta aberta. O estado vai de unavailable para aberto ou de aberto para aberto (se availability estiver desligado) e a automação é disparada. Entao a automação precisa ser disparada apenas quando estado muda de fechado para aberto.

No caso do botao é diferente. O principal efeito do botao é disparar um evento, não alterar um estado e não faz sentido esse evento ser disparado quando reinicia. Alem disso de acordo com a documentação do ha botao deveria guardar no seu estado a data e horario do momento em que foi pressionado pela ultima vez que também nao deveria mudar quando reinicia. Pode possivelmente ser uma implementação incorreta de uma entidade button da integração que voce esta usando.
Para resolver isso é necessario fazer uma investigação de se o estado esta mudando durante uma reinicializacao, e de quais eventos sao disparados durante reinicialização e quando o botão é pressionado. Só entendendo isso daria pra desocbrir se da pra fazer um gatilho por estado ou gatilho por evento.

Um estado inical null nao resolveria o problema nem da porta nem do botao.

Pq não?
Não uso o sonoff bridge, mas tenho um interruptor de cena no z2m por ex configurado assim:

platform: state
entity_id:
  - sensor.scene_quarto_action
to: 1_single

enabled: true


Até hoje não precisei.

Nativamente não. E acho que esse é justamente seu problema, quando o HA inicia todas entidades ficam no estado indisponível, até a integração carregar, então está gerando gatilho para sua automação.

Se mesmo assim não funcionar vc pode usar um a condição template na sua automação:

    value_template: '{{ trigger.to_state.state not in ['unknown', 'unavailable','none']

Edit

Fiz um teste aqui com um botão e funciona normal como estado, só tem que fazer o teste reiniciando o HA. Se der algum problema coloque a condição que falei.

alias: teste botao
description: ""
trigger:
  - platform: state
    entity_id:
      - button.pgm_1
condition: []
action:
  - service: light.toggle
    data: {}
    target:
      entity_id: light.sanca_sala
mode: single

Obrigado a todos pela ajuda…

Veja, acabei de reiniciar o a integração Sonoof e o estado do dispositivo mudou para

Desconhecido e depois indisponivel

clique_1691589431

e olhando nos históricos

Esse Button é realmente um detector de fumaça 433 a qual dá um pulso se a fumaça é detectada e funciona muito bem essa automação.

Só que por ser um detector de fumaça, tenho toda uma rotina para avisar as alexas, acender luzes em vermelho, enviar notificação para vários celulares etc.

e bastou simplismente um reiniciar do serviço e a automação foi disparada novamente!

Mais ao contrário do Zigbee2MQTT, esse problema só ocorre quando eu reiniciou a integração Sonoof

Ai vocês me perguntam, porque ficar reiniciando essa integração ?

porque a cada novo controle que pareio no bridge 433 sonoff a entidade só é carregada se eu recarregar a integração!

Mais mesmo assim agradeço a todos e caso encontre alguma solução eu posto aqui.

Pq não?
Não uso o sonoff bridge, mas tenho um interruptor de cena no z2m por ex configurado assim:

platform: state
entity_id:
  - sensor.scene_quarto_action
to: 1_single

enabled: true


Tente reiniciar os serviços do Sonoff e verá o gatilho ocorrer!

Como o @Walber disse, use o “from” para limitar o gatilho, assim, só vai acionar quando o status anterior for o que especificou. Isso elimina o indisponível.

Não uso a integração Sonoff.

Não disse que o gatilho não ocorre, disse que tem outras maneiras de gatilho e que :

Lembrei o motivo disso.
Quem atribui o device_id ao dispositivo é o HA e de forma aleatória.
O que acontece é, vc adiciona um dispositivo novo e o HA coloca o device_id 123456.
Vc faz todas suas automações baseadas nesse device_id.
Por algum motivo vc deleta esse dispositivo e o adiciona novamente ou esse dispositivo queima e vc precisa substitui-lo.
Mesmo colocando o mesmo nome no dispositivo, o device_id será diferente e consequentemente todas suas automações não vão funcionar.

Usando um ou os dois templates como condição deve resolver o problema.

{{ trigger.from_state.state not in ['unknown', 'unavailable'] }}
{{ trigger.to_state.state not in ['unknown', 'unavailable'] }}

Desculpe minha ignorancia, mais eu não preciso colocar mais nada alem disso ?

tipo ficaria

trigger

  • platform: device
    device_id: 50cc1418f0ccd7365a29f510b529e4be
    domain: button
    entity_id: button.1000bd6189_5
    type: pressed
    enabled: true
  • platform: template
    value_template: |
    {{ trigger.from_state.state not in [‘unknown’, ‘unavailable’] }}

Testando o Recarregar com outra integração eu tive que colocar os 2 templates.

  • Sem template a lâmpada acende depois apaga.
  • Com um template ela só acende
  • com os dois templates o recarregar não da gatilho na automação.

Ficou assim

alias: Teste device trigger
description: ""
trigger:
  - platform: device
    device_id: bc51fc5e6413aa613130d47ccef4d28d
    domain: button
    entity_id: eacbd030bb81d1f32d548bd1b3e1abc0
    type: pressed
condition:
  - condition: template
    value_template: |
      {{ trigger.to_state.state not in ['unknown', 'unavailable'] }}
  - condition: template
    value_template: |
      {{ trigger.from_state.state not in ['unknown', 'unavailable'] }}
action:
  - service: light.toggle
    data: {}
    target:
      entity_id: light.sanca_sala
mode: single

Meu muito obrigado!
Essa condição funcionou não só para botões e sim também para os sensores Zigbee que disparavam rotina toda vez que o Zigbee2MQTT reiniciava.