Au début, soyons francs, cela ne m'intéressait pas trop de configurer la bête sur l'OS du Bien surtout après avoir vu que les différents outils pour administrer la chose semblaient être en Java[1].

Après avoir configuré le dit serveur pour y accéder de la maison[2] et branché l'onduleur via le câble USB fourni, je me suis mis en quête de le faire fonctionner.

Une petite recherche sur Internet et je trouve qu'il existe un petit moniteur de charge sous FreeBSD qui se nomme Nut qui se trouve être hébergé par Eaton... Ce qui est de bon augure quand on cherche à faire fonctionner un onduleur Eaton Ellipse ASR750 ;-)


Un rapide tour sur la liste des matériels compatibles est une formalité et confirme que cela va bien se passer.

J'installe donc Nut via les classiques :


root@rcjserveur : ~> cd /usr/ports/sysutils/nut/ && make install clean

Le bébé se présente bien.

La configuration ne pose pas trop de problème même si j'ai du adapter ça :

Pour ups.conf, on reste simple :


[eaton]

        driver = usbhid-ups

        port = auto

        desc = "EATON UPS"


hosts.conf


#

MONITOR eaton@localhost "UPS Eaton Ellipse"

# MONITOR su2200@10.64.1.1 "Finance department"

# MONITOR matrix@shs-server.example.edu "Sierra High School data room #1"


Pour upsd.users


Vous repasserez pour celui-là, ça donne les mots de passe de connexion !! Y a pas écrit pidgeon !!


Dans upsmon.conf


...



MONITOR eaton@localhost 1 mon_user mon_mot_de_passe master



...



SHUTDOWNCMD "/sbin/shutdown -p +0"


Tout semblait rouler comme sur des roulettes mais...

Le principal problème est venu des droits sur l'USB comme prévu. En effet, à la connexion ou au démarrage du système, les droits sont pour le moins génériques.

Heureusement, FreeBSD est là pour me sauver et propose une solution sympa en la personne de ''devd'' et de sa configuration nommée de façon étonnante ''devd.conf''. Je trouvais cette solution plus générique qu'avec devfs.


attach 100 {

        match "vendor" "0x0463";

        match "product" "0xffff";

        action "/usr/sbin/chown -R -L uucp:uucp /dev/$device-name";

};

Les valeurs n'ont bien sûr pas été choisies au hasard, un petit coup de ''usbconfig''


root@rcjserveur : ~> usbconfig -u 4 -a 2 dump_device_desc

ugen4.2: <ELLIPSE EATON> at usbus4, cfg=0 md=HOST spd=LOW (1.5Mbps) pwr=ON



  bLength = 0x0012 

  bDescriptorType = 0x0001 

  bcdUSB = 0x0110 

  bDeviceClass = 0x0000 

  bDeviceSubClass = 0x0000 

  bDeviceProtocol = 0x0000 

  bMaxPacketSize0 = 0x0008 

  idVendor = 0x0463 

  idProduct = 0xffff 

  bcdDevice = 0x0001 

  iManufacturer = 0x0001  <EATON>

  iProduct = 0x0002  <ELLIPSE>

  iSerialNumber = 0x0004  <BDCK520CF>

  bNumConfigurations = 0x0001 



Les tests ont été très simples. J'ai juste vérifié que je pouvais voir la charge de la machine en me disant que pour le script d'auto-extinction, je verrai ça plus tard.

Cela s'est très bien vérifié puisque le disjoncteur est tombé un vendredi soir et n'a été remis que le lundi suivant. En recherchant dans les journaux, j'ai pu trouver mon Saint-Graal :


Mar 11 17:28:35 RCJServeur upsmon[32074]: UPS eaton@localhost on battery



...



Mar 11 17:42:16 RCJServeur upsmon[32074]: UPS eaton@localhost battery is low

Mar 11 17:42:16 RCJServeur upsmon[32074]: Executing automatic power-fail shutdown

Mar 11 17:42:16 RCJServeur upsmon[32074]: Auto logout and shutdown proceeding

Mar 11 17:42:21 RCJServeur shutdown: power-down by fred: 

Mar 11 17:42:23 RCJServeur upsd[32047]: mainloop: Interrupted system call

Et zou, le serveur s'est bien éteint correctement quand l'onduleur a commencé à être court en jus. Well done Fred, you've got the power !!!

A ma grande surprise, le serveur semble par contre s'être rallumé directement au retour du courant alors que je n'ai rien configuré pour... Bon bah, tant mieux, je peux dormir sur mes deux oreilles :D

Notes

[1] Je bosse dessus toute la journée, je vais pas en plus en faire un passe-temps ;-)

[2] Je ne vous dirai pas comment, ce serait trop risqué, bandes de pirates assoifés de bits