Dans cet article, nous allons voir comment faire communiquer un onduleur Eaton Ellipse 650 (mais le mode opératoire peut s'adapter à d'autres modèles d'onduleurs compatibles avec Linux) et un Raspberry Pi sous Raspbian. Le Raspberry Pi pourra alors accomplir une série d'actions : par exemple, dans le cas exposé ici, envoyer une notification de coupure électrique par courriel.
On commence par installer l'utilitaire NUT sous Linux :
aptitude install nut nut-usb
Puis on choisit le mode STANDALONE dans /etc/nut/nut.conf. Ensuite on ajoute un paragraphe correspondant à l'onduleur connecté en USB au Raspberry Pi dans /etc/nut/ups.conf :
[eaton] driver = usbhid-ups port = auto desc = "MGE UPS Systems"
On peut alors vérifier que la connexion à l'onduleur fonctionne par la commande :
/lib/nut/usbhid-ups -DDD -a eaton
SI l'utilitaire nous retourne une erreur similaire à "failed to claim USB device" alors cela peut signifier que les droits ne sont pas suffisants pour accéder à la ressource. On peut alors essayer la connexion avec la commande :
/lib/nut/usbhid-ups -DDD -u root -a eaton
Si cela fonctionne, on pourra alors régler (attention, c'est une méthode un peu brutale !) le problème en modifiant la section "usbfs-like devices" du fichier /lib/udev/rules.d/91-permissions.rules :
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \ - MODE="0664" + MODE="0666"
(attention au risque potentiel de sécurité de cette modification, à n'effectuer qu'en connaissance de cause !)
Une fois l'onduleur correctement reconnu, on ajoutera un utilisateur à la liste des utilisateurs autorisés à se connecter au service de l'onduleur. Ce paramétrage s'effectue en modifiant le fichier /etc/nut/upsd.users - on ajoutera par exemple
[utilisateur] password = monmotdepasse upsmon master
Enfin, on modifiera le fichier /etc/nut/usbmon.conf pour modifier les options de suivi :
MONITOR eaton@localhost 1 utilisateur monmotdepasse master
On pourra spécifier un script spécifique à exécuter lors des événements électriques :
NOTIFYCMD /path/to/notification/script
Et on pourra modifier le contenu des messages à envoyer pour chaque événement électrique reconnu :
NOTIFYMSG ONLINE "Electrical power is back ON - UPS %s on line power" NOTIFYMSG ONBATT "Loss of electrical power - UPS %s on battery" NOTIFYMSG LOWBATT "Loss of electrical power continues - UPS %s"
Pour chaque état de l'onduleur, on pourra spécifier les actions à effectuer : - EXEC = exécuter le script de notification paramétré plus haut - SYSLOG = mentionner l'événement dans le syslog du système - WALL = faire apparaître le message dans la console de tous les utilisateurs connectés
NOTIFYFLAG ONLINE EXEC+SYSLOG+WALL NOTIFYFLAG ONBATT EXEC+SYSLOG+WALL NOTIFYFLAG LOWBATT EXEC+SYSLOG+WALL
On pourra par exemple utiliser un scrit de notification de la sorte :
#! /bin/bash #Send email with detailed UPS report o=$(upsc eaton) d=$(date) echo -e "$d" "\n\nEvent: " "$*" "\n\n======Details on UPS=====\n" "$o" |mail -s "Evénement électrique" courriel@domain.tld #Add any other actions: send SMS, launch shutdowns of critical systems...
Bonne surveillance de votre onduleur !