Sistema de alarma Gladys

Hola,

Después de unos días de uso, aquí está mi opinión sobre la gestión del sistema de alarma en Gladys.

Utilizo varios detectores y dispositivos para mi sistema de alarma:

  • aproximadamente 15 detectores de apertura
  • 4 detectores de movimiento Zigbee
  • 1 teclado de código Zigbee (el frient keyzb-110)
  • 4 cámaras
  • 1 FP2 aqara directamente en HomeKit

Actualmente, es posible crear un sistema de alarma en Gladys combinando escenas, desencadenantes y detectores.
Sin embargo, después de haber utilizado Alarmo en Home Assistant, creo que Gladys necesita hoy una capa dedicada a la gestión de un sistema de alarma.

El sistema actual me parece muy joven y mejorable.

El principal problema es que la alarma está actualmente compuesta por varias automatizaciones independientes

En Gladys, se pueden crear escenas para:

  • activar la alarma en modo ausencia;

  • activar la alarma parcialmente;

  • desactivar la alarma;

  • activar una sirena o una acción cuando un sensor detecta algo;

  • enviar una notificación;

  • gestionar posiblemente un retraso de entrada o salida.

Funciona, pero toda la lógica debe construirse manualmente: es largo, tedioso y posiblemente generador de errores.

El sistema no tiene realmente una lógica dedicada.

A imagen de Alarmo, me gustaría disponer de verdaderos estados que permitieran gestionar automáticamente acciones desde una interfaz de alarma:

  • Desarmada

  • Armado en curso

  • Armada ausencia

  • Armada noche

  • Armada presencia

  • Retraso de entrada

  • Alarma activada

Esta diferencia se vuelve importante tan pronto como la instalación comienza a tener varios sensores o varios modos de armado.

Punto importante, no existe el modo noche y este modo me falta terriblemente :sob:

La existencia de este modo de alarma en HomeKit también me falta.
Los modos disponibles son: En el hogar, Ausente y Desactivada.

En caso de activación, solo tengo una notificación por Telegram. Ya no tengo una alerta urgente en HomeKit.

Gestión de los sensores por modo

Otro punto muy práctico en Alarmo es la posibilidad de definir qué sensores participan en cada modo.

Por ejemplo:

Modo ausencia

  • puertas;

  • ventanas;

  • detectores de movimiento;

  • garaje.

Modo noche

  • puertas;

  • ventanas;

  • garaje;

  • pero no los detectores de movimiento interiores.

Modo presencia

  • solo ciertas aperturas o zonas periféricas.

En Gladys, esta lógica generalmente debe reproducirse en varias escenas.

Esto rápidamente genera duplicación, hace que las modificaciones sean más difíciles y multiplica el riesgo de errores.

Si añado un detector o si cambio el comportamiento de una zona, debo verificar varias escenas.

Gestión de los retrasos de entrada y salida

Para una verdadera alarma, algunos sensores deben poder tener un comportamiento específico.

Por ejemplo:

Una apertura de la puerta de entrada cuando la alarma está activa no debería necesariamente activar inmediatamente la sirena.

Debería poder iniciar un retardo de entrada de 30 segundos, permitiendo introducir un código en un teclado.

De la misma manera, al activar la alarma, debería poder haber un retardo de salida antes de que los sensores se activen.

Esta lógica puede crearse con escenas, pero se vuelve rápidamente compleja.

Gestión de los teclados

Por ejemplo, utilizo un teclado Zigbee que permite:

  • armado total;

  • armado de noche;

  • desarmado;

  • código PIN;

  • lectura de tarjeta RFID.

Hoy en día, la lógica entre el teclado y Gladys debe construirse manualmente, he comenzado esta construcción en Node Red pero lamento que esta función no esté integrada en Gladys.

Una integración de alarma podría permitir tener una base:

Teclado → comando de alarma → validación del código → cambio de estado

El teclado sería entonces solo una interfaz entre otras.

Podríamos tener simultáneamente:

  • uno o varios teclados Zigbee;

  • la aplicación Gladys;

  • botones físicos;

  • un lector de tarjetas;

  • escenas;

  • API;

  • un webhook.

Todos controlarían el mismo sistema de alarma.

Validación antes del armado

Otro comportamiento muy útil sería la verificación del estado de los sensores antes de armar la alarma.

