Mot-clé - onduleur

Fil des billets

dimanche 13 octobre 2013

Onduleur et Raspberry Pi, détecter et agir en cas de panne de courant

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 !