Eaton Ellipse PRO 650

Eaton Ellipse PRO 650

Installer et surveiller votre onduleur sous Proxmox.

Introduction

Au vu des probables coupures de courant annoncées pour cet hiver et compte tenu que mon gentil serveur Proxmox fraichement installé et configuré mérite de s'éteindre proprement en cas de coupure de courant, j'ai fait l'acquisition d'un onduleur pour protéger quelques appareils.

Prérequis

Vous devez être sous une base Debian ; ce qui tombe bien puisque c'est le cas de Proxmox.

Et vous devez aussi être en possession d'un onduleur Eaton Elipse PRO 650.

En tout état de cause, ce tutoriel doit fonctionner aussi sur tous les systèmes Linux à base Debian ; donc c'est aussi valable pour Ubuntu par exemple.

Installation

Pour gérer cet onduleur, nous allons utiliser NUT (Network UPS Tools) ; et le modèle choisit est parfaitement reconnu et pris en charge par nut :

sudo apt install nut

Connexion de l'onduleur

Je pars du principe que l'onduleur est branché et connecté à la machine avec son câble USB.

Au cas où nous aurions besoin des informations d'identification de l'onduleur, on lance un petit :

sudo lsusb | grep UPS

Ce qui va nous donner quelque chose comme ça :

Bus 001 Device 010: ID 0463:ffff MGE UPS Systems UPS

MGE étant l'ancien nom d'Eaton, c'est bien notre onduleur.

Récupérons le Vendor ID ainsi que le Device ID dont nous aurons peut-être besoin un peu plus tard :

  • Vendor ID : 0463
  • Device ID : ffff

Configuration

Il faut déclarer l'onduleur dans le fichier /etc/nut/ups.conf :

[eaton]
driver = usbhid-ups
port = auto
desc = "Eaton Ellipse ECO 650"

Démarrage du driver

Maintenant que nous avons déclaré notre onduleur, il est temps de démarrer le driver upsdrvctl :

sudo upsdrvctl start

Si vous obtenez quelque chose comme ça, alors tout s'est bien passé :

NNetwork UPS Tools - UPS driver controller 2.6.4
Network UPS Tools - Generic HID driver 0.37 (2.6.4)
USB communication driver 0.32
Using subdriver: MGE HID 1.31t

Et dans ce cas, vous passez à la Configuration de nut.

Dans le cas ou ça ne fonctionne pas, vous aurez quelque chose comme ça :

Network UPS Tools - UPS driver controller 2.6.
Network UPS Tools - Generic HID driver 0.37 (2.6.4)
USB communication driver 0.32
Can't claim USB device [0463:ffff]: could not detach kernel driver from interface 0: Operation not permitted
Driver failed to start (exit status=1)4

L'erreur vient du fait que le demon nut est lancé en tant qu'utilisateur nut, qui n'est pas autorisé à accéder à l'interface USB, accessible uniquement par root. La meilleure façon d'autoriser nut d'accéder à l'interface USB est de déclarer une nouvelle règle udev.

Cette règle va utiliser le Vendor ID et le Device ID de votre onduleur que nous avons récupéré précédemment, elle permettra au compte(s) du groupe nut d'accéder au périphérique USB avec un chmod 660.

Pour créer cette règle, il suffit de créer /etc/udev/rules.d/90-nut-ups.rules et de rajouter dedans :

# Eaton Ellipse PRO 650
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="0463", ATTR{idProduct}=="ffff", MODE="0660", GROUP="nut" 

Pour que cette règle soit prise en compte immédiatement, il faut relancer le démon udev :

sudo service udev restart

Vous devez déconnecter puis reconnecter votre câble USB pour remonter l'onduleur avec la nouvelle règle récemment créer

Puis démarrons le driver upsdrvctl, ce qui doit finalement nous retourner cette sortie comme prévu :

NNetwork UPS Tools - UPS driver controller 2.6.4
Network UPS Tools - Generic HID driver 0.37 (2.6.4)
USB communication driver 0.32
Using subdriver: MGE HID 1.31t

Configuration de nut

nut peut fonctionner selon 4 modes :

  • none (defaut)
  • standalone
  • netserver
  • netclient

Celui qui nous intéresse est le mode standalone car il fonctionne en local uniquement et cela permettra de démarrer les 3 couches de nut :

  • driver
  • upsd
  • upsmon

Nous allons configurer upsd et upsmon - upsd communique avec le driver UPS que nous avons démarré - upsmon communique avec upsd et arrête la machine en cas de panne de courant Pourquoi faire comme cela ? tout simplement parce que plusieurs instances d'upsmon peuvent être lancé sur différentes machines (VM)  et communiquer avec un seul upsd qui gère l'onduleur physique.

Configuration d'upsd

Comme il sera utilisé localement sur le serveur, nous allons le faire écouter sur localhost (ipv4 et ipv6 (pas obligatoire selon votre conf)) et sur le port par défaut, à savoir le 3493 en éditant le fichier /etc/nut/upsd.conf et en ajoutant ou modifiant comme ceci :

LISTEN 127.0.0.1 3493
LISTEN ::1 3493 

Ensuite, nous allons créer un utilisateur local upsmonitor pour upsd, il sera utilisé par upsmon pour interagir avec upsd.

Nous allons le déclarer dans /etc/nut/upsd.users tout à la fin, ajoutez, en remplaçant, bien entendu "YOUR_PASSWORD" par un vrai mot de passe :

[upsmon]
password = YOUR_PASSWORD
upsmon master

Configuration d'ups monitor

Une fois l'utilisateur master créer dans upsd, nous allons faire de même dans upsmon, éditez /etc/nut/upsmon.conf et là aussi, tout à la fin, ajoutez :

# Commands for shutdown on power loss
MONITOR [email protected]lhost 1 upsmonitor YOUR_PASSWORD master
POWERDOWNFLAG /etc/killpower
SHUTDOWNCMD "/sbin/shutdown -h now"

À noter que pour POWERDOWNFLAG et SHUTDOWNCMD, vous aurez peut-être déjà une configuration qui conviendra. À vous de voir :)

Eaton est le nom que vous l'on a donné dans notre fichier /etc/nut/ups.conf et YOUR_PASSWORD celui que vous avez mis dans /etc/nut/upsd.users.

Dans la mesure où il y a des données sensible dans ces fichiers, nous devons faire en sorte que seul l'utilisateur root et le groupe nut puisse y accéder :

sudo chown root:nut /etc/nut/*
sudo chmod 640 /etc/nut/*

Test de connexion

Pour cela, vous avez juste à démarrer upsd demon et récupérer le status avec le client upsc :

sudo upsd

Ce qui donne comme résultat :

Network UPS Tools upsd 2.6.4
fopen /var/run/nut/upsd.pid: No such file or directory
listening on ::1 port 3493
listening on 127.0.0.1 port 3493
Connected to UPS [eaton]: usbhid-ups-eatond

Puis :

sudo upsc [email protected]

Ce qui donne comme résultat :

Conclusion

Votre serveur Proxmox est maintenant protégé.

Dès que la charge de l'onduleur atteindra les 20%, le signal d'arrêt sera envoyé à votre serveur.