Objetivo
Enviar cada mañana un aviso con la temperatura exterior y un consejo distinto según haga frío, buena temperatura o calor.
Requisitos
- Un sensor de temperatura exterior, por ejemplo
sensor.temperatura_exterior(puede venir de una estación meteorológica o de un sensor Zigbee). - La acción de notificación de tu móvil (
notify.mobile_app_<tu_movil>).
El código
alias: "Parte de temperatura matinal"
mode: single
triggers:
- trigger: time
at: "07:30:00"
actions:
- action: notify.mobile_app_mi_movil
data:
title: "Temperatura exterior"
message: >-
{% set t = states('sensor.temperatura_exterior') | float(none) %}
{% if t is none %}
No hay lectura del sensor exterior.
{% elif t < 5 %}
Hace frío: {{ t | round(1) }} °C. Abrígate.
{% elif t < 25 %}
Temperatura agradable: {{ t | round(1) }} °C.
{% else %}
Hace calor: {{ t | round(1) }} °C. Bebe agua.
{% endif %}
Cómo funciona
states('sensor.temperatura_exterior')devuelve el estado como texto, por ejemplo"3.2". Si el sensor no responde, devuelve"unavailable".| float(none)convierte el texto en número. El valor entre paréntesis es el que se usa si la conversión falla: así podemos detectar que no hay lectura.{% if %} … {% elif %} … {% else %} … {% endif %}evalúa las condiciones en orden y se queda con la primera que se cumple. Por eso basta cont < 25en el segundo caso: si llegamos ahí, ya sabemos quetno es menor que 5.| round(1)deja un solo decimal.- Las líneas del mensaje van con la misma sangría a propósito: con
>-, YAML las une en una sola línea y Home Assistant quita los espacios sobrantes del principio y del final.
Resultado
Acción
07:30 · sensor.temperatura_exterior = 3.2Resultado
Temperatura exterior
Hace frío: 3.2 °C. Abrígate.Acción
07:30 · sensor.temperatura_exterior = unavailableResultado
Temperatura exterior
No hay lectura del sensor exterior.Atajo: iif() para dos opciones
Cuando solo hay dos posibilidades, Home Assistant ofrece iif(condición, si_verdadero, si_falso) en una línea:
La ventana del salón está {{ iif(is_state('binary_sensor.ventana_salon', 'on'), 'abierta', 'cerrada') }}.
Cuándo no usar una plantilla
La plantilla sirve para elegir qué texto se envía. Si lo que cambia es qué se hace (encender una cosa u otra), usa la acción condicional if de la propia automatización. Es más fácil de leer y se puede editar desde la interfaz:
actions:
- if:
- condition: numeric_state
entity_id: sensor.temperatura_exterior
below: 5
then:
- action: switch.turn_on
target:
entity_id: switch.calefactor_entrada
else:
- action: switch.turn_off
target:
entity_id: switch.calefactor_entrada