Pilotage d’un onduleur sous linux

Après avoir installé mon mini serveur Lenovo M92p je n’avais pas encore installé le nécessaire pour pouvoir piloter mon onduleur APC Back-UPS XS 950U. Maintenant que je suis passé à la dernière version Mageia 9, il était grand temps de le faire.

J’avais déjà rédigé des articles à ce sujet avec un onduleur et des versions précédentes qu’on retrouvera ici et avec l’utilisation de NUT (Network UPS Tools) qui pourront encore éventuellement servir.

Considérant que j’avais un onduleur APC j’ai installé l’utilitaire APC UPS daemon prévu pour. On retrouvera dans cette page l’installation du serveur à partir des sources mais sur ma mageia 9 je me suis contenté de l’installer via urpmi. La suite de la configuration est assez simple, on active le daemon en tapant:

systemctl enable apcupsd

Puis on éditera le fichier de configuration /etc/apcupsd/apcupsd.conf qu’on retrouvera ci-dessous avec des commentaires pour certains paramètres, les autres étant par défaut.

#nom de l'onduleur
UPSNAME onduleur

#type de connexion
UPSCABLE usb
UPSTYPE usb
DEVICE

LOCKFILE /run/lock
SCRIPTDIR /etc/apcupsd
PWRFAILDIR /etc/apcupsd
NOLOGINDIR /etc

# on laisse 6s à apcupsd pour réagir
ONBATTERYDELAY 6

# si une coupure de courant survient, l'arrêt est déclenché quand le pourcentage restant est inférieur est égal à la valeur définie par BATTERYLEVEL
BATTERYLEVEL 5

# si une coupure de courant survient, l'arrêt est déclenché quand le temps restant est inférieur est égal à la valeur définie par MINUTES
MINUTES 3

TIMEOUT 0
ANNOY 300
ANNOYDELAY 60
NOLOGON disable
KILLDELAY 0

# pour pouvoir monitorer via un navigateur
NETSERVER on
NISIP 127.0.0.1
# port du serveur
NISPORT 3551

#fichier log
EVENTSFILE /var/log/apcupsd.events
#taille max en Ko
EVENTSFILEMAX 10

UPSCLASS standalone
UPSMODE disable

STATTIME 0
STATFILE /var/log/apcupsd.status
LOGSTATS off
DATATIME 0

On lancera le daemon en tapant la commande

systemctl status apcupsd

Et voilà le résultat

● apcupsd.service - LSB: apcupsd monitors power and takes action if necessary
     Loaded: loaded (/etc/rc.d/init.d/apcupsd; generated)
     Active: active (running) since Sat 2023-10-21 19:00:32 CEST; 13h ago
       Docs: man:systemd-sysv-generator(8)
    Process: 1169436 ExecStart=/etc/rc.d/init.d/apcupsd start (code=exited, status=0/SUCCESS)
      Tasks: 3 (limit: 9264)
     Memory: 1.5M
        CPU: 33.947s
     CGroup: /system.slice/apcupsd.service
             └─1169493 /sbin/apcupsd -f /etc/apcupsd/apcupsd.conf

oct. 21 19:00:32 ultra.kervao.fr systemd[1]: Starting apcupsd.service...
oct. 21 19:00:32 ultra.kervao.fr apcupsd[1169436]: Lancement de la gestion UPS : [  OK  ]
oct. 21 19:00:32 ultra.kervao.fr systemd[1]: Started apcupsd.service.
oct. 21 19:00:32 ultra.kervao.fr apcupsd[1169493]: apcupsd 3.14.14 (31 May 2016) mandrake startup succeeded
oct. 21 19:00:32 ultra.kervao.fr apcupsd[1169493]: NIS server startup succeeded

Pour ouvrir le port 3551 sous shorewall on éditera le fichier /etc/shorewall/rules comme mentionné dans cette page de configuration en rajoutant pour le port tcp 3551. La commande apcaccess status donnera :

APC      : 001,036,0893
DATE     : 2023-10-22 09:06:46 +0200  
HOSTNAME : ultra.kervao.fr
VERSION  : 3.14.14 (31 May 2016) mandrake
UPSNAME  : ultra.kervao.fr
CABLE    : USB Cable
DRIVER   : USB UPS Driver
UPSMODE  : Stand Alone
STARTTIME: 2023-10-21 19:00:32 +0200  
MODEL    : Back-UPS XS 950U   
STATUS   : ONLINE 
LINEV    : 242.0 Volts
LOADPCT  : 5.0 Percent
BCHARGE  : 100.0 Percent
TIMELEFT : 73.0 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
SENSE    : Medium
LOTRANS  : 155.0 Volts
HITRANS  : 280.0 Volts
ALARMDEL : 30 Seconds
BATTV    : 13.5 Volts
LASTXFER : Unacceptable line voltage changes
NUMXFERS : 0
TONBATT  : 0 Seconds
CUMONBATT: 0 Seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x05000008
SERIALNO : 3B1713X09434  
BATTDATE : 2017-03-30
NOMINV   : 230 Volts
NOMBATTV : 12.0 Volts
NOMPOWER : 480 Watts
FIRMWARE : 925.T2 .I USB FW:T2
END APC  : 2023-10-22 09:06:47 +0200

Pour configurer une visualisation via navigateur, il faudra disposer d’un serveur http, j’utilise apache. On copiera les fichiers multimon.cgi, upsfstats.cgi, upsimage.cgi et upsstats.cgi présents sous /var/www/cgi-bin/ sous le répertoire cgi-bin de votre serveur apache, pour ma part /usr/local/apache2/cgi-bin.

Et voilà ce que ça donne avec des vieilles copies d’écran, mais ça n’a pas bougé d’un iota en terme d’information et d’ergonomie des années après.

Et quand on clique sur le lien à gauche, on obtient:

Le lien All data renvoie vers le résultat de la commande apcaccess status vu plus haut.

Laisser un commentaire