Script para sacar informacion de las tarifas PVPC de ESIOS. VERSION JUNIO 2021
Hoy he estado haciendo un experimento cientifico. Como sabeis el que tenga la electricidad con una comercializadora de referencia puede tener la tarifa PVPC (que es el rollo ese que te cobran la luz a un precio distinto cada hora) Los datos del precio los publica red electrica a traves de si web (ESIOS) y se puede consultar via API (pidiendo previamente un token que te dan, a mi me lo han dado)
La doc de la API y el enlace para el token esta aqui: https://api.esios.ree.es/
Bueno pues despues de buscar en la maraña esa he conseguido lo que queria, sacar el precio para el dia siguiente (lo publican a las 8 de la tarde aprox) con un script de python que me he currado y que lo escupe en JSON para poder llevarlo a HomeAssistant
Da el precio actual, el maximo minimo y media del dia, y un true o false para saber si el precio actual esta por debajo de la media. Con unos sensores y un binary_sensor en HA se puede tener el dato.
Y con el binary_sensor controlar por ejemplo los calentadores de agua o radiadores para que se enciendan cuando el precio esta por debajo de la media
Solo hay que ponerle el token que os den donde pone MITOKEN Y LA GEOLICALIZACION DE LA TARIFA QUE QUEREMOS EN LA VARIABLE migeoid (Peninsula, Canarias, ...)
El indicador que saco a fecha Junio 2021 es este: https://www.esios.ree.es/es/pvpc (Término de facturación de energía activa del PVPC)
Los sensores en HomeAssistant he hecho asi. Uno que es command_line que ejecuta el script y saca el valor actual y el resto en un atributo (lo hago asi para solo llamar una vez a la api)
- platform: command_line
name: PVPC
command: "python3 /DIEGO/PVPC/pvpc.py"
unit_of_measurement: "€"
value_template: '{{ value_json.Actual }}'
scan_interval: 900
command_timeout: 30
json_attributes:
- Maximo
- Minimo
- Media
- BajoMedia
Y luego si quieres tener los datos en otros sensores pues templates
- platform: template
sensors:
pvpc_max:
value_template: '{{ states.sensor.pvpc.attributes.Maximo }}'
unit_of_measurement: "€"
pvpc_min:
value_template: '{{ states.sensor.pvpc.attributes.Minimo }}'
unit_of_measurement: "€"
pvpc_med:
value_template: '{{ states.sensor.pvpc.attributes.Media }}'
unit_of_measurement: "€"
O el binary_sensor
- platform: template
sensors:
pvpc_bajomedia:
value_template: '{{ states.sensor.pvpc.attributes.BajoMedia }}'