Tenho algumas automações que muda o estado das lâmpadas, queria que quando a automação chegasse ao fim, as lâmpadas assumissem o ultimo estado (se desligado mantém desligado, se azul 50% volta nesse estado) alguém me pode dar uma ajuda? Estou a usar as automações nativas do HA.
O jeito mais facil seira usar cenas. Muitas pessoas usam cenas criadas pela interface para criar preset de iluminacao mas voce pode criar cenas programaticamente usando servico scene.create
. A unica desvantagem de fazer isso é que a cena continua existindo depois da automação terminar, mas ficara apenas uma cena por automacao ja que ela sera sobrescrita toda vez.
Exemplo desse metodo:
Se criar cena não for uma solução que te atrai creio que o melhor seria utilizar node red ou appdaemon pois ficaria complexo com automacao nativa.
É 1 automação específica ?
Você pode ter um sensor “lastState” calculado no início da automação pra gravar o estado atual das entidades envolvidas na automação.
Com o estado gravado no início, daí segue a automação normal.
No final da automação, você itera sobre o atributo dessa entidade “lastState” pra retornar ao status anterior.
@w35l3y acho que na prática isso funcionaria igual cena, o sensor também existiria fora do escopo da automação continuamente.
A cena na prática seria só uma abstração que facilita implementação disso.
A cena retorna ao estado anterior ?
Se sim, então show.
Esse link que passou do script python parece bem completo.
Sim o objetivo da cena é justamente esse. Você passa uma lista de entidades e ela salva o estado de todas automaticamente. Depois você pode chamar essa cena e aí todos os estados voltam automaticamente pra o valor de quando ela foi criada.
É usado geralmente via interface pra criar preset de luzes e posição de cortina. Exemplo cena, pra ver filmes, cena para o dia (tudo apagado e cortina abertas) …
Mas da pra usar pra isso.
Esse é um caso de uso parecido com o restaurar após a falta de energia. Documentei aqui:
Interessante.
Neste caso, faz total sentido criar a cena dinamicamente antes da automação executar e depois chamá-la após a automação.
Nunca usei cena por não ter entendido o propósito, mas esse caso de uso parece muito útil.
Muito bom!
Testei com o scene.create e funciona na perfeição, faz exatamente o que queria. Obrigado.