As per the Energy Management documentation, if you want to split energy usage into multiple tariffs you can use the utility_meter integration and create an automation that switches the utility_meter entity from one tariff to the other.
This is my case as I have the “Solar Plan” from Iberdrola. This plan have two tariffs, called “Horas Promocionadas” and “Horas No Promocionadas” (Promoted Hours -off peak- and Not Promoted Hours -peak-) and the time schedule varies according to the season of the year.
I have created an automation to change the tariff according to the plan, and I share it here in case it would be useful.
Automations.yaml
- id: '1630157394977'
alias: Cambio de Tarifa Eléctrica
description: "Su Plan Solar incluye un precio del término de energía más económico\
\ en las horas promocionadas según la estación del año:\n - Invierno: del 21 de\
\ diciembre al 20 de marzo.\n - Horas promocionadas (P1): de 17h a 9:59h\n \
\ - Horas no promocionadas (P2): de 10h a 16:59h\n - Primavera: del 21 de marzo\
\ al 20 de junio.\n - Horas promocionadas (P1): de 17h a 8:59h\n - Horas no\
\ promocionadas (P2): de 9h a 16:59h\n - Verano: del 21 de junio al 20 de septiembre.\n\
\ - Horas promocionadas (P1): de 18h a 9:59h\n - Horas no promocionadas (P2):\
\ de 10h a 17:59h\n - Otoño: del 21 de septiembre al 20 de diciembre.\n - Horas\
\ promocionadas (P1): de 17h a 8:59h\n - Horas no promocionadas (P2): de 9h\
\ a 16:59h"
trigger:
- platform: time
at: 09:00:00
- platform: time
at: '10:00:00'
- platform: time
at: '17:00:00'
- platform: time
at: '18:00:00'
condition:
- condition: or
conditions:
- condition: template
value_template: '{{ (1,1) <= ( now().month, now().day ) <= (3,20) and ( now().hour,
now().minute ) == (10,00) }}'
- condition: template
value_template: '{{ (1,1) <= ( now().month, now().day ) <= (3,20) and ( now().hour,
now().minute ) == (17,00) }}'
- condition: template
value_template: '{{ (3,21) <= ( now().month, now().day ) <= (6,20) and ( now().hour,
now().minute ) == (9,00) }}'
- condition: template
value_template: '{{ (3,21) <= ( now().month, now().day ) <= (6,20) and ( now().hour,
now().minute ) == (17,00) }}'
- condition: template
value_template: '{{ (6,21) <= ( now().month, now().day ) <= (9,20) and ( now().hour,
now().minute ) == (10,00) }}'
- condition: template
value_template: '{{ (6,21) <= ( now().month, now().day ) <= (9,20) and ( now().hour,
now().minute ) == (18,00) }}'
- condition: template
value_template: '{{ (9,21) <= ( now().month, now().day ) <= (12,20) and ( now().hour,
now().minute ) == (9,00) }}'
- condition: template
value_template: '{{ (9,21) <= ( now().month, now().day ) <= (12,20) and ( now().hour,
now().minute ) == (17,00) }}'
- condition: template
value_template: '{{ (12,21) <= ( now().month, now().day ) <= (12,31) and ( now().hour,
now().minute ) == (10,00) }}'
- condition: template
value_template: '{{ (12,21) <= ( now().month, now().day ) <= (12,31) and ( now().hour,
now().minute ) == (17,00) }}'
action:
- service: utility_meter.next_tariff
target:
entity_id: utility_meter.consumo_diario
mode: single
configuration.yaml
utility_meter:
consumo_diario:
source: sensor.consumo_de_la_red
name: "Consumo Diario"
cycle: daily
tariffs:
- NoPromocionado
- Promocionado
where sensor.consumo_de_la_red is the sensor that counts for grid consumption.
Hope it helps!