Por ejemplo:

No es posible activar la alarma: ventana de la cocina abierta.

Con la posibilidad de:

  • cancelar el armado;

  • ignorar temporalmente el sensor;

  • forzar el armado.

Es especialmente práctico en una casa con muchos detectores de apertura.

Gestión de las zonas

También podría ser interesante introducir una noción de zona de alarma.

Por ejemplo:

  • Casa

  • Garaje

  • Exterior

Cada zona podría contener varios sensores.

Esto permitiría luego definir simplemente:

Modo noche = Periferia de la casa + Garaje

o:

Modo ausencia = Todas las zonas

Centralización de la configuración

Para mí, la principal ventaja de una funcionalidad dedicada sería tener una página:

Gladys → Alarma

con por ejemplo:

Estado

  • Desarmada

  • Armada

  • Retraso de entrada

  • Activada

Modos

  • Ausencia

  • Noche

  • Presencia

Sensores

  • Puerta de entrada

  • Ventana de la cocina

  • Movimiento en la sala

  • Puerta del garaje

Sirenas

Teclados

Retrasos

Notificaciones

Códigos de usuario

Toda la lógica estaría así centralizada.

Las escenas de Gladys podrían luego simplemente explotar los eventos de la alarma.

Por ejemplo:

Cuando la alarma pasa a «activada» → encender las luces + activar la sirena + enviar una notificación.

Las escenas seguirían siendo extremadamente útiles

La idea no sería en absoluto reemplazar el sistema de escenas de Gladys.

El componente Alarma gestionaría únicamente la lógica de negocio:

  • estados;

  • sensores;

  • zonas;

  • retrasos;

  • validación;

  • códigos.

Las escenas seguirían siendo responsables de las acciones alrededor de la alarma:

  • notificaciones;

  • iluminación;

  • TTS;

  • cámaras;

  • sirenas adicionales;

  • cierre de persianas;

  • etc.

Esto permitiría conservar toda la flexibilidad actual de Gladys evitando tener que reconstruir toda la lógica de una central de alarma en las escenas.

Ejemplo concreto

Hoy en día, para mi instalación, he tenido que construir parte de esta lógica con Node-RED para gestionar correctamente mi teclado Zigbee y los diferentes modos de alarma.

Funciona, pero me parece una lástima tener que recurrir a una solución externa para una función que me parece indispensable para una solución domótica.

Idealmente, Node-RED debería usarse para comportamientos muy específicos, no para mantener el estado de una alarma.


Creo que una solución inspirada en Alarmo sería particularmente interesante para Gladys, sin necesariamente buscar reproducir exactamente su funcionamiento.

Podría eventualmente tomar la forma:

  • de un nuevo servicio Gladys;

  • de una funcionalidad nativa;

  • o de una integración externa en primer lugar.

Personalmente, estaría muy interesado en participar en las reflexiones, las pruebas y eventualmente en el desarrollo de una primera integración.

También me gustaría saber cómo gestionan sus sistemas de alarma.

¿Utilizan únicamente las escenas?
¿Han desarrollado su propia solución?
¿Utilizan NodeRed o algún otro sistema externo?

¿Qué opinan de esta funcionalidad «central de alarma» en Gladys?
¿Les parece útil?

Les agradezco que hayan tomado el tiempo de leerme :grinning_face:

Por mi parte, mi sistema de alarma ha sido gestionado durante varios años por la centralita Myfox Control, adquirida desde entonces por Somfy. Tenía en su momento las ventajas que mencionas: fácil de configurar, con una lógica de vigilancia /encendido/apagado/nocturno muy sencilla. Pero tiene poca flexibilidad, y los sensores eran caros y ahora son inencontrables excepto de segunda mano…

En resumen, me gustaría pasar a un sistema de vigilancia basado en Gladys. Pero ya había probado el modo alarma sin quedar satisfecho, básicamente por las mismas razones que tú.

Por lo tanto, apoyo la demanda que expresas :+1:

Creo que puedes cambiar la categoría de tu tema a « solicitud de funciones », y votaré por ello :wink:

Hoy paso por las escenas y las tabletas murales.

Para mí el modo noche es mi alarma parcial que se activa con las aperturas de puertas, no con los sensores de movimiento.

Mi teclado es el de Gladys en modo tabletas.

