Using a “total costs” entity and templates sensor maybe you can get calculate the cost.
In Spain, with solar panels, we have “hourly balance”, so, I need calculate the balance between export and import kwh from the grid for calculate the cost of the hour.
- sensor:
- name: "Balance neto horario"
unique_id: "Balance neto horario"
unit_of_measurement: "kWh"
state: "{{ ((states('sensor.grid_exported') | float(0) - states('sensor.exportado_ultima_hora') | float(0)) - (states('sensor.grid_consumption') | float(0) - states('sensor.importado_ultima_hora') | float(0))) | round(2) }}"
- trigger:
- platform: time_pattern
minutes: 59
seconds: 59
sensor:
- name: "Consumo Total"
unique_id: consumo_total
state: "{{ states('sensor.consumo_total') | float(0) + max( -(states('sensor.balance_neto_horario') | float(0)) * states('sensor.esios_pvpc') | float(0), 0 ) }}"
unit_of_measurement: "€"
state_class: total_increasing
- name: "Devuelto Total"
unique_id: devuelto_total
state: "{{ states('sensor.devuelto_total') | float(0) + max( (states('sensor.balance_neto_horario') | float(0)) * states('sensor.esios_grid_injection_price') | float(0), 0 ) }}"
unit_of_measurement: "€"
state_class: total_increasing
In short:
balance = imported - exported
if (balance > 0)
totalToPay += balance * costImport
else
totalToReturn += -balance * costExport