Externe Integration - Synology

Hallo,

Hier ist eine neue externe Integration, die bald im Store verfügbar sein wird.
Sie ermöglicht die Überwachung von Systemmetriken, Volumes, SMART-Disk-Status und Backups eines Synology-NAS

Edit: Erstellt mit codex

Ich habe Claude durchlaufen lassen, um zu überprüfen, was Codex gemacht hat, und hier ist sein Feedback:

Robustheit

Timeout für jede DSM-Anfrage (AbortSignal.timeout, Standard 20 s, injizierbar über requestTimeoutMs). Dedizierte Meldung „Synology DSM hat nicht innerhalb von 20s geantwortet“ — ein NAS, das die Verbindung akzeptiert, aber nicht antwortet, friert inFlightRefresh oder alle folgenden Polls nicht mehr ein.
Konfigurationsfehler werden an die Gladys-UI gemeldet: Der Aufbau der Flotte ist nun im try-Block, die alte Verbindung wird in jedem Fall geschlossen, und ein ConfigValidationError (neue Klasse in src/config.js) wird gemeldet, ohne einen Neversuch zu planen — nur eine neue Konfiguration kann dies korrigieren.
Der MFA-Token blockiert nicht mehr: Lesen und Schreiben von /data eingekapselt, ein EACCES/EROFS erzeugt ein logger.warn statt einen Login zu scheitern, den DSM dennoch akzeptiert hat.
Login koalesziert (loginPromise + ensureSession(previousSid)): Eine abgelaufene Session während eines Snapshots löst nur eine einzige Authentifizierung aus statt fünf, und ein konkurrierender Aufruf überschreibt keine frische Session mehr.

Genauigkeit der Daten

healthState() für Volumes und Disks vereinheitlicht: Nur explizit gesunde oder explizit defekte Status veröffentlichen 1/0. Ein Wartungszustand (expanding, background_scrubbing, repairing, SMART nicht unterstützt) veröffentlicht nichts und behält den vorherigen Wert bei — keine falschen Alarme oder falschen „Alles in Ordnung“-Meldungen.
Teilausfälle sichtbar: lastErrors wird zu lastFailures ({ url, error }), und die Laufzeit verwandelt dies in einen verbundenen Status + eine Nachricht, die das fehlerhafte NAS benennt (1 Synology NAS nicht erreichbar: https://nas2 (…)). Die Aktion „Verbindung testen“ listet auch die nicht erreichbaren NAS auf.

Minor

5% Toleranz beim Throttle (PUBLISH_THROTTLE_RATIO): Ein Timer, der einige Millisekunden zu früh auslöst, springt nicht mehr einen ganzen Zyklus.
src/runtime.js: Die gesamte Orchestrierung wurde aus index.js extrahiert (der nun nur noch die SDK-Verkabelung durchführt), mit injizierbarem serviceFactory, backoff und scheduler → test/runtime.test.js deckt ungültige Konfiguration, Neversuche, degradierten Status, Timer, sauberen Stopp und Testaktion ab.
CI in Matrix Node 20 + 24: Der in engines deklarierte Mindeststandard wird nun tatsächlich überprüft, zusätzlich zur Docker-Image-Version.
Temperatur pro Disk (disk.temp), neues Feature DEVICE_TEMPERATURE_SENSOR. Netzwerkdurchsatz und Uptime wurden wie angefordert weggelassen — übrigens sperren zwei bestehende Tests ihre Abwesenheit explizit, es war eine bewusste Entscheidung.

Bonus entdeckt: Die Testverbindungsmeldung zeigte „DSM DSM 7.2.2“ (firmware_ver von DSM enthält bereits „DSM“). Korrigiert über einen Helper dsmLabel().

Alles wurde in Version 1.0.3 korrigiert.

In deinem Codex, hattest du ein bestimmtes Modell ausgewählt?

Ich hatte 5.6 (sol élevé) gewählt

Version 2 ist da mit Widgets, Auslösern und Aktionen :slight_smile:

Was macht diese Integration? :smiley:

Alles ist hier angegeben :wink: : GitHub - prohand/gladys-synology: Gladys external integration to connect synology in Gladys Assistant · GitHub