Skip to content

Energía

Mide como nunca tu gasto energético, ¿cuantos Kw llevo gastados?, y la factura de la luz, ¿pagaré mas o menos que mes pasado?, ahora con estos sensores tu gasto energitico y de bolsillo controlado

Datos factura electrónica

¿Te gustaría saber de antemano lo que gastarás este mes?, se acabaron los sustos, con estos sensores totalmente configurables podrás saber el importe de tu próxima factura, y no tener los sustos de siempre.

Requisitos
  • Un medidor de energía, normalmente un PZEM u otro sensor que mida el consumo total de tu casa.
  • Node-Red, se usa para hacer la automatización, aunque puedes hacerla con Home Assistant.

Sensor de Kwh

Lo primero es crearnos el sensor en kWh, si ya tenemos un sensor dispositivo que nos dá este dato no tendríamos que crearlo, este sensor se crea en sensors.yaml. Más información.

- platform: integration
  source: sensor.TU_SENSOR_EN_W
  name: NOMBRE IDENTIFICATIVO PARA TU SENSOR
  unit_prefix: k
  unit_time: h
  round: 3
  method: left

Utility Meter

Creamos con el utility_metter un sensor que nos vaya acumulando el consumo en los diferentes tramos. Este sensor se crea en utility_meter.yaml. Más información.

energia_mensual:
  source: sensor.TU_SENSOR_EN_KWH     #creado en el paso anterior o el sensor de nuestro medidor
  cycle: monthly
  tariffs:
    - Pico
    - Llano
    - Valle
# si nuetro día de inicio de la facturación es diferenta al día 1 hay que añadir:
  offset:
    days: 5     #Dia del primer día de facturacion -1 (o ultimo día de la facturación, depende de como se mire....)
# si es el día 1 no hace falta ponerlo

Sensores Workday y Time

Para ello lo primero debemos de crear dos sensores, el sensor work_day (en binary_sensors.yaml), y el sensor de fecha y hora (en sensors.yaml). Más información.

##############################
##         WORK DAY         ##
##############################

- platform: workday
  country: ES
  province: PON_TU_PROVINCIA    # https://pypi.org/project/holidays/
  name: "workday"
  workdays: [mon, tue, wed, thu, fri]
  excludes: [sat, sun, holiday]

Sensor de fecha y hora, más información.

##############################
##        FECHA-HORA        ##
##############################
          # https://www.home-assistant.io/integrations/time_date/
- platform: time_date
  display_options:
    - "time"
    - "date"
    - "date_time"

Automatización

Creada con Node-Red, importamos:

