Gladys Assistant 4.83: Actividad más rápida, limpieza DuckDB y 2FA Gladys Plus

¡Hola a todos!

¡La versión 4.83.0 está disponible! :rocket:

Después del gran lanzamiento 4.82 (registro de actividad + MQTT), esta versión se centra en la fiabilidad, el rendimiento y algunas mejoras muy concretas para el día a día, especialmente para las instalaciones con mucha historia y para Gladys Plus.


:high_voltage: Página de Actividad: visualización instantánea, incluso en bases grandes

En una instalación con cientos de millones de estados, filtrar la actividad en una categoría poco frecuente (aperturas, botones…) podía bloquear la interfaz durante varias decenas de segundos.

La página Actividad ahora carga el historial por ventanas de tiempo progresivas: los primeros eventos se muestran de inmediato, y la búsqueda continúa en segundo plano con una banda del tipo « Búsqueda de actividad — {mes}… ».

En una base de 448 millones de estados, un filtro « Aperturas » que tardaba 20–33 s en responder ahora muestra los primeros resultados en ~100 ms.

¡Gracias a @Terdious por este trabajo!


:broom: Limpieza automática de estados huérfanos (DuckDB)

Desde la migración de los historiales a DuckDB, un error hacía que la purga « no guardar más el historial » de una característica, así como la eliminación de dispositivos en algunos casos, no limpiaban correctamente los estados en DuckDB.

Resultado: estados « zombis » (características sin historial, o características ya eliminadas) podían acumularse durante años sin que nos diéramos cuenta, hasta la llegada del registro de actividad.

Esta versión corrige la purga y lanza una sola vez al inicio un trabajo en segundo plano que limpia los estados huérfanos, suavemente (por lotes, con pausas), para no saturar el CPU ni bloquear el resto de Gladys.

En una instalación de prueba, 45 millones de estados huérfanos fueron purgados. Puede seguir el progreso en Configuración → Tareas.

¡Gracias de nuevo a @Terdious!


:locked_with_key: Gladys Plus: flujo de 2FA rediseñado

Todo el flujo de autenticación doble de Gladys Plus ha sido retrabajado para manejar mejor muchos pequeños casos desagradables que me habían sido reportados (configuración faltante, errores de código, retroceso, etc.).

No duden en darme sus comentarios sobre la 2FA. Me gustaría que fuera más simple para los usuarios principiantes, y soy consciente de que los pasos de autenticación siguen siendo un poco complejos para un no técnico.

Un próximo paso sería añadir códigos de recuperación, para poder reiniciar la 2FA uno mismo en caso de pérdida del teléfono o de la aplicación de autenticación.


:ring_buoy: Restauración Gladys Plus: sin cuenta temporal

Al restaurar una copia de seguridad desde la pantalla de registro, Gladys creaba anteriormente una cuenta local temporal con credenciales hardcodeadas. Si el flujo era interrumpido o fallaba, esta cuenta podía quedar, bloquear el registro… y dejar una instancia en un estado molesto.

Esta cuenta temporal ha sido eliminada. La restauración funciona sin crear un usuario local, y las instancias ya « bloqueadas » por una antigua cuenta temporal son curadas automáticamente al inicio.


:clapper_board: Escenas: duración en segundos en el disparador de estado

En el disparador Cambio de estado de un dispositivo, la opción « ejecutar después de que la condición sea válida desde… » solo ofrecía minutos.

Ahora puede elegir segundos o minutos, práctico para reaccionar rápido (ej. : « si el movimiento sigue siendo detectado durante 10 segundos »).

Las escenas existentes siguen en minutos por defecto.


:desktop_computer: Interfaz

  • Tablero de control: los tipos de widgets están ordenados alfabéticamente según el idioma de la interfaz (gracias @Will_71)
  • Escenas: lo mismo para las listas de disparadores y acciones (gracias @Will_71)
  • MQTT: espaciado vertical excesivo corregido en la lista de dispositivos
  • Actividad: desplazamiento horizontal de los filtros mejorado en Windows
  • Escenas: corrección de un margen negro en las fichas de variables multilineales
  • HomeKit: los valores de temperatura de color fuera de límites (ej. bandas LED) ahora están limitados al máximo HomeKit (500 mireds), lo que evita las advertencias HAP del tipo « characteristic was supplied illegal value »

