Last active
December 2, 2023 23:40
-
-
Save danielolsson100/4ee739d864dc90dac144e4d026ae090f to your computer and use it in GitHub Desktop.
ferroamp - charge or discharge battery sensor with home assistant and nordpool
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
binary_sensor: | |
- platform: template | |
sensors: | |
bs_charge_ferroamp_battery: | |
friendly_name: Charge Ferroamp Battery | |
value_template: >- | |
{% set today=state_attr('sensor.nordpool_kwh_se4_sek_2_10_025','today') %} | |
{% if ((state_attr('sensor.nordpool_kwh_se4_sek_2_10_025','tomorrow') | count) == 0) or (state_attr('sensor.nordpool_kwh_se4_sek_2_10_025','tomorrow')[0] == None) %} | |
{% set array = today %} | |
{% else %} | |
{% set tomorrow=state_attr('sensor.nordpool_kwh_se4_sek_2_10_025','tomorrow') %} | |
{% set array = today + tomorrow %} | |
{% endif %} | |
{% set current_price=states('sensor.nordpool_kwh_se4_sek_2_10_025') %} | |
{% set max=state_attr('sensor.nordpool_kwh_se4_sek_2_10_025','max') %} | |
{% set min=state_attr('sensor.nordpool_kwh_se4_sek_2_10_025','min') %} | |
{% set five_lowest_bp=(array | sort)[4] %} | |
{% if ((current_price | float) <= (five_lowest_bp | float)) %} | |
True | |
{% else %} | |
False | |
{% endif %} | |
bs_discharge_ferroamp_battery: | |
friendly_name: Discharge Ferroamp Battery | |
value_template: >- | |
{% set easee_cons_daily=(states('sensor.easee_energy_daily'))|float%} | |
{% set easee_cons_hourly=(states('sensor.easee_energy_hourly'))|float%} | |
{% set energy_cons_daily=(states('sensor.load_energy_consumed_daily'))|float %} | |
{% set energy_cons_hourly=(states('sensor.load_energy_consumed_hourly'))|float %} | |
{% set easee_cons_daily_lp=(state_attr('sensor.easee_energy_daily','last_period'))|float %} | |
{% set easee_cons_hourly_lp=(state_attr('sensor.easee_energy_hourly','last_period'))|float %} | |
{% set energy_cons_daily_lp=(state_attr('sensor.load_energy_consumed_daily','last_period'))|float %} | |
{% set energy_cons_hourly_lp=(state_attr('sensor.load_energy_consumed_hourly','last_period'))|float %} | |
{% set batt_soc=states('sensor.ferroamp_eso_19110078_state_of_charge')|float %} | |
{% set current_hour=(now().hour)|int %} | |
{% set hours_left=(24-now().hour)|int %} | |
{% set usable_battery_energy=((states('sensor.ferroamp_eso_19110078_state_of_charge')|float - 10)/100 * 10) | round(1) %} | |
{% set calc_battery_time=(usable_battery_energy/(((energy_cons_daily - easee_cons_daily)/current_hour + ((energy_cons_daily_lp - easee_cons_daily_lp)/24))/2))|round(0,'ceil') %} | |
{% set nordpool_today=state_attr('sensor.nordpool_kwh_se4_sek_2_10_025','today') %} | |
{% set current_price=states('sensor.nordpool_kwh_se4_sek_2_10_025') %} | |
{% if usable_battery_energy <=0 %} | |
False | |
{% else %} | |
{% if (hours_left-calc_battery_time) > 0 %} | |
{% set price_breakpoint=(nordpool_today[current_hour:24]|sort)[(nordpool_today[current_hour:24]|count-calc_battery_time)] %} | |
{% else %} | |
{% set price_breakpoint=(nordpool_today[current_hour:24]|sort)[0] %} | |
{% endif %} | |
{% if (current_price | float) >= (price_breakpoint | float) %} | |
True | |
{% else %} | |
False | |
{% endif %} | |
{% endif %} | |
#------------------------------------------- | |
#easee_cons_daily......................: {{easee_cons_daily}} | |
#easee_cons_hourly.....................: {{easee_cons_hourly}} | |
#energy_cons_daily.....................: {{energy_cons_daily}} | |
#energy_cons_hourly....................: {{energy_cons_hourly}} | |
#easee_cons_daily_lp...................: {{easee_cons_daily_lp}} | |
#easee_cons_hourly_lp..................: {{easee_cons_hourly_lp}} | |
#energy_cons_daily_lp..................: {{energy_cons_daily_lp}} | |
#energy_cons_hourly_lp.................: {{energy_cons_hourly_lp}} | |
#batt_soc..............................: {{batt_soc}} | |
#current_hour..........................: {{current_hour}} | |
#hours_left............................: {{hours_left}} | |
#usable_battery_energy.................: {{usable_battery_energy}} | |
#calc_battery_time.....................: {{calc_battery_time}} | |
#current_price.........................: {{current_price}} | |
#price_breakpoint......................: {{price_breakpoint}} | |
#nordpool_today........................: {{nordpool_today}} | |
#nordpool_today[current_hour:24........: {{nordpool_today[current_hour:24]}} | |
#(nordpool_today[current_hour:24)|sort.: {{(nordpool_today[current_hour:24])|sort}} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This binary sensor now requires integrations from Easee/NordPool/Ferroamp and the use of utility meter in HomeAssistant to work
use at own risk ;)