Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions packages/modules/common/component_state.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,11 +108,13 @@ def __init__(
self,
exported: float,
power: float,
imported: float = 0, # simulated import counter to properly calculate PV energy when bat is charged from AC
currents: Optional[List[Optional[float]]] = None,
dc_power: Optional[float] = None
):
"""Args:
exported: total energy in Wh
imported: total energy in Wh
power: actual power in W
currents: actual currents for 3 phases in A
dc_power: dc power in W
Expand All @@ -125,6 +127,7 @@ def __init__(
self.currents = currents
self.power = power
self.exported = exported
self.imported = imported
self.dc_power = dc_power


Expand Down
5 changes: 4 additions & 1 deletion packages/modules/common/store/_inverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ def fix_hybrid_values(self, state: InverterState) -> InverterState:
children = data.data.counter_all_data.get_entry_of_element(self.delegate.delegate.num)["children"]
power = state.power
exported = state.exported
imported = state.imported
if len(children):
hybrid = []
for c in children:
Expand All @@ -70,7 +71,9 @@ def fix_hybrid_values(self, state: InverterState) -> InverterState:
for bat in hybrid:
bat_get = data.data.bat_data[bat].data.get
power -= bat_get.power
exported += bat_get.imported - bat_get.exported

exported += bat_get.imported - bat_get.exported - imported

if state.dc_power is not None:
# Manche Systeme werden auch aus dem Netz geladen, um einen Mindest-SoC zu halten.
if state.dc_power == 0:
Expand Down
7 changes: 6 additions & 1 deletion packages/modules/devices/sma/sma_sunny_boy/inverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
from modules.common.store import get_inverter_value_store
from modules.devices.sma.sma_sunny_boy.config import SmaSunnyBoyInverterSetup
from modules.devices.sma.sma_sunny_boy.inv_version import SmaInverterVersion
from modules.common.simcount import SimCounter

log = logging.getLogger(__name__)

Expand All @@ -30,6 +31,7 @@ def __init__(self,
self.tcp_client = tcp_client
self.store = get_inverter_value_store(self.component_config.id)
self.fault_state = FaultState(ComponentInfo.from_component_config(self.component_config))
self.sim_counter = SimCounter(device_id, self.component_config.id, prefix="Wechselrichter")

def update(self) -> None:
self.store.set(self.read())
Expand Down Expand Up @@ -76,10 +78,13 @@ def read(self) -> InverterState:
'andernfalls kann ein Defekt vorliegen.'
)

imported, _ = self.sim_counter.sim_count(power_total * -1)

inverter_state = InverterState(
power=power_total * -1,
dc_power=dc_power * -1,
exported=energy
exported=energy,
imported=imported
)
log.debug("WR {}: {}".format(self.tcp_client.address, inverter_state))
return inverter_state
Expand Down