[{"id":"b00f8b7e87fa7cdf","type":"time-range-switch","z":"2419432f.a8e82c","name":"Pico","lat":"37.931895","lon":"-4.672891","startTime":"10:00","endTime":"14:00","startOffset":0,"endOffset":0,"x":990,"y":2680,"wires":[["4e7fdc401168cfa0"],[]]},{"id":"4a48334f1eea30f7","type":"time-range-switch","z":"2419432f.a8e82c","name":"Pico","lat":"37.931895","lon":"-4.672891","startTime":"18:00","endTime":"22:00","startOffset":0,"endOffset":0,"x":990,"y":2720,"wires":[["4e7fdc401168cfa0"],[]]},{"id":"f33f10d4a849e2ae","type":"time-range-switch","z":"2419432f.a8e82c","name":"Valle","lat":"37.931895","lon":"-4.672891","startTime":"00:00","endTime":"08:00","startOffset":0,"endOffset":0,"x":970,"y":3060,"wires":[["a5c1c794f781dff5"],[]]},{"id":"00f2c2eb94bd2967","type":"time-range-switch","z":"2419432f.a8e82c","name":"Llano","lat":"37.931895","lon":"-4.672891","startTime":"08:00","endTime":"10:00","startOffset":0,"endOffset":0,"x":970,"y":2820,"wires":[["81ce24ef90554c2d"],[]]},{"id":"d84198cd74953039","type":"time-range-switch","z":"2419432f.a8e82c","name":"Llano","lat":"37.931895","lon":"-4.672891","startTime":"14:00","endTime":"18:00","startOffset":0,"endOffset":0,"x":970,"y":2880,"wires":[["81ce24ef90554c2d"],[]]},{"id":"1b899dd4edb33f53","type":"time-range-switch","z":"2419432f.a8e82c","name":"Llano","lat":"37.931895","lon":"-4.672891","startTime":"22:00","endTime":"00:00","startOffset":0,"endOffset":0,"x":970,"y":2940,"wires":[["81ce24ef90554c2d"],[]]},{"id":"d3fdc7dbe59f22c4","type":"api-current-state","z":"2419432f.a8e82c","name":"hora?","server":"a696c0e8.5d63b","version":2,"outputs":1,"halt_if":"","halt_if_type":"str","halt_if_compare":"is","entity_id":"sensor.time","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"x":750,"y":2880,"wires":[["b00f8b7e87fa7cdf","00f2c2eb94bd2967","d84198cd74953039","1b899dd4edb33f53","f33f10d4a849e2ae","4a48334f1eea30f7"]]},{"id":"4e7fdc401168cfa0","type":"api-call-service","z":"2419432f.a8e82c","name":"UM Pico","server":"a696c0e8.5d63b","version":3,"debugenabled":false,"service_domain":"utility_meter","service":"select_tariff","entityId":"utility_meter.energia_diaria, utility_meter.energia_mensual, utility_meter.energia_horaria","data":"{\"tariff\":\"Pico\"}","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1140,"y":2700,"wires":[[]]},{"id":"81ce24ef90554c2d","type":"api-call-service","z":"2419432f.a8e82c","name":"UM Llano","server":"a696c0e8.5d63b","version":3,"debugenabled":false,"service_domain":"utility_meter","service":"select_tariff","entityId":"utility_meter.energia_diaria, utility_meter.energia_mensual, utility_meter.energia_horaria","data":"{\"tariff\":\"Llano\"}","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1120,"y":2880,"wires":[[]]},{"id":"a5c1c794f781dff5","type":"api-call-service","z":"2419432f.a8e82c","name":"UM Valle","server":"a696c0e8.5d63b","version":3,"debugenabled":false,"service_domain":"utility_meter","service":"select_tariff","entityId":"utility_meter.energia_diaria, utility_meter.energia_mensual, utility_meter.energia_horaria","data":"{\"tariff\":\"Valle\"}","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1120,"y":3080,"wires":[[]]},{"id":"2845bd64283b8474","type":"time-range-switch","z":"2419432f.a8e82c","name":"Valle","lat":"37.931895","lon":"-4.672891","startTime":"00:00","endTime":"23:59","startOffset":0,"endOffset":0,"x":970,"y":3120,"wires":[["a5c1c794f781dff5"],[]]},{"id":"7ffb0864f1677d56","type":"api-current-state","z":"2419432f.a8e82c","name":"Work_Day","server":"a696c0e8.5d63b","version":2,"outputs":2,"halt_if":"on","halt_if_type":"str","halt_if_compare":"is","entity_id":"binary_sensor.workday","state_type":"str","blockInputOverrides":false,"outputProperties":[{"property":"payload","propertyType":"msg","value":"","valueType":"entityState"},{"property":"data","propertyType":"msg","value":"","valueType":"entity"}],"override_topic":false,"state_location":"payload","override_payload":"msg","entity_location":"data","override_data":"msg","x":590,"y":2880,"wires":[["d3fdc7dbe59f22c4"],["2845bd64283b8474"]]},{"id":"a38a324a82a4357b","type":"inject","z":"2419432f.a8e82c","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"*/1 0-23 * * *","once":true,"onceDelay":0.1,"topic":"","payloadType":"date","x":410,"y":2880,"wires":[["7ffb0864f1677d56"]]},{"id":"a696c0e8.5d63b","type":"server","name":"Home Assistant","version":2,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true,"heartbeat":false,"heartbeatInterval":30}]

Url

Automatización en Node-Red

Creación de las variables

Con estas variables podrás introducir los datos de tu factura, estos sensores se crean en input_number.yaml.

##################################
##      VARIABLES FACTURA LUZ   ##
##################################


dia_inicio_facturacion_luz:
  name: Día de incio de la facturación
  min: 0
  max: 31
  step: 1
  mode: box
  icon: mdi:calendar-today

precio_facturacion_pico:
  name: Precio Facturación Pico
  min: 0
  max: 10
  step: 0.000001
  mode: box
  icon: mdi:speedometer

precio_facturacion_llano:
  name: Precio Facturación Llano
  min: 0
  max: 10
  step: 0.000001
  mode: box
  icon: mdi:speedometer-medium

precio_facturacion_valle:
  name: Precio Facturación Valle
  min: 0
  max: 10
  step: 0.000001
  mode: box
  icon: mdi:speedometer-slow

precio_facturacion_potencia_pico:
  name: Precio Potencia Pico
  min: 0
  max: 10
  step: 0.000001
  mode: box
  icon: mdi:chart-bell-curve-cumulative

precio_facturacion_potencia_valle:
  name: Precio Potencia Valle
  min: 0
  max: 10
  step: 0.000001
  mode: box
  icon: mdi:chart-bell-curve

potencia_contratada_facturacion_luz:
  name: Potencia Contratada Facturación Luz
  min: 0
  max: 10
  step: 0.01
  mode: box
  icon: mdi:transmission-tower

impuesto_electricidad_facturacion_luz:
  name: Impuesto Electricidad Facturación
  min: 0
  max: 10
  step: 0.01
  mode: box
  icon: mdi:cash-multiple

otros_conceptos_facturacion_luz:
  name: Otros Conceptos Facturación
  min: 0
  max: 10
  step: 0.000001
  mode: box
  icon: mdi:archive-eye-outline

iva_facturacion_luz:
  name: Iva en la Facturación de la Luz
  min: 0
  max: 100
  step: 1
  mode: box
  icon: mdi:cash-multiple

Creación de nuestra factura

Ya queda menos, ahora nos creamos los sensores que harán los cálculos de la factura, como siempre en sensors.yaml

#######################################################
########      Sensores de calculo factura      ########
#######################################################

- platform: template
  sensors:
  #Rellenar con los datos de vuestra factura
    gastoelectrico_diafactura:
      friendly_name: "Dia de facturacion"
      value_template: "{{ (states('input_number.dia_inicio_facturacion_luz'))|int }}"
      icon_template: mdi:calendar-today
                        #Dia de facturacion 

    gastoelectrico_pico:
      friendly_name: "Gasto Pico"
      unit_of_measurement: "€"
      value_template: "{{ ( states('input_number.precio_facturacion_pico')|float 
                        * (states('sensor.energia_mensual_pico')|float )) | round(2)  }}"
      icon_template: mdi:speedometer
                        #Precio Pico

    gastoelectrico_llano:
      friendly_name: "Gasto Llano"
      unit_of_measurement: "€"
      value_template: "{{  ( states('input_number.precio_facturacion_llano')|float 
                        * ( states('sensor.energia_mensual_llano')|float ) )| round(2)}}"
      icon_template: mdi:speedometer-medium
                        #Precio Llano

    gastoelectrico_valle:
      friendly_name: "Gasto Valle"
      unit_of_measurement: "€"
      value_template: "{{  ( states('input_number.precio_facturacion_valle')|float 
                         * ( states('sensor.energia_mensual_valle')|float ) ) | round(2)}}"
      icon_template: mdi:speedometer-slow
                      #Precio Valle 

    gastoelectrico_potencia:
      friendly_name: "Gasto termino de potencia"
      unit_of_measurement: "€"
      value_template: "{{  (( states('input_number.potencia_contratada_facturacion_luz')|float   
                            * (30)|int  
                            * (states('input_number.precio_facturacion_potencia_pico')|float / (30)|int )|float ) | round(2) )   
                        + (( states('input_number.potencia_contratada_facturacion_luz')|float   
                            * (30)|int  
                            * (states('input_number.precio_facturacion_potencia_valle')|float  / (30)|int )|float ) | round(2) ) }}"
      icon_template: mdi:transmission-tower
                            #Potencia Contratada  * DIAS * €/KW dia 

    gastoelectrico_impuesto_electicidad:
      friendly_name: "Gasto impuesto a la electicidad"
      unit_of_measurement: "€"
      value_template: "{{ ( states('input_number.impuesto_electricidad_facturacion_luz')|float / (100)|int ) 
                        * ( states('sensor.gastoelectrico_pico')|float + states('sensor.gastoelectrico_llano')|float 
                        + states('sensor.gastoelectrico_valle')|float + states('sensor.gastoelectrico_potencia')|float ) | round(2) }}"
      icon_template: mdi:cash-multiple
                        #Impuesto / 100  

    gastoelectrico_otros_conceptos:
      friendly_name: "Gasto alquiler y otros"
      unit_of_measurement: "€"
      value_template: "{{ ( states('input_number.otros_conceptos_facturacion_luz')|float   
                        * (30)|int )  | round(2) }}"
      icon_template: mdi:archive-eye-outline
      #Otros conceptos * DIAS 

    gastoelectrico_iva:
      friendly_name: "IVA Electricidad"
      unit_of_measurement: "€" 
      value_template: "{{  (  (states('input_number.iva_facturacion_luz')|float / (100)|int )|float   
                         *   (states('sensor.gastoelectrico_pico')|float 
                            + states('sensor.gastoelectrico_llano')|float 
                            + states('sensor.gastoelectrico_valle')|float 
                            + states('sensor.gastoelectrico_potencia')|float 
                            + states('sensor.gastoelectrico_impuesto_electicidad')|float 
                            + states('sensor.gastoelectrico_otros_conceptos')|float ) ) | round(2)  }}"
      icon_template: mdi:cash-multiple
                            #IVA * Gastos (consumo + potencia + impuesto + contador)