Tengo un temporizador de 15/30 segundos después de abrir una puerta para desactivar mi sistema. Pero todo está gestionado por Gladys en mi caso. Sin embargo, confirmo que es una fuente de errores en el momento de la configuración. Pero lo probaba poco a poco.

Tengo escenas que llaman a otras, etc., pero es una idea de lo que se hizo en su momento.

Estoy de acuerdo con algunos puntos.

Voy a intentar crear las solicitudes de funciones relacionadas y las desarrollaremos según la importancia y la facilidad de cada solicitud.

¿Podréis completarlas para precisar la necesidad?

Hola @cicoub13.
He pedido a Codex que me ayude a organizar los requisitos.
¿Esto responde a tu solicitud de precisión?

F01 Estado centralizado de la alarma

Problema actual

El estado de un sistema de alarma complejo debe reproducirse actualmente a través de escenas, variables o estados intermedios.

Esto provoca:

  • duplicación de lógica;

  • dificultad para conocer el estado real de la alarma;

  • multiplicación de escenas;

  • dificultad para gestionar las transiciones;

  • riesgo de incoherencia entre varios medios de control.

Necesidad

Gladys debe disponer de un estado de alarma centralizado, utilizable por:

  • la interfaz;

  • las escenas;

  • la API;

  • las integraciones.

Estados propuestos

DISARMED
ARMING
ARMED
PENDING
TRIGGERED

El modo de armado se separa del estado:

HOME
NIGHT
AWAY

Ejemplo:

state = ARMED
mode = NIGHT

Transiciones principales

DISARMED
    │ arm(NIGHT)
    ▼
ARMING
    │ tiempo de salida terminado
    ▼
ARMED
    │ sensor activado
    ▼
PENDING
    │ tiempo de entrada terminado
    ▼
TRIGGERED
    │ disarm()
    ▼
DISARMED

Una detección sin retraso puede pasar directamente de ARMED a TRIGGERED.

Acciones esperadas

  • Arm

  • Disarm

  • Trigger

  • Cancel pending

Criterios de aceptación

  • Un sistema de alarma siempre tiene un estado único.
  • El estado sobrevive al reinicio de Gladys.
  • Todos los comandos pasan por la misma lógica.
  • Las transiciones están disponibles para las escenas.
  • La API permite leer el estado.
  • La API permite el armado y el desarmado.

Dependencia: ninguna.


F02 Modos Ausencia / Noche / Presencia

Problema actual

Una alarma doméstica no funciona únicamente en modo activado/desactivado.

El usuario debe poder proteger su vivienda de manera diferente según si está:

  • ausente;

  • presente;

  • durmiendo.

Necesidad

Añadir tres modos estándar:

Modo Significado
HOME Presencia
NIGHT Noche
AWAY Ausencia

Comportamiento esperado

Al armar:

Arm → Away
Arm → Night
Arm → Home

El estado central se convierte, por ejemplo, en:

state = ARMED
mode = NIGHT

Interfaz

El widget de la alarma podría proponer:

ALARMA

● Desactivada

[ Presencia ] [ Noche ] [ Ausencia ]

Una vez armada:

ALARMA

● Activada
Modo: Noche

[ Desactivar ]

Criterios de aceptación

  • Los tres modos pueden seleccionarse independientemente.
  • El modo actual es consultable.
  • Una escena puede conocer el modo activo.
  • Una escena puede solicitar un modo de armado.
  • La API expone el modo.

Dependencia: F01.


F03 Asignación de sensores a los modos

Problema actual

No todos los sensores deben activar la alarma en todos los modos.

Un detector de movimiento del salón debe, por ejemplo, funcionar en modo Ausencia, pero generalmente no en modo Noche.

Necesidad

Permitir asociar cada sensor a uno o varios modos.

Ejemplo

Sensor Presencia Noche Ausencia
Puerta entrada :white_check_mark: :white_check_mark: :white_check_mark:
Ventana salón :white_check_mark: :white_check_mark: :white_check_mark:
Movimiento salón :cross_mark: :cross_mark: :white_check_mark:
Movimiento pasillo :cross_mark: :cross_mark: :white_check_mark:
Puerta garaje :white_check_mark: :white_check_mark: :white_check_mark:

Regla de negocio

Sensor cambia de estado
        │
        ▼
