Todo el coste en electricidad bajo control con Home Assistant y Total Energies

Vamos a averiguar en tiempo real el coste que supone nuestro consumo eléctrico con datos concretos de la compañia de luz TotalEnergies con su tarifa de mercado libre.

Ya vimos en otro artículo cómo calcular el coste de nuestra factura eléctrica si estamos asociados a la tarifa eléctrica de pequeño consumidor (PVPC), y nos quedaba pendiente hacer lo mismo para el caso en que nuestro precio no dependa de este índice horario.

Fieles a nuestros principios con las guías prácticas, os vamos a mostrar por tanto paso a paso cómo configurar el cálculo para el caso de esta comercializadora, y veréis que será muy fácil particularizar para vuestra propia tarifa, incluso de otros proveedores.

REQUISITOS

Los requisitos para llevar el control de nuestro gasto no son muchos, y en algún caso ya tendremos todo lo necesario. Para nuestro caso hemos usado un medidor muy conocido de la marca Shelly que es muy muy sencillo de instalar y que podremos integrar en nuestro sistema Home Assistant:

  • Shelly EM Shelly EM sin convertidor de voltaje

Os dejamos también la misma oferta en Aliexpress, para que tengáis más opciones de elección:

También te será muy fácil adaptar lo que aquí se explica para particularizar el coste de algún consumidor en concreto dentro de esta tarifa sin PVPC, con cualquier enchufe inteligente conmonitoreo de consumo de entre los que os proponemos:

Si todavía no tienes un hardware apropiado para instalar Home Assistant, ya no tienes ninguna excusa. Puedes elegir entre distintas posibilidades en este otro artículo, y esta otra guía para instalación del mismo.

PASO 1. ESTABLECER EL DÍA DE FACTURACIÓN

Parece un cambio menor, pero una de las ventajas que ofrece esta compañía de electricidad TotalEnergies es que nos deja elegir el día de facturación. En nuestro caso hemos ido a lo sencillo y hemos establecido el día 1 de cada mes.

La forma de hacerlo no puede ser más fácil: Una vez nos demos de alta en su plataforma de clientes, podremos gestionar nuestro contrato y configurar dicho día del mes:

PASO 2. ESTUDIAR LA FACTURA

Lo siguiente y más importante es estudiar bien una factura, para poder luego configurar en nuestro sistema los precios que nos aplican. En la factura de ejemplo de TotalEnergies podemos ver los siguientes datos:

Esos valores fijos importantes que necesitaremos son los siguientes:

  • Precio del kwh. Incluiremos también en este dato los posibles descuentos como los que aparecen en la factura ejemplo. En este caso 0.269758 -5% -11% = 0.228080389
  • Potencia contratada en kW.
  • Precio por día de cada kW de potencia contratado.
  • Precio por día del alquiler de equipo de medida. Si no nos viene especificado (como en el ejemplo) dividiremos el total entre el número de días facturados.
  • Impuesto eléctrico. En este caso el 0.5%
  • IVA aplicable (por ahora y de manera temporal será un 10%)

Como veremos más adelante, cada uno de estos parámetros los podremos configurar a nuestro caso concreto.

PASO 3. CREACIÓN DE CONTADORES DE ENERGÍA

Dimos ya por sentado que se dispone de un medidor de energía consumida conectado a nuestro sistema. Estos dispositivos acumularán los kWh consumidos en todo momento, por lo que dicho número siempre irá creciendo.

Pero nosotros vamos a configurar 2 nuevos contadores basados en ese acumulado de energía consumida, para que se reseteen de manera automática cada día y cada mes respectivamente. Nos servirán en el siguiente paso para el cálculo del gasto diario y mensual ya en Euros.

Como en otras ocasiones, modificaremos el fichero configuration.yaml , bien desde un editor externo, o directamente instalando el Addon llamado File Editor. Lo podéis copiar desde el siguiente código y sustituir el nombre del sensor de energía:

utility_meter:
  consumohogar_energia_diario:
    source: sensor.consumohogar_channel_2_energy
    cycle: daily

  consumohogar_energia_mensual:
    source: sensor.consumohogar_channel_2_energy
    cycle: monthly