#######################################################
########             GASTO ACTUAL              ########
#######################################################

    gastoelectrico_actual:
      friendly_name: "Gasto Actual"
      unit_of_measurement: "€"
      value_template: "{{  ( states('sensor.gastoelectrico_pico')|float 
      + states('sensor.gastoelectrico_llano')|float 
      + states('sensor.gastoelectrico_valle')|float 
      + states('sensor.gastoelectrico_potencia')|float 
      + states('sensor.gastoelectrico_impuesto_electicidad')|float 
      + states('sensor.gastoelectrico_otros_conceptos')|float 
      + states('sensor.gastoelectrico_iva')|float ) | round(2)  }}"
      icon_template: mdi:currency-eur


#######################################################
########   ESTIMACIÓN FACTURA A FINAL DE MES   ########
#######################################################


    gastoelectrico_estimado: #Con dia de facturación
      friendly_name: "Gasto Estimado TOTAL"
      unit_of_measurement: "€"
      value_template: "
        {% if now().day > (states('sensor.gastoelectrico_diafactura')|int ) -%} 
          {{ ( (1 + (states('input_number.iva_facturacion_luz')|float / (100)|int )|float) 
          * ( ((states('sensor.gastoelectrico_pico')|float / (now().day - (states('sensor.gastoelectrico_diafactura')|float))  ) * (30)|int ) 
            + ((states('sensor.gastoelectrico_llano')|float / (now().day - (states('sensor.gastoelectrico_diafactura')|float)) ) * (30)|int )
            + ((states('sensor.gastoelectrico_valle')|float / (now().day - (states('sensor.gastoelectrico_diafactura')|float)) ) * (30)|int ) 
            + states('sensor.gastoelectrico_potencia')|float  
            + ( states('input_number.impuesto_electricidad_facturacion_luz')|float / (100)|int ) 
                  *( ((states('sensor.gastoelectrico_pico')|float / (now().day - (states('sensor.gastoelectrico_diafactura')|float )) ) * (30)|int ) 
                    + ((states('sensor.gastoelectrico_llano')|float / (now().day - (states('sensor.gastoelectrico_diafactura')|float )) ) * (30)|int ) 
                    + ((states('sensor.gastoelectrico_valle')|float / (now().day - (states('sensor.gastoelectrico_diafactura')|float )) ) * (30)|int ) 
                    + states('sensor.gastoelectrico_potencia')|float )  
            + states('sensor.gastoelectrico_otros_conceptos')|float ) ) |round(2)}}

        {% elif now().day == (states('sensor.gastoelectrico_diafactura')|int ) -%} 
          {{ ( (1 + (states('input_number.iva_facturacion_luz')|float / (100)|int )|float) 
            * ( states('sensor.gastoelectrico_pico')|float 
                + states('sensor.gastoelectrico_llano')|float 
                + states('sensor.gastoelectrico_valle')|float 
                + states('sensor.gastoelectrico_potencia')|float  
                + ( states('input_number.impuesto_electricidad_facturacion_luz')|float / (100)|int ) 
                    * (states('sensor.gastoelectrico_pico')|float + states('sensor.gastoelectrico_llano')|float 
                      + states('sensor.gastoelectrico_valle')|float + states('sensor.gastoelectrico_potencia')|float )  
                      + states('sensor.gastoelectrico_otros_conceptos')|float ) ) |round(2)}}

        {%- else -%}
          {{ ( (1 + (states('input_number.iva_facturacion_luz')|float / (100)|int )|float) 
          * ( ((states('sensor.gastoelectrico_pico')|float  / ( (30)|int - ((states('sensor.gastoelectrico_diafactura')|float) - now().day))  ) * (30)|int ) 
            + ((states('sensor.gastoelectrico_llano')|float / ( (30)|int - ((states('sensor.gastoelectrico_diafactura')|float) - now().day))  ) * (30)|int )
            + ((states('sensor.gastoelectrico_valle')|float / ( (30)|int - ((states('sensor.gastoelectrico_diafactura')|float) - now().day))  ) * (30)|int )
            + states('sensor.gastoelectrico_potencia')|float  
            +  ( states('input_number.impuesto_electricidad_facturacion_luz')|float / (100)|int ) *( ((states('sensor.gastoelectrico_pico')|float / ( (30)|int - ((states('sensor.gastoelectrico_diafactura')|int) - now().day))  ) * (30)|int) + ((states('sensor.gastoelectrico_llano')|float / ( (30)|int - ((states('sensor.gastoelectrico_diafactura')|float) - now().day)) ) * (30)|int ) + ((states('sensor.gastoelectrico_valle')|float / ( (30)|int - ((states('sensor.gastoelectrico_diafactura')|float) - now().day)) ) * (30)|int) + states('sensor.gastoelectrico_potencia')|float )  
            + states('sensor.gastoelectrico_otros_conceptos')|float ) ) |round(2)}}

        {%- endif %}"
      icon_template: mdi:currency-eur

