đđȘ«Onduleur 'Eaton Protection Station 800 USB'
Onduleur âEaton Protection Station 800 USBâ sur serveur Debian pour protĂ©ger des Ă©quipements de coupure de courant et/ou de surtension pouvant intervenir lorsque les appareils sont en fonctionnement.
Onduleur Eaton Protection Station 800 USB
Matériel
| No | Eaton Protection Station - 650/800 |
|---|---|
| 7 | 4 prises filtrées. |
| 8 | 4 prises secourues par batterie. |
| 9 | Voyant allumé, protection anti-surtensions active sur les 8 prises. |
| 10 | Voyant allumĂ©, dĂ©faut de lâAlimentation Sans Interruption. |
| 11 | Bouton de mise en service ou dâarrĂȘt des prises secourues. |
| 12 | Disjoncteur de protection. |
Network UPS Tools (NUT)
Nut (Network UPS Tools) est un logiciel linux de surveillance des onduleurs. Il est disponible sur la majoritĂ© des distributions et permet notamment, pour les onduleurs le supportant, dâautomatiquement Ă©teindre proprement un serveur lorsque la batterie de lâonduleur arrive Ă terme. Nous allons voir lâinstallation sur une distribution debian.
NUT est un ensemble dâoutils permettant de monitorer un systĂšme reliĂ© Ă un ou des onduleurs.Il se compose de plusieurs Ă©lĂ©ments :
- le démon nut lancé au démarrage du systÚme
- le dĂ©mon upsd qui permet dâinterroger lâonduleur, il est lancĂ© sur le PC reliĂ© Ă lâonduleur
- le dĂ©mon upsmon qui permet de monitorer et lancer les commandes nĂ©cessaires sur le rĂ©seau ondulĂ© (arrĂȘt de machines âŠ)
- diffĂ©rents programmes pour envoyer des commandes manuellement Ă lâonduleur : upsc, upsdrvctl âŠ
upsd peut communiquer avec plusieurs onduleurs si nécessaire.
upsmon interroge à intervalle régulier la machine du réseau sur laquelle est lancée upsd.
Installer NUT et branchement
Installez nut, les paquets supplémentaires seront automatiquement installés :
1
sudo apt install nut -y
Paquet virtuel qui dépend de nut-client et nut-server
nut-client contient entre autres les exécutables upsc, upscmd, upsmon
nut-server contient entre autre upsd, upsdrvctl
Connecter un cĂąble USB-B entre lâonduleur et un port USB du serveur
Relever le périphérique:
1
lsusb
1
Bus 003 Device 002: ID 0463:ffff MGE UPS Systems UPS
Vérifier que le fichier appartient bien au groupe nut:
1
ls -l /dev/bus/usb/003/002
1
crw-rw-r-- 1 root nut 189, 257 5 mai 15:50 /dev/bus/usb/003/002
Pilote de lâonduleur (ups.conf)
Communication avec lâonduleur, choisir le driver et le port , ce qui fait dans le fichier /etc/nut/ups.conf. Chaque onduleur doit ĂȘtre dĂ©fini sous la forme
1
2
3
4
[upsname]
driver = <drivername>
port = <portname>
desc = "Commentaire"
On peut mettre auto pour le port et le champ desc pour mettre une description plus complĂšte
Le fichier /usr/share/nut/driver.list contient une liste dâonduleurs et le driver quâil faut utiliser.
On peut aussi tester la commande sudo nut-scanner -U, qui renvoie un bloc de configuration auto-detecté
1
2
3
4
5
6
7
8
9
10
11
12
13
Scanning USB bus.
[nutdev1]
driver = "usbhid-ups"
port = "auto"
vendorid = "0463"
productid = "FFFF"
product = "Protection Station"
serial = "AN2E49008"
vendor = "EATON"
bus = "003"
device = "002"
busport = "001"
###NOTMATCHED-YET###bcdDevice = "0100"
On ne tient pas compte des erreurs car le service nâest pas lancĂ©
Utilisation du driver âusbhid-upsâ
1
sudo nano /etc/nut/ups.conf
Ajouter ce qui suit en fin de fichier
1
2
3
4
5
6
[eaton]
driver = usbhid-ups
port = auto
vendorid = 0463
productid = FFFF
desc = "Onduleur Eaton Protection Station 800"
Configuration daemon
Il sert Ă mettre les informations de lâonduleur Ă disposition des clients.
Lancement via un service (nut.conf)
Le fichier nut.conf permet de déterminer le comportement du démon NUT. Il ne contient que le paramÚtre MODE qui peut prendre les valeurs suivantes :
- none : Câest la valeur par dĂ©faut aprĂšs lâinstallation du paquet, elle indique que NUT nâa pas Ă©tĂ© configurĂ©.
- standalone : * Dans ce mode, lâonduleur est reliĂ© Ă la machine actuelle. * Le monitorage de lâonduleur est effectuĂ© depuis cette mĂȘme machine. * Le dĂ©mon nut doit lancer upsd et upsmon (en mode âmasterâ).
- netserver : * Dans ce mode, lâonduleur est reliĂ© Ă la machine actuelle. * La gestion de lâonduleur est effectuĂ©e depuis un poste client sur le rĂ©seau. * Le dĂ©mon nut doit lancer upsd et upsmon (en mode serveur, câest Ă dire en tant que âmasterâ).
- netclient :
- Dans ce mode, lâonduleur nâest pas reliĂ© Ă la machine actuelle.
- La gestion de lâonduleur est rĂ©alisĂ©e depuis la machine actuelle vers la machine Ă laquelle est connectĂ©e lâonduleur via le rĂ©seau.
- Le dĂ©mon nut doit lancer uniquement upsmon (en mode client, câest Ă dire en tant que âslaveâ).
Mode standalone, lâonduleur est reliĂ© Ă la machine actuelle (serveur).
1
sudo nano /etc/nut/nut.conf
1
MODE=standalone
On démarre et active le service
1
sudo systemctl enable nut-server --now
Utilisateurs (upsd.users)
Il faut dĂ©finir (au moins) les paramĂštres pour lâadministrateur et au moins un utilisateur de type âmasterâ dans upsd car une authentification sera nĂ©cessaire pour effectuer certaines commandes, notamment celles dâupscmd qui permettent de contrĂŽler lâonduleur (bip, extinction etc).
1
sudo nano /etc/nut/upsd.users
1
2
3
4
5
6
7
8
[admin]
password = adminpass
actions = SET
instcmds = ALL
[upseaton]
password = userpass
upsmon master
password
Définir le mot de passe pour cet utilisateur.
upsmon
Ajouter les actions nĂ©cessaires pour un processus ascendant au travail. Câest soit rĂ©glĂ© Ă âmasterâ ou âslaveâ.
Moniteur automatique (upsmon.conf)
upsmon est le composant qui va surveiller lâĂ©tat de lâonduleur, et lancer des actions selon lâĂ©tat (sur batterie, batterie critique, etc).
La déclaration des différents démons upsmon serveurs à écouter et de la puissance nécessaire au réseau ondulé se fait grùce aux options suivantes :
MONITOR <system> <powervalue> <username> <password> <type>*<system>: dĂ©finit le nom dâun onduleur et de la machine qui le contrĂŽle. Par dĂ©faut, lâonduleur est supposĂ© accessible depuis la machine actuelle (localhost). *<powervalue>: un entier qui dĂ©finit le nombre dâonduleurs contrĂŽlĂ©s. Sauf cas particulier, la valeur est supposĂ©e de 1. *<username>: le nom dâutilisateur utilisĂ© pour interroger upsd. Il doit ĂȘtre dĂ©finit dans le fichier upsd.users sur la machine qui contrĂŽle lâonduleur. *<password>: le mot de passe associĂ© Ă lâutilisateur sur la machine qui contrĂŽle lâonduleur. *<type>: le type de monitorage tel que dĂ©finit dans le fichier upsd.users de la machine qui contrĂŽle lâonduleur.MINSUPPLIES: un entier qui dĂ©finit le nombre dâonduleurs nĂ©cessaires pour que le systĂšme fonctionne ; en gĂ©nĂ©ral, 1 onduleur.
On définit au moins 1 onduleur à surveiller :
1
2
3
4
# On surveille l'onduleur qui est directement relié (master)
MONITOR eaton@localhost 1 upseaton mypass master
# Commande lancée quand quelque chose se passe
NOTIFYCMD /sbin/upssched
Le â1â correspond au nombre dâalims qui sont alimentĂ©s par lâonduleur en question ; pour la plupart des pcs standard, qui nâont quâune seule alim, ce sera 1.
On peut toutefois entrer â0â si le pc surveille lâonduleur mais nâest pas branchĂ© dessus ; il effectuera les actions dâalerte (mail etc.) mais ne sâĂ©teindra pas en cas de batterie critique. En ce cas, il faut aussi dĂ©finir la variable
MINSUPPLIESà 0 (pour déclarer que le poste peut fonctionner sans aucun onduleur).
Lorsque le nombre dâonduleurs nĂ©cessaires pour maintenir le systĂšme (MINSUPPLIES) devient infĂ©rieur au nombre dâonduleurs en statut âsur secteurâ (ONLINE) ou âsur batterieâ (ONBATT) sans ĂȘtre en statut âbatterie faibleâ (LOWBATT), le rĂ©seau ondulĂ© entre dans un Ă©tat critique. En dâautres termes, le dernier onduleur pour maintenir le systĂšme vient de passer en statut "batterie faible" (LOWBATT), et lâalimentation va donc cesser prochainement : le but est donc dâĂ©teindre proprement le systĂšme pour Ă©viter une perte de donnĂ©es, il nây a plus le temps dâattendre que le courant revienne !
à ce moment là , les paramÚtres suivants seront utilisés :
FINALDELAY: dĂ©lai en secondes entre la notification aux utilisateurs et le lancement de la commande dâarrĂȘt du systĂšme.HOSTSYNC: dĂ©lai laissĂ© aux autres upsmon sur les postes clients pour sâarrĂȘter correctement, au delĂ de ce dĂ©lai lâupsmon serveur est stoppĂ© et ne rĂ©pond plus aux clients.SHUTDOWNCMD: dĂ©finit la commande qui sera exĂ©cutĂ©e pour Ă©teindre la machine actuelle.POWERDOWNFLAG: dĂ©finit le fichier qui sera Ă©crit juste avant la procĂ©dure dâarrĂȘt. Il est possible de tester la prĂ©sence de ce fichier dans vos scripts init pour accĂ©lĂ©rer la phase dâarrĂȘt.
Pour permettre Ă lâupsmon client dâinterroger le dĂ©mon upsmon serveur ou le dĂ©mon upsd et obtenir des informations âfraichesâ sur lâĂ©tat de (ou des) lâonduleur(s), il faut vĂ©rifier les paramĂštres suivants, et les adapter en fonction du pilote utilisĂ© :
POLLFREQ: intervalle de temps avant rafraĂźchissement des donnĂ©es sur lâĂ©tat de lâonduleur.POLLFREQALERT: intervalle de temps avant rafraichissement une fois lâonduleur en statut âsur batterieâ (ONBATT). Doit ĂȘtre infĂ©rieur ou Ă©gal ĂPOLLFREQ.DEADTIME: dĂ©lai maximal pendant lequel un onduleur peut ĂȘtre dĂ©clarĂ© âabsentâ avant dâĂȘtre dĂ©clarĂ© âmortâ. PassĂ© ce dĂ©lai, si lâonduleur Ă©tait prĂ©cĂ©demment en statut âsur batterieâ (ONBATT) il sera considĂ©rĂ© en statut âbatterie faibleâ (LOWBATT), ce qui peut causer lâarrĂȘt du systĂšme. Le dĂ©lai doit ĂȘtre un multiple dePOLLFREQetPOLLFREQALERT.NOCOMMWARNTIME: dĂ©lai dâattente avant notification de la perte de communication avec lâonduleur.RBWARNTIME: lorsquâun onduleur indique un changement de batterie, une notification sera envoyĂ©e toutes lesRBWARNTIMEsecondes.NOTIFYCMD <command>: upsmon appelle cela pour envoyer des messages lorsque des choses se produisent, vous pouvez utiliser le programmeupsschedcomme votreNOTIFYCMD
Sur le serveur reliĂ© Ă lâonduleur
1
sudo nano /etc/nut/upsmon.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# On surveille l'onduleur qui est directement relié (master)
MONITOR eaton@localhost 1 upseaton mot_passe_upseaton master
# Notre serveur n'a pas d'alimentation redondante
MINSUPPLIES 1
# Commande lancée quand quelque chose se passe
SHUTDOWNCMD "/sbin/shutdown -h +0"
# Interval entre deux interrogations de upsd
POLLFREQ 5
# Intervalle entre deux interrogations de upsd en mode "batterie"
POLLFREQALERT 5
# Temps d'attente pour la déconnexion des upsmon esclaves
HOSTSYNC 15
# Temps pendant lequel on tolÚre la non-réponse d'un onduleur, multiple de POLLFREQ
DEADTIME 15
# Fichier d'état
POWERDOWNFLAG "/etc/killpower"
# OFFDURATION - mettre lâĂ©tat « OFF » en vigueur sâil persiste pendant plusieurs secondes
OFFDURATION 30
# un onduleur indique un changement de batterie, une notification sera envoyée toutes les `RBWARNTIME` secondes.
RBWARNTIME 43200
# délai d'attente avant notification de la perte de communication avec l'onduleur.
NOCOMMWARNTIME 300
# dĂ©lai en secondes entre la notification aux utilisateurs et le lancement de la commande d'arrĂȘt du systĂšme.
FINALDELAY 5
# Alternativement, vous pouvez utiliser le programme upssched comme votre NOTIFYCMD
# Commande lancée quand quelque chose se passe
NOTIFYCMD /sbin/upssched
On remarque que, Ă part lâarrĂȘt du systĂšme sur fin des batteries qui est gĂ©rĂ© par upsmon, toutes les notifications le sont par upssched.
Distributeur dâĂ©vĂšnements (/etc/nut/upssched.conf)
Lâutilitaire upssched permet de « temporiser » les actions liĂ©es aux Ă©vĂšnements gĂ©nĂ©rĂ©s par upsmon.
Câest surtout intĂ©ressant lorsque des Ă©vĂšnements furtifs se produisent (microcoupures) fichier /etc/nut/upssched.conf.
1
sudo nano /etc/nut/upssched.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# Script lancé par upssched pour gérer les évÚnements et les timers associés
CMDSCRIPT /usr/bin/upssched-cmd
# Fichier pour noter les états internes de upssched
PIPEFN /run/nut/upssched/upssched.pipe
# Fichier de lock pour éviter un conflit en cas de notification de deux évÚnements simultanés
LOCKFN /run/nut/upssched/upssched.lock
# En cas de perte de communication avec l'onduleur
AT COMMBAD * EXECUTE perte-liaison
# En cas de retour secteur, on stope la minuterie et on notifie
AT ONLINE * CANCEL-TIMER attente-retour-secteur
AT ONLINE * EXECUTE charge-sur-secteur
# En cas de perte de secteur, on se laisse au maximum 20 minutes avant d'agir et on notifie
AT ONBATT * START-TIMER attente-retour-secteur 1200
AT ONBATT * EXECUTE charge-sur-batterie
# En cas de niveau de batteries trop bas
AT LOWBATT * EXECUTE batteries-vides
# En cas de fin de vie des batteries on sera prévenu
AT REPLBATT * EXECUTE batteries-hs
# En cas d'arrĂȘt (fin des 20 minutes ou fin d'autonomie), on notifie.
AT SHUTDOWN * EXECUTE arret-en-cours
Prise en charge des évÚnements (script /usr/bin/upssched-cmd)
Fichier /usr/bin/upssched-cmd
1
sudo nano /usr/bin/upssched-cmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#! /bin/sh
# Ce script doit ĂȘtre appelĂ© par upssched via la directive CMDSCRIPT.
#
# Analyse argument
#
case $1 in
"charge-sur-batterie")
sujet="L'onduleur a basculé sur les batteries"
message="L'arrĂȘt systĂšme sera demandĂ© si le secteur ne revient pas."
;;
"attente-retour-secteur")
sujet="Onduleur - Fin d'attente de retour secteur"
message="Cela fait trop longtemps que le secteur est absent...Un arrĂȘt forcĂ© est en cours !"
# Demande d'arrĂȘt forcĂ© (force shut down)
/sbin/upsmon -c fsd
;;
"charge-sur-secteur")
sujet="Onduleur - retour secteur"
message="L'onduleur est revenu sur secteur."
;;
"batteries-vide")
sujet="Onduleur - Batteries vides"
message="Les batteries sont vides, l'arrĂȘt est imminent."
;;
"arret-en-cours")
sujet="Onduleur - ArrĂȘt en cours du serveur"
message="Le systĂšme est en cours d'arrĂȘt."
;;
"perte-liaison")
sujet="Onduleur - Perte de liaison avec l'onduleur"
message="La communication avec l'onduleur est interrompue."
;;
"batteries-hs")
sujet="Onduleur - URGENT - batteries HS"
message="Les batteries sont Ă remplacer d'urgence."
;;
*)
sujet="Onduleur - Commande inconnue : $1"
message="Une commande inconnue a été envoyée par l'onduleur..."
;;
esac
# Envoi d'une notification
curl --ipv4 \
-H "X-Email: ntfy@cinay.eu" \
-H "Title: $sujet" \
-H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Priority: high" \
-H "Tags: red_circle,warning" \
-d "$message" \
https://ntfy.rnmkcy.eu/yan_infos
Redémarrer les services
1
sudo systemctl restart nut-server
vérifier si les daemons sont lancés
1
ps auxf |grep ^nut
1
2
nut 2586 0.0 0.0 14200 2152 ? Ss 15:59 0:03 /usr/lib/nut/usbhid-ups -a eaton
nut 5068 0.0 0.0 7572 3720 ? Ss 17:48 0:00 /lib/nut/upsd -F
Onduleur connecté ?
upsc permet de sâadresser Ă un dĂ©mon upsd.
1
2
# pour lister tous les onduleurs dĂ©tectĂ©s sur host ; si lâhost nâest pas spĂ©cifiĂ©, câest localhost.
upsc -L
Liste
1
2
Init SSL without certificate database
eaton: Onduleur Eaton Protection Station 800
Liste des paramĂštres
1
upsc eaton@localhost
Pour Ă©viter lâaffichage du message âInit SSL without certificate databaseâ, ajouter
2>&1 | grep -v '^Init SSL'Ă la commande
Exemple:upsc eaton@localhost 2>&1 | grep -v '^Init SSL'
Les paramĂštres
Etendre Réduire...
battery.charge: 100
battery.charge.low: 20
battery.runtime: 1082
battery.type: PbAc
device.mfr: EATON
device.model: Protection Station 800
device.serial: AN2E49008
device.type: ups
driver.debug: 0
driver.flag.allow_killpower: 0
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.productid: FFFF
driver.parameter.synchronous: auto
driver.parameter.vendorid: 0463
driver.state: updateinfo
driver.version: 2.8.1
driver.version.data: MGE HID 1.46
driver.version.internal: 0.52
driver.version.usb: libusb-1.0.28 (API: 0x100010a)
input.transfer.high: 264
input.transfer.low: 184
outlet.1.desc: PowerShare Outlet 1
outlet.1.id: 2
outlet.1.status: on
outlet.1.switchable: no
outlet.2.desc: PowerShare Outlet 2
outlet.2.id: 3
outlet.2.status: on
outlet.2.switchable: no
outlet.desc: Main Outlet
outlet.id: 1
outlet.power: 25
outlet.switchable: no
output.frequency.nominal: 50
output.voltage: 230.0
output.voltage.nominal: 230
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.delay.start: 30
ups.firmware: 1.13
ups.load: 14
ups.mfr: EATON
ups.model: Protection Station 800
ups.power.nominal: 800
ups.productid: ffff
ups.realpower: 90
ups.serial: AN2E49008
ups.status: OL
ups.timer.shutdown: -1
ups.timer.start: -1
ups.vendorid: 0463Pour afficher un paramĂštre
1
upsc eaton@localhost ups.status 2>&1 | grep -v '^Init SSL'
Définitions des codes renvoyés par ups.status
| Abrégé | Définition |
|---|---|
| OL | En ligne (pas de coupure de courant) (Ă lâopposĂ© de OB - sur batterie) |
| LB | Batterie faible |
| SD | Shutdown load, arrĂȘt en cours |
| CP | CĂąble dâalimentation |
| CTS | Clear to Send. Reçu de lâUPS. |
| RTS | Ready to Send. Envoyé par le PC. |
| DCD | DĂ©tection de porteuse de donnĂ©es. Reçu de lâUPS. |
| RNG | Ring indicateur. Reçu de lâUPS. |
| DTR | Terminal de donnĂ©es prĂȘt. EnvoyĂ© par le PC. |
| ST | Envoyer un BREAK sur la ligne de donnĂ©es dâĂ©mission |
Tester lâenvoi notification
Le plus simple est de dĂ©brancher la liaison USB entre lâonduleur et le serveur, puis de le rebrancher
Un message devrait parvenir au destinataire de la notificationâŠ
Envoyer une commande
Liste des commandes disponibles
1
upscmd -l eaton@localhost
Etendre Réduire...
Commandes instantanĂ©es prises en charge sur lâonduleur [eaton] :
beeper.disable - DĂ©sactiver lâavertisseur UPS
beeper.enable - Activez le beeper UPS
beeper.mute - Couper temporairement le bip UPS
beeper.off - ObsolĂšte (utilisez beeper.disable ou beeper.mute)
beeper.on - ObsolĂšte (utilisez beeper.enable)
driver.killpower - Dites au dĂ©mon du conducteur de lancer lâarrĂȘt de lâonduleur ; il doit ĂȘtre dĂ©verrouillĂ© avec lâoption driver.flag.allow_killpower ou un paramĂštre variable
driver.reload - Recharger la configuration du pilote en cours dâexĂ©cution Ă partir du systĂšme de fichiers (ne fonctionne que pour les modifications dans certaines options)
driver.reload-or-error - Recharger la configuration du pilote en cours dâexĂ©cution Ă partir du systĂšme de fichiers (ne fonctionne que pour les modifications dans certaines options) ; renvoyer une erreur si quelque chose a changĂ© et nâa pas pu ĂȘtre appliquĂ© en direct (afin que lâappelant puisse le redĂ©marrer avec de nouvelles options)
driver.reload-or-exit - Recharger la configuration du pilote en cours dâexĂ©cution Ă partir du systĂšme de fichiers (ne fonctionne que pour les modifications dans certaines options) ; quitter le pilote en cours si quelque chose a changĂ© et nâa pas pu ĂȘtre appliquĂ© en direct (afin que lâinfrastructure de gestion des services puisse la redĂ©marrer avec de nouvelles options)
load.off - Ăteignez immĂ©diatement la charge
load.off.delay - ArrĂȘtez la charge avec un dĂ©lai (secondes)
load.on - Allumez immédiatement la charge
load.on.delay - Active la charge avec un délai (secondes)
shutdown.return - Ăteignez la charge et revenez lorsque le courant est de retour
shutdown.stayoff - Ăteignez la charge et restez Ă©teint
shutdown.stop - ArrĂȘter un arrĂȘt en coursEnvoyer une commande
1
upscmd -u <username> -p <password> <system> <command>