Alarma ARMED?
        │
       Sí
        ▼
Sensor activo para el modo?
        │
       Sí
        ▼
Tratar la intrusión

De lo contrario, el evento es ignorado por el motor de la alarma.

Criterios de aceptación

  • Un equipo Gladys existente puede convertirse en sensor de alarma.
  • Un sensor puede pertenecer a varios modos.
  • Una modificación no requiere recrear las escenas.
  • Un sensor desactivado para el modo actual no activa la alarma.

Dependencias: F01 + F02.


F04 Retrasos de entrada y salida

Problema actual

Una alarma debe permitir al usuario:

  • salir de la casa después del armado;

  • entrar en la casa antes de tener que desactivar la alarma.

Necesidad

Añadir:

  • Exit delay — retraso de salida;

  • Entry delay — retraso de entrada.

Retraso de salida

Ejemplo:

Arm Away
    │
    ▼
ARMING
    │
  30 segundos
    ▼
ARMED

Durante este retraso, los sensores no provocan una intrusión.

Retraso de entrada

El retraso debe poder definirse idealmente por sensor.

Sensor Retraso
Puerta entrada 30 s
Puerta garaje 45 s
Ventana Inmediato
Movimiento salón Inmediato

Una puerta con temporizador provoca:

ARMED
   │
   ▼
PENDING
   │
 30 s
   ▼
TRIGGERED

Si el usuario desactiva durante los 30 segundos:

PENDING → DISARMED

Criterios de aceptación

  • Retraso de salida configurable.
  • Retraso de entrada configurable.
  • Posibilidad de activación inmediata.
  • Cancelación del temporizador al desarmar.
  • Los cambios ARMING y PENDING son utilizables en las escenas.

Dependencias: F01 + F03.


F05 Verificación antes del armado y bypass

Problema actual

Es posible solicitar la activación cuando una puerta o ventana ya está abierta.

Necesidad

Antes del armado, Gladys verifica todos los sensores afectados.

Ejemplo:

Imposible activar la alarma

2 aperturas detectadas:

• Ventana cocina
• Puerta garaje

[ Cancelar ]
[ Reintentar ]
[ Ignorar los sensores abiertos ]

Bypass

Un sensor ignorado se convierte temporalmente en:

BYPASSED

El bypass desaparece automáticamente en el siguiente desarmado.

Seguridad

El bypass debe ser claramente visible:

ALARMA

● Activada — Ausencia

⚠️ 1 sensor ignorado

Ventana cocina

Criterios de aceptación

  • Verificación antes del armado.
  • Lista de sensores problemáticos.
  • Posibilidad de rechazar el armado.
  • Posibilidad de bypass temporal.
  • Eliminación del bypass al desarmar.
  • Evento de bypass disponible para las escenas y el registro.

Dependencias: F01 + F03.


F06 Integración completa con las escenas de Gladys

Objetivo

El motor de la alarma debe gestionar la seguridad, y luego dejar que las escenas de Gladys decidan las consecuencias.

Disparadores propuestos

  • Alarma: armado solicitado

  • Alarma: armada

  • Alarma: retraso de entrada iniciado

  • Alarma: activada

  • Alarma: desactivada

  • Alarma: sensor bypassed

Con información contextual:

mode
sensor
room
timestamp
user

Acciones propuestas

En una escena:

Alarma → Armar → Ausencia
Alarma → Armar → Noche
Alarma → Armar → Presencia
Alarma → Desarmar

Ejemplo

CUANDO
    Alarma activada

SI
    Modo = Ausencia

ENTONCES
    → activar sirena
    → encender iluminación
    → enviar notificación
    → lanzar escena cámara

Criterios de aceptación

  • Cada transición importante puede activar una escena.
  • Una escena puede armar/desarmar.
  • El modo está disponible en el contexto.
  • El sensor que activó el evento es identificable.
  • Ningún comportamiento sirena/TTS/cámara es impuesto por el motor.

Dependencia: F01.


F07 Zonas de alarma

Problema

Configurar individualmente varias decenas de sensores se vuelve rápidamente difícil.

Necesidad

Permitir agrupar los sensores en zonas lógicas.

Ejemplo

Perímetro
├── Puerta entrada
├── Ventana cocina
└── Ventana salón

Interior
├── Movimiento salón
└── Movimiento pasillo