:hammer_and_wrench: Técnico

  • Migración DuckDB: paso del paquete duckdb (depreciado) a @duckdb/node-api. Mismo motor, mismos archivos .duckdb: ninguna migración de datos por parte del usuario. Los binarios precompilados reemplazan la compilación nativa.
  • Publicación automática del front Gladys Plus después de una versión de producción

:heart: Gracias a los contribuyentes

Un gran agradecimiento a @Terdious y @Will_71 por sus contribuciones a esta versión, y gracias a toda la comunidad por sus comentarios y pruebas, especialmente a aquellos de ustedes que hacen funcionar Gladys en bases de historial muy grandes: es gracias a ustedes que podemos validar estos rendimientos en condiciones reales.

Como siempre, Gladys se actualiza automáticamente en las 24 horas si usa Watchtower, de lo contrario puede hacerlo con un clic en la configuración.

¡No olviden configurar Telegram para recibir una alerta en su teléfono cuando Gladys se actualice!

Ver la nota de versión completa en GitHub

Gracias por esta versión :rocket:

De mi lado para la purga :

:scream:

¡Pero pero pero!^^ ¿Tú y @Will_71 eliminan dispositivos o características todos los días? :face_with_peeking_eye: :joy:

Como comentaba con Pierre-Gilles, yo tenía 20 de 450 millones de estados ^^ Yo nunca elimino nada :sweat_smile:

¿6 minutos para la limpieza completa? ¡Vaya suerte! ¿Gladys funciona en una bestia de máquina? En mi caso tarda más de 1 hora (demasiados estados :sweat_smile:)

Máquina virtual en un proxmox que empieza a tener bastantes máquinas virtuales :sweat_smile::

En cuanto a la máquina virtual:

image

En cuanto al número de estados de mi lado:
image

En mi defensa, he tenido muchos problemas con mi llave ethernet zigbee SMLIGHT, que perdía la mitad de los dispositivos después de unas horas, así que aproveché para renombrar los dispositivos en zigbee2mqtt, aunque perdiera los datos. No he tenido tiempo de renombrarlos en la base de datos.

Al final, el nuevo mini PC Beelink SER9 hace mucho mejor el trabajo y más rápido ^^

Claramente está pasando algo, pero ¿qué?.. misterio :joy:

@mutmut imagino que estás en Gladys Plus, actualiza la página y deberías ver las nuevas traducciones :slightly_smiling_face:

para nada, en local como la mayoría de las veces en casa

EDICIÓN: ¡pero la actualización funciona bien!

Gladys es una PWA, por lo que tu navegador guarda en caché todo el frontend, por lo que a veces necesitas un buen refresco para pasar a la versión siguiente :grin:

Acabo de llegar a casa y veo esto:

¿Es normal? ¿Quiere decir que si tenía estados huérfanos, ya no los tengo?

¡Sí es normal! Quiere decir que no tenías ninguno en absoluto ^^ Como Pierre-Gilles :wink: :sweat_smile:

¡Bravo :raising_hands:

Estoy del lado de los grandes huérfanos :rofl:


image

Me siento menos solo por este lado :joy:

El CPU ha subido 4°C de temperatura para realizar la limpieza de huérfanos.

Observo que la tasa de ocupación del disco se ha mantenido en el 16 %.

Agradezco a todos los contribuyentes por todas estas explosiones de novedades y mejoras.

Como no soy técnico, observo lo que pasa sin entenderlo del todo, pero la solución evoluciona. Logro aprovechar algunas de las nuevas posibilidades y me gusta mucho.

Hola @Jluc,
Sí, es normal, incluso si se eliminan en masa, no habría reducido tu ocupación del disco: DuckDB no reduce el tamaño de su archivo después de una eliminación, solo recicla el espacio liberado internamente para futuros datos.

Por lo tanto, en principio, en los próximos tiempos, tu base de datos no crecerá casi nada, hasta que se hayan cubierto los aproximadamente 250 MB que representaban estos estados ^^

Es genial ver a todos estos huérfanos abandonar el nido ^^

El impacto es mucho más en el tiempo, ya que no ayuda en el rendimiento de los historiales. Cuantas más datos haya que examinar, más pesadas se vuelven las consultas, cuando estos datos ya no son necesarios.

Creo que he encontrado por qué algunos tienen 0 estados pendientes de limpieza:

Este parámetro ^^ Si no se configura como ilimitado, la limpieza se realiza de forma natural, independientemente de si están huérfanos o no, supongo :wink:

En efecto, en mi caso está configurado para 1 año

En mi casa es ilimitado