guerrerotook / securitas-direct-new-api

This repository contains the new securitas direct API that can be integrated in Home Assistant
Apache License 2.0
76 stars 30 forks source link

Blocking fail. No se puede desactivar la alarma. #144

Closed JaVier-Lloret closed 8 months ago

JaVier-Lloret commented 1 year ago

Al intentar desactivar la alarma el sistema indica un fallo de que no ha podido ejecutar el servicio. Tras este fallo resulta imposible poder volver a poner la integración en marcha y es necesario reiniciar el home assistant.

Adjunto registro del fallo por si aporta algo.

Seguiré investigando pero todas las aportaciones serán bien recibidas.

Gracias a todos.

======REGISTRO QUE SE CITA======

Este error se originó a partir de una integración personalizada.

Logger: homeassistant.helpers.script.websocket_api_script Source: custom_components/securitas/alarm_control_panel.py:163 Integration: Securitas Direct (documentation, issues) First occurred: 10:52:42 (1 occurrences) Last logged: 10:52:42

websocket_api script: Error executing script. Unexpected error for call_service at pos 1: 'str' object has no attribute 'operation_status' Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 452, in _async_step await getattr(self, handler)() File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 685, in _async_call_service_step await service_task File "/usr/src/homeassistant/homeassistant/core.py", line 1910, in async_call task.result() File "/usr/src/homeassistant/homeassistant/core.py", line 1950, in _execute_service await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)( File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 226, in handle_service await service.entity_service_call( File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 811, in entity_service_call future.result() # pop exception if have ^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 1034, in async_request_call await coro File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 851, in _handle_entity_call await result File "/config/custom_components/securitas/alarm_control_panel.py", line 320, in async_alarm_disarm await self.set_arm_state("DARM1") File "/config/custom_components/securitas/alarm_control_panel.py", line 163, in set_arm_state while disarm_status.operation_status == "WAIT": ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'str' object has no attribute 'operation_status'

guerrerotook commented 1 year ago

El problema es que el código de la integración está intentando leer un json que devuelve la API pero en vez de eso hay otro tipo de mensaje y la integración falla. ¿Puedes activar la traza DEBUG de la integración y ver que mensaje te devuelve la API? Cuidado de compartir nombre de usuario y contraseña.

danise76 commented 1 year ago

No se si estara relacionado. Me sicede lo mismo a veces, pero tanto para intentar desactivar como activar la alarma. No responde y se queda como indicais, y el fallo que he conseguido ver es que securitas considera que no hay sesion valida, da un error de autenticacion, aunque las credenciales son validas evidentemente (y por lo tanto seguro que no devuelve lo que debe la peticion que corresponda).

Reiniciando funciona sin pegas. Es algo que no sabria como poder reproducirlo, ya que pasa "cuando le da la gana" sin que haya visto algun patron de tiempo, de estado de activacion, etc...

No se si tiene que ver pero es parecido a cuando en la APP de securitas le das y no hace caso, y al rato vuelve a funcionar (cuando les pasa eso no se si es de error de comunicacio radio de la alarma o de sus sistemas).

montoyra commented 1 year ago

Hola,

Hay otro post con este mismo error al activar y desactivar la alarma. Yo soy nuevo y lo acabo de instalar pero me ocurre lo mismo. No me ha llegado a funcionar el activar/desactivar la alarma. Descubro bien los dispositivos, las entidades, la autenticacion con 2FA pero no logro armar y desarmar. He activado el DEBUG log y el error que da es el siguiente:

2023-09-05 17:45:14.139 DEBUG (MainThread) [custom_components.securitas.securitas_direct_new_api.apimanager] {"data":{"xSArmStatus":{"res":"ERROR","msg":"Lo sentimos. No se ha podido realizar la acción solicitada, por favor inténtelo de nuevo más tarde.","status":null,"protomResponse":null,"protomResponseDate":null,"numinst":"_","requestId":"_pollingStatus_1849101","error":{"code":"102","type":"NON_BLOCKING","allowForcing":true,"exceptionsNumber":1,"referenceId":"__"}}}}

2023-09-05 17:45:14.140 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140351863402816] 'str' object has no attribute 'operation_status' Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 226, in handle_call_service await hass.services.async_call( File "/usr/src/homeassistant/homeassistant/core.py", line 1974, in async_call response_data = await coro ^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/core.py", line 2011, in _execute_service return await target(service_call) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 235, in handle_service return await service.entity_service_call( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 870, in entity_service_call response_data = await _handle_entity_call( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 942, in _handle_entity_call result = await task ^^^^^^^^^^ File "/config/custom_components/securitas/alarm_control_panel.py", line 325, in async_alarm_arm_home await self.set_arm_state("ARMDAY1") File "/config/custom_components/securitas/alarm_control_panel.py", line 209, in set_arm_state while arm_status.operation_status == "WAIT": ^^^^^^^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'str' object has no attribute 'operation_status'

guerrerotook commented 11 months ago

He creado en esta rama del código una versión que muestra los errores a la hora de armar y desarmar.

https://github.com/guerrerotook/securitas-direct-new-api/blob/146-error-arming-but-dissarming/custom_components/securitas/alarm_control_panel.py

¿Podeis copiar el fichero alarm_control_panel.py en vuestras instalaciones para ver si funciona?