Automatiza el aire acondicionado de casa con Home Assistant

Gracias a Home Assistant y a sus integraciones vamos a controlar el aire acondicionado de casa para que se encienda y apague automáticamente ahorrando energía y automatizando todo el proceso.

Anterior mente vimos cómo podemos controlar el aire acondicionado desde Home Assistant gracias a un pequeño Broadlink RM, un sensor de temperatura y un componente que instalamos aquí.

Ahora que ya tenemos el aire acondicionado integrado como un climatizador solo nos falta crear las automatizaciones pertinentes para que este se encienda, apague y regule automáticamente. ¡Al final el objetivo es olvidarse por completo del mando!

Rebajado
Broadlink RM
Mando inhalámbrico WiFi.
Xiaomi Mijia Sensor
Temperatura y humedad.

Antes de empezar a ver las automatizaciones -necesitaremos tres- vamos a comprender cuál es el objetivo:

  1. Necesitamos que el aire se encienda cuando la casa llegue a una determinada temperatura siempre y cuando se cumplan, además, algunas condiciones como que haya alguna persona en casa.
  2. Queremos que el aire acondicionado pase a modo ahorro de energía o silencioso cuándo la temperatura llegue a un punto en el que nos encontramos bien.
  3. Por último, el aire deberá apagarse cuándo la temperatura baje a un punto en el cual no es necesario que este siga en marcha.

Para conseguir todo esto el primer punto será definir esas tres variables.

Variables necesarias antes de empezar

Necesitaremos tres variables para definir la temperatura a la que queremos que el aire se encienda, la temperatura que consideramos confortable y la temperatura a la cual queremos que el aire se apague.

Para ello vamos a Configuration -> Helpers y creamos tres variables numéricas con la siguiente configuración:

Name: AC On
Icon: mdi:temperature-celsius
Minimum value: 0
Maximum value: 100
Display mode: Input field
Step size: 0.1
Unit of measurement: celsius
Entity ID: input_number.ac_on
Ennable: yes
Name: AC Confortable
Icon: mdi:temperature-celsius
Minimum value: 0
Maximum value: 100
Display mode: Input field
Step size: 0.1
Unit of measurement: celsius
Entity ID: input_number.ac_confortable
Ennable: yes
Name: AC Off
Icon: mdi:temperature-celsius
Minimum value: 0
Maximum value: 100
Display mode: Input field
Step size: 0.1
Unit of measurement: celsius
Entity ID: input_number.ac_off
Ennable: yes
Configuración del AC y de la calefacción.

Luego solo nos queda añadir estas variables a la pantalla principal de Home Assistant como si de cualquier otra entidad se tratara y fijar los valores que queremos para cada uno de estos estados.

Recuerda que para añadir estas entidades tienes que ir a la página principal y, tras pulsar sobre los tres puntos de la parte superior derecha, hacer clic en Configure UI. Ahí, usando la interfaz podrás añadirlas en dónde más te guste.

Creando las automatizaciones

Cómo habrás adivinado ya, necesitaremos crear tres automatizaciones para que el aire se comporte como esperamos. Vamos una a una.

Encender el aire cuándo hace calor

Esta automatización se lanzará cuando la temperatura suba por encima de la variable input_number.ac_on que hemos definido anteriormente. Para ello usaremos un trigger de tipo template con el siguiente valor:

{{ states('sensor.temperature') > states('input_number.ac_on') }}

Con esto será suficiente, ahora podemos, opcionalmente, añadir algunas condiciones cómo una franja horaria y/o una comprobación de si hay o no hay nadie en casa. Si no sabes hacer esto último no te preocupes, lo explicaré en una entrada próximamente.

Estas son las tres condiciones que uso yo:

  1. Comprueba que la casa no esté vacía
  2. Solo se podrá ejecutar desde las 9:30 de la mañana a las 23:00 de la noche. Esto lo uso para el aire acondicionado del salón y por la noche no me interesa que se encienda, ya que estoy en el dormitorio.
  3. La misma comprobación de temperatura anterior, pero ahora en una condición. Esto es para evitar que esta automatización se dispare por cualquier otra condición y acabe encendiendo el aire cuando la temperatura es buena.
  4. Por último, compruebo que el aire acondicionado está apagado. Si ya estuviera encendido no es necesario ejecutar esta automatización.
  - condition: state
    entity_id: input_select.home
    state: not_empty

  - condition: time
    after: '9:30:00'
    before: '23:00:00'

  - condition: template
    value_template: {{ states('sensor.temperature') > states('input_number.ac_on') }}

  - condition: state
    entity_id: climate.ac
    state: 'off'

