Branchez le câble de communication (ici un cable USB) de l'onduleur et vérifiez qu'il est bien détecté
# dmesg [ 6.345822] usb 1-2.2: new low-speed USB device number 5 using uhci_hcd [ 6.533536] usb 1-2.2: New USB device found, idVendor=0463, idProduct=ffff [ 6.533540] usb 1-2.2: New USB device strings: Mfr=1, Product=2, SerialNumber=4 [ 6.533543] usb 1-2.2: Product: PROTECTIONCENTER [ 6.533545] usb 1-2.2: Manufacturer: MGE OPS SYSTEMS [ 6.533547] usb 1-2.2: SerialNumber: 000000000
# apt-get install nut ... Les paquets supplémentaires suivants seront installés : libupsclient1 nut-client nut-server ...
Configurez votre onduleur: Il existe toute sorte de drivers, il faudra trouver le bon…
root@debian:/# ls /lib/nut/ al175 bcmxcp_usb bestuferrups clone-outlet genericups masterguard nutdrv_atcl_usb powercom riello_usb tripplite_usb victronups apcsmart belkin bestups dummy-ups isbmex metasys nutdrv_qx powerpanel safenet upscode2 apcsmart-old belkinunv blazer_ser etapro ivtscd mge-shut oldmge-shut rhino solis upsd apcupsd-ups bestfcom blazer_usb everups liebert mge-utalk oneac richcomm_usb tripplite upsmon bcmxcp bestfortress clone gamatronic liebert-esp2 microdowell optiups riello_ser tripplitesu usbhid-ups root@debian:/#
Ce fichier /usr/share/nut/driver.list contient une liste d'onduleurs et le driver qu'il faut utiliser. Dans mon cas :
"MGE UPS SYSTEMS" "ups" "5" "Protection Center 420" "USB" "usbhid-ups" "MGE UPS SYSTEMS" "ups" "5" "Protection Center 500" "USB" "usbhid-ups" "MGE UPS SYSTEMS" "ups" "5" "Protection Center 675" "USB" "usbhid-ups"
Le driver que je devrais utiliser sera “usbhid-ups”
# vi /etc/nut/ups.conf
...
# Set maxretry to 3 by default, this should mitigate race with slow devices:
#maxretry = 3
[mge]
driver = usbhid-ups
port = auto
desc = "Onduleur MGE"
offdelay = 30
ondelay = 40
pollonly
...
Commenter à la fin de ce fichier : maxretry = 3
Si vous n'êtes pas sur du port de communication, mettez le à: port = auto
Ajoutez ensuite une règle à UDEV afin qu'il attribue ttyS0 (si c'est bien le port sur lequel est l'onduleur) au groupe nut:
#vi /etc/udev/rules.d/99_nut-serialups.rules KERNEL=="ttyS0", GROUP="nut"
Rafraichissez UDEV
udevadm trigger udevadm control --reload-rules
Changez manuellement le groupe de ttyS0 (ce sera automatique au prochain demarrage):
chgrp nut /dev/ttyS0
Démarrez upsdrvctl afin de vérifier que votre configuration (dans ups.conf) est la bonne:
upsdrvctl start Network UPS Tools - UPS driver controller 2.7.4 Network UPS Tools - Generic HID driver 0.41 (2.7.4) USB communication driver 0.33 Using subdriver: MGE HID 1.39
Configurez nut.conf
#vi /etc/nut/nut.conf MODE=netserver
Configuration pour upsmon :
#vi /etc/nut/upsd.conf MAXAGE 25 LISTEN 127.0.0.1 3493 LISTEN 192.168.1.100 3493 LISTEN ::1 3493
Configuration pour upsd.users :
#vi /etc/nut/upsd.users [admin] password = motdepasse actions = SET instcmds = ALL [localhost] password = localhost upsmon master [slave] password = slave upsmon slave
#vi /etc/nut/upsmon.conf MONITOR mge@localhost 1 admin "mot_de_passe" master MINSUPPLIES 1 SHUTDOWNCMD "/sbin/shutdown -h now" HOSTSYNC 20 #POWERDOWNFLAG /etc/nut/killpower FINALDELAY 5 POLLFREQ 5 POLLFREQALERT 5 NOTIFYCMD /sbin/upssched NOTIFYMSG ONBATT "%s is on battery" NOTIFYMSG ONLINE "%s is back online" NOTIFYMSG LOWBATT "%s has a low battery!" NOTIFYMSG SHUTDOWN "System is being shutdown!" NOTIFYFLAG ONLINE SYSLOG+EXEC NOTIFYFLAG ONBATT SYSLOG+EXEC NOTIFYFLAG LOWBATT SYSLOG+EXEC NOTIFYFLAG FSD SYSLOG+WALL+EXEC NOTIFYFLAG COMMOK SYSLOG+EXEC NOTIFYFLAG COMMBAD SYSLOG+EXEC NOTIFYFLAG SHUTDOWN SYSLOG+EXEC NOTIFYFLAG REPLBATT SYSLOG+EXEC NOTIFYFLAG NOCOMM SYSLOG+EXEC
Configurons l'arrêt et les alertes :
#vi /etc/nut/upssched.conf
# les scripts CMDSCRIPT /bin/upssched-cmd # les mandats LOCKFN /var/lib/nut/upssched.lock PIPEFN /var/lib/nut/upssched.pipe # La Batterie est HS AT REPLBATT * EXECUTE batths # le timer de 5 sec apres ONBATT (ups on battery) event AT ONBATT * START-TIMER onbatt 5 # le timer de 5 sec apres ONLINE event AT ONLINE * START-TIMER online 5 # shutdown propre apres 5mn en ONBATT AT ONBATT * START-TIMER shutdown1 280 AT ONBATT * START-TIMER shutdown2 285 AT ONBATT * START-TIMER shutdown 300 # envoie mail comm avec onduleur KO AT COMMBAD * START-TIMER commbad 10 # envoie mail comm avec onduleur OK AT COMMOK * START-TIMER commok 10 AT COMMBAD * CANCEL-TIMER commok # Passage de la consigne ups.delay.shutdown à 30 AT COMMOK * START-TIMER delay 15 # annulation des actions si EDF OK AT ONLINE * CANCEL-TIMER onbatt AT ONLINE * CANCEL-TIMER shutdown
Le point important est de vérifier sur votre système si la fichier upssched-cmd existe et s'il se trouve à l'endroit que vous avez indiqué dans upssched.conf S'il n'existe pas:
touch /bin/upssched-cmd chmod +x /bin/upssched-cmd
#vi /bin/upssched-cmd #! /bin/sh # # This script should be called by upssched via the CMDSCRIPT directive. # # Here is a quick example to show how to handle a bunch of possible # timer names with the help of the case structure. # # This script may be replaced with another program without harm. # # The first argument passed to your CMDSCRIPT is the name of the timer # from your AT lines. case $1 in upsgone) logger -t upssched-cmd "The UPS has been gone for a while" ;; batths) logger -t upssched-cmd "La Batterie de l'onduleur est HS" echo "Batt Onduleur" | mail -s "La Batterie de l'onduleur est HS" damien.cellier@icloud.com ;; commbad) logger -t upssched-cmd "Envoi Avertissement via mail" echo "Communication Onduleur KO" | mail -s "la communication avec l'onduleur est KO" damien.cellier@icloud.com ;; commok) logger -t upssched-cmd "Envoi Avertissement via mail" echo "Communication Onduleur OK" | mail -s "la communication avec l'onduleur est OK" damien.cellier@icloud.com ;; onbatt) logger -t upssched-cmd "Envoi Avertissement via mail" echo "Coupure EDF" | mail -s "ONDULEUR Proxmox HS" damien.cellier@icloud.com ;; online) logger -t upssched-cmd "Envoi retour a la normal via mail" echo "EDF OK" | mail -s "ONDULEUR Proxmox OK" damien.cellier@icloud.com ;; shutdown) logger -t upssched-cmd "Shutting down using: upsmon -c fsd" upsmon -c fsd ;; shutdown1) logger -t upssched-cmd "Shutting down using: upsmon -c fsd" umount /mnt/pve/data ;; shutdown2) logger -t upssched-cmd "Shutting down using: upsmon -c fsd" umount /mnt/pve/data2 ;; stopusb) logger -t upssched-cmd "Arret du port usb" upsdrvctl stop ;; startusb) logger -t upssched-cmd "Relance du port usb" upsdrvctl start ;; delay) logger -t upssched-cmd "Ups.delay.shutdown = 30" upsrw -s ups.delay.shutdown=30 -u admin -p xxxmdpxxx mge ;; *) logger -t upssched-cmd "Unrecognized command: $1" ;; esac
Préparez le démarrage automatique de upsd et upsmon (selon votre branche - Stable, Testing ou Unstable - il peut y avoir des variations dans les noms des scripts dans init.d)
# update-rc.d ups-monitor defaults