I have a photovoltaic system (S10 Mini from E3DC), which I have integrated into home assistant via the HACS integration with
- 5,6kWp PV modules and
- 6,5kWh house battery that is charged in DC.
Whilst the inverter can handle up to 7,5kW in DC, it can only output up to 4,6kW in AC (technical data)
I further more have an electric vehicle that is charged via an E3DC wallbox and a heat pump, which is not required during summer times as the solar thermal elements generate sufficient warm water.
The wallbox can unfortunately not dynamically change between 1 and 3-phase charging.
The EV does only start charging with a minimum of 6A current and can be charged up to 16A.
To allow solar excess charging I use a 1-phase cable only (i.e. ranging from 6A230V = 1380W to 16A230V=3680W).
The house battery can charge anywhere from 0W up to 1500W.
With the above constraints I am having two problems that I would like to tackle by delaying the house battery charging.
- On sunny days the DC solar production could go beyond 4,6kW, which is not converted to AC. To prevent loss of energy I would like to have battery capacity left to charge the DC battery with the excessive solar production during those times.
- The house battery charging will, if not delayed start charging in the morning. However the house battery can only consume 1500W. Meaning when the solar production (not considering the direct power usage within the house) exceeds 1500W the system starts to export the energy into the grid, although at that point in time it could charge the car instead of the house battery and delay the charging of the house battery to a later point in time.
To know how much energy can still be loaded into the house battery I have created a template sensor
- sensor:
- name: remaining_battery_capacity
icon: mdi:home-battery
state: >
{{ (states('sensor.s10_mini_installed_battery_capacity')|float() * (1.0 - (states('sensor.s10_mini_state_of_charge')|float() / 100)))|round(2) }}
To know the expected solar production I am using the Meteo HACS integration. I was thinking about reading the Watts attribute of sensor.energy_production_today
to identify if values above a certain threshold are contained in order to activate the battery loading delay.
This could be achieved calling a service of the E3DC HACS Integration, where the charge limit can be set to 0W
- action: e3dc_rscp.set_power_limits
data:
device_id: CAFEAFFE #Device ID of S10 Mini Inverter
max_charge: 0
The limitation should be lifted by calling the E3DC service e3dc_rscp.clear_power_limits
(effectively allowing the battery to charge with upto 1500W again) either before the forecasted solar production for the remaining day (sensor.energy_production_today_remaining
) considering the forecasted house consumption, is not enough to load the remaining battery capacity (sensor. remaining_battery_capacity
) and a certain offset before the peak power time (sensor.power_highest_peak_time_today
), to start DC loading in case the solar power would exceed the inverters AC capacity, but also to be grid friendly.
My system has knowledge about my EV being at home (device_tracker.cupra_born_tracker```), its current battery state of charge (```sensor.cupra_born_state_of_charge
) and target state of charge (sensor.cupra_born_target_state_of_charge
), as well as the fact that it is plugged in to the wallbox (binary_sensor.e3dc_wallbox_plug
). This information could be used, if the vehicle would start charging by pure solar power excess, when the minimum current of 6A is reached.
How could this be covered by an automation?