@@ -1183,10 +1183,10 @@ def _heating_valves(self) -> int | None:
11831183 return None if loc_found == 0 else open_valve_count
11841184
11851185 def _power_data_peak_value (self , direct_data : DeviceData , loc : Munch ) -> Munch :
1186- """Helper-function for _power_data_from_location()."""
1186+ """Helper-function for _power_data_from_location() and _power_data_from_modules() ."""
11871187 loc .found = True
1188-
1189- # If locator not found look for gas_consumed or phase data (without tariff)
1188+ # If locator not found look for P1 gas_consumed or phase data (without tariff)
1189+ # or for P1 legacy electricity_point_meter or gas_*_meter data
11901190 if loc .logs .find (loc .locator ) is None :
11911191 if "log" in loc .log_type and (
11921192 "gas" in loc .measurement or "phase" in loc .measurement
@@ -1243,17 +1243,16 @@ def _power_data_from_location(self, loc_id: str) -> DeviceData:
12431243 """
12441244 direct_data : DeviceData = {}
12451245 loc = Munch ()
1246-
1247- search = self ._locations
12481246 log_list : list [str ] = ["point_log" , "cumulative_log" , "interval_log" ]
12491247 peak_list : list [str ] = ["nl_peak" , "nl_offpeak" ]
12501248 t_string = "tariff"
12511249
1250+ search = self ._locations
12521251 loc .logs = search .find (f'./location[@id="{ loc_id } "]/logs' )
1253- # meter_string = ".//{}[type='{}']/"
12541252 for loc .measurement , loc .attrs in P1_MEASUREMENTS .items ():
12551253 for loc .log_type in log_list :
12561254 for loc .peak_select in peak_list :
1255+ # meter_string = ".//{}[type='{}']/"
12571256 loc .locator = (
12581257 f'./{ loc .log_type } [type="{ loc .measurement } "]/period/'
12591258 f'measurement[@{ t_string } ="{ loc .peak_select } "]'
@@ -1275,32 +1274,30 @@ def _power_data_from_modules(self) -> DeviceData:
12751274 Collect the power-data from MODULES (P1 legacy only).
12761275 """
12771276 direct_data : DeviceData = {}
1278- mod = Munch ()
1279-
1280- search = self ._modules
1277+ loc = Munch ()
12811278 mod_list : list [str ] = ["interval_meter" , "cumulative_meter" , "point_meter" ]
12821279 peak_list : list [str ] = ["nl_peak" , "nl_offpeak" ]
12831280 t_string = "tariff_indicator"
12841281
1282+ search = self ._modules
12851283 mod_logs = search .findall ("./module/services" )
1286- # meter_string = ".//{}[type='{}']/"
1287- for mod .measurement , mod .attrs in P1_LEGACY_MEASUREMENTS .items ():
1288- mod .meas_list = mod .measurement .split ("_" )
1289- for mod .logs in mod_logs :
1290- for mod .log_type in mod_list :
1291- for mod .peak_select in peak_list :
1292- mod .locator = (
1284+ for loc .measurement , loc .attrs in P1_LEGACY_MEASUREMENTS .items ():
1285+ loc .meas_list = loc .measurement .split ("_" )
1286+ for loc .logs in mod_logs :
1287+ for loc .log_type in mod_list :
1288+ for loc .peak_select in peak_list :
1289+ loc .locator = (
12931290 f"./{ mod .meas_list [0 ]} _{ mod .log_type } /measurement"
12941291 f'[@directionality="{ mod .meas_list [1 ]} "][@{ t_string } ="{ mod .peak_select } "]'
12951292 )
1296- mod = self ._power_data_peak_value (direct_data , mod )
1297- if not mod .found :
1293+ loc = self ._power_data_peak_value (direct_data , loc )
1294+ if not loc .found :
12981295 continue
12991296
13001297 direct_data = power_data_energy_diff (
1301- mod .measurement , mod .net_string , mod .f_val , direct_data
1298+ loc .measurement , loc .net_string , loc .f_val , direct_data
13021299 )
1303- direct_data [mod .key_string ] = mod .f_val # type: ignore [literal-required]
1300+ direct_data [loc .key_string ] = loc .f_val # type: ignore [literal-required]
13041301
13051302 return direct_data
13061303
0 commit comments