Por último solo necesitamos definir que acciones va a ejecutar la automatización y en este caso es tan sencillo como:

  1. Encender el aire acondicionado
  2. Poner el ventilador de este, al máximo
  3. Ponerlo en modo frío
  4. Y por último, opcional, mandar una notificación a nuestro móvil
  - data: {}
    entity_id: climate.ac
    service: climate.turn_on

  - data:
      fan_mode: high
    entity_id: climate.ac
    service: climate.set_fan_mode

  - data:
      hvac_mode: cool
    entity_id: climate.ac
    service: climate.set_hvac_mode

  - data:
      message: Check windows to be close, please! 😘
      title: We are turning on Living Room AC
    service: notify.mobile_app

Poner el aire acondicionado en modo ahorro

Esta automatización no es imprescindible, pero ayuda a mantener una temperatura más cómoda y, al mismo tiempo, ahorrar algo de energía en casa.

En este caso usaremos un único trigger de tipo template con la variable que definimos en el primer paso.

{{ states('sensor.living_room_temperature') < states('input_number.ac_confortable') }}

En cuanto a las condiciones, en este caso, tenemos dos:

  1. La primera es para comprobar que la casa no esté vacía y se pueda ejecutar sin que haya nadie en casa.
  2. La segunda es un and de tres condiciones. Que no esté apagado, que no esté en modo quiet ya y que la temperatura este por debajo de la esperada.
- condition: state
  entity_id: input_select.home
    state: not_empty

- condition: and
  conditions:
  - condition: not
    conditions:
    - condition: state
      entity_id: climate.ac
      state: 'off'
  - condition: template
    value_template: '{{ states.climate.ac.attributes.fan_mode != 'quiet' }}'
  - condition: template
  value_template: '{{ states('sensor.temperature') < states('input_number.ac_confortable') }}'

Por último, como acciones simplemente tenemos que cambiar la velocidad del ventilador del AC y darle de nuevo a encender, para que mande la señal.

- data:
    fan_mode: quiet
  entity_id: climate.ac
  service: climate.set_fan_mode

- data: {}
  entity_id: climate.living_room_ac
  service: climate.ac

Apaga el aire cuando ya no sea necesario

Por último tendremos que crear una automatización que apague el aire acondicionado cuando la temperatura de la casa llega a un determinado punto en el que consideramos que ya no es necesario. En este caso tenemos dos triggers:

  1. El primero es el que comprueba la temperatura de la habitación.
  2. El segundo es para apagarlo siempre a las 23:00. Este es el aire acondicionado que tengo en el salón y no quiero que esté funcionando por la noche, ya que estoy en el dormitorio.
- platform: template
  value_template: '{{ states('input_number.ac_off') > states('sensor.temperature') }}'
  
- at: '23:00:00'
  platform: time

La única condición para que esta automatización se ejecute es que el aire este encendido, en caso contrario no tiene ningún sentido.

- condition: not
  conditions:
  - condition: state
    entity_id: climate.ac
    state: 'off'

En cuanto las acciones, en este caso hay un poco más de mágia.

  1. Primero apagamos el aire.
  2. Luego esperamos 900 segundos (15 minutos)
  3. Comprobamos la temperatura de la habitación y, en caso de que esta haya subido de nuevo y esté por encima de la deseada. Volvemos a encender el aire. En caso contrario, no se ejecuta esta última acción y el aire queda apagado.
- data: {}
  entity_id: climate.ac
  service: climate.turn_off

- delay: '900'

- condition: template
  value_template: '{{ states('input_number.ac_confortable') > states('sensor.temperature') }}'

- data: {}
  entity_id: climate.ac
  service: climate.turn_on

La guinda del pastel

Como puedes ver en estas automatizaciones una parte importante es controlar si hay o no alguien en casa. Es importante ya que así podemos controlar que el aire no se encienda cuando no hay nadie y que se apague al irnos, también.

Esto no lo he añadido en este artículo, ya que se merece un artículo a parte que vendrá próximamente.

Otra cosa que tengo hecha en casa es que, controlando si las ventanas están abiertas o no, el aire acondicionado solo se enciende cuando estas están cerradas. En caso de que estén abiertas me llega una notificación al móvil avisándome de que las cierre. Esto último solo te lo comento a modo de ideas para que las puedas implementar tu mismo.

Descarga las automatizaciones

Si quieres puedes descargar las tres automatizaciones ya creadas en .yml. Ten en cuenta que tendrás que cambiar el nombre de las entidades y variables (si no has usado las mismas) para que coincidan con las de tu sistema.


🆘 ¿Necesitas ayuda?

Únete a nuestro canal de ayuda en Telegram. Ahí, entre todos, nos ayudamos y enseñamos como mejorar más aún nuestra casa.