Integrar PVPC en Home Assistant

En esta entrada vamos a integrar PVPC en Home Assistant, para ahorrar dinero en la factura de la luz utilizando las tarifas horarias más baratas.

Esto puede ser muy útil, por ejemplo, si has integrado electrodomésticos como tu lavadora, lavavajillas o secadora en HA.

¿Qué es la tarifa PVPC?

La tarifa regulada PVPC (o Precio Voluntario para el Pequeño Consumidor) es un sistema para determinar el precio de la luz implantado por el Gobierno español para todos los clientes del mercado eléctrico regulado. Su mayor particularidad es la manera en la que se calcula el precio de producción de la electricidad.

Es una tarifa de discriminación horaria y precio variable. Es decir, el precio del kWh de electricidad cambia para cada hora de cada día. Por lo tanto, su precio está sometido a la volatibilidad del mercado eléctrico, según la oferta y la demanda entre las compañías generadoras de energía y las comercializadoras que venden esa energía al consumidor.

Antes, la tarifa PVPC tenía dos modalidades para la energía consumida: tarifa con precio fijo o con discriminación horaria entre 2 y 3 tramos. En 2021, se unifico a un solo peaje con 3 tramos horarios distintos, el llamado peaje 2.0TD, que se caracteriza por: horas valle (las más baratas), horas punta y horas llano.

Fuente: Endesa

Integración en Home Assistant

Integrar PVPC en Home Assistant es sencillo, ya que disponemos de una integración oficial. Sólo tienes que seguir estos pasos:

  1. Ve a Ajustes > Dispositivos y servicios > Añadir integración y busca “Spain electricity hourly pricing (PVPC)”.
  2. Al pulsar sobre la integración te aparecerá una ventana emergente en la que tendrás que indicar tu tarifa y potencia contratada. Después pulsa en “Enviar”.
  3. De esta forma tan fácil acabas de integrar PVPC en Home Assistant. Si seleccionas la integración correspondiente verás que se ha creado una entidad cuyo valor es el precio del €/kWh.

Además, si vas a Herramientas para desarrolladores > Estados y buscas la entidad, comprobarás que tiene entre sus atributos mucha información útil. A continuación vamos a ver algunos ejemplos para explotar esta información.

Hora con precio valle

Entre los atributos de la entidad creada al integrar PVPC en Home Assistant se encuentran los siguientes:

  • min_price y min_price_at. Estos dos atributos te van a mostrar el precio mínimo en el día y a qué hora se registra, respectivamente.
  • hours_to_better_price. Indica cuántas horas quedan para que llegue el tramo horario más barato del día.
  • next_better_price y next_best_at. Estos atributos indican cuál es el próximo precio mínimo en el día y a qué hora se registra, respectivamente.
  • num_better_prices_ahead. Indica cuántos tramos horarios con un precio inferior hay, antes de que acabe el día
  • price_position. Indica el “ranking” del precio actual, respecto al resto de tramos horarios del día.

Recibe una notificación al comenzar el día

Ya hemos visto que tan pronto como la entidad dispone de toda la información podemos planificarnos para utilizar nuestros electrodomésticos que más consumen en las horas con precio valle. Parece por tanto que es una buena idea programar una notificación al principio del día con esta información.

Esto puedes hacerlo creando una automatización que se dispare cada día a la hora que tu prefieras, y ejecute la siguiente acción:

service: notify.mobile_app_DISPOSITIVO
data:
  title: ¿Ahorramos unos euros en la factura?🫰
  message: >
    La mejor hora de hoy para utilizar los electrodomésticos es a las {{ state_attr('sensor.esios_pvpc', 'min_price_at') }}h, con un precio de {{ state_attr('sensor.esios_pvpc', 'min_price') }}€/kWh.

Esta automatización te generará una notificación como esta:

¿Ahorramos unos euros en la factura?🫰
La mejor hora de hoy para utilizar los electrodomésticos es a las 15h, con un precio de 0.09253€/kWh.

