Closed jacontre-c closed 8 months ago
A possible fix , would be for the API function to return proper object containing the error status, tested in my setup, it works, and it may be applicable to other areas, but I don't know interaction with HA API:
def check_alarm_status(
self, installation: Installation, referenceId: str
) -> CheckAlarmStatus:
"""Check status of the operation check alarm."""
content = {
"operationName": "CheckAlarmStatus",
"variables": {
"numinst": str(installation.number),
"panel": installation.panel,
"referenceId": referenceId,
"idService": "11",
"counter": 2,
},
"query": "query CheckAlarmStatus($numinst: String!, $idService: String!, $panel: String!, $referenceId: String!) {\n xSCheckAlarmStatus(numinst: $numinst, idService: $idService, panel: $panel, referenceId: $referenceId) {\n res\n msg\n status\n numinst\n protomResponse\n protomResponseDate\n }\n}\n",
}
response = self._execute_request(content)
result_json = json.loads(response.text)
if "errors" in result_json:
error_message = result_json["errors"][0]["message"]
#return error_message <<<< THIS
# _LOGGER.debug(result_json)
return CheckAlarmStatus(
"ERROR",
error_message,
"",
"",
"",
"",
)
else:
raw_data = result_json["data"]["xSCheckAlarmStatus"]
return CheckAlarmStatus(
raw_data["res"],
raw_data["msg"],
raw_data["status"],
raw_data["numinst"],
raw_data["protomResponse"],
raw_data["protomResponseDate"],
)
Can you check this with the new release v1.1.0.0 I just publish, #33 ?
This seems to be solved many releases ago.
Fiction update_overview expects to receive CheckAlarmStatus object from self.session.check_alarm_status, but in case of errors, the function returns a string This causes the following exception:
Logger: homeassistant Source: custom_components/securitas/init.py:137 Integration: Securitas Direct (documentation, issues) First occurred: 7:56:49 AM (1 occurrences) Last logged: 7:56:49 AM Error doing job: Future exception was never retrieved
Traceback (most recent call last): File "/usr/local/lib/python3.9/concurrent/futures/thread.py", line 52, in run result = self.fn(*self.args, *self.kwargs) File "/config/custom_components/securitas/alarm_control_panel.py", line 58, in setup_platform current_state: CheckAlarmStatus = hub.update_overview( File "/usr/src/homeassistant/homeassistant/util/init.py", line 277, in wrapper result = method(args, **kwargs) File "/config/custom_components/securitas/init.py", line 137, in update_overview while alarm_status.operationStatus == "WAIT": AttributeError: 'str' object has no attribute 'operationStatus'