PASO 4. CREACIÓN DE TEMPLATES

Este es el paso esencial, pues vamos a implementar el cálculo que nos convierta los kWh consumidos en Euros. Como en el paso anterior, vamos a crear dos templates para que nos den el coste diario y el mensual, y como en el caso anterior recordad renombrar los sensores y establecer los valores de vuestras facturas.

sensor:
  - platform: template
    sensors:
      consumohogar_coste_diario:
        friendly_name: "Coste diario electricidad"
        unit_of_measurement: '€'
        value_template: "
        {%set dia_fact = 1 %}
        {%set IVA = 1.10 |float %}
        {%set pot = 5.5 |float %}
        {%set precio_pot = 0.090273 |float %}
        {%set precio_cons = 0.228080389 |float %}
        {%set precio_alq = 0.048571429 |float %}
        {%set imp_elec= 0.005 |float %}

        {%set termino_pot = (1) * pot * precio_pot %}
        {%set termino_cons = states('sensor.consumohogar_energia_diario') | float * precio_cons %}
        {%set termino_alq = (1) * precio_alq %}
        {%set termino_imp_elec = (termino_cons + termino_pot) * imp_elec |float %}

        {%set total = (termino_cons + termino_pot + termino_alq + termino_imp_elec) * IVA %}

        {{ total | round(2) }}"



      consumohogar_coste_mensual:
        friendly_name: "Coste mensual electricidad"
        unit_of_measurement: '€'
        value_template: "
        {%set dia_fact = 1 %}
        {%set IVA = 1.10 |float %}
        {%set pot = 5.5 |float %}
        {%set precio_pot = 0.090273 |float %}
        {%set precio_cons = 0.228080389 |float %}
        {%set precio_alq = 0.048571429 |float %}
        {%set imp_elec= 0.005 |float %}

        {%set termino_pot = (now().day-dia_fact+1) * pot * precio_pot %}
        {%set termino_cons = states('sensor.consumohogar_energia_mensual') | float * precio_cons %}
        {%set termino_alq = (now().day-dia_fact+1) * precio_alq %}
        {%set termino_imp_elec = (termino_cons + termino_pot) * imp_elec |float %}

        {%set total = (termino_cons + termino_pot + termino_alq + termino_imp_elec) * IVA %}

        {{ total | round(2) }}"

Queda resetear HA para que tome el nuevo fichero de configuración. En las últimas versiones ésto se consigue desde el menú «Developer Tools» > «Check Configuration» > Restart , o en versiones mas recientes simplemente desde el menu Ajustes>Sistema>[icono de apagado/encendido]:

PASO 5. REPRESENTACIÓN EN PANEL

Si lo hemos realizado todo de forma correcta, ya solo nos queda representar en nuestro dashboard el conjunto de entidades relacionadas con nuestra electricidad y nuestros nuevos cálculos de coste mensual y diario:

Cada día veremos como el coste diario empieza con un valor (coste fijo asociado a ese día) e irá aumentando hasta resetear al comienzo del día siguiente. De forma análoga pasará con el cálculo mensual.

PASO 6. POSIBLES USOS DE CONTADORES DE COSTE

Una vez tenemos integrado el coste del día y del mes, podemos realizar cualquier automatización que tenga en cuenta estos valores. Esa es la flexibilidad de Home Assistant. A modo de ejemplo estas son algunas ideas que podéis realizar:

  • Aviso mediante notificación en el móvil cuando el gasto diario y/o mensual se dispare por encima de cierto valor, lo que nos ayudará a regularnos en el resto del mes.
  • Podremos mostrar, asimismo, a modo de recordatorio en nuestra TV el gasto acumulado del día.
  • Mostrar el coste de consumidores concretos para estudios de eficiencia.
  • Incluso si nos atrevemos podremos decidir si el aire acondicionado se conecta de forma automática o no en función de si estamos gastado mucho o no.

