Previsión meteorológica en Home Assistant

Previsión meteorológica en Home Assistant

En esta entrada te enseño cómo obtener la previsión meteorológica en Home Assistant, para saber qué tiempo va a hacer en los próximos días.

Integraciones meteorológicas

Si llevas algo de tiempo con Home Assistant, ya sabrás que hay muchas integraciones que te proporcionan información sobre el tiempo (AEMET, AccuWeather, OpenWeather, Meteoclimatic…). Esto tipo de integraciones son muy útiles en nuestra domótica, ya que el ambiente influye de una manera importante en nuestros sistemas de climatización, iluminación, riego, etc.

Ante esta variedad, frecuentemente nos cuestionamos cuál es mejor para nosotros. Personalmente creo que va a depender de qué datos concretos son importantes para ti (ya que no todas aportan la misma información). Pero además también depende de tu localización, ya que puede que tengas una estación meteorológica muy precisa a unos metros, o todo lo contrario. En conclusión, puesto que son gratuitas, te recomiendo que pruebes varias y hagas una selección de los datos más precisos para tí.

Previsión meteorológica

Ahora bien, dentro de esta variedad de integraciones no todas proporcionan la misma información, ni se estructura de la misma forma. Esto varía especialmente en la previsión meteorológica (es decir, en las condiciones que se preveen para los próximos días).

Por ejemplo, en el caso de la integración de AEMET, esta misma te proporciona la previsión del día siguiente. Puedes localizar estos datos fácilmente desde Herramientas para desarrolladores > Estados, buscando ‘sensor.aemet_daily_forecast’. Sin embargo, no controlas en qué momento se actualiza esta información, ni te muestra los datos de los días siguientes. Por otro lado tenemos integraciones como OpenWeather que antes nos mostraba esta información entre sus entidades, y simplemente han desaparecido con las últimas actualizaciones.

Sea como sea, hay una forma mejor de obtener la información para tener la previsión meteorológica en Home Assistant. Si consultas la documentación oficial, observarás que hay un servicio denominado ‘weather.get_forecasts’ que sirve precisamente para preguntarle a una integración meteorológica el tiempo que va a hacer.

Puedes hacer la prueba desde Herramientas para desarrolladores > Acciones, seleccionando ‘weather.get_forecasts’. A continuación pulsa en «Elige entidad», selecciona una de tus integraciones meteorológicas y marca la frecuencia con la que quieres obtener a previsión. Si pulsas en «Realizar una acción» comprobarás que como respuesta obtienes la información estructurada para los próximos días.

Creación de sensores personalizados

Si no conocías esta forma de obtener la previsión meteorológica en Home Assistant, probablemente te haya parecido todo un descubrimiento. Y seguramente ahora te estes preguntando cómo puedes utilizar esta información, ya que no parece muy operativo tener que lanzar manualmente la consulta.

En su lugar lo que vamos a hacer es crear un sensor personalizado, estructurado como si fuera una automatización, para que lance la consulta por nosotros periódicamente y la guarde en una entidad. De esta forma siempre podremos consultarla como cualquier otro sensor.

Para ello pega el siguiente código en tu fichero ‘configuration.yaml’ y haz las siguientes modificaciones:

  • Adapta el ‘trigger’ para que la información se actualice con la periodicidad que tú elijas (en el ejemplo se actualiza cada hora).
  • Reemplaza la ‘entity_id’ por la que corresponda a tu integración (por ejemplo, ‘weather.openweathermap’).
  • Indica también el tipo de previsión que quieres obtener en función del detalle de la información (hourly, daily…).
  • Por último tienes que indicar la información del sensor que se va a crear como resultado.
    • Name. Indica aquí el nombre del sensor.
    • Unique_id. Dale un nombre a la entidad del sensor.
    • State. Aquí tienes que adaptar el ‘template’ para que muestre el dato correspondiente al atributo y día que te interese. En el ejemplo, el ‘0’ representa la primera respuesta del atributo ‘temperature’, es decir, la temperatura prevista para mañana.
template:
  - trigger:
      - platform: time_pattern
        hours: /1
    action:
      - service: weather.get_forecasts
        data:
          type: hourly
        target:
          entity_id: weather.home
        response_variable: hourly
    sensor:
      - name: Temperature forecast next hour
        unique_id: temperature_forecast_next_hour
        state: "{{ hourly['weather.home'].forecast[0].temperature }}"
        unit_of_measurement: °C

Por ejemplo, con el siguiente código obtengo la probabilidad de lluvia del día siguiente, utilizando la integración de OpenWeather.

template:
  - trigger:
      - platform: time_pattern
        hours: /1
    action:
      - service: weather.get_forecasts
        data:
          type: daily
        target:
          entity_id: weather.openweathermap
        response_variable: daily
    sensor:
      - name: Probabilidad de lluvia
        unique_id: rain_probability_tomorrow
        state: "{{ daily['weather.openweathermap'].forecast[0].precipitation_probability }}"
        unit_of_measurement: "%"
🥑 Si quieres entender mejor lo que hemos hecho para obtener esta información, te recomiendo que veas estos talleres de la academia, son gratis!

¿Dudas?¿necesitas ayuda? entra aquí
Y si te ha gustado, compártelo! 🙂
Contenido exclusivo de Aguacatec
Send this to a friend