Gestion D'un Onduleur Sur Debian Avec Nut

Nut est un logiciel de gestion d’onduleur multi-marque. Il supporte plusieurs centaines de modèles. Nous allons voir comment l’installer pour surveiller notre onduleur et ainsi réagir en cas de coupure de courant.

Qu’est q’un onduleur.

Un onduleur sert à protéger des équipements de coupure de courant et/ou de surtension pouvant intervenir lorsque les appareils sont en fonctionnement. Cela est pertinent pour des équipements comme des routeurs/switch/nas tournant 24h/24 et 7j/7. Le prix de ces équipements étant souvent non négligeable, il est important de les protéger des aléas du réseau électrique.

Il existe 3 catégories d’onduleur :

  • Les offline
  • Les line-interactive
  • Les online

Onduleur Offline

Leur rôle est de prendre le relais en quelques dizaines de millisecond lors d’une panne de courant. Ces onduleurs agissent comme une batterie de secours. Aucune amélioration du courant n’est prévue.

Line-interactive

En plus de prendre le relais en cas de coupure, le courant en entrée est monitoré. Cela permet un temps de commutation plus rapide, de l’ordre de 2ms et de corriger la tension.

Online

Ici, le courant en entrée ne sert qu’à alimenter la batterie. Le courant est ensuite filtré et renvoyé aux équipements avec une tension idéale. En cas de coupure, aucun changement n’intervient pour les équipements qui fonctionnent déjà sur batterie.

Nut

Nut (Network UPS Tools) est un logiciel linux de surveillance des onduleurs. Il est disponible sur la majorité des distributions et permet notamment, pour les onduleurs le supportant, d’automatiquement éteindre proprement un serveur lorsque la batterie de l’onduleur arrive à terme. Nous allons voir l’installation sur une distribution debian.

Installation

Exécuter la commande :

1
2
sudo apt update
sudo apt install -y nut

Les fichiers de configuration sont accessibles dans /etc/nut.

1
2
3
4
5
6
-rw-r----- 1 root nut  1544  4 mars  19:23 nut.conf
-rw-r----- 1 root nut  5746  4 mars  12:43 ups.conf
-rw-r----- 1 root nut  4597  4 mars  20:20 upsd.conf
-rw-r----- 1 root nut  2209  4 mars  20:09 upsd.users
-rw-r----- 1 root nut 15385  4 mars  20:09 upsmon.conf
-rw-r----- 1 root nut  3879  15 oct. 2020 upssched.conf

Choix du mode d’exécution.

Le serveur Nut peut s’exécuter en mode standalone, en mode server uniquement ou en mode client uniquement. Par défaut, il est désactivé.

Ouvrir le fichier /etc/nut/nut.conf et changer la valeur du MODE à

1
MODE=standalone

Ce mode est le plus adapté pour un NAS qui servira à la fois de client et de serveur.

Ajout des onduleurs à gérer.

L’ensemble des onduleurs à monitorer doivent être référencés dans le fichier ups.conf.

Pour mon onduleur eaton cela donne :

1
2
3
4
5
6
7
8
9
[eaton]
        driver = "usbhid-ups"
        port = "auto"
        vendorid = "0463"
        productid = "FFFF"
        product = "Ellipse ECO"
        serial = "000000000"
        vendor = "EATON"
        bus = "003"

[eaton] est le nom de votre onduleur. Nous pouvons lui donner la valeur de notre choix. Cette valeur sera utilisée comme référence plus loin dans d’autres fichiers de configuration.

Il est possible de récupérer les informations nécessaires grâce à la commande :

1
sudo nut-scanner -U

Le -Uest pour demander au scanner de n’effectuer un scan que sur les ports USB. D’autres options sont disponibles ici : https://man.archlinux.org/man/nut-scanner.8

Configurer le contrôle d’accès.

Nut contrôle qui peut accéder à ces données depuis le fichier /etc/nut/upsd.conf

Comme mon NAS n’est accessible que depuis mon réseau local, j’ai choisi d’être assez permissif.

J’ai modifié le fichier en ajoutant :

LISTEN 0.0.0.0 3493

Cela permet à mon serveur home assistant “dockerisé” de pouvoir accéder à mon serveur nut sans avoir à préciser l’interface utilisée par docker.

Configuration des utilisateurs

La configuration des utilisateurs pouvant accéder à notre serveur nut s’effectue dans le fichier upsd.users.

Le format d’ajout d’un utilisateur est le suivant :

1
2
3
[admin]
       password = xxxxxxxxxxxxxxxxxxxxxx
       upsmin master

Nous définissons donc un utilisateur admin avec le mot de passe xxxxxxxxxxxxxxxxxxxxxx pour un système de type master. Un master attend que l’ensemble des slaves soit éteints avant de s’éteindre. Dans notre cas, le seul système, est le NAS.

Configuration des systèmes à gérer

Maintenant que nous avons un onduleur de monitoré et un utilisateur de créé, il nous reste à définir quoi faire sur le système avec ces données.

Cela se passe dans le fichier /etc/nut/upsmon.conf :

La première chose à faire est de définir un système à gérer via la ligne :

1
MONITOR "eaton@127.0.0.1:3493" 1 admin xxxxxxxxxxxxxxxxxxxxxx master

Nous retrouver notre onduleur avec son adresse eaton@127.0.0.1:3493, Le nombre d’alimentations fournies, ici 1 et l’association à notre utilisateur avec son nom et son mot de passe. Nous finissons par le type de système.

Dans ce fichier, il est possible de définir la commande envoyée au système lorsque la batterie de l’onduleur arrive à expiration :

1
SHUTDOWNCMD "/sbin/shutdown -h +0"

Une fois cette commande définit Nut se chargera d’arrêter proprement le système lorsque la batterie de l’onduleur ne pourra plus l’alimenter.

Cela est pratique en cas de coupure prolongé pour éviter d’éventuels dommages au matériel ou des pertes de données.

Conclusion

Nous avons maintenant un onduleur monitoré par nut. Ces données sont exploitables par n’importe quel logiciel compatible. C’est par exemple le cas de HomeAssistant via une intégration. Il devient ainsi possible de définir des scénarios plus complexes, comme l’envoi d’alerte en cas de défaut d’alimentation.

0%