Sensación térmica en Home Asssistant.
Photo by Johann Trasch on Unsplash

Sensación térmica de AEMET en Home Asssistant.

Hoy vamos a mejorar la integración de una estación de la Agencia Estatal de Meteorología, calculando la Sensación térmica en Home Assistant para condiciones extremas de frío y calor, como siempre… con Paciencia.

Una de las integraciones más útiles que podemos usar en nuestro sistema Home Assistant son los datos de alguna estación meteorológica cercana, con la garantía de estar mantenida y calibrada por la Agencia Estatal de Meteorología.

Una vez tengamos los datos en nuestro sistema, crearemos templates para realizar los cálculos y ver su riesgo asociado, tanto en situaciones de mucho frío como de mucho calor.

Para ver condiciones en el interior de la vivienda os recomiendo la siguiente oferta , y el post relacionado:

Vamos paso a paso:

Paso 1. Obtención de API Key para datos abiertos

Lo primero es obtener una clave API para poder acceder a los datos en abierto. Desde openData de AEMET solicitaremos dicha clave:

AEMET OpenData API

Nos pedirán nuestro email para el siguiente paso:

AEMET OpenData

Finalmente nos habrá llegado un email con un enlace para confirmar. Tendremos que esperar muy poco hasta recibir, de nuevo por email, la clave API de acceso.

Guardad esta clave, pues nos hará falta para este u otros proyectos. La agencia estatal pone a dispoción del público información muy valiosa si se sabe usar, y van ampliando el catálogo.

Paso 2. Elección de la estación

Desde la página de observación, seleccionamos «hoy y últimos días», y podréis buscar vuestra población desde un mapa o directamente en una tabla:

Identificación estación AEMET

En el encabezado de los datos obtenidos tendremos nuestra identificación de estación. La anotamos:

Identificación estación AEMET Home Assistant

Paso 3. Integración AEMET

Con la API key y el código de nuestra estación, el siguiente paso es la instalación en nuestro propio sistema HA.

La manera más fácil de integrar la podemos encontrar en HACS. Si no tenéis instalado HACS os lo recomiendo, y podéis verlo en un apartado dentro de este otro post

Una vez tengamos HACS, buscaremos el addon en el repositorio:

Temperatura AEMET Home Assistant

Nos queda incluir las siguientes líneas en el fichero configuration.yaml, y mejor si se pone la api_key en secrets (yo lo dejo para que se vea la posición donde va). Recordad reemplazar los datos de API key y la id de estación con los vuestros:

- platform: aemet
    name: "AEMET"
    api_key: "xxxbGciOiJIUzIxxxxxyJzdWvbmlvLxxxxxxGxhLnNpbHZhQGdtYWlsL..."
    station_id: "5911A"
    monitored_conditions:
      - temperature
      - humidity
      - pressure
      - precipitation
      - snow
      - visibility
      - wind_speed
      - wind_max_speed
      - wind_bearing

Paso 4. Cálculo de expresiones en Home Assistant

Para ampliar la información que nos facilitan desde la Agencia, haremos el cálculo en HA, haciendo uso de dos índices establecidos por la propia Agencia, llamados Wind Chill para el caso de frío, y Heat Index en el caso de calor. Esto nos dará información muy util sobr estos conceptos.

Lo primero es aclarar un error muy común: El resultado de estos cálculos NO es una temperatura y NO tiene unidades de ºC. Es un número adimensional para luego evaluar en varios tramos de peligrosidad cada caso.

Las expresiones que implementaremos para el cálculo de la sensación térmica usarán la temperatura como una de las variables, además de la velocidad del viento:

Para el caso de sensación de frío:

Sensación térmica por frío. Home Assistant

Y para la sensación de calor:

Sensación Térmica por calor. Home Assistant
  • T = temperatura del aire ambiente en grados Celsius
  • V = velocidad del viento en km/h a la altura estándar de medida (10 m), que tendremos que multiplicar por 1.5 para adaptar a la altura de la cara.
  • HR = humedad relativa del aire en %

Los posibles valores podemos verlos representados en las siguientes tablas:

Cálculo de sensación térmica en Home Assistant.

Cálculo de sensación térmica en Home Assistant.

Como véis las variables que necesitamos las tenemos ya disponibles en la integración de (temperatura, humedad relativa y velocidad de viento):