16 comentarios en «Todo el coste en electricidad bajo control con Home Assistant y Total Energies»

  1. Hola.

    Buen articulo.

    Un pregunta , sería posible añadir una variable en el precio constante.:

    {%set precio_cons = variable |float %}

    Donde esa variable sea el valor de este sensor «sensor.esios_pvpc» yo estoy en el mercado regulado así que me interesa tener esa variable que varía como sabes cada hora y cada dia.

    Responder
    • Gracias por el comentario. Claro, puedes definir todas las variables que necesites y por supuesto desde cualquier sensor. Hemos realizado este artículo donde se realiza lo que indicas. Saludos.

      Responder
  2. Me salta este error y no consigo ver cual es el error de sintaxis

    Invalid config for [sensor.template]: invalid template (TemplateSyntaxError: expected token ‘end of statement block’, got ‘integer’) for dictionary value

    Me puedes echar una mano?
    Gracias.

    Responder
  3. Hola, acabo de hacerlo y el coste diario me aparece unaviable, he repasado todo y esta bien. El mensual si que funciona.

    Responder
    • Hola Jon, desgraciadamente jinja no es lo más amigable. Si no te importa poner por aquí el template (copiar y pegar) podemos echarle un vistazo. Revisa primero que no te falte/sobre algún espacio.

      Responder
      • Tengo este codigo en el yaml:
        sensor:
        – platform: template
        sensors:
        consumocasa_precio_diario:
        friendly_name: «Precio diario electricidad»
        unit_of_measurement: ‘€’
        value_template: »
        {%set dia_fact = 1 %}
        {%set IVA = 1.05 |float %}
        {%set pot = 3.45 |float %}
        {%set precio_pot = 0.095250 |float %}
        {%set precio_cons = 0.292186 |float %}
        {%set precio_alq = 0.026779661 |float %}
        {%set imp_elec= 0.005 |float %}
        {%set termino_pot = (1) * pot * precio_pot %}
        {%set termino_cons = states(‘sensor.consumocasa_energia_diario’) | float * precio_cons %}
        {%set termino_alq = (1) * precio_alq %}
        {% set total = (termino_cons + termino_pot + termino_alq + termino_imp_elec) * IVA / 1000 %}
        {{ total | round(2) }} »
        consumocasa_precio_mensual:
        friendly_name: «Precio mensual electricidad»
        unit_of_measurement: ‘€’
        value_template: »
        {%set dia_fact = 1 %}
        {%set IVA = 1.05 |float %}
        {%set pot = 3.45 |float %}
        {%set precio_pot = 0.095250 |float %}
        {%set precio_cons = 0.292186 |float %}
        {%set precio_alq = 0.026779661 |float %}
        {%set imp_elec= 0.005 |float %}
        {%set termino_pot = (now().day-dia_fact+1) * pot * precio_pot %}
        {%set termino_cons = states(‘sensor.consumocasa_energia_mensual’) | float * precio_cons %}
        {%set termino_alq = (now().day-dia_fact+1) * precio_alq %}
        {%set termino_imp_elec = (termino_cons + termino_pot) * imp_elec |float %}
        {%set total = (termino_cons + termino_pot + termino_alq + termino_imp_elec) * IVA %}
        {{ total | round(2) }} «

        Responder
  4. He corregido de la plantilla anterior el espacio del coste diario total, tenía un espacio, pero sigue fallando. En HA me pone no disponible y no aparece nada en la gráfica. En la mensual si.

    Responder
  5. Esto tengo en el yaml:

    utility_meter:
    consumocasa_energia_diario:
    source: sensor.consumocasa_energy_today
    cycle: daily
    consumocasa_energia_mensual:
    source: sensor.consumocasa_energy_today
    cycle: monthly

    sensor:
    – platform: template
    sensors:
    consumocasa_precio_diario:
    friendly_name: «Precio diario electricidad»
    unit_of_measurement: ‘€’
    value_template: »
    {%set dia_fact = 1 %}
    {%set IVA = 1.05 |float %}
    {%set pot = 3.45 |float %}
    {%set precio_pot = 0.095250 |float %}
    {%set precio_cons = 0.292186 |float %}
    {%set precio_alq = 0.026779661 |float %}
    {%set imp_elec= 0.005 |float %}
    {%set termino_pot = (1) * pot * precio_pot %}
    {%set termino_cons = states(‘sensor.consumocasa_energia_diario’) | float * precio_cons %}
    {%set termino_alq = (1) * precio_alq %}
    {%set total = (termino_cons + termino_pot + termino_alq + termino_imp_elec) * IVA / 1000 %}
    {{ total | round(2) }} »
    consumocasa_precio_mensual:
    friendly_name: «Precio mensual electricidad»
    unit_of_measurement: ‘€’
    value_template: »
    {%set dia_fact = 1 %}
    {%set IVA = 1.05 |float %}
    {%set pot = 3.45 |float %}
    {%set precio_pot = 0.095250 |float %}
    {%set precio_cons = 0.292186 |float %}
    {%set precio_alq = 0.026779661 |float %}
    {%set imp_elec= 0.005 |float %}
    {%set termino_pot = (now().day-dia_fact+1) * pot * precio_pot %}
    {%set termino_cons = states(‘sensor.consumocasa_energia_mensual’) | float * precio_cons %}
    {%set termino_alq = (now().day-dia_fact+1) * precio_alq %}
    {%set termino_imp_elec = (termino_cons + termino_pot) * imp_elec |float %}
    {%set total = (termino_cons + termino_pot + termino_alq + termino_imp_elec) * IVA %}
    {{ total | round(2) }} »

    En HA el coste diario no muestra nada en la gráfica y pone en la entidad no disponible.

    Responder
      • Ahora si está disponible pero el coste es 0€. En la gráfica aparece a 0 todo el rato. He repasado otra vez el yaml pero ya no veo fallos. Lo cojo de una integración de tasmota.
        sensor:
        – platform: template
        sensors:
        consumocasa_precio_diario:
        friendly_name: «Precio diario electricidad»
        unit_of_measurement: ‘€’
        value_template: »
        {%set dia_fact = 1 %}
        {%set IVA = 1.05 |float %}
        {%set pot = 3.45 |float %}
        {%set precio_pot = 0.095250 |float %}
        {%set precio_cons = 0.292186 |float %}
        {%set precio_alq = 0.026779661 |float %}
        {%set imp_elec = 0.005 |float %}
        {%set termino_pot = (1) * pot * precio_pot %}
        {%set termino_cons = states(‘sensor.consumocasa_energia_diario’) | float * precio_cons %}
        {%set termino_alq = (1) * precio_alq %}
        {%set termino_imp_elec = (termino_cons + termino_pot) * imp_elec |float %}
        {%set total = (termino_cons + termino_pot + termino_alq + termino_imp_elec) * IVA / 1000 %}
        {{ total | round(2) }} »
        consumocasa_precio_mensual:
        friendly_name: «Precio mensual electricidad»
        unit_of_measurement: ‘€’
        value_template: »
        {%set dia_fact = 1 %}
        {%set IVA = 1.05 |float %}
        {%set pot = 3.45 |float %}
        {%set precio_pot = 0.095250 |float %}
        {%set precio_cons = 0.292186 |float %}
        {%set precio_alq = 0.026779661 |float %}
        {%set imp_elec = 0.005 |float %}
        {%set termino_pot = (now().day-dia_fact+1) * pot * precio_pot %}
        {%set termino_cons = states(‘sensor.consumocasa_energia_mensual’) | float * precio_cons %}
        {%set termino_alq = (now().day-dia_fact+1) * precio_alq %}
        {%set termino_imp_elec = (termino_cons + termino_pot) * imp_elec |float %}
        {%set total = (termino_cons + termino_pot + termino_alq + termino_imp_elec) * IVA %}
        {{ total | round(2) }} »

        La advertencia de HA es:
        Logger: homeassistant.components.utility_meter.sensor
        Source: components/utility_meter/sensor.py:431
        Integration: Contador (documentation, issues)
        First occurred: 9 de mayo de 2023, 22:14:28 (8 occurrences)
        Last logged: 15:45:42

        consumocasa_energia_diario received an invalid new state from sensor.consumocasa_energy_today : unavailable
        consumocasa_energia_mensual received an invalid new state from sensor.consumocasa_energy_today : unavailable

        Responder

Deja un comentario