Automatiza el funcionamiento a la mejor hora

Recibir una notificación para planificarte está bien, pero automatizar la lavadora (o cualquier otro electrodoméstico) para que empiece a funcionar a la hora más barata está mucho mejor 😅

Para ello haz lo siguiente:

  1. Ve a Ajustes > Dispositivos y servicios > Ayudantes > Crear ayudante y selecciona el tipo “Alternar”. Dale el nombre de tu electrodoméstico (por ejemplo, “Lavadora”). Esto creará la entidad ‘input_boolean.lavadora’. Luego crea una tarjeta de tipo botón (por ejemplo) que te permita encenderla o apagarla.
  2. Crea una automatización de la siguiente forma:
  • Desencadenante. Selecciona un disparador de tipo “Plantilla” y en el campo que aparece introduce el siguiente código. Esto hará que la automatización se dispare cuando sea la hora con el tramo más barato.
{% set current_hour = now().hour %}
{% set best_hour = state_attr('sensor.esios_pvpc', 'min_price_at') %}
{% if current_hour == best_hour %}true
{% else %}false
{% endif %}
  • Condición. Añade una condición y selecciona el tipo “Estado”. Ahora selecciona el ayudante creado en el primer paso (por ejemplo, ‘input_boolean.lavadora’) y en el campo estado indica “on”. Esto hará que la automatización se dispare sólo si has encendido el interruptor correspondiente.
  • Acción. Activa un Switchbot Bot previamente integrado en Home Assistant, y colocado sobre el botón de encendido del electrodoméstico.
Switchbot bot
*Algún precio puede haber cambiado desde la última revisión

Lo único que tienes que hacer es dejar el electrodoméstico preparado para empezar (por ejemplo, con la ropa y el detergente dentro, la puerta cerrada y el lavado programado) y activar el botón creado en el paso 1. De esta forma puedes despreocuparte sabiendo que va a empezar a funcionar en el momento más barato del día.

Pide consejo a Home Assistant

Claro, el problema es que no siempre podemos o queremos automatizarlo de esta forma. Por ejemplo, porque no vamos a estar en casa para tender la ropa. También puede suceder que nos hubieramos planificado para poner la lavadora a una hora y al final se nos ha pasado.

En esta situación podemos pedir a Home Assistant que nos ayude a tomar una decisión. Para ello crea un script, pega el siguiente código y ejecútalo cuando quieras recibir consejo.

alias: Consejo energético
sequence:
  - service: notify.mobile_app_DISPOSITIVO
    data:
      title: Si quieres mi consejo... 🫰
      message: >
        La mejor hora de hoy para utilizar los electrodomésticos es a las {{
        state_attr('sensor.esios_pvpc', 'min_price_at') }}h, con un precio de {{
        state_attr('sensor.esios_pvpc', 'min_price') }}€/kWh.


        Por tanto, {%- set current_hour = now().hour -%} {%- set best_hour =
        state_attr('sensor.esios_pvpc', 'min_price_at') -%} {% if current_hour
        == best_hour %} es el momento perfecto, aprovecha! 😀 {% elif
        current_hour > best_hour %} ha pasado la oportunidad 😣. Ahora mismo el
        precio es de {{ states('sensor.esios_pvpc') }}€/kWh, ocupando la
        posición {{ state_attr('sensor.esios_pvpc', 'price_position') }}/24 en
        el raking de tramos del día. En todo caso, en lo que queda de día, la
        mejor hora es a las {{ state_attr('sensor.esios_pvpc',
        'next_best_at')[0] }}h {% else %} aun estás a tiempo 😅 {% endif %}
mode: single

Cuando lo hagas recibirás una notificación como esta:

Si quieres mi consejo...🫰
La mejor hora de hoy para utilizar los electrodomésticos es a las 15h, con un precio de 0.09253€/kWh.