También, para hacer las cosas bien, tendremos en cuenta los rangos de aplicación de estas dos fórmulas:

  • Para el caso de frío el cálculo será válido para -50ºC < T < 10ºC
  • Para el caso de calor el cálculo será váliso para T > 26ºC y HR > 40%

Pues bien, con todos estos datos, ya podemos empezar. Primero averiguando los nombres de nuestras variables en nuestro sistema:

  • T = sensor.aemet_temperature
  • V = sensor.aemet_wind_speed
  • HR = sensor.aemet_humidity

Y haciendo uso de la magia de Jinja, los template de los nuevos sensores nos quedarán de la siguiente forma en nuestro fichero configuration.yaml:

  - platform: template
    sensors:

      aemet_stf:
        friendly_name: "Sensac térmica por frío"
        unit_of_measurement: ''
        value_template: "
		{% set T=states('sensor.aemet.temperature')|float %}
		{% set V=states('sensor.aemet_wind_speed')|float %}
		{%- if T>-50 and T<10 -%}
		  {{ (( 13.1267 + 0.6215*T)-11.37*(V*1.5)**0.16 + 0.3965*T*(V*1.5)**0.16 ) | round(0)}}
		{%- else -%}
		  No evaluado
		{%- endif -%}"


      aemet_stc:
        friendly_name: "Sensac térmica por calor"
        unit_of_measurement: ''
        value_template: "
		{% set T=states('sensor.aemet_temperature')|float %}
		{% set HR=states('sensor.aemet_humidity')|float %}
		{%- if T>26 and HR>40 -%}
		  {{ (-8.78469476 + 1.61139411*T + 2.338548839*HR - 0.14611605*T*HR - 0.012308094*T**2 - 0.016424828*HR**2 + 0.002211732*T**2*HR + 0.00072546*T*HR**2 - 0.000003582*T**2*HR**2) | round(0)}}
		{%- else -%}
		  No evaluado
		{%- endif -%}"

Estos índices numéricos de sensación térmica de por sí no nos dicen mucho. Deberemos evaluarlos usando las siguiente tablas facilitadas por la Agencia:

Para el caso de frío:

Evaluación riesgo frío. Home Assistant

Y para el caso de calor:

Evaluación riesgo calor. Home Assistant

Por tanto, tendremos estos otros dos sensores a incluir en la misma sección que los dos anteriores en nuestro fichero configuration.yaml para luego mostrarlos en nuestro dashboard:

      aemet_stf_riesgo:
        friendly_name: "Riesgo térmico por frío"
        unit_of_measurement: ''
        value_template: "
		{% set stf=states('sensor.aemet_stf') %}
        {%- if stf!='No evaluado' -%}
          {% set stf=states('sensor.aemet_stf')|int %}
		  {%- if stf>-10 -%}
            Sin riesgo
          {%- elif stf<=-10 and stf>=-27 -%}
		    Riesgo bajo
          {%- elif stf<=-28 and stf>=-39 -%}
            Riesgo moderado
          {%- elif stf<=-40 and stf>=-54 -%}
            Riesgo alto
          {%- elif stf<=-55 -%}
            Riesgo muy alto
          {%- endif -%}
		{%- else -%}
          No evaluado
        {%- endif -%}"
        

      aemet_stc_riesgo:
        friendly_name: "Riesgo térmico por calor"
        unit_of_measurement: ''
        value_template: "
        {% set stc=states('sensor.aemet_stc') %}
        {%- if stc!='No evaluado' -%}
          {% set stc=states('sensor.aemet_stc')|int %}
	      {%- if stc<27 -%}
            Sin riesgo
          {%- elif stc>=27 and stc<=32 -%}
	        Precaución
          {%- elif stc>=33 and stc<=40 -%}
            Precaución extrema
          {%- elif stc>=41 and stc<=53 -%}
            Peligro
          {%- elif stc>=54 -%}
            Peligro extremo
          {%- endif -%}
	    {%- else -%}
          No evaluado
        {%- endif -%}"

En nuestro dashboard la representación de la sensación térmica nos quedaría de la siguiente manera:

Cálculo de sensación térmica en Home Assistant.

En mi opinión las estaciones de la Agencia Estatal de Meteorología son la solición ideal para estos temas tratados, pero para aquellos enamorados de le meteorología, lo ideal es montar tu estación a medida por ejemplo con el equipo de Netatmo:

Aparte de mostrarlos, podréis usarlo para otros casos en automatizaciones basados en la sensación térmica, avisos por telegram, etc. Podéis dejar vuestras ideas en los comentarios.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *