Piloter un onduleur sous linux le retour

J’avais rédigé il y a quelque temps un post qui expliquait comment piloter un onduleur sous linux. En fait que je dis piloter, il s’agit de le monitorer et surtout que l’onduleur déclenche l’arrêt propre du poste linux qu’il alimente au bout d’un temps défini. J’utilisais jusqu’à présent un onduleur speex pp210, et bien qu’ayant changé les batteries il ne remplissait plus son office, il tombait immédiatement en cas de coupure entraînant avec lui mon serveur qu’il était censé protégé !

Du coup j’ai dû investir dans un nouvel onduleur, j’ai choisi un modèle d’une marque réputée traditionnellement compatible linux. Il s’agit d’un APC Back-UPS XS 950U à moins de 100€TTC livraison comprise.

quand on le branche en USB voilà ce que nous dit journalctl

sept. 16 11:00:01 mana.kervao.fr kernel: usb 2-1.1: new low-speed USB device number 3 using ehci-pci
sept. 16 11:00:01 mana.kervao.fr kernel: usb 2-1.1: New USB device found, idVendor=051d, idProduct=0002
sept. 16 11:00:01 mana.kervao.fr kernel: usb 2-1.1: New USB device strings: Mfr=3, Product=1, SerialNumber=2
sept. 16 11:00:01 mana.kervao.fr kernel: usb 2-1.1: Product: Back-UPS XS 950U FW:925.T2 .I USB FW:T2
sept. 16 11:00:01 mana.kervao.fr kernel: usb 2-1.1: Manufacturer: American Power Conversion
sept. 16 11:00:01 mana.kervao.fr kernel: usb 2-1.1: SerialNumber: 3B1713X09434
sept. 16 11:00:01 mana.kervao.fr mtp-probe[2635]: checking bus 2, device 3: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.1"
sept. 16 11:00:01 mana.kervao.fr mtp-probe[2635]: bus: 2, device: 3 was not an MTP device
sept. 16 11:00:01 mana.kervao.fr kernel: hidraw: raw HID events driver (C) Jiri Kosina
sept. 16 11:00:01 mana.kervao.fr kernel: usbcore: registered new interface driver usbhid
sept. 16 11:00:01 mana.kervao.fr kernel: usbhid: USB HID core driver
sept. 16 11:00:01 mana.kervao.fr kernel: hid-generic 0003:051D:0002.0001: hiddev0,hidraw0: USB HID v1.10 Device [American Power Conversion Back-UPS XS 950U FW:925.T2 .I USB FW:T2 ] on usb-0000:00:1d.0-1.1/input0

Il est correctement reconnue sur ma Mageia 5.1 et un lsusb va nous donner:

Bus 002 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply

Si on essaye de le configurer avec Network UPS Tools (NUT) le fichier de configuration adapté /usr/local/etc/ups.conf aura cette tête là :

[onduleur]
driver = usbhid-ups
port = auto
vendorid = 051d
productid = 0002
desc = "APC XS 950U"

sauf qu’il n’est pas totalement bien reconnu quand on le monitore:

On voit qu’au niveau d’Output il y a un Not supported. On laisse donc tomber NUT et on va faire appel à apcupsd qui comme son nom l’indique est prévu pour les onduleurs APC. Le site officiel est par , on désarchive l’archive en tapant:

tar xvfz apcupsd-3.14.14.tar.gz

dans le répertoire apcupsd-3.14.14 on tapera

./configure --enable-usb --with-upstype=usb --with-upscable=usb --with-cgi-bin=/usr/local/apache2/cgi-bin/ --enable-cgi --with-log-dir=/var/log

à noter qu’il faut disposer d’un serveur apache local, j’ai indiqué le chemin des scripts CGI. Voilà le résultat de la commande :

Configuration on Sat Sep 16 19:42:52 CEST 2017:

Host: x86_64-unknown-linux-gnu -- mandrake for
Apcupsd version: 3.14.14 (31 May 2016)
Source code location: .
Install binaries: /sbin
Install config files: /etc/apcupsd
Install man files: ${prefix}/share/man
Nologin file in: /etc
PID directory: /var/run
LOG dir (events, status) /var/log
LOCK dir (for serial port) /var/lock
Power Fail dir /etc/apcupsd
Compiler: g 4.9.2
Preprocessor flags: -I/usr/local/include
Compiler flags: -g -O2 -fno-exceptions -fno-rtti -Wall -Wno-unused-result
Linker: gcc
Linker flags: -L/usr/local/lib64 -L/usr/local/lib
Host and version: mandrake for
Shutdown Program: /usr/bin/shutdown
Port/Device: /dev/ttyS0
Network Info Port (CGI): 3551
UPSTYPE usb
UPSCABLE usb

drivers (no-* are disabled): apcsmart dumb net linux-usb snmp pcnet modbus no-modbus-usb no-test

enable-nis: yes
with-nisip: 0.0.0.0
enable-cgi: yes
with-cgi-bin: /usr/local/apache2/cgi-bin/
with-libwrap:
enable-pthreads: yes
enable-dist-install: yes
enable-gapcmon: no
enable-apcagent: no

Configuration complete: Run 'make' to build apcuspd.

on tape ensuite make puis make install en tant que root. On édite maintenant le fichier /etc/apcupsd/apcupsd.conf qui doit contenir :

#nom de l'onduleur
UPSNAME onduleur
UPSCABLE usb
UPSTYPE usb
DEVICE

# 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

# pour pouvoir monitorer via un navigateur
NETSERVER on
# port du serveur
NISPORT 3551
UPSCLASS standalone

Attention de prévoir d’ouvrir le port 3551 avec shorewall. Avec systemd on créera le fichier /usr/lib/systemd/system/apcupsd.service qui contiendra :

[Unit]
Description=APC UPS Power Control Daemon for Linux

[Service]
ExecStartPre=-/usr/bin/rm -f /etc/apcupsd/powerfail
ExecStart=/usr/sbin/apcupsd -b -f /etc/apcupsd/apcupsd.conf

[Install]
WantedBy=multi-user.target

on active le service en tapant :

systemctl enable apcupsd

et on le lance avec :

systemctl start apcupsd

voilà le résultat avec journalctl

sept. 16 20:07:51 mana.kervao.fr apcupsd[18842]: apcupsd 3.14.14 (31 May 2016) mandrake startup succeeded
sept. 16 20:07:51 mana.kervao.fr apcupsd[18842]: NIS server startup succeeded
sept. 16 20:07:51 mana.kervao.fr kernel: hid-generic 0003:051D:0002.0002: hiddev0,hidraw0: USB HID v1.10 Device [American Power Conversion Back-UPS XS 950U FW:925.T2 .I USB FW:T2 ] on usb-0000:00:1d.0-1.1/input0

la commande apcaccess status me donne

APC      : 001,036,0878
DATE : 2017-09-16 20:39:58 0200
HOSTNAME : mana.kervao.fr
VERSION : 3.14.14 (31 May 2016) mandrake
UPSNAME : onduleur
CABLE : USB Cable
DRIVER : USB UPS Driver
UPSMODE : Stand Alone
STARTTIME: 2017-09-16 20:38:59 0200
MODEL : Back-UPS XS 950U
STATUS : ONLINE
LINEV : 234.0 Volts
LOADPCT : 16.0 Percent
BCHARGE : 100.0 Percent
TIMELEFT : 37.1 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.4 Volts
LASTXFER : No transfers since turnon
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 : 2017-09-16 20:40:01 0200

et voilà ce que ça donne quand on accède via le navigateur

quand on clique sur Local Host

en provoquant une coupure de courant (en débranchant simplement l’onduleur)

à noter que les commandes de shutdown sont configurables dans le fichier /etc/apcupsd/apccontrol.

Laisser un commentaire