Skip to content

Commit

Permalink
improves parsing of homedata lua values #44
Browse files Browse the repository at this point in the history
  • Loading branch information
bb-Ricardo committed Sep 28, 2022
1 parent 0f81839 commit b3b5dd1
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 7 deletions.
8 changes: 5 additions & 3 deletions fritzinfluxdb/classes/fritzbox/handler.py
Original file line number Diff line number Diff line change
Expand Up @@ -215,8 +215,10 @@ def query_service_data(self, service):
if call_result is None:
continue

log.debug(f"Request {self.name} service '{service.name}' returned successfully: "
f"{action.name} ({action.params})")
debug_msg = f"Request {self.name} service '{service.name}' returned successfully: {action.name}"
if len(action.params) > 0:
debug_msg += f" ({action.params})"
log.debug(debug_msg)

# set time stamp of this query
service.set_last_query_now()
Expand Down Expand Up @@ -447,7 +449,7 @@ def extract_value(self, service, data, metric_name, metric_params):
pass

if metric_value is None:
log.error(f"Unable to extract '{data_path}' form '{data}', got '{type(metric_value)}'")
log.error(f"Unable to extract '{metric_name}' form '{data}', got '{type(metric_value)}'")
return

if data_type in [int, float, bool, str]:
Expand Down
40 changes: 36 additions & 4 deletions fritzinfluxdb/classes/fritzbox/services_lua_homeauto.py
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,39 @@ def prepare_response_data(response):
"value_function": lambda data: (
float((int(grab(data, "temperature.celsius")) + int(grab(data, "temperature.offset")))/10)
),
"exclude_filter_function": lambda data: "temperature" not in data.keys()
"exclude_filter_function": lambda data: (
grab(data, "temperature.celsius") is None or grab(data, "temperature.offset") is None
)
},
"exclude_filter_function": lambda data: "device" not in data.get("devicelist").keys()
},

"ha_temperature_celsius": {
"data_path": "devicelist.device",
"type": list,
"next": {
# data struct type: dict
"type": float,
"tags_function": lambda data: {"name": data.get("name")},
"value_function": lambda data: (
float(int(grab(data, "temperature.celsius")) / 10)
),
"exclude_filter_function": lambda data: grab(data, "temperature.celsius") is None
},
"exclude_filter_function": lambda data: "device" not in data.get("devicelist").keys()
},

"ha_temperature_offset": {
"data_path": "devicelist.device",
"type": list,
"next": {
# data struct type: dict
"type": float,
"tags_function": lambda data: {"name": data.get("name")},
"value_function": lambda data: (
float(int(grab(data, "temperature.offset")) / 10)
),
"exclude_filter_function": lambda data: grab(data, "temperature.offset") is None
},
"exclude_filter_function": lambda data: "device" not in data.get("devicelist").keys()
},
Expand All @@ -155,7 +187,7 @@ def prepare_response_data(response):
"value_function": lambda data: (
float(int(grab(data, "powermeter.power")) / 1000)
),
"exclude_filter_function": lambda data: "powermeter" not in data.keys()
"exclude_filter_function": lambda data: grab(data, "powermeter.power") is None
},
"exclude_filter_function": lambda data: "device" not in data.get("devicelist").keys()
},
Expand All @@ -167,7 +199,7 @@ def prepare_response_data(response):
"type": float,
"tags_function": lambda data: {"name": data.get("name")},
"value_function": lambda data: grab(data, "powermeter.energy"),
"exclude_filter_function": lambda data: "powermeter" not in data.keys()
"exclude_filter_function": lambda data: grab(data, "powermeter.energy") is None
},
"exclude_filter_function": lambda data: "device" not in data.get("devicelist").keys()
},
Expand All @@ -181,7 +213,7 @@ def prepare_response_data(response):
"value_function": lambda data: (
float(int(grab(data, "powermeter.voltage")) / 1000)
),
"exclude_filter_function": lambda data: "powermeter" not in data.keys()
"exclude_filter_function": lambda data: grab(data, "powermeter.voltage") is None
},
"exclude_filter_function": lambda data: "device" not in data.get("devicelist").keys()
},
Expand Down

0 comments on commit b3b5dd1

Please sign in to comment.