ZHA e Entidade template

Boas.
Tenho um sensor de temperatura Zigbee da Sonoff, e como tenho visto que ele tem uma pequena diferença de temperatura precisava fazer um ajuste. Como não achei como fazer isso no ZHA (não sei se é possível) criei uma nova entidade template usando o sonoff como source.

    - platform: template
      sensors:
       temperatura_quarto:
         friendly_name: Temperatura Quarto
         device_class: temperature
         unit_of_measurement: "°C"
         value_template: >-
           {{ (states('sensor.th01_temperature') | float + 0.5) | round(2) }}

Até ai ele funciona como pretendido, o problema aparece quando por algum motivo preciso reiniciar o HA, acredito que ZHA demora para dar o staus e o template por poucos momentos fica com staus apenas com 0.5 e logo depois volta ao norma. Apesar de rápido isso dispara automações e atrapalha no gráfico.

image

Será que existe uma forma do template esperar um valor antes de atualizar a entidade, ou pelo menos criar um delay?

Obrigado.

Pode talvez funcionar se colocares uma condição if em que se o estado for unavailable retorna também unavailable não fazendo a conta matemática

Olá @ricreis394 acho que a solução passa por ai mesmo, porem já tentei com unavailable e unknow e nada ainda.
Notei que no restar a entidade base do ZHA simplesmente some. Logo no inicio se a procurar no developer tools ela não existe, só voltando a aparecer uns segundos depois, acredito que quando o ZHA volta.

O template ficou assim. (sem sucesso)

sensor:
     - platform: template
       sensors:
        temperatura_quarto:
          friendly_name: Temperatura Quarto
          device_class: temperature
          unit_of_measurement: "°C"
          value_template: >-
            {% if states('sensor.th01_temperature') | float == 'unavailable' %}
            {{ 'unavailable'}}
            {% else %}
            {{ (states('sensor.th01_temperature') | float + 0.5) | round(2) }}
            {% endif %}

Estou a tentar descobrir se é possível um IF para “se a entidade existir”

No primeiro if estás a converter para float, não faz sentido visto que estás a comparar com uma string. Tira essa conversão e diz como correu

1 Curtiu

Realmente não faz qualquer sentido, isso deve ter ficado no “copia -> cola” para testar.

Agora esta a funcionar 100%. Obrigado @ricreis394.

1 Curtiu

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


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