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

[pastacode lang= »bash » manual= »sept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20usb%202-1.1%3A%20new%20low-speed%20USB%20device%20number%203%20using%20ehci-pci%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20usb%202-1.1%3A%20New%20USB%20device%20found%2C%20idVendor%3D051d%2C%20idProduct%3D0002%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20usb%202-1.1%3A%20New%20USB%20device%20strings%3A%20Mfr%3D3%2C%20Product%3D1%2C%20SerialNumber%3D2%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20usb%202-1.1%3A%20Product%3A%20Back-UPS%20XS%20950U%20%20%20FW%3A925.T2%20.I%20USB%20FW%3AT2%20%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20usb%202-1.1%3A%20Manufacturer%3A%20American%20Power%20Conversion%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20usb%202-1.1%3A%20SerialNumber%3A%203B1713X09434%20%20%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20mtp-probe%5B2635%5D%3A%20checking%20bus%202%2C%20device%203%3A%20%22%2Fsys%2Fdevices%2Fpci0000%3A00%2F0000%3A00%3A1d.0%2Fusb2%2F2-1%2F2-1.1%22%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20mtp-probe%5B2635%5D%3A%20bus%3A%202%2C%20device%3A%203%20was%20not%20an%20MTP%20device%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20hidraw%3A%20raw%20HID%20events%20driver%20(C)%20Jiri%20Kosina%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20usbcore%3A%20registered%20new%20interface%20driver%20usbhid%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20usbhid%3A%20USB%20HID%20core%20driver%0Asept.%2016%2011%3A00%3A01%20mana.kervao.fr%20kernel%3A%20hid-generic%200003%3A051D%3A0002.0001%3A%20hiddev0%2Chidraw0%3A%20USB%20HID%20v1.10%20Device%20%5BAmerican%20Power%20Conversion%20Back-UPS%20XS%20950U%20%20%20FW%3A925.T2%20.I%20USB%20FW%3AT2%20%5D%20on%20usb-0000%3A00%3A1d.0-1.1%2Finput0″ message= » » highlight= » » provider= »manual »/]

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

[pastacode lang= »bash » manual= »Bus%20002%20Device%20003%3A%20ID%20051d%3A0002%20American%20Power%20Conversion%20Uninterruptible%20Power%20Supply » message= » » highlight= » » provider= »manual »/]

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à :

[pastacode lang= »bash » manual= »%5Bonduleur%5D%0A%20driver%20%3D%20usbhid-ups%20%0A%20port%20%3D%20auto%20%0A%20vendorid%20%3D%20051d%0A%20productid%20%3D%200002%0A%20desc%20%3D%20%22APC%20XS%20950U%22″ message= » » highlight= » » provider= »manual »/]

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

[pastacode lang= »bash » manual= ».%2Fconfigure%20–enable-usb%20–with-upstype%3Dusb%20–with-upscable%3Dusb%20–with-cgi-bin%3D%2Fusr%2Flocal%2Fapache2%2Fcgi-bin%2F%20–enable-cgi%20–with-log-dir%3D%2Fvar%2Flog » message= » » highlight= » » provider= »manual »/]

à 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 :

[pastacode lang= »bash » manual= »Configuration%20on%20Sat%20Sep%2016%2019%3A42%3A52%20CEST%202017%3A%0A%0A%20%20Host%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20x86_64-unknown-linux-gnu%20–%20mandrake%20for%0A%20%20Apcupsd%20version%3A%20%20%20%20%20%20%20%20%20%20%20%203.14.14%20(31%20May%202016)%0A%20%20Source%20code%20location%3A%20%20%20%20%20%20%20.%0A%20%20Install%20binaries%3A%20%20%20%20%20%20%20%20%20%20%20%2Fsbin%0A%20%20Install%20config%20files%3A%20%20%20%20%20%20%20%2Fetc%2Fapcupsd%0A%20%20Install%20man%20files%3A%20%20%20%20%20%20%20%20%20%20%24%7Bprefix%7D%2Fshare%2Fman%0A%20%20Nologin%20file%20in%3A%20%20%20%20%20%20%20%20%20%20%20%20%2Fetc%0A%20%20PID%20directory%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Fvar%2Frun%0A%20%20LOG%20dir%20(events%2C%20status)%20%20%20%20%2Fvar%2Flog%0A%20%20LOCK%20dir%20(for%20serial%20port)%20%20%2Fvar%2Flock%0A%20%20Power%20Fail%20dir%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Fetc%2Fapcupsd%0A%20%20Compiler%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20g%2B%2B%204.9.2%0A%20%20Preprocessor%20flags%3A%20%20%20%20%20%20%20%20%20%20-I%2Fusr%2Flocal%2Finclude%0A%20%20Compiler%20flags%3A%20%20%20%20%20%20%20%20%20%20%20%20%20-g%20-O2%20-fno-exceptions%20-fno-rtti%20-Wall%20-Wno-unused-result%20%0A%20%20Linker%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gcc%0A%20%20Linker%20flags%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20-L%2Fusr%2Flocal%2Flib64%20-L%2Fusr%2Flocal%2Flib%0A%20%20Host%20and%20version%3A%20%20%20%20%20%20%20%20%20%20%20mandrake%20for%0A%20%20Shutdown%20Program%3A%20%20%20%20%20%20%20%20%20%20%20%2Fusr%2Fbin%2Fshutdown%0A%20%20Port%2FDevice%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Fdev%2FttyS0%0A%20%20Network%20Info%20Port%20(CGI)%3A%20%20%20%203551%0A%20%20UPSTYPE%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20usb%0A%20%20UPSCABLE%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20usb%0A%0A%20%20drivers%20(no-*%20are%20disabled)%3A%20apcsmart%20dumb%20net%20linux-usb%20snmp%20pcnet%20modbus%20no-modbus-usb%20no-test%0A%0A%20%20enable-nis%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20yes%0A%20%20with-nisip%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%200.0.0.0%0A%20%20enable-cgi%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20yes%0A%20%20with-cgi-bin%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2Fusr%2Flocal%2Fapache2%2Fcgi-bin%2F%0A%20%20with-libwrap%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20enable-pthreads%3A%20%20%20%20%20%20%20%20%20%20%20%20yes%0A%20%20enable-dist-install%3A%20%20%20%20%20%20%20%20yes%0A%20%20enable-gapcmon%3A%20%20%20%20%20%20%20%20%20%20%20%20%20no%0A%20%20enable-apcagent%3A%20%20%20%20%20%20%20%20%20%20%20%20no%0A%20%20%0AConfiguration%20complete%3A%20Run%20’make’%20to%20build%20apcuspd. » message= » » highlight= » » provider= »manual »/]

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

[pastacode lang= »bash » manual= »%23nom%20de%20l’onduleur%0AUPSNAME%20onduleur%0AUPSCABLE%20usb%0AUPSTYPE%20usb%0ADEVICE%0A%0A%23%20si%20une%20coupure%20de%20courant%20survient%2C%20l’arr%C3%AAt%20est%20d%C3%A9clench%C3%A9%20quand%20le%20pourcentage%20restant%20est%20inf%C3%A9rieur%20est%20%C3%A9gal%20%C3%A0%20la%20valeur%20d%C3%A9finie%20par%20BATTERYLEVEL%0ABATTERYLEVEL%205%0A%0A%23%20si%20une%20coupure%20de%20courant%20survient%2C%20l’arr%C3%AAt%20est%20d%C3%A9clench%C3%A9%20quand%20le%20temps%20restant%20est%20inf%C3%A9rieur%20est%20%C3%A9gal%20%C3%A0%20la%20valeur%20d%C3%A9finie%20par%20MINUTES%0AMINUTES%203%0A%0A%23%20pour%20pouvoir%20monitorer%20via%20un%20navigateur%0ANETSERVER%20on%0A%23%20port%20du%20serveur%0ANISPORT%203551%0AUPSCLASS%20standalone » message= » » highlight= » » provider= »manual »/]

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 :

[pastacode lang= »bash » manual= »%5BUnit%5D%0ADescription%3DAPC%20UPS%20Power%20Control%20Daemon%20for%20Linux%0A%0A%5BService%5D%0AExecStartPre%3D-%2Fusr%2Fbin%2Frm%20-f%20%2Fetc%2Fapcupsd%2Fpowerfail%0AExecStart%3D%2Fusr%2Fsbin%2Fapcupsd%20-b%20-f%20%2Fetc%2Fapcupsd%2Fapcupsd.conf%0A%0A%5BInstall%5D%0AWantedBy%3Dmulti-user.target » message= » » highlight= » » provider= »manual »/]

on active le service en tapant :

systemctl enable apcupsd

et on le lance avec :

systemctl start apcupsd

voilà le résultat avec journalctl

[pastacode lang= »bash » manual= »sept.%2016%2020%3A07%3A51%20mana.kervao.fr%20apcupsd%5B18842%5D%3A%20apcupsd%203.14.14%20(31%20May%202016)%20mandrake%20startup%20succeeded%0Asept.%2016%2020%3A07%3A51%20mana.kervao.fr%20apcupsd%5B18842%5D%3A%20NIS%20server%20startup%20succeeded%0Asept.%2016%2020%3A07%3A51%20mana.kervao.fr%20kernel%3A%20hid-generic%200003%3A051D%3A0002.0002%3A%20hiddev0%2Chidraw0%3A%20USB%20HID%20v1.10%20Device%20%5BAmerican%20Power%20Conversion%20Back-UPS%20XS%20950U%20%20%20FW%3A925.T2%20.I%20USB%20FW%3AT2%20%5D%20on%20usb-0000%3A00%3A1d.0-1.1%2Finput0″ message= » » highlight= » » provider= »manual »/]

la commande apcaccess status me donne

[pastacode lang= »bash » manual= »APC%20%20%20%20%20%20%3A%20001%2C036%2C0878%0ADATE%20%20%20%20%20%3A%202017-09-16%2020%3A39%3A58%20%2B0200%20%20%0AHOSTNAME%20%3A%20mana.kervao.fr%0AVERSION%20%20%3A%203.14.14%20(31%20May%202016)%20mandrake%0AUPSNAME%20%20%3A%20onduleur%0ACABLE%20%20%20%20%3A%20USB%20Cable%0ADRIVER%20%20%20%3A%20USB%20UPS%20Driver%0AUPSMODE%20%20%3A%20Stand%20Alone%0ASTARTTIME%3A%202017-09-16%2020%3A38%3A59%20%2B0200%20%20%0AMODEL%20%20%20%20%3A%20Back-UPS%20XS%20950U%20%20%20%0ASTATUS%20%20%20%3A%20ONLINE%20%0ALINEV%20%20%20%20%3A%20234.0%20Volts%0ALOADPCT%20%20%3A%2016.0%20Percent%0ABCHARGE%20%20%3A%20100.0%20Percent%0ATIMELEFT%20%3A%2037.1%20Minutes%0AMBATTCHG%20%3A%205%20Percent%0AMINTIMEL%20%3A%203%20Minutes%0AMAXTIME%20%20%3A%200%20Seconds%0ASENSE%20%20%20%20%3A%20Medium%0ALOTRANS%20%20%3A%20155.0%20Volts%0AHITRANS%20%20%3A%20280.0%20Volts%0AALARMDEL%20%3A%2030%20Seconds%0ABATTV%20%20%20%20%3A%2013.4%20Volts%0ALASTXFER%20%3A%20No%20transfers%20since%20turnon%0ANUMXFERS%20%3A%200%0ATONBATT%20%20%3A%200%20Seconds%0ACUMONBATT%3A%200%20Seconds%0AXOFFBATT%20%3A%20N%2FA%0ASELFTEST%20%3A%20NO%0ASTATFLAG%20%3A%200×05000008%0ASERIALNO%20%3A%203B1713X09434%20%20%0ABATTDATE%20%3A%202017-03-30%0ANOMINV%20%20%20%3A%20230%20Volts%0ANOMBATTV%20%3A%2012.0%20Volts%0ANOMPOWER%20%3A%20480%20Watts%0AFIRMWARE%20%3A%20925.T2%20.I%20USB%20FW%3AT2%0AEND%20APC%20%20%3A%202017-09-16%2020%3A40%3A01%20%2B0200%0A » message= » » highlight= » » provider= »manual »/]

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