diff --git a/packages/control/bat_all.py b/packages/control/bat_all.py index 76713eab9b..8b327d60c1 100644 --- a/packages/control/bat_all.py +++ b/packages/control/bat_all.py @@ -174,6 +174,16 @@ def calc_power_for_all_components(self): self.data.get.soc = 0 else: self.data.config.configured = False + # prevent stale values when no inverter modules are configured + self.data.get.power = 0 + self.data.get.exported = 0 + self.data.get.fault_state = 0 + self.data.get.fault_str = NO_ERROR + self.data.get.daily_exported = 0 + self.data.get.imported = 0 + self.data.get.daily_imported = 0 + self.data.get.soc = 0 + self.data.get.power_limit_controllable = False except Exception: log.exception("Fehler im Bat-Modul") diff --git a/packages/helpermodules/measurement_logging/process_log.py b/packages/helpermodules/measurement_logging/process_log.py index bdab771624..24eab8feff 100644 --- a/packages/helpermodules/measurement_logging/process_log.py +++ b/packages/helpermodules/measurement_logging/process_log.py @@ -418,17 +418,18 @@ def get_grid_counter(entry) -> Dict: try: message = "" grid_counter = get_grid_counter(entry) - if (safe_get_nested(entry, "bat", "all", "fault_state") == 2 or - safe_get_nested(entry, "cp", "all", "fault_state") == 2 or - safe_get_nested(entry, "pv", "all", "fault_state") == 2 or + # Wenn neben dem "all" Eintrag kein weiterer Eintrag existiert, dann gibt es keine Komponenten. + if ((safe_get_nested(entry, "bat", "all", "fault_state") == 2 and len(entry.get("bat", {})) > 1) or + (safe_get_nested(entry, "cp", "all", "fault_state") == 2 and len(entry.get("cp", {})) > 1) or + (safe_get_nested(entry, "pv", "all", "fault_state") == 2 and len(entry.get("pv", {})) > 1) or grid_counter.get("fault_state", None) == 2): entry["energy_source"] = {"grid": 1, "pv": 0, "bat": 0, "cp": 0} - if safe_get_nested(entry, "bat", "all", "fault_state") == 2: + if safe_get_nested(entry, "bat", "all", "fault_state") == 2 and len(entry.get("bat", {})) > 1: message += EOOR_STATE_MSG.format("mind. einer der Speicher") - if safe_get_nested(entry, "cp", "all", "fault_state") == 2: + if safe_get_nested(entry, "cp", "all", "fault_state") == 2 and len(entry.get("cp", {})) > 1: message += EOOR_STATE_MSG.format("mind. einer der Ladepunkte") - if safe_get_nested(entry, "pv", "all", "fault_state") == 2: + if safe_get_nested(entry, "pv", "all", "fault_state") == 2 and len(entry.get("pv", {})) > 1: message += EOOR_STATE_MSG.format("mind. einer der Wechselrichter") if grid_counter.get("fault_state", None) == 2: message += EOOR_STATE_MSG.format("der Zähler für das Netz")