Notificaciones con IA en Home Assistant

Notificaciones con IA en Home Assistant

Si te has cansado de recibir siempre los mismos mensajes o quieres dotarlos de inteligencia, aprende a enviar notificaciones con IA en Home Assistant.

¿Por qué usar notificaciones con IA en Home Assistant?

Estoy seguro de que al menos una vez en tu vida, has usado ChatGPT u otras inteligencias artificiales. Para pedirle que te haga una lista, un resumen, que te traduzca un texto, que te mande sugerencias… son muchas las utilidades que puedes encontrar.

Sin embargo, apuesto a que la mayoría de nosotros lo ha utilizado a través de su página web o su aplicación. Esto implica que, manualmente, tienes que darle la instrucción o ‘prompt’ para que te genere la respuesta correspondiente. Si, en su lugar, le enviamos la instrucción con una automatización podremos, por ejemplo, crear notificaciones con IA en Home Assistant.

Esto puede servir para cosas tan útiles como:

  • Recibir mensajes dinámicos que cambian cada vez que los recibes, en lugar de leer siempre la misma frase. De esta manera puedes incluso pedirle que incluya mensajes graciosos o darle personalidad.
  • Pedirle que analice tus entidades, por ejemplo, para que te diga qué sensor está registrando una temperatura mayor o cómo ha variado. En definitiva, como cuando tú entras a mirar los datos de tu panel, pero sin tener que entrar.
  • Añadir funcionalidades a tus automatizaciones. Por ejemplo, puedes pedirle que te resuma o te traduzca la información que extraes de una página web o que te de consejos de salud y alimentación partiendo de tu personal trainer.

Requisitos previos

Para poder crear notificaciones con IA en Home Assistant previamente necesitas:

  • Haber integrado alguna IA, como OpenAI o Google AI.
  • Utilizar algún sistema de notificaciones, ya sea la propia aplicación de HA, notificaciones de audio, Telegram
  • Opcionalmente, cierto conocimiento de la creación de ‘templates’. Aunque no es necesario, mientras más conocimiento tengas, más potente será el uso que hagas.

Mensajes dinámicos

Vamos a empezar por el caso más sencillo de notificaciones con IA en Home Assistant. Simplemente vamos a crear una notificación con la propia aplicación de HA, que nos dé los buenos días con un mensaje diferente cada día. Para ello crea una automatización de la siguiente forma:

  1. En el disparador puedes elegir el ‘trigger’ que quieras. Para seguir el ejemplo planteado, voy a usar el disparador «Hora» para que el mensaje se genere a las 8h de la mañana.
  2. Para simplificar el ejemplo, no voy a incluir ninguna condición ya que no es necesario. No obstante, tú podrías personalizar la automatización como quieras.
  3. Añade una acción del tipo «Conversación: procesar». Este es el tipo de acción que tenemos que utilizar para lanzar la instrucción o ‘prompt’ a nuestra IA.
    • Texto. Indica en este campo la instrucciones que quieres que procese la IA (por ejemplo, «Dame los buenos días con un mensaje positivo y original»).
    • Agente. Activa esta casilla y a continuación selecciona en el desplegable la IA que quieres utilizar (por ejemplo, «Chat GPT»).
    • Variable de respuesta. Activa esta casilla e indica un nombre en el campo de texto (por ejemplo, «buenos_dias»). Esto servirá para almacenar la respuesta de la IA en una variable que podremos utilizar a continuación.
  4. Añade otra acción del tipo «Notificaciones» (o la que corresponda al método que quieras utilizar).
    • Mensaje. Imprime aquí el valor de la variable de respuesta de la IA, reemplazando el nombre de la variable en la primera parte. Por ejemplo, para el caso anterior el código sería el siguiente.
  1. Para probar tu notificación, pulsa sobre el icono de los 3 puntos de las esquina superior derecha y haz clic en «Ejecutar acciones». Observa que si la ejecutas varias veces, al ser dinámico, mostrará un mensaje diferente.

A continuación te dejo el código completo de la automatización que hemos realizado:

alias: Mensaje de buenos días
description: ""
triggers:
  - trigger: time
    at: "08:00:00"
conditions: []
actions:
  - action: conversation.process
    metadata: {}
    data:
      text: Dame los buenos días con un mensaje positivo y original
      agent_id: conversation.chatgpt
    response_variable: buenos_dias
  - action: notify.mobile_app_device
    metadata: {}
    data:
      message: "{{ buenos_dias.response.speech.plain.speech }}"
