Saltar al contenido

Condiciones if/else dentro de las plantillas

Elige el texto de una notificación con if, elif y else en Jinja2, y aprende cuándo conviene usar una acción condicional en su lugar.

  • básico
  • Publicado el

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

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

Resultado

Acción
07:30 · sensor.temperatura_exterior = 3.2
Resultado
Temperatura exterior
Hace frío: 3.2 °C. Abrígate.
Acción
07:30 · sensor.temperatura_exterior = unavailable
Resultado
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
Volver a Repositorio