guerrerotook / securitas-direct-new-api

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

Too many request to Securitas central #29

Closed iNaiks closed 2 years ago

iNaiks commented 2 years ago

Hi, I'm from Spain. When I add the integration, Securitas call me to say that there is to many request to my central alarm and then it stops.

When is sent a request ? Can I limit the number of request? Or can I do anything with the alarma central?

Thanks!!!

guerrerotook commented 2 years ago

Yes, this is the expected behavior, there is an operation called check alarm that contacts the alarms to establish if the alarms is set or not. That is to synchronize if you arm you alarm by the key and not thought the app.

This process happens every 10 minutes and I'm going to have a setting in the UI, in the next release, where you can setup this or not. Because there is an API that read the last value from the server without calling the Centralita in your home.

Also for your information, I have the same comment from securitas, but it's fine.

iNaiks commented 2 years ago

Buenas, No entiendo muy bien las frases en ingles cuando son tan técnicas. No se si puedes responder en español:

Preguntas: -Donde encuentro la operación check alarm? ("there is an operation called check alarm"). Para poder hacer que lo compruebe cada 1~2 horas.

Es que en mi caso, cuando activo la integración y pasada una hora, no puedo desactivarla desde la app oficial de Securitas, y empiezan a llamarme como locos para comprobar cuando vuelve a estar disponible.

Muchas gracias !!

guerrerotook commented 2 years ago

Perdona, si te puedo responder en Español.

Lo que yo estoy haciendo con este componente es llamar a la API de Securtas Direct. Ellos tienen varias operaciones que puede hacer con esa API, como poner la alarma, quitarla, comprobar el estado todo eso.

Esta API, es la que mantiene el estado de la alarma, es la que sabe si tu alarma está conectada o no. Lo que hago yo con el componente es llamar a esa API, de la misma manera que lo hace la app oficial. Una de las operaciones que yo hago es CheckAlarm, que es basicamente comprobar el estado de la alarma en la centralita. Es como cuando tú le das a comprobar estado. Esa operación tarda tiempo en completarse, porque se contacta con tu alarma y se comprueba que esta conectada o no. Mientras se hace esa comprobación no se puede realizar otra operación.

Dicho todo esto existe otra forma de comprobar el estado que no es tan invasiva, que simplemente le preguntamos a la API cual es el último estado conocido de la alarma, en vez que securitas direct le pregunte a tu centralita. Esa operación es mucho más rápida y es la que planeo hacer en la próxima versión.

Ahora mismo estoy trabajando en esa nueva versión pero quiero probarla bien. Mi recomendación es que te deshabilites esa version hasta que te avise en esta issue de como activar esa forma nueva de comprobar el estado.

Espero haber sido de ayuda.

iNaiks commented 2 years ago

Tío así da gusto leer como funciona todo. Mil gracias, espero a la nueva versión, no hay prisa. Muchas gracias por todo 😁

guerrerotook commented 2 years ago

Ya esta la nueva versión que hace que no se hagan tantas llamadas a securitas direct.

33 Añade soporte de config flow

iNaiks commented 2 years ago

Faaaantassticoooo!!! He leído un poco y entiendo que es mejor tenerl el check_alarm en "false". Como puedo forzar el estado de la alarma? He hecho alguna prueba y la primera vez que he activado la alarma no se ha mostrado en Home Assistant (en la app de My Verisure si aparecía bloqueada) La he vuelto a armar y entonces si que ha quedado armada en HS.

Voy a ir viendo como va. Mil Gracias!!!!

guerrerotook commented 2 years ago

Pues voy a ver si hago uso de la plataforma llamada botón para hacer un botón que te permita actualizar el estado de la alarma.

javiermartingonzalez commented 2 years ago

Gracias, la otra implementación verificaba cada pocos minutos, no llegaba a los 5 minutos, creo que el desarrollador dijo que cada 2-3 minutos. Si haces un cambio manual, en la anterior implementación tardaba poco en descargarse el historia de la alarma y reflejarlo y en este tarda más.

Asimismo, hay veces que en la nueva API envías la señal, da error pero realmente si se ha hecho el cambio de alarma y se actualiza el estado más adelanta al finalizarse la petición, por lo que HomeAssistant se queda en modo "Armando" o "Desarmando" bastante tiempo hasta que no hace la siguiente verificación (sin poder ejecutar otra acción durante ese tiempo).

Ejemplo: Llego a casa, desconecto a los 2 minutos quiero poner modo parcial. No es posible si la desconexión ha tardado el servidor más de la cuenta en devolver la respuesta (o da un timeout y hay que ver en el estado de la alarma que si se ha hecho el cambio). Hasta que no pasa la siguiente verificación automáticamente, no deja hacer nada en HomeAssistant. He reportado esto a Securitas Direct, pero imagino que no harán ni caso.... anteriormente a usar GraphQL nunca daba este error, a mi con el sistema nuevo, me ocurre mucho.