Tarjetas de información en tu Home Assistant

Si quieres tener una tarjeta para meter los valores de tu factura electrónica:

Url

Valores de tu factura
type: entities
entities:
  - entity: input_number.dia_inicio_facturacion_luz
  - entity: input_number.precio_facturacion_pico
  - entity: input_number.precio_facturacion_llano
  - entity: input_number.precio_facturacion_valle
  - entity: input_number.precio_facturacion_potencia_pico
  - entity: input_number.precio_facturacion_potencia_valle
  - entity: input_number.potencia_contratada_facturacion_luz
  - entity: input_number.impuesto_electricidad_facturacion_luz
  - entity: input_number.otros_conceptos_facturacion_luz
  - entity: input_number.iva_facturacion_luz
title: Variables Factura de la luz

Y luego los datos de tu factura electrónica:

Url

Factura electrónica

type: entities
entities:
  - entity: sensor.gastoelectrico_diafactura
  - entity: sensor.gastoelectrico_pico
  - entity: sensor.gastoelectrico_llano
  - entity: sensor.gastoelectrico_valle
  - entity: sensor.gastoelectrico_potencia
  - entity: sensor.gastoelectrico_impuesto_electicidad
  - entity: sensor.gastoelectrico_otros_conceptos
  - entity: sensor.gastoelectrico_iva
  - entity: sensor.gastoelectrico_actual
  - entity: sensor.gastoelectrico_estimado
title: Datos Factura Eléctrica
@rafajluque