PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Pierre-Alain Bandinelli : Onduleur et Raspberry Pi, détecter et agir en cas de panne de courant

dimanche 13 octobre 2013 à 07:54

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 !

Gravatar de Pierre-Alain Bandinelli
Original post of Pierre-Alain Bandinelli.Votez pour ce billet sur Planet Libre.