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:
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']
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
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!
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 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'] }}
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.