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 là, 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.
J’aime ça :
J’aime chargement…