Por tanto, ha pasado la oportunidad 😣. Ahora mismo el precio es de 0.09682€/kWh, ocupando la posición 9/24 en el raking de tramos del día. En todo caso, en lo que queda de día, la mejor hora es a las 16h

Tarjeta gráfica

Si por lo contrario lo que estás buscando es una tarjeta que muestre de forma gráfica la información de cada día, te recomiendo esta tarjeta desarrollada por Daniel Martín. Puedes instalarla desde HACS > Interfaz > Explorar y descargar repositorios, buscando “PVPC Hourly Pricing Card” y pulsando en “Descargar”. Después sólo tienes que añadir una nueva tarjeta de este tipo a tu panel de control.

tarjeta pvpc

Gráfica comparativa (Mini graph card)

Con toda esta información, a Abel (nuestro querido primer Patreon) se le ocurrió la idea de combinar la gráfica PVPC con otras gráfica con valores prefijados por el usuario. De esta forma puedes establecer una comparativa que te ayude a decidir que tarifa te conviene más.

Tarjeta comparativa

Cada línea de la gráfica representa una tarifa distina, mientras que el sombreado corresponde a los picos de consumo. Así puedes decidir fácilmente que tarifa es más beneficiosa según tus hábitos.

Para llevarla a cabo, sigue estos pasos:

  1. Instala a través de HACS la tarjeta de Mini Graph Card.
  2. Ahora vamos a crear un sensor que represente una tarifa por tramos, parametrizada por el usuario. Para ello accede a tu fichero ‘sensors.yaml’ y pega el siguiente código, editando los precios como consideres (deben estar en €/kWh).
- platform: template
  sensors:
    custom_tariff:
      friendly_name: "Tarifa del usuario"
      value_template: >
        {% set current_hour = now().hour %}
        {% if current_hour == 0 %}0.09315
        {% elif current_hour == 1 %}0.09
        {% elif current_hour == 2 %}0.09
        {% elif current_hour == 3 %}0.09
        {% elif current_hour == 4 %}0.09
        {% elif current_hour == 5 %}0.09
        {% elif current_hour == 6 %}0.09
        {% elif current_hour == 7 %}0.09
        {% elif current_hour == 8 %}0.09
        {% elif current_hour == 9 %}0.12
        {% elif current_hour == 10 %}0.12
        {% elif current_hour == 11 %}0.12
        {% elif current_hour == 12 %}0.12
        {% elif current_hour == 13 %}0.12
        {% elif current_hour == 14 %}0.17
        {% elif current_hour == 15 %}0.17
        {% elif current_hour == 16 %}0.17
        {% elif current_hour == 17 %}0.17
        {% elif current_hour == 18 %}0.17
        {% elif current_hour == 19 %}0.17
        {% elif current_hour == 20 %}0.09
        {% elif current_hour == 21 %}0.09
        {% elif current_hour == 22 %}0.09
        {% elif current_hour == 23 %}0.09
        {% endif %}
      icon_template: mdi:triangle-wave
      unit_of_measurement: "€/kWh"
  1. También puedes añadir una tarifa fija a la comparativa. Para ello basta con que vayas a Ajustes > Dispositivos y servicios > Ayudantes > Crear ayudante y selecciona el tipo número. Indica como nombre “Tarifa fija”, ajusta el valor del paso a una magnitud adecuada (por ejemplo, ‘0.001’) e indica ‘€/kWh’ como unidad de medida. Esto creará la entidad ‘input_number.tarifa_fija’. Búscala entre el listado de ayudantes y dale el valor que corresponda.
  2. Por último vamos a crear otro sensor que va a representar nuestro consumo, y la manera de hacerlo va a depender de nuestros hábitos. Voy a crear un ejemplo sencillo con estas consideraciones:
    • El sensor va a representar el consumo de la lavadora, ya que la he integrado con un enchufe inteligente. No obstante tu podrías medir otros consumos, la suma de varios o el consumo total de tu casa.
    • El sensor va a tomar el valor ‘1’ cuando el estado sea “Lavando”, y ‘0’ en el resto de casos.
    • Para ello he incluido el siguiente código en el fichero ‘sensors.yaml’, que creará la entidad ‘sensor.washing_machine_curve’.