mode: single

Mensajes con entidades

Lógicamente, crear notificaciones con IA en Home Assistant nos permite utilizar la información de nuestra instancia domótica para enviarnos mensajes personalizados que nos aporten valor. Por ejemplo, vamos a modificar el ejemplo anterior incorporando algunas entidades tanto en el ‘prompt’ como en la respuesta para enriquecer la información.

  1. En la acción del tipo «Conversación: procesar», modifica el campo «Texto» para que tenga en cuenta alguna de tus entidades. Por ejemplo:
  1. En la acción del tipo «Notificaciones» (o la que estés utilizando) también puedes incluir variables. Por ejemplo:
  1. Ejecuta las acciones de nuevo para observar el resultado y hacer los ajustes necesarios.

El código modificado quedaría de la siguiente manera:

alias: Mensaje de buenos días
description: ""
triggers:
  - trigger: time
    at: "08:00:00"
conditions: []
actions:
  - action: conversation.process
    metadata: {}
    data:
      text: >-
        La temperatura en casa es de {{ states('sensor.home_temperatura') }}ºC. Dime si te parece adecuada o debería hacer algo al respecto (encender la calefacción, abrir las ventanas, poner el aire acondicionado...), teniendo en cuenta que la temperatura exterior es de {{ states('sensor.openweathermap_temperature') }}ºC, la época del año y cómo va a evolucionar la temperatura a lo largo del día. Sé breve y conciso en tu respuesta, simplemente aconséjame lo que debería hacer en menos de 20 palabras.
      agent_id: conversation.chatgpt
    response_variable: buenos_dias
  - action: notify.mobile_app_device
    metadata: {}
    data:
      message: >-
        ☀️ Buenos días aguacatero!!


        Hoy es {{ as_timestamp(now())|timestamp_custom ('%d/%b') }}, la temperatura exterior es de {{ states('sensor.openweathermap_temperature') }}ºC y en casa tenemos {{ states('sensor.home_temperatura') }}ºC.


        ¿Mi consejo? {{ buenos_dias.response.speech.plain.speech }}
mode: single

Funcionalidades extendidas

Por supuesto, al automatizar notificaciones con IA en Home Assistant podemos hacer mucho más que utilizar la información de nuestra instancia. En este sentido, como siempre, el límite está en tu imaginación. Por ejemplo, podemos pedirle que nos recomiende qué comer en función de la época del año y dónde vivimos.

  1. Añade otra acción del tipo «Conversación: procesar» para crear otra variable, y dale una instrucción diferente. Por ejemplo:
  1. Recuerda incluir la nueva variable que acabas de crear en el mensaje de la notificación, y prueba de nuevo.

Finalmente, el código quedaría de la siguiente forma:

alias: Mensaje de buenos días
description: ""
triggers:
  - trigger: time
    at: "08:00:00"
conditions: []
actions:
  - action: conversation.process
    metadata: {}
    data:
      text: >-
        La temperatura en casa es de {{ states('sensor.home_temperatura') }}ºC. Dime si te parece adecuada o debería hacer algo al respecto (encender la calefacción, abrir las ventanas, poner el aire acondicionado...), teniendo en cuenta que la temperatura exterior es de {{ states('sensor.openweathermap_temperature') }}ºC, la época del año y cómo va a evolucionar la temperatura a lo largo del día. Sé breve y conciso en tu respuesta, simplemente aconséjame lo que debería hacer en menos de 20 palabras.
      agent_id: conversation.chatgpt
    response_variable: buenos_dias
  - action: conversation.process
    metadata: {}
    data:
      text: >-
        Teniendo en cuenta la época del año y que vivo en Madrid (España), recomiéndame qué puedo comer hoy. Sé breve y conciso en tu respuesta, simplemente hazme una propuesta con menos de 20 palabras.
      agent_id: conversation.chatgpt
    response_variable: comida
  - action: notify.mobile_app_device
    metadata: {}
    data:
      message: >-
        ☀️ Buenos días aguacatero!!


        Hoy es {{ as_timestamp(now())|timestamp_custom ('%d/%b') }}, la temperatura exterior es de {{ states('sensor.openweathermap_temperature') }}ºC y en casa tenemos {{ states('sensor.home_temperatura') }}ºC.


        ¿Mi consejo? {{ buenos_dias.response.speech.plain.speech }}

        {{ comida.response.speech.plain.speech }}
mode: single