diff --git a/packages/helpermodules/measurement_logging/process_log_entry_builder.py b/packages/helpermodules/measurement_logging/process_log_entry_builder.py index bcb653a631..7457b5691c 100644 --- a/packages/helpermodules/measurement_logging/process_log_entry_builder.py +++ b/packages/helpermodules/measurement_logging/process_log_entry_builder.py @@ -94,9 +94,15 @@ def create_entry(sh_log_data: Optional[LegacySmartHomeLogData], previous_entry: counter_dict = {} counter_all_data = data.data.counter_all_data + # extra_meter-Zähler hängen an einem Verbraucher, nicht an einem Knoten der Zähler-Hierarchie - sie würden + # is_home_consumption_counter() daher immer mit einem IndexError abbrechen lassen. + extra_meter_ids = {consumer.data.extra_meter for consumer in data.data.consumer_data.values()} # Zählt alle effektiven Hausverbrauchs-Zähler, auch bei Auto-Vererbung über den Parent. is_home_consumption_by_counter = {} for current_counter in data.data.counter_data.values(): + if current_counter.num in extra_meter_ids: + is_home_consumption_by_counter[current_counter.num] = False + continue try: is_home_consumption_by_counter[current_counter.num] = counter_all_data.is_home_consumption_counter( current_counter.num) @@ -114,12 +120,7 @@ def create_entry(sh_log_data: Optional[LegacySmartHomeLogData], previous_entry: is_home_consumption_counter = is_home_consumption_by_counter.get(counter.num, False) if not is_grid_counter and is_home_consumption_counter and home_consumption_counter_count == 1: continue - skip_counter = False - if not is_grid_counter: - for consumer in data.data.consumer_data: - if counter.num == data.data.consumer_data[consumer].data.extra_meter: - skip_counter = True - break + skip_counter = not is_grid_counter and counter.num in extra_meter_ids if skip_counter is False: counter_dict.update( {f"counter{counter.num}": {