Hi
I’m fairly new to HA. I have configured everything I need via the GUI so far and it’s working well. Now I think I need to go into custom code land and I’ve been struggling with how to get this to work. Hoping someone can point me in the right direction please
I have a Solaredge accumulation sensor showing my total generated kwh: sensor.solaredge_kwh
I want to create a new accumulation sensor that calculates my “to date” £ savings based on:
□ Sensor.octopus_energy_yesterday_export_kwh (e.g. 20kwh)
□ Sensor.octopus_energy_yesterday_export_rate (e.g. £0.15)
□ Sensor.octopus_energy_yesterday_import_rate (e.g. £0.18)
So, to calculate the £ “savings” for yesterday I need to apply this logic:
□ Get total kwh produced (yesterday’s total from sensor.solaredge_kwh) (e.g. 30kwh)
- Minus total exported yesterday (e.g. 20kwh)
- Equals total consumed from solar yesterday (e.g. 10 kwh)
- Solar “savings” for yesterday equals: Yesterday’s consumption from grid (10kwh) * Yesterday’s import rate (£0.18) = £1.80
- Yesterday’s export to grid (20kwh) * Yesterday’s export rate (£0.15) = £3.00
- Total benefit yesterday = £4.80
Is this possible (easy?!) to do in a HA dashboard panel please? Or do I need to create multiple different custom sensors
Thanks for your help
Example:
state: >
{% set total_generated_kwh = states('sensor.solaredge_kwh') | float %}
{% set exported_kwh = states('sensor.octopus_energy_yesterday_export_kwh') | float %}
{% set export_rate = states('sensor.octopus_energy_yesterday_export_rate') | float %}
{% set import_rate = states('sensor.octopus_energy_yesterday_import_rate') | float %}
{% set consumed_from_grid = total_generated_kwh - exported_kwh %}
{% set savings = (consumed_from_grid * import_rate) - (exported_kwh * export_rate) %}
{{ savings | round(2) }}
1 Like
Amazing! Thank you so much. Is it possible to just get yesterday’s total from the sensor.solaredge_kwh sensor? This seems to be an accumulating sensor so it has the lifetime generation.
This should then give me the total savings for yesterday, then I need to somehow save this / write it to a file so I can display the all-time savings since creating the template. Is that doable at all? Thanks again!
Example:
utility_meter:
daily_energy_kwh:
source: sensor.solaredge_kwh sensor
cycle: daily
unique_id: daily_energy_kwh
Restart HA, wait until the next day
state: "{{ state_attr('sensor.daily_energy_kwh', 'last_period')}}"
Thank you, where abouts do I put that? I can’t seem to get it working. Plus I have an error about my unit of measurement expecting a numerical value but not a string
state: >
{% set yesterday_generated_kwh = state: "{{ state_attr('sensor.daily_energy_kwh', 'last_period')}}" | float %}
{% set exported_kwh = states('sensor.octopus_energy_electricity_export_previous_accumulative_consumption') | float %}
{% set export_rate = states('sensor.octopus_energy_electricity_export_current_rate') | float %}
{% set import_rate = states('sensor.octopus_energy_electricity_previous_rate') | float %}
{% set consumed_from_grid = yesterday_generated_kwh - exported_kwh %}
{% set savings = (consumed_from_grid * import_rate) - (exported_kwh * export_rate) %}
{{ savings | round(2) }}
I’ve created this now all via configuration.yaml. Remains to be seen if it works (Need to wait until tomorrow). Question is, where can I find my utility meter in the GUI? It’s not listed under Helpers
utility_meter:
daily_energy_generated_kwh:
source: sensor.solaredge_ac_energy_kwh
cycle: daily
unique_id: daily_energy_kwh
#daily_energy_exported_kwh:
# source: sensor.octopus_energy_electricity_x_export_previous_accumulative_consumption
# cycle: daily
# unique_id: daily_energy_exported_kwh
template:
- trigger:
- platform: time_pattern
# This will update every day at 7am
hours: 7
minutes: 0
sensor:
# abc
- name: "daily_savings"
state: >
{% set energy_generated_yesterday = state_attr('sensor.daily_energy_generated_kwh', 'last_period') | float %}
{% set energy_exported_yesterday = state_attr('octopus_energy_electricity_x_export_previous_accumulative_consumption', 'last_period') | float %}
{% set export_rate = states('sensor.octopus_energy_electricity_x_export_current_rate') | float %}
{% set import_rate_yesterday = states('sensor.octopus_energy_electricity_x_previous_rate') | float %}
{% set consumed_from_solar_yesterday = energy_generated_yesterday - energy_exported_yesterday %}
{% set savings = (consumed_from_solar_yesterday * import_rate) + (energy_exported_yesterday * export_rate) %}
{{ savings | round(2) }}