O comportamento padrão usual de lâmpadas smart é, ao ser energizada, acender. Isso é legal porque permite que vc acenda a lâmpada usando o interruptor burro da parede. O problema é quando a queda/retorno da energia não é intencional… Alguns já devem ter passado por aquela situação da casa inteira acender após uma queda de energia, o que pelas leis de murphy acontece tipo as 3 da madrugada :-).
Faz algum tempo que penso em resolver o problema mas finalmente resolvi gastar um tempo com isso.
Obviamente que o pré-requisito e ter alguma maneira relativamente confiável de descobrir que faltou luz e que ela retornou! Existem algumas possibilidades pra isso, mas a que eu achei mais confiável foi obter essa informação do no-break! Infelizmente o meu não é suportado pelo NUT, apesar de ter uma interface USB. Felizmente, o pessoal da NHS foi gente boa e me passou a especificação do protocolo serial dele, e disso nasceu o nhs2mqtt . Esse script cria um sensor que reflete o estado “com energia/sem energia” do nobreak.
Ok, sabendo que a energia voltou como fazer para restaurar o status anterior? bom… primeiro precisamos periodicamente salvar o status! A automação abaixo salva o status dos dispositivos listados de tempos em tempos, desde que a energia esteja ok a pelo menos 2 minutos (para evitar a automação de tentar salvar o estado durante uma queda!):
- alias: salva o estado das lampadas
trigger:
- platform: time_pattern
minutes: '/1'
seconds: 0
condition:
- condition: state
entity_id: binary_sensor.ups
state: "on"
for:
minutes: 2
action:
- service: scene.create
data:
scene_id: last_state
snapshot_entities:
- light.abajur_escritorio
- light.area
- light.area_servico
<etc...>
Quando a energia retorna a automação abaixo espera alguns segundos (para que o mesh zigbee se estabeleça) e restaura o ultimo estado antes de faltar energia:
- alias: 'Retornou a energia'
trigger:
platform: state
entity_id: binary_sensor.ups
from: 'off'
to: 'on'
action:
- delay: 40
- service: scene.turn_on
target:
entity_id: scene.last_state
É isso… espera que seja útil pra mais gente :-).