Garaje
├── Puerta garaje
└── Movimiento garaje

Los modos pueden luego utilizar las zonas:

Zona Presencia Noche Ausencia
Perímetro :white_check_mark: :white_check_mark: :white_check_mark:
Interior :cross_mark: :cross_mark: :white_check_mark:
Garaje :white_check_mark: :white_check_mark: :white_check_mark:

Criterios de aceptación

  • Creación/modificación/eliminación de una zona.
  • Añadir varios sensores.
  • Una zona puede ser utilizada por varios modos.
  • El origen exacto de una intrusión sigue siendo identificable.

Dependencia: F03.


F08 Códigos PIN de usuarios

Objetivo

Permitir una autenticación independiente del dispositivo utilizado.

El PIN pertenece, por lo tanto, a Gladys / al usuario, y no al teclado Zigbee.

Ejemplo

Quentin
PIN: ••••

Permisos:
✓ Armado
✓ Desarmado
Invitado
PIN: ••••

Permisos:
✓ Desarmado

Validez:
08/09 → 15/09

Características

Prever:

  • PIN individual;

  • activación/desactivación;

  • posiblemente una fecha de validez;

  • identificación del usuario que desarmó;

  • posibilidad futura de diferentes permisos.

Seguridad

:warning: Los PIN nunca deben almacenarse o registrarse en texto claro.

Criterios de aceptación

  • Varios PIN posibles.
  • Un PIN corresponde a un usuario.
  • Verificación centralizada por Gladys.
  • PIN revocable.
  • PIN temporal posible a largo plazo.
  • Ningún PIN en texto claro en los registros.

Dependencia: F01.


F09 Soporte para teclados de alarma

Objetivo

Permitir que los teclados físicos Zigbee / Zigbee2MQTT controlen la central.

Por ejemplo:

Frient KEYZB-110

Principio arquitectónico

El teclado no contiene ninguna lógica de negocio.

Teclado
   │
   ▼
Zigbee2MQTT
   │
   ▼
Gladys
   │
   ▼
Servicio de Alarma

Por ejemplo, transmite:

ARM_HOME
ARM_NIGHT
ARM_AWAY
DISARM
PIN

Gladys decide luego si la acción está autorizada.

Retorno al teclado

Cuando el hardware lo permite, Gladys debe poder transmitir:

  • armado exitoso;

  • armado rechazado;

  • PIN incorrecto;

  • desarmado exitoso;

  • alarma activada.

Con posiblemente un retorno:

  • sonoro;

  • LED;

  • visual.

Extensibilidad

La arquitectura no debe ser específica de Frient.

Un dispositivo debe poder exponer características estandarizadas:

alarm-arm
alarm-disarm
alarm-code
alarm-status

Criterios de aceptación

  • Un teclado puede solicitar el armado.
  • Un teclado puede solicitar el desarmado.
  • El PIN es validado por Gladys.
  • Varios teclados pueden controlar la misma alarma.
  • El sistema sigue funcionando sin teclado.
  • La integración no está vinculada a un modelo en particular.

Dependencias: F01 + F02 + F08.


F10 Interfaz centralizada de Alarma

Esta funcionalidad reúne todo lo demás para el usuario.

Objetivo

Crear en Gladys una página dedicada:

Configuración
└── Alarma

o un servicio equivalente.

Pantalla principal

ALARMA CASA

Estado
● Desarmada

Modos
○ Presencia
○ Noche
○ Ausencia

Sensores
18 configurados
✓ 17 OK
⚠️ 1 abierto

[ Configurar ]

Configuración

Secciones propuestas:

  1. General

  2. Modos

  3. Zonas

  4. Sensores

  5. Retrasos

  6. Usuarios / códigos

  7. Teclados

  8. Historial

Tablero

Un widget de Gladys también permitiría:

┌─────────────────────────┐
│ 🛡️ Alarma casa        │
│                         │
│ ● Desarmada              │
│                         │
│ Presencia   Noche         │
│ Ausencia                 │
└─────────────────────────┘

En caso de intrusión

🚨 ALARMA ACTIVADA

Puerta del garaje
19:42

[ Desarmar ]

También prever la notificación de intrusiones en HomeKit como una notificación urgente, cuando la integración lo permita.