- platform: template
  sensors:
    washing_machine_curve:
      friendly_name: "Lavadora (funcionamiento)"
      value_template: >
        {% if states('input_select.lavadora') == "Lavando" %}1
        {% else %}0
        {% endif %}
      icon_template: mdi:triangle-wave
  1. Ahora crea una nueva tarjeta en el panel de control y pega el siguiente código.
type: custom:mini-graph-card
hour24: true
points_per_hour: 1
hours_to_show: 24
align_icon: left
align_state: center
name: Comparativa de tarifas
icon: mdi:triangle-wave
line_width: 3
show:
  state: false
  labels_secondary: false
entities:
  - entity: input_number.tarifa_fija
    color: white
    name: Fija
  - entity: sensor.esios_pvpc
    color: orange
    name: PVPC
  - entity: sensor.custom_tariff
    color: lightgreen
    name: Usuario
  - entity: sensor.washing_machine_curve
    color: white
    name: Consumo
    show_line: false
    show_points: false
    show_legend: false
    y_axis: secondary

Además, si monitorizas tu consumo energético, con toda esta información puedes obtener fácilmente el valor de tu próxima factura (multiplicando el consumo por el precio de tu tarifa), así como una estimación de a cuánto ascendería tu factura si tuvieras una tarifa diferente.

Gráfica comparativa (ApexCharts card)

De nuevo, nuestro amigo Abel ha diseñado y compartido con nosotros esta versión de la gráfica comparativa utilizando la tarjeta ApexCharts card, para incorporar más información en el gráfico.

comparativa

Además utiliza la integración ‘workday’ para discriminar las tarifas en función de si son días laborables. Para ello debes crear el sensor de la tarifa parametrizada por el usuario de la siguiente forma:

- platform: template
  sensors:
    custom_tariff:
      friendly_name: "Tarifa del usuario"
      value_template: >
        {% set current_hour = now().hour %}
        {% set current_weekday = now().weekday() %}
        {% set es_festivo = states('binary_sensor.workday_sensor') == 'true' %}  {# Sensor para festivos #}
        {% if es_festivo or current_weekday in [5, 6] %}  {# Si es festivo o fin de semana #}
          {% if current_hour in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] %} 0.076
          {% elif current_hour in [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23] %} 0.076
          {% endif %}
        {% else %}  {# Si es día laboral #}
          {% if current_hour in [0, 1, 2, 3, 4, 5, 6, 7] %} 0.076
          {% elif current_hour in [8, 9, 14, 15, 16, 17, 22, 23] %} 0.106
          {% elif current_hour in [10, 11, 12, 13, 18, 19, 20, 21] %} 0.162
          {% endif %}
        {% endif %}
      icon_template: mdi:triangle-wave
      unit_of_measurement: "€/kWh"

Hecho esto, ya sólo necesitas crear una nueva tarjeta en tu panel de control y pegar el siguiente código.

type: custom:apexcharts-card
header:
  show: true
  title: COMPARATIVA TARIFAS LUZ
  show_states: true
  colorize_states: true
graph_span: 3d
yaxis:
  - id: first
    decimals: 2
    apex_config:
      tickAmount: 10
all_series_config:
  stroke_width: 2
series:
  - entity: sensor.esios_pvpc
    type: line
    extend_to: end
    float_precision: 3
  - entity: sensor.custom_tariff
    type: area
    extend_to: end
    float_precision: 3
    fill_raw: last

Ya ves que con todas estas ideas, al integrar PVPC en Home Assistant puedes generar un ahorro importante en tu factura de la luz.


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