Precios del carburante en Home Assistant

Cada vez son más los servicios que podemos integrar. Hoy vamos a ver cómo integrar los precios del carburante en Home Assistant.

En este caso, no vamos a utilizar ni HACS ni ninguna integración ya que lo tendremos que hacer todo con código yaml. Así pues, lo primero que vamos a hacer es crear el archivo rest.yaml así como su inclusión en el archivo configuration.yaml.

Ahora vamos a abrir la página https://codebeautify.org/jsonviewer la cual nos ayudará a interpretar mejor los códigos json que vamos a tener que consultar a continuación.

La primera de estas páginas que tendremos que consultar nos dará a conocer el ID de nuestra provincia. Generalmente este id va a coincidir con las dos primeras cifras de nuestro código postal, pero no está de más de comprobarlo. Así pues, la dirección que necesitas para comprobar el ID de tu provincia es https://sedeaplicaciones.minetur.gob.es/ServiciosRESTCarburantes/PreciosCarburantes/Listados/Provincias/

Ahora que ya conocemos el ID de nuestra província, necesitamos conocer el ID de nuestra población. Aquí si que no coincide con nada del código postal así que tocará buscarlo. Para ello, vamos a utilizar la siguiente dirección https://sedeaplicaciones.minetur.gob.es/ServiciosRESTCarburantes/PreciosCarburantes/Listados/MunicipiosPorProvincia/IDPROVINCIA

Y ahora que ya conocemos el ID de nuestro municipio, solo nos hace falta hacer una llamada a esta página https://sedeaplicaciones.minetur.gob.es/ServiciosRESTCarburantes/PreciosCarburantes/EstacionesTerrestres/FiltroMunicipio/IDMUNICIPIO

Para conocer los datos de todas las estaciones de servicio que hay al municipio. De aquí y para poder hacer la integración a nuestro Home Assistant, vamos a necesitar el IDEESS.

Ahora sí que ya lo tenemos todo, así que ya podemos ir a nuestro Home Assistant a crear los sensores que nos daran el precio del carburante a las estaciones de servicio que más nos interesen.

Crear sensores de los precios del carburante en Home Assistant.

Para crear el sensor de una estación de servicio, vamos a utilizar el siguiente código

  - scan_interval: 1800
    resource: https://sedeaplicaciones.minetur.gob.es/ServiciosRESTCarburantes/PreciosCarburantes/EstacionesTerrestres/FiltroMunicipio/IDMUNICIPIO
    sensor:
      - name: "ESCLATOIL Gasolina 95"
        value_template: >-
          {% set station = value_json['ListaEESSPrecio'] | selectattr('IDEESS', 'match', 'IDEESS') | first %}
          {{ station['Precio Gasolina 95 E5'] | replace(",",".") }}
        unit_of_measurement: "€/L"

En él vamos a cambiar el IDMUNICIPIO por el id de nuestro municipio y el IDEESS de la estación de servicio que queremos consultar. Debemos tener en cuenta que de IDEESS sólo tenemos que modificar el que he puesto en negrita. Aquí vemos que estoy consultando el Precio Gasolina 95 E5. Si de la misma estación queremos conocer el precio de otro carburante, simplemente duplicaremos el sensor.

  - scan_interval: 1800
    resource: https://sedeaplicaciones.minetur.gob.es/ServiciosRESTCarburantes/PreciosCarburantes/EstacionesTerrestres/FiltroMunicipio/IDMUNICIPIO
    sensor:
      - name: "ESCLATOIL Gasolina 95"
        value_template: >-
          {% set station = value_json['ListaEESSPrecio'] | selectattr('IDEESS', 'match', 'IDEESS') | first %}
          {{ station['Precio Gasolina 95 E5'] | replace(",",".") }}
        unit_of_measurement: "€/L"
      - name: "ESCLATOIL Gasóleo A"
        value_template: >-
          {% set station = value_json['ListaEESSPrecio'] | selectattr('IDEESS', 'match', 'IDEESS') | first %}
          {{ station['Precio Gasoleo A'] | replace(",",".") }}
        unit_of_measurement: "€/L"

de igual modo, si queremos conocer el precio de los carburantes de otra estación de servicio que está en el mismo municipio, crearemos más sensores cambiando sólo el IDEESS en negrita y el tipo de carburante que nos interesa.

Por cierto, la lista de carburantes que hay disponible es la siguiente:

  • Precio Biodiesel
  • Precio Bioetanol
  • Precio Gas Natural Comprimido
  • Precio Gas Natural Licuado
  • Precio Gases licuados del petróleo
  • Precio Gasoleo A
  • Precio Gasoleo B
  • Precio Gasoleo Premium
  • Precio Gasolina 95 E10
  • Precio Gasolina 95 E5
  • Precio Gasolina 95 E5 Premium
  • Precio Gasolina 98 E10
  • Precio Gasolina 98 E5
  • Precio Hidrogeno

Lógicamente cada estación sólo mostrará los precios de los carburantes que tenga disponibles.

Ahora ya sabemos cómo crear sensores para varias estaciones del mismo municipio. Vamos a ver cómo crear sensores para estaciones de servicio de municipios diferentes.

  - scan_interval: 1800
    resource: https://sedeaplicaciones.minetur.gob.es/ServiciosRESTCarburantes/PreciosCarburantes/EstacionesTerrestres/FiltroMunicipio/IDMUNICIPIO
    sensor:
      - name: "ESCLATOIL Gasolina 95"
        value_template: >-
          {% set station = value_json['ListaEESSPrecio'] | selectattr('IDEESS', 'match', 'IDEESS') | first %}
          {{ station['Precio Gasolina 95 E5'] | replace(",",".") }}
        unit_of_measurement: "€/L"
      - name: "ESCLATOIL Gasóleo A"



  - scan_interval: 1800
    resource: https://sedeaplicaciones.minetur.gob.es/ServiciosRESTCarburantes/PreciosCarburantes/EstacionesTerrestres/FiltroMunicipio/IDMUNICIPIO
    sensor:
      - name: "CEPSA Verges"
        value_template: >-
          {% set station = value_json['ListaEESSPrecio'] | selectattr('IDEESS', 'match', 'IDEESS') | first %}
          {{ station['Precio Gasolina 95 E5'] | replace(",",".") }}
        unit_of_measurement: "€/L"

El scan interva está fijado en 1800 segundos que es media hora. Debemos tener en cuenta que, en la página del ministerio, los datos se actualizan cada 30 minutos, de ahí este tiempo.

Una vez creados todos los sensores que nos interesan, lógicamente toca reiniciar nuestro Home Assistant.

Y si te ha quedado alguna duda, puedes consultar el siguiente vídeo dónde está todo explicado detalladamente.

Sígueme a Youtube

Sígueme en Youtube - Actualizar MQTT en Home Assistant
(Visited 1.314 times, 3 visits today)
EnglishDeutschEspañol