Criterios de aceptación

  • Consulta inmediata del estado.
  • Armado/desarmado.
  • Elección del modo.
  • Visualización de los sensores abiertos.
  • Visualización de los sensores bypass.
  • Configuración sin tener que crear escenas manualmente.
  • Interfaz utilizable en móvil.

Dependencias: idealmente F01 a F09.

@quentins33 gracias por el trabajo de organización — tu división en F01 → F10 fue directamente utilizable, pude partir de ahí en lugar de empezar desde cero.

He creado 9 solicitudes de funcionalidades, una por tema, para que podamos votar y avanzar en cada una de manera independiente. Aquí está la correspondencia con tus necesidades:

Tu necesidad Solicitud creada Nota
F01 Estado centralizado A6 · Estado « activada » y contexto + A2 · Sensores Repartido en dos solicitudes, ver abajo
F02 Modos Ausencia / Noche / Presencia A1 · Modo noche
F03 Asignación de sensores a los modos A2 · Sensores vigilados y activos por modo El corazón del proyecto
F04 Retrasos de entrada y salida A3 · Retraso de entrada El retraso de salida ya existe
F05 Verificación antes de armar y bypass A4 · Verificación y desactivación
F06 Integración con las escenas A6 · Estado « activada » y contexto
F07 Zonas de alarma A5 · Zonas
F08 Códigos PIN de usuarios A7 · Un código por usuario
F09 Soporte de teclados A8 · Teclados físicos
F10 Interfaz centralizada A9 · Página Alarma dedicada

Por qué F01 no tiene su propio tema

Gladys ya tiene un estado de alarma centralizado: vive en la casa, sobrevive al reinicio, y todos los comandos pasan por él. Lo que falta no es el estado en sí, sino dos cosas diferentes — un estado « activada » distinto del botón de pánico (A6), y un motor capaz de cambiarlo solo cuando un sensor detecta algo (A2). Una solicitud « estado centralizado » habría estado en gran parte ya satisfecha, difícil de evaluar y votar.

Lo que ya existe, para situar

Útil para entender por qué algunas solicitudes son más pequeñas que otras: Gladys ya sabe armar, armar parcialmente, desarmar con un código y pasar al pánico; el retraso antes de armar es ajustable; las tablets se bloquean cuando la casa está armada; seis disparadores de escena y dos acciones existen; y la alarma está expuesta a HomeKit como sistema de seguridad — sin el modo noche, precisamente porque Gladys no lo tiene.

Lo que no existe en absoluto es el vínculo entre un sensor y la alarma. Esto explica por qué todo debe ser reconstruido en las escenas, y por qué A2 es la solicitud más pesada del lote.

Dos solicitudes del foro ya abiertas han sido retomadas

Añadir un disparador « Alarma: código ingresado » y poder probar varios modos en una condición están integradas en A6: van exactamente en la misma dirección.

Por dónde podemos empezar

Cuatro solicitudes no dependen de nada y pueden ser desarrolladas en paralelo: A1 (modo noche), A2 (sensores), A7 (códigos) y una parte de A6. Todo lo demás depende de esto. A1 es de lejos la más rápida de entregar y ya desbloquea el botón Noche en HomeKit.

Lo que ayudaría ahora

Cada tema termina con una lista de preguntas por resolver — son los puntos que bloquean la redacción de una especificación. Sus respuestas, sus usos reales y sus desacuerdos sobre estas preguntas son exactamente lo que necesitamos para avanzar. Sabiendo que hay que mantener el sistema flexible, pero lo más simple posible (para poder desarrollarlo fácilmente, mantenerlo y para que un usuario no necesite leer un manual).

@quentins33 @StephaneB @spenceur si ven una necesidad mal traducida o una división que les parece inestable, diganlo: es el momento de corregirlo, antes de que comience el desarrollo.

¡Bravo a los dos por este trabajo que aclara bien la necesidad. En general, todo lo que está listado me parece coherente y no veo ningún ‹ hueco en la raqueta › en comparación con lo que puedo hacer hoy en mi alarma Myfox. ¡Y va mucho más allá, así que es genial!

Intentaré tomarme el tiempo el domingo para dar mi opinión sobre las diferentes ‹ cuestiones a resolver ›…

Genial, gracias por la creación de las solicitudes de funciones.
Voy a revisar cada una rápidamente para darte mi opinión.