3.4 KiB
Executable File
Explicación de Modos de Polling (Rápido vs. Full)
Este documento describe la arquitectura de consultas del monitor de TotalConnect 2.0, especificando el funcionamiento del Polling Rápido (Ligero) y del Polling Completo (Profundo), así como las circunstancias en las que se ejecuta cada uno.
1. Polling Rápido (Ligero / Delta)
El Polling Rápido es un mecanismo altamente optimizado diseñado para detectar cambios de estado en tiempo real con el mínimo consumo de ancho de banda y rendimiento.
- Tecnología Utilizada:
- SOAP: Método
GetLiveEvents(usando el SessionID GUID). - REST (Respaldo): Endpoint
/sessiondetails(ejecutado únicamente si SOAP está desactivado o falla).
- SOAP: Método
- Funcionamiento:
- Solicita al servidor de Honeywell la lista de eventos ocurridos a partir de un ID de evento de referencia (
LastEventIdReceived). - En modo de respaldo REST, solicita una lista compacta de las sucursales y sus estados básicos en una sola petición.
- No realiza consultas directas a los paneles físicos de las sucursales, lo que permite que la respuesta tarde menos de 1 segundo para cientos de ubicaciones.
- Solicita al servidor de Honeywell la lista de eventos ocurridos a partir de un ID de evento de referencia (
- Cuándo se ejecuta:
- De forma automática y continua: Cada 45 segundos en el hilo de segundo plano del servidor (
background_poller_thread).
- De forma automática y continua: Cada 45 segundos en el hilo de segundo plano del servidor (
2. Polling Completo (Profundo / Full)
El Polling Completo obtiene el estado exhaustivo de una o todas las sucursales, interactuando directamente con el panel físico a través de la nube de Resideo.
- Tecnología Utilizada: Endpoint REST
/partitions/fullStatusde cada sucursal. - Funcionamiento:
- Consulta el estado en tiempo real de cada partición (P1-P6) y zona (Z1-Z285).
- Extrae detalles críticos como fallos de zonas (puertas/ventanas abiertas), alarmas de fuego/gas/intrusión activas y horas localized de disparo de alarma.
- Actualiza la persistencia local en
last_state.jsony regenera el reporte visualstatus.html.
- Cuándo se ejecuta:
A. Para sucursales individuales (Optimización Delta):
Se ejecuta únicamente para las sucursales específicas que cambiaron, durante el ciclo automático de 45 segundos, si el Polling Rápido detecta alguna de las siguientes circunstancias:
- Actividad reportada por SOAP: Un evento nuevo en el delta de SOAP indica que hubo cambios en esa sucursal.
- Cambio de estado general: El estatus de armado básico en la respuesta REST de respaldo cambió respecto al valor en caché (ej: Desarmado ➔ Armado Stay).
- Alarma activa: La sucursal entra en un estado de alarma disparada (
ALARMING,ALARMING_FIRE_SMOKE, etc.). - Validación de restablecimiento: La sucursal tenía particiones disparadas en el ciclo anterior (necesario para verificar si ya se desactivó/silenció la alarma).
- Nueva sucursal: Se detecta una sucursal en la cuenta que no existía previamente en la caché.
B. Para todas las sucursales de la cuenta (Fuerza Bruta):
Se ejecuta una consulta completa para todas las sucursales de la cuenta bajo las siguientes circunstancias:
- Refresco manual: El usuario hace clic en el botón "Actualizar" en el panel web (lo que envía una solicitud POST a
/refreshconfull_refresh=True). - Arranque inicial sin caché: El servidor inicia por primera vez y no existe el archivo
last_state.json, lo que obliga a crear la base de datos de estatus desde cero.