Integración externa - Synology

Hola,

Aquí tienes una nueva integración externa que estará disponible pronto en la tienda.
Permitirá supervisar las métricas del sistema, volúmenes, estados SMART de los discos y copias de seguridad de un NAS Synology

Edición: Hecho con codex

Hice que Claude revisara lo que había hecho Codex y aquí está su respuesta:

Robustez

Timeout en cada solicitud DSM (AbortSignal.timeout, 20 s por defecto, inyectable vía requestTimeoutMs). Mensaje dedicado « Synology DSM no respondió en 20s » — un NAS que acepta la conexión sin responder ya no congela inFlightRefresh ni todas las consultas siguientes.
Error de configuración reportado en la UI de Gladys: la construcción de la flota ahora está en el try, la antigua conexión se cierra en todos los casos, y un ConfigValidationError (nueva clase en src/config.js) se señala sin programar un retry — solo una nueva configuración puede corregirlo.
El token MFA ya no es bloqueante: lectura y escritura de /data encapsuladas, un EACCES/EROFS produce un logger.warn en lugar de hacer fallar un inicio de sesión que DSM ha aceptado.
Inicio de sesión coalescido (loginPromise + ensureSession(previousSid)): una sesión expirada durante un snapshot desencadena una sola autenticación en lugar de cinco, y una llamada concurrente ya no sobrescribe una sesión fresca.

Precisión de los datos

healthState() unificado para volúmenes y discos: solo los estados explícitamente sanos o explícitamente fallidos publican 1/0. Un estado de mantenimiento (expanding, background_scrubbing, repairing, SMART no soportado) no publica nada y conserva el valor anterior — más falsas alarmas, ni falsos « todo va bien ».
Fallos parciales visibles: lastErrors se convierte en lastFailures ({ url, error }), y el runtime transforma esto en estado conectado + mensaje nombrando el NAS en defecto (1 NAS Synology inalcanzable: https://nas2 (…)). La acción « Probar la conexión » también lista los NAS inalcanzables.

Menor

Tolerancia del 5% en el throttle (PUBLISH_THROTTLE_RATIO): un temporizador que se activa unos ms antes ya no hace saltar un ciclo completo.
src/runtime.js: toda la orquestación extraída de index.js (que solo hace el cableado SDK), con serviceFactory, backoff y scheduler inyectables → test/runtime.test.js cubre configuración inválida, retry, estado degradado, temporizadores, parada limpia y acción de prueba.
CI en matriz Node 20 + 24: el suelo declarado en engines ahora se verifica realmente, además de la versión de la imagen Docker.
Temperatura por disco (disk.temp), nueva característica DEVICE_TEMPERATURE_SENSOR. Ancho de banda de red y tiempo de actividad dejados de lado como se solicitó — de paso, dos pruebas existentes bloquean explícitamente su ausencia, era una elección asumida.

Bonus detectado de paso: el mensaje de prueba de conexión mostraba « DSM DSM 7.2.2 » (el firmware_ver de DSM ya contiene « DSM »). Corregido mediante un helper dsmLabel().

Todo ha sido corregido en la versión 1.0.3

¿En el código, habías elegido un modelo en particular?

Había elegido 5.6 sol elevado

La versión 2 está disponible con los widgets, disparadores y acciones :slight_smile:

¿Qué hace esta integración? :smiley:

Todo está indicado aquí :wink: : GitHub - prohand/gladys-synology: Gladys external integration to connect synology in Gladys Assistant · GitHub