Pre-requisito para correr antes da automação

Boas,

Existe alguma maneira de forçar o update de certos sensores depois do trigger da automação para que as condições (conditions:) sejam validadas com o estado actualizado?
O problema que tenho é que por vezes a automação não é accionada porque o sensor que uso nas condições não estava actualizado.

Não queria estar a por scan interval de poucos segundos nos sensores que uso na nas condições da automação porque só numa % muito reduzida do tempo (é que preciso deles actualizados, i.e. quando a automação é despoletada).
Já tentei fazer uma automação auxiliar com o mesmo trigger so para forçar o update mas não funcionou porque não consigo dizer há automação principal para correr depois da auxiliar

Até acho que o próprio HA devia forçar o update de cada state que é usado nas condições da automação… estou a dizer isto e se calhar até faz :slight_smile: e eu estou a fazer algo de errado.

Obrigado,
Diogo

Se não mostrares o código que estás a utilizar será muito difícil dar uma resposta…

Esta a tentar melhorar a automação da box vodafone apagar ou ligar a TV que já tinha publicado no outro topico, mas para que fique mesmo bullet proof

Como sabemos as box’s passam por vezes para standby e depois playing quando fazemos algumas operações nos menus ou zapping, por isso a ideia seria melhorar o scripts para cobrir todos os cenários.
No meu caso a minha TV tem ligação Net mas não tem qualquer integração oficial com o HA por isso estou só a usar o device_tracker.ping para saber se está ligada (home) ou desligada (not_home) e a ideia passava por exemplo por dizer que se a TV já está ligada então não é preciso correr a action (evitando um power Off errado… visto que o on e off é o mesmo comando).

O código em baixo em teoria resultaria mas em operações rápidas o device_tracker.tv_livingroom pode não estar actualizado e como disse acima não me parece nada eficiente mudar o scan_interval para 1seg só para que isto funcione como esperado. O que queria saber é se é possível forçar o update do device_tracker.tv_livingroom imediatamente antes da automação para que ela despolete a acção de modo mais fidedigno.

#Automacao para ligar a tv quando a box e ligada.      
- alias: Automacao box on tv on
  initial_state: true
  trigger:
    - platform: state
      entity_id: media_player.mediaroom_1921681152
      to: 'playing'
  condition: 
    - condition: template
      value_template: '{{ states.sensor.TVBox_standby_rate_last_min.state | float > 10 }}'  
    - condition: state
      entity_id: device_tracker.tv_livingroom
      state: 'not_home'      
  action:
    - service: switch.broadlink_send_packet_192_168_1_164
      data:
        packet:
        - 'JgBIAAABKJQVEBMSEzcTEhMSExETEhQREzcTNxMSEzYUNhQ2EzcTNhQRFBETEhM3ExISExMRFBEUNhM3EzcTERQ2FDYTNxM2FAANBQ=='

@dpjrodrigues porque nao ligas um wemos, na tua tv com o firmware tasmota e usas o comando LWT para saber se ela esta ou não ligada? é como eu uso e funciona muito bem.

1 Like

Obrigado @RodolfoVieira. Essa é uma area muito nova para mim ainda :slight_smile: mas lá chegarei…
Para me iniciar encomendei uns sonoffs (que já chegaram) mas os CTT fizeram o favor de perder o USB to TTL :frowning:… e depois ainda o marcaram como entregue só para ver se pegava.

De qualquer modo (e independentemente deste caso) acho que faz mais sentido que qualquer que seja a entidade usada dentro de uma automação, (i.e. depois to trigger) seja actualizada antes de ser trabalhada (seja dentro do conditions: ou action:'s).
Qual a utilidade de usar como base para fazer algo, uma entidade que pode não estar actualizada?

Obrigado,
Diogo

@dpjrodrigues confesso que estou com alguma dificuldade em entender a tua dificuldade.
Não estou a conseguir compreender onde queres chegar.
Podes ser mais específico?

Ok @RodolfoVieira. Pegando no exemplo dummy em baixo vou descrever os passos que achava que deveriam acontecer:

1. Quando sensor.trigger_exemplo muda o estado para “on” a automação é chamada
2. Antes de validar as condições que estão por baixo de condition: faz update ao estado das entidades que lá são usadas, neste caso apenas o sensor.condition_exemplo para garantir que está a usar informação actual.
3. Valida as condições em condition: i.e. se o sensor.condition_exemplo tem o estado “on”
3a. se sim corre a action:
3b. se não, não faz nada.

:exclamation:O que não me parece que está a acontecer é o passo 2… ou seja a condição pode estar a ser validada tendo com base um estado antigo e não actual.

- alias: exemplo
  initial_state: true
  trigger:
    - platform: state
      entity_id: sensor.trigger_exemplo
      to: 'on'
  condition: 
    - condition: state
      entity_id: sensor.condition_exemplo
      state: 'on'      
  action:
    .......

Em um modo geral, os estados são actualizados automaticamente de forma até rápida, claro que depende sempre de vários factores associados.
E nem sempre é obrigatório usares um condition, em alguns casos um template no trigger poderá resolver.
Olhando bem para o teu primeiro post, eu próprio tive alguma dificuldade em fazer o que tencionas, funcionava e não funciona… acabei por desistir abandonando esse “projecto”, hoje não me ralo se a box está ou não ligada ou em standby, fica sempre ligada e jogo apenas com o estado da tv do modo que te falei acima usando o lwt.

Este tópico foi automaticamente fechado 90 dias após a última resposta. Novas respostas não são permitidas.


Copyright © 2017-2020. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade