Anwendungsbeschreibung
Begrifssklärung
NAS: Network Attached Storage https://de.wikipedia.org/wiki/Network_Attached_Storage
USV: Unterbrechungsfreie Stromversorgung https://de.wikipedia.org/wiki/Unterbrechungsfreie_Stromversorgung
USP: Uninterruptible power supply https://en.wikipedia.org/wiki/Uninterruptible_power_supply
Komponenten
iobroker RasPi 4
(keine SD-Karte, kein USB Stick)
-
Plattform linux, Betriebssystem linux
- Architektur arm64, CPUs 4, Geschwindigkeit 1500 MHz, Modell Cortex-A72, RAM 3.7 GB
- OS: 2023-02-21-raspios-bullseye-arm64-lite.img.xz
- ETCHER FOR WINDOWS (X86|X64) (PORTABLE): https://www.balena.io/etcher#download-etcher
- Node.js v18.15.0, NPM 9.5.0
- USB3 Hub inkl Netzteil: SSD Datenträgergröße 60 GB
- log2ram https://linuxhint.com/improve-sd-card-lifespan-log2ram-raspberry-pi/
- Aktive Instanzen 19
-
Instanzen
- Admin v6.3.5
- snmp.0 v2.4.5
NAS Synology
- modelName: DS214
- version: DSM 6.2-25556
- Volume 1: Storage Pool 1
- Drive 1: WD30EFRX
- Drive 2: ST3000VN007
USV
- EATON
- Ellipse ECO 650, Battery chemistry PbAc
- Anbindung der USV an das NAS, USB B --> USB A Kabel (NAS)
Ziel
Ich möchte das NAS mit einer USV vor Stromausfällen sichern und auch die verwendete iobroker hardware mit einbinden. Sodass auch der raspberry pi bei einem Stromausfall in einen sicheren Betrieb schaltet.
Das NAS habe ich schon einige Jahre im Betrieb. Bisher hat eine Festplatte im Raid frühzeitig IO Fehler gemeldet. Diese habe ich dann getauscht, seitdem keine weiteren Problem mehr. Außerdem kann man über die snmp.0 Instanz noch weitere Daten des NAS und der USV lesen um den Zustand beider Geräte aufzuzeichnen.
Priorität:
- das NAS in einen sicheren Zustand schalten
- den RasPi in einen sicheren Zustand schalten
- alle weiteren Daten aufzeichnen.
Kurzbeschreibung der Lösung
Priorität1:
Die USV ist per USB Kabel mit dem NAS verbunden, meldet jegliche Stromschwankungen und bietet einen Puffer für einen Stromausfall. Damit ist erstmal sichergestellt, dass sich das NAS absichert. Komplexität reduzieren: Das NAS regaiert mit dem USV ohne jegliche andere Komponente, wie z.B. Netzwerkserver, Router, Switch, DNS etc.
Priorität2:
Die USV ist per USB Kabel mit dem NAS verbunden und das NAS liefert über das Netzwerk per SNMP Daten über den USV Zustand. Bei einem Event über die snmp.0 Instanz schaltet der RasPi in einen sicheren Zustand oder fährt sich komplett herunter. Diese Daten der USV mögen bei einem Stromausfall nicht mehr verfügbar sein, weil das Netzwerk eventuell nicht mehr korrekt funktioniert.
Priorität3:
Das NAS ist im Netzwerk und liefert per SNMP Daten über den eigenen Zustand.
Zusätzlich: Lese ich die Daten per iobroker SNMP Instanz und Protokoll vom NAS. Weitere Daten können auch gelesen werden, z.b. Systemzustand, Raiddaten, Diskdaten, Temperaturen, Fan Status etc. Diese zusätzlichen Daten mögen bei einem Stromausfall nicht mehr verfügbar sein, weil das Netzwerk eventuell nicht mehr korrekt funktioniert.
Warum denn nicht das NUT nutzen?
Ich vertraue nicht darauf, dass das Heim-Netzwerk bei einem Stromausfall noch richtig funktioniert. Eventuell führt das Problem des Stromausfalls noch weiter und mein DSL Router funktioniert nicht richtig.
Quellen
Characteristics of the ups information: https://mibs.observium.org/mib/SYNOLOGY-UPS-MIB/
iobroker - Temperaturen von Synology auslesen https://www.synology-forum.de/threads/iobroker-temperaturen-von-synology-auslesen.117282/
Warum habe ich die EATON Ellipse ECO 650 gewählt?
War auf der Kompatibilitätsliste des NAS und hatte mir einen einfachen Eindruck gemacht. Auf einem Windows PC erscheint die USV als Batterie, wie bei einem Laptop. Auf dem Synology NAS war die Anbindung leicht und einfach, siehe hier unten.
Verbindung
An der Synology DS214 einen USB A Anschluß wählen und Kabel einstecken. Kabel mit USB A am USV einstecken. Das USV wurde gleich vom NAS erkannt, siehe "Benachrichtigungen".
Konfiguration an der USV
- keine
Konfiguration des NAS Synology DS214
Systemsteuerung
- Terminal & SNMP
- TAB: SNMP
- ON:SNMP-Service aktivieren
- ON:SNMPv1, SNMPv2 Dienst
- Community: public
- OFF:SNMPv3 Dienst
- ON:SNMPv1, SNMPv2 Dienst
- ON:SNMP-Service aktivieren
- TAB: SNMP
Hilfe:
Link1: https://global.synologydownload.com/download/Document/Software/DeveloperGuide/Firmware/DSM/All/enu/Synology_DiskStation_MIB_Guide.pdf
Link2: https://kb.synology.com/en-us/DSM/help/DSM/AdminCenter/system_snmp?version=7
Systemsteuerung
- Hardware und Energie
- TAB: USV
- ON:USV-Unterstützung aktivieren
- ON: Zeit, ehe die DiskStation in den Sicheren Modus wechselt
- 10 Minuten
- OFF: USV herunterfahren, wenn das System in den Sicheren Modus geht.
- OFF: Netzwerk-USV-Server aktivieren
- ON: Zeit, ehe die DiskStation in den Sicheren Modus wechselt
- ON:USV-Unterstützung aktivieren
- TAB: USV
Button: Geräteinformationen --> erkannte USV wird angezeigt
Konfiguration des iobroker SNMP Adapter (snmp.0)
- Im iobroker unter "Instanzen" die Konfiguration des snmp.0 Adapter öffnen (Schraubenschlüssel), Einträge der TAB's von rechts nach links:
OPTIONEN
- Paketgröße: 20
- OFF: Kompatibilitätsmodus - Verwenden Sie die IP-Adresse für Zustands-IDs
- OFF: Rohzustände hinzufügen
- OFF: Typzustände hinzufügen
AUTORISIERUNG (SNMP V3)
- kein Eintrag
GERÄTE
| Name | IP-Adresse | IPv6 | OID-Gruppe | SNMP-Version | Community | Zeitüberschreitung | erneut versuchen | Abfrage |
| YourNASName | YourNasIPAdress | OFF | nas | SNMP v1 | public | 5 | 5 | 30 |
OID-SETS
| aktiv | OID-Gruppe | OID-Name | OID | Format | beschreibbar | Optional |
| ON | nas | ups.upsDeviceModel | .1.3.6.1.4.1.6574.4.1.1.0 | Text | OFF | OFF |
Format
- Text = 0
- Number = 1
Hilfe
Link1: [https://github.com/iobroker-community-adapters/ioBroker.snmp/blob/master/docs/de/snmp.md]
Link2: https://www.smarthome-tricks.de/software-iobroker/iobroker-snmp-adapter/
Konfiguration über eine Datei in die snmp.0 Instanz laden
Meine lokale static NAS IP Adresse: 192.168.178.7
--> Bitte ganz am Ende des JSON files noch an Eure IP anpassen!
--> devIpAddr": "192.168.178.7",
Eventuell nach dem Laden mal den TAB wechseln. Meist fehlt ein Update der Tabelle nach dem laden
- Instanzen
- snmp.0
- Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
- Klick: oben rechts den markierten Upload Knopf.
- Dann die JSON Datei auswählen
- Klick: oben rechts den markierten Upload Knopf.
- Klick: "Schraubenschlüssel" um an die Einstellungen zu kommen.
- snmp.0
JSON Datei meiner UPS Konfiguration
{
"oids": [
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDeviceModel",
"oidOid": ".1.3.6.1.4.1.6574.4.1.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDeviceManufacturer",
"oidOid": ".1.3.6.1.4.1.6574.4.1.2.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDeviceSerial",
"oidOid": ".1.3.6.1.4.1.6574.4.1.3.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDeviceType",
"oidOid": ".1.3.6.1.4.1.6574.4.1.4.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoStatus",
"oidOid": ".1.3.6.1.4.1.6574.4.2.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoModel",
"oidOid": ".1.3.6.1.4.1.6574.4.2.5.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoMfrName",
"oidOid": ".1.3.6.1.4.1.6574.4.2.6.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoSerial",
"oidOid": ".1.3.6.1.4.1.6574.4.2.7.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoVendorID",
"oidOid": ".1.3.6.1.4.1.6574.4.2.8.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoProductID",
"oidOid": ".1.3.6.1.4.1.6574.4.2.9.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoFirmwareName",
"oidOid": ".1.3.6.1.4.1.6574.4.2.10.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoLoadValue",
"oidOid": ".1.3.6.1.4.1.6574.4.2.12.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoDelayStart",
"oidOid": ".1.3.6.1.4.1.6574.4.2.14.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoDelayShutdown",
"oidOid": ".1.3.6.1.4.1.6574.4.2.14.3.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoTimerStart",
"oidOid": ".1.3.6.1.4.1.6574.4.2.15.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoTimerShutdown",
"oidOid": ".1.3.6.1.4.1.6574.4.2.15.3.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoPowerValue",
"oidOid": ".1.3.6.1.4.1.6574.4.2.20.2.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInfoBeeperStatus",
"oidOid": ".1.3.6.1.4.1.6574.4.2.22.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsBatteryChargeValue",
"oidOid": ".1.3.6.1.4.1.6574.4.3.1.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsBatteryChargeLow",
"oidOid": ".1.3.6.1.4.1.6574.4.3.1.2.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsBatteryRuntimeValue",
"oidOid": ".1.3.6.1.4.1.6574.4.3.6.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsBatteryType",
"oidOid": ".1.3.6.1.4.1.6574.4.3.12.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInputTransferLow",
"oidOid": ".1.3.6.1.4.1.6574.4.4.2.2.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsInputTransferHigh",
"oidOid": ".1.3.6.1.4.1.6574.4.4.2.3.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsOutputVoltageValue",
"oidOid": ".1.3.6.1.4.1.6574.4.5.1.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsOutputVoltageNominal",
"oidOid": ".1.3.6.1.4.1.6574.4.5.1.2.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsOutputFrequencyValue",
"oidOid": ".1.3.6.1.4.1.6574.4.5.2.2.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDriverName",
"oidOid": ".1.3.6.1.4.1.6574.4.7.1.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDriverVersion",
"oidOid": ".1.3.6.1.4.1.6574.4.7.2.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDriverVersionData",
"oidOid": ".1.3.6.1.4.1.6574.4.7.3.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDriverVersionInternal",
"oidOid": ".1.3.6.1.4.1.6574.4.7.4.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDriverPollInterval",
"oidOid": ".1.3.6.1.4.1.6574.4.7.5.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDriverPort",
"oidOid": ".1.3.6.1.4.1.6574.4.7.6.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 0
},
{
"oidAct": true,
"oidGroup": "nas",
"oidName": "ups.upsDriverPollFrequency",
"oidOid": ".1.3.6.1.4.1.6574.4.7.7.0",
"oidWriteable": false,
"oidOptional": false,
"oidFormat": 1
}
],
"devs": [
{
"devAct": true,
"devName": "ortler",
"devIpAddr": "192.168.178.7",
"devIp6": false,
"devOidGroup": "nas",
"devSnmpVers": "1",
"devAuthId": "",
"devTimeout": "5",
"devRetryIntvl": "5",
"devPollIntvl": "30"
}
],
"cfgVers": "2.0",
"optChunkSize": "20",
"optUseName": false,
"optRawStates": false,
"optTypeStates": false
}
Und Ihr bekommt folgende Objekte / Datentypen zur weiteren Verwendung
(Ausschnitt aus dem Objektbaum)
- snmp
- 0
- MeinNasName
- ups
- upsDeviceManufacturer
- etc...
- ups
- MeinNasName
- 0
Fehlerbehebung
Eventuell haben unterschiedliche NAS System unterschiedliche SNMP Konfigurationen. Ich kann hier nur meine Konfiguration für ein DS214 anbieten, die funktioniert. Habt Ihr andere Geräte im Einsatz? Dann einfach als Kommentar anhängen. Damit ist dann auch Anderen geholfen. Gerne auch als JSON Konfiguration zum laden
Sollten im iobroker unter "Protokolle" beim starten des snmp.0 Adapter Fehler auftauchen?
- Dann im iobroker untern "Instanzen" die Konfiguration des snmp.0 Adapter öffnen (Schraubenschlüssel)
- "OID-SETS" den Schalter am Anfang der entsprechende Zeile abschalten (OFF).
- Damit wird die fehlerhafte OID ausgeschaltet.
- "OID-SETS" den Schalter am Anfang der entsprechende Zeile abschalten (OFF).
z.B.
| aktiv | OID-Gruppe | OID-Name | OID | Format | beschreibbar | Optional |
| OFF | nas | ups.upsDeviceModel | .1.3.6.1.4.1.6574.4.1.1.0 | Text | OFF | OFF |
Jetzt den Adapter wieder starten und schnell das "Protokoll" beobachten.
Meist hat man aber irgendwo einen Punkt oder ein "0" vergessen
--> Dast ist ein Mehrteiler und es folgen noch weitere Informationen.
Hilfsmittel snmpwalk
Hier kann mal alle verfügbaren OID's und Werte eines Gerätes auslesen. Dafür wird die Stamm OID eingegeben, hier ".1.3.6.1.4.1.6574.4"
Wichtig: der Punkt gehört vor die .1.3.6.1.4.1.6574.4
Install snmpwalk
Console
sudo apt-get install snmp
Use snmpwalk
Meine lokale static NAS IP Adresse: 192.168.178.7
Console
snmpwalk -v 2c -c public 192.168.178.7 .1.3.6.1.4.1.6574.4
iso.3.6.1.4.1.6574.4.1.1.0 = STRING: "Ellipse ECO 650"
iso.3.6.1.4.1.6574.4.1.2.0 = STRING: "EATON"
iso.3.6.1.4.1.6574.4.1.3.0 = STRING: "000000000"
iso.3.6.1.4.1.6574.4.1.4.0 = STRING: "ups"
iso.3.6.1.4.1.6574.4.2.1.0 = STRING: "OL CHRG"
iso.3.6.1.4.1.6574.4.2.5.0 = STRING: "Ellipse ECO 650"
iso.3.6.1.4.1.6574.4.2.6.1.0 = STRING: "EATON"
iso.3.6.1.4.1.6574.4.2.7.0 = STRING: "000000000"
iso.3.6.1.4.1.6574.4.2.8.0 = STRING: "0463"
iso.3.6.1.4.1.6574.4.2.9.0 = STRING: "ffff"
iso.3.6.1.4.1.6574.4.2.10.1.0 = STRING: "02"
iso.3.6.1.4.1.6574.4.2.12.1.0 = Opaque: Float: 10.000000
iso.3.6.1.4.1.6574.4.2.14.1.0 = INTEGER: 30
iso.3.6.1.4.1.6574.4.2.14.3.0 = INTEGER: 20
iso.3.6.1.4.1.6574.4.2.15.1.0 = INTEGER: -1
iso.3.6.1.4.1.6574.4.2.15.3.0 = INTEGER: -1
iso.3.6.1.4.1.6574.4.2.20.2.0 = Opaque: Float: 650.000000
iso.3.6.1.4.1.6574.4.2.22.0 = STRING: "enabled"
iso.3.6.1.4.1.6574.4.3.1.1.0 = Opaque: Float: 100.000000
iso.3.6.1.4.1.6574.4.3.1.2.0 = Opaque: Float: 20.000000
iso.3.6.1.4.1.6574.4.3.6.1.0 = INTEGER: 2062
iso.3.6.1.4.1.6574.4.3.12.0 = STRING: "PbAc"
iso.3.6.1.4.1.6574.4.4.2.2.0 = Opaque: Float: 184.000000
iso.3.6.1.4.1.6574.4.4.2.3.0 = Opaque: Float: 264.000000
iso.3.6.1.4.1.6574.4.5.1.1.0 = Opaque: Float: 230.000000
iso.3.6.1.4.1.6574.4.5.1.2.0 = Opaque: Float: 230.000000
iso.3.6.1.4.1.6574.4.5.2.2.0 = Opaque: Float: 50.000000
iso.3.6.1.4.1.6574.4.7.1.0 = STRING: "usbhid-ups"
iso.3.6.1.4.1.6574.4.7.2.0 = STRING: "DSM6-2-25510-201118"
iso.3.6.1.4.1.6574.4.7.3.0 = STRING: "MGE HID 1.33"
iso.3.6.1.4.1.6574.4.7.4.0 = STRING: "0.38"
iso.3.6.1.4.1.6574.4.7.5.0 = INTEGER: 5
iso.3.6.1.4.1.6574.4.7.6.0 = STRING: "auto"
iso.3.6.1.4.1.6574.4.7.7.0 = INTEGER: 30