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

Sensación térmica en Home Asssistant

Hoy vamos a mejorar la integración de una estación meteo de AEMET, calculando la sensación térmica en Home Assistant para condiciones extremas de frío y calo, 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 (AEMET).

Una vez tengamos los datos en nuestro sistema, crearemos templates para calcular la sensación térmica en Home Assistant y ver su riesgo asociado, tanto en situaciones de mucho frío como de mucho calor.

Vamos paso a paso:

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

Lo primero es obtener una clave API para poder acceder a los datos en abierto. Desde esta página , solicitaremos dicha clave:

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

Nos pedirán nuestro email para el siguiente paso:

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

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 AEMET 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 de la AEMET, seleccionamos «hoy y últimos días», y podréis buscar vuestra población desde un mapa o directamente en una tabla:

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

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

Cálculo de sensación térmica en 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 Home Assistant.

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 AEMET en el repositorio:

Cálculo de sensación térmica en 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 e 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 sensación térmica en Home Assistant

Para ampliar la información que nos facilitan desde la AEMET, haremos el cálculo de la sensación térmica en Home Assistant, 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 de sensación térmica en Home Assistant

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 usaremos son las siguientes:

Para el caso de sensación térmica por frío:

Y la sensación térmica por calor:

  • 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 AEMET:

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

  • Para el caso de la sensación térmica por frío el cálculo será válido para -50ºC < T < 10ºC
  • Para el caso de sensación térmica por 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 el entorno de Home Assistant:

  • 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: "Sensación térmica apor 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: "Sensación térmica apor 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 por sí no nos dicen mucho. Deberemos evaluarlos usando las siguiente tablas facilitadas por la AEMET:

Para el caso de frío:

Y para el caso de calor:

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 nos quedaría de la siguiente manera:

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

En mi opinión las estaciones de AEMET 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, 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 *