[lmt-post-modified-info]
Utiliser un onduleur sous GNU/Linux est facile sur GNU/Linux avec Network-UPS-Tools et un client. Je vous explique comment faire.
Sommaire
- Introduction
- Installations
- Configuration de Network UPS Tool
- Communiquer avec l’onduleur
- Configurer KNutClient
- Problème
Introduction
Network UPS Tools (NUT) fournit un support pour les onduleurs, les unités de distribution d'énergie, les commutateurs de transfert automatique, les blocs d'alimentation et régulateurs solaires.
Même si je vais m’attarder sur KNutClient, vous avez le choix du client.
Installations
Network UPS Tools
Network UPS Tools s’installe simplement avec le paquet nut
.
KNutClient
Vous pouvez installer KNutClient avec les dépôts Trinity Desktop (Trinity Desktop est un fork de KDE 3.5) avec certaines distributions :
Sous Debian 12 :
Installez la clé GPG :
wget http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-keyring.deb
sudo dpkg -i trinity-keyring.deb
Ajoutez les deux dépôts :
deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.1.x <your-distribution-release-name> main deps
# Optional sources
deb-src http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.1.x <your-distribution-release-name> main deps
Actualisez les dépôts et installez le paquet knutclient-trinity :
sudo apt update
sudo apt install knutclient-trinity
Plusieurs dépendances sont requises pour la bonne exécution de Knutclient :
sudo apt install compiz-core-trinity compiz-fusion-plugins-extra-trinity compiz-fusion-plugins-main-trinity compiz-plugins-trinity compiz-tde-trinity compiz-trinity libcompizconfig0-trinity libdecoration0-trinity libjasper1 libarts1c2a-trinity libartsc0-trinity libavahi-tqt-1 libdbus-1-tqt libdbus-tqt-1-1c2 libr0 libtqt3-mt libtqt3-mt-data libtqtinterface tdelibs-data-trinity tdelibs14-trinity twin-trinity
Vous pouvez lancer le logiciel avec la commande suivante :
/opt/trinity/bin/knutclient
Il existe un lanceur ici :/opt/trinity/share/applications/kde/knutclient.desktop
Sous Ubuntu 22.04 :
Ajoutez la clé GPG :
wget http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-keyring.deb
sudo dpkg -i trinity-keyring.deb
Ajoutez les deux dépôts :
deb http://mirror.ppa.trinitydesktop.org/trinity/deb/trinity-r14.0.x jammy main
deb http://mirror.ppa.trinitydesktop.org/trinity/deb /trinity-builddeps-r14.0.x jammy main
Actualisez les dépôts et installez le paquet knutclient-trinity :
sudo apt update
sudo apt install knutclient-trinity
Vous lancez le logiciel avec la commande suivante :
/opt/trinity/bin/knutclient
Il existe un lanceur ici : /opt/trinity/share/applications/kde/knutclient.desktop
Sous openSUSE Leap 15.4 :
Installez le dépôt additionnel et installez KNutClient :
sudo rpm --import http://mirror.ppa.trinitydesktop.org/trinity/rpm/opensuse15.4/RPM-GPG-KEY-trinity
sudo zypper ar http://mirror.ppa.trinitydesktop.org/trinity/rpm/opensuse15.4/trinity-r14/RPMS/x86_64 trinity
sudo zypper ar http://mirror.ppa.trinitydesktop.org/trinity/rpm/opensuse15.4/trinity-r14/RPMS/noarch trinity-noarch
sudo zypper install trinity-knutclient
Vous pouvez lancer le logiciel avec la commande suivante :
/opt/trinity/bin/knutclient
Il existe un lanceur ici :/opt/trinity/share/applications/kde/knutclient.desktop
Le dépôt Trinity existe pour ArchLinux mais KNutClient n’y est pas présent.
Installation maison
J’ai créé une archive zip compilé par mes soins de la version 1.1.1, vous pouvez la télécharger ici : knutclient.zip (1,4 Mo) (somme de contrôle SHA256 : 4621899a5abb0934c9680389ac7abd2ecb71ba36ea64fb4ee9d370727f55cec2). Pour l'installer, ce n'est pas très compliqué. Dans votre navigateur de fichiers, vous dézippez l'archive (là suivant votre navigateur de fichiers, vous pourrez ou non dézipper avec un clic droit et choisir « Extraire ici »). Ainsi, vous vous retrouvez avec un beau répertoire knutclient.
Faites un clic droit sur le répertoire et choisissez : « Ouvrir un terminal ici » ou quelque chose du genre. Vous voilà dans le terminal.
Tapez la commande suivante avec une ArchLinux ou une Manjaro Linux :
./install-archlinux.sh
Maintenant avec une Debian, Ubuntu ou Mint :
./install-deb.sh
Pour finir, avec une distribution fondée sur RPM.
./install-rpm.sh
Le script va faire appel à votre gestionnaire de paquet en ligne de commandes pour installer les dépendances (pacman pour ArchLinux et Manjaro Linux), (apt-get pour les paquets deb) (et yum pour les paquets RPM). Comme vous le voyez, ç'a tout copié dans le répertoire /usr/local/
pour bien différencier le logiciel installé à la main de ceux installés avec un gestionnaire de logiciel.
Faites un « Alt+ F2 » et tapez knutclient.
Voilà, c'est fini pour cette partie installations.
Configuration de Network UPS Tools
Configurer, démarrer le pilote
Pour trouver le pilote de votre onduleur, regardez la liste des onduleurs supportés par NUT avec le nom des pilotes à utiliser.
Une fois que vous avez le nom du pilote de votre onduleur, éditez le fichier /etc/nut/ups.conf
eaton
, c'est l'identifiant que j'ai donné à mon onduleur. usbhid-ups
, c'est le nom du pilote de l'onduleur. Le port = auto
, c'est le port utilisé par l'onduleur, ici, comme c'est comme c'est de l'USB, on laisse en auto. Alors, on ajoute ainsi desc = "Eaton Protection Station 800"
, c'est la marque et le modèle de mon onduleur donc, mettez celle et celui de votre onduleur.
Ajoutez ceci à la fin du fichier.
[ONDULEUR]
driver = usbhid-ups
port = auto
desc = "Eaton Ellipse PRO 1600"
Remplacez ONDULEUR
par un identifiant pour votre onduleur.
Testez le pilote :
sudo upsdrvctl start
Activez et lancez le service nut-driver-enumerator.service
sudo systemctl enable nut-driver-enumerator.service
sudo systemctl start nut-driver-enumerator.service
Configurer, activer et démarrer upsd
On va dire à upsd quelles adresses il doit écouter pour le commander, et alors pouvoir passer le pilote au démon. Pour passer les adresses IP à upsd, il faut donc les trouver, pour ça on va donc ouvrir un fichier en lecture seule (donc pas besoin de terminal ni de sudo) on ouvre le fichier /etc/hosts
ce qui pour moi me donne ça :
⋕ Host addresses
127.0.0.1 localhost
127.0.1.1 ignace-pc
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Éditez le fichier /etc/nut/upsd.conf
On ajoute à la fin du fichier ces trois éléments qui composent une ligne, et l'on peut ajouter autant de ligne que nécessaire. Attention tout de même, on ne s'occupe pas de adresses en IPv6.
LISTEN : ÉCOUTEZ en anglais qui dit à upsd d'écouter.
X.X.X.X : l'adresse IP qui doit être écoutée par upsd.
YYYY : le port TCP/IP utilisé par upsd pour écouter, 3493, est le port par défaut.
Ce qui donne ça pour mon fichier personnel :
LISTEN 127.0.0.1 3493
LISTEN 127.0.1.1
LISTEN localhost
LISTEN ignace-pc
Éditez le fichier /etc/nut/upsd.users
Ce fichier permet de configurer les accès au démon upsd.
Seuls les utilisateurs présents dans le fichier seront habilités à connaitre l'état de l'onduleur.
À la fin du fichier, ajoutez ce qui suit :
[UTILISATEUR]
password = MOT_DE_PASSE
upsmon master
actions = SET
instcmds = ALL
Remplacez UTILISATEUR
par un nom d’utilisateur et MOT_DE_PASSE
par un mot de passe.
Configurer le mode de fonctionnement de NUT
NUT peut être utilisé selon quatre modes de fonctionnement qui sont les suivants :
none (aucun) : NUT n’est pas configuré, ou utilise la gestion intégrée de l’alimentation, ou utilise un système externe pour démarrer les composants de NUT. Rien ne doit donc être démarré.
standalone (autonome) : Ce mode s’adresse à une configuration locale uniquement, avec 1 onduleur protégeant le système local. Cela implique de démarrer les 3 couches de NUT (driver, upsd et upsmon) et les fichiers de configuration correspondants. Ce mode permet également de gérer la redondance des onduleurs.
netserver : même chose que pour la configuration autonome, mais il faut aussi plus de contrôles d’accès au réseau (firewall, tcp-wrappers) et éventuellement une directive LISTEN spécifique dans upsd.conf.
Puisque ce MODE est ouvert au réseau, une attention particulière doit être portée aux questions de sécurité.
netclient : ce mode ne nécessite qu’upsmon.
Pour définir le mode de fonctionnement de NUT, vous devez éditer le fichier /etc/nut/nut.conf :
MODE=standalone
Activez et lancez le service NUT :
sudo systemctl enable nut-server.service
sudo systemctl start nut-server.service
Configurer, activer et démarrer upsmon
upsmon permet d'interroger à travers le réseau les différents démons upsd pour connaître l'état du réseau ondulé. upsmon permet également de lancer des commandes spécifiques à distance lorsque certains événements surviennent, comme l'extinction des machines lorsque la batterie des onduleurs devient trop faible.
Éditez le fichier /etc/nut/upsmon.conf
Ajoutez la ligne suivante avec l’identifiant de l’onduleur défini dans ups.conf
, l’utilisateur et le mot de passe définit dans le fichierupsd.users
MONITOR ONDULEUR@MACHINE_DISTANTE 1 UTILISATEUR MOT_DE_PASSE master
Les variables :
SHUTDOWNCMD
, upsmon exécute cette commande quand le système doit être arrêté (la commande configurée éteint proprement l'ordinateur).NOTIFYCMD
, upsmon exécute cela pour envoyer des messages quand des événements se produisent.POLLFREQ
défini la fréquence d’interrogation de l’état de l’onduleur (par défaut toutes les 5 secondes).POLLFREQALERT
permet de réduire la fréquence d’interrogation quand l’onduleur est sur batterie.DEADTIME
défini au bout de combien de secondes sans réponse l’onduleur doit être considéré comme mort (par défaut 15 secondes), doit être un multiple dePOLLFREQ
et dePOLLFREQALERT
.FINALDELAY
, délai avant l’exécution deSHUTDOWNCMD
après la notification d’extinction.NOCOMMWARNTIME
, délai d’attente avant de notifier la perte de communication avec l’onduleur.RBWARNTIME
, fréquence d’envoi de notification lorsque l’onduleur signale que la batterie doit être changée.
Pour les autres variables, visitez cette page :
https://networkupstools.org/docs/man/upsmon.conf.html
sudo systemctl enable nut-monitor.service
sudo systemctl start nut-monitor.service
Activer et démarrer les cibles systemd
Lancez les commandes suivantes :
sudo systemctl enable nut.target
sudo systemctl start nut.target
sudo systemctl enable nut-driver.target
sudo systemctl start nut-driver.target
Communiquer avec l’onduleur
Interroger l’onduleur
C’est une évidence, vous pouvez interroger l’onduleur pour connaitre son état. C’est le minimum.
upsc ONDULEUR
Pas besoin d’ajouter @localhost
, upsc comprend que vous êtes en local.
Pour l’exemple, voilà ce que cela donne pour mon onduleur :
[ignace@ignace-PC ~]$ upsc eaton
battery.charge: 100
battery.charge.low: 20
battery.runtime: 2367
battery.type: PbAc
device.mfr: EATON
device.model: Ellipse PRO 1600
device.serial: P363J49NLM
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: auto
driver.version: 2.8.0
driver.version.data: MGE HID 1.46
driver.version.internal: 0.47
driver.version.usb: libusb-1.0.26 (API: 0x1000109)
input.frequency: 50.0
input.transfer.high: 285
input.transfer.low: 165
input.voltage: 229.0
input.voltage.extended: no
outlet.1.desc: PowerShare Outlet 1
outlet.1.id: 2
outlet.1.status: on
outlet.1.switchable: no
outlet.2.desc: PowerShare Outlet 2
outlet.2.id: 3
outlet.2.status: on
outlet.2.switchable: no
outlet.desc: Main Outlet
outlet.id: 1
outlet.switchable: no
output.frequency: 50.0
output.frequency.nominal: 50
output.voltage: 227.0
output.voltage.nominal: 230
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.delay.start: 30
ups.firmware: 01.16.0020
ups.load: 13
ups.mfr: EATON
ups.model: Ellipse PRO 1600
ups.power: 139
ups.power.nominal: 1600
ups.productid: ffff
ups.realpower: 134
ups.serial: P363J49NLM
ups.status: OL
ups.timer.shutdown: -1
ups.timer.start: -1
ups.vendorid: 0463
Si vous êtes distant de l’onduleur, adaptez la commande suivante :
upsc ONDULEUR@MACHINE_DISTANTE
MACHINE_DISTANTE
peut être une adresse IP ou l’alias de la machine distante.
Pour connaitre le status de l’onduleur :
upsc ONDULEUR ups.status
Si la commande vous répond OL
, l’onduleur est en ligne (On Line).
Envoyer une commande à l’onduleur
Lister les commandes supportées par le pilote :
upscmd -l ONDULEUR
Envoyer une commande à l’onduleur :
upscmd -u UTILISATEUR -p MOT_DE_PASSE ONDULEUR@MACHINE_DISTANTE COMMANDE
Configurer KNutClient
Lancez KNutClient par la combinaison des touches Alt+F2, dans la fenêtre qui s'ouvre, tapez knutclient
et cliquez sur Lancer.
La fenêtre de KNutClient s'ouvre :
C'est bien gris tout ça, comme vous avez (avec la commande upsc) tout ce qu'il vous faut pour bien configurer KNutClient.
On y va, cliquez sur « Configurer KNutClient… ». Alors, vous arrivez à cette fenêtre :
À gauche, vous avez le menu avec six icônes nommées sur le premier « Paramètres », vous ne devriez rien avoir à changer.
Passons au suivant :
Ajouter un onduleur
Là, cela devient intéressant, ici, on peut ajouter, enlever ou modifier un onduleur. Ici, j'ai déjà le mien qui a déjà été ajouté. Cliquez sur « Ajouter », vous avez la fenêtre de configuration des paramètres de l'onduleur :
Il reste plus qu'à configurer l'onduleur, vous lui donnez un nom. L'adresse, c'est le nom d'hôte ou l'IP de l'onduleur, le délai en ms, on n'y touche pas, le port, c'est bon aussi. Indiquez l’utilisateur et son mot de passe (défini dans le fichier upsd.users
de la machine hôte). Pour les variables, vous sélectionnez vos variables disponibles et les ajouter, une variable après l'autre, vous en sélectionnez une et vous cliquez sur la flèche vers la droite pour la passer dans la colonne de droite. Dans les valeurs sélectionnées, vous pouvez faire varier l'ordre de chaque valeur avec les boutons vers le haut et vers le bas et l’on fait « ok » quand c'est fini. Voilà ce que donne ma configuration avec mon onduleur :
Configuration du panneau
Maintenant, voyons les paramètres du panneau (sur l'interface principale, c'est le panneau à gauche), c'est explicite, vous cochez, vous cliquez sur « Appliquer » puis sur « OK » pour finir.
Le menu « Polices » donne la possibilité d'utiliser des polices de caractères personnalisées. Le menu « Analogique » propose la possibilité de modifier les couleurs des cadrans analogiques de l'interface.
Configuration du dock
Maintenant, vous configurerez le dock (c'est l'icône dans la zone d'état) :
Voilà l'interface principale de KNutClient une fois NUT et KNutClient configurées :
Résultat
Bonus : les données dans Conky
Pour consommer encore moins, plutôt qu’utiliser KNutClient, vous pouvez utiliser les données dans Conky sur le bureau. Cela prend beaucoup moins de surface sur les petits écrans.
Reprenez la commande vu plus haut : upsc eaton@localhost
Vous avez des lignes avec des variables avec les données après.
Ouvrez le fichier .config/conky/conky.conf et ajoutez après conky.text = [[
par exemple :
Onduleur ${hr 2}
${color1}Charge de la batterie : ${exec upsc eaton@localhost battery.charge} %
${color1}Charge de l’onduleur : ${exec upsc eaton@localhost ups.load} %
${color1}Charge de l’onduleur : ${exec upsc eaton@localhost ups.power} VA
${color1}Status : ${exec upsc eaton@localhost ups.status}
Problèmes
Le lanceur ne démarre pas KNutClient
Il peut arriver que KNutClient ne démarre pas avec un lanceur.
Dans les arguments du lanceur, vous pouvez avoir -caption %c %i %m
.
Supprimez cela et KNutClient devrait maintenant se lancer normalement.
Impossible de réclamer le périphérique USB
Si vous recevez un message d'erreur comme celui-ci :
Can't claim USB device [XXXX:YYYY]: could not detach kernel driver from
interface 0: Operation not permitted
Driver failed to start (exit status=1)
Ou une autre moins spécifique :
USB communication driver 0.33
No matching HID UPS found
Driver failed to start (exit status=1)
Il s'agit probablement d'un problème d'autorisations d'accès au périphérique. Vous pouvez y remédier en spécifiant une règle udev
qui définit le groupe correct.
Créez le fichier suivant : /etc/udev/rules.d/50-ups.rules
:
SUBSYSTEM=="usb", ATTR{idVendor}=="XXXX", ATTR{idProduct}=="YYYY", GROUP="nut"
XXXX
et YYYY
sont les identifiants du fabricant et du produit. Vous pouvez les voir dans la sortie d'erreur ([XXXX:YYYY]
) ou grâce à lsusb
.
Après cela, rechargez et réenclenchez les règles udev
en exécutant :
sudo udevadm control --reload
sudo udevadm trigger
Voilà, ce tutoriel est terminé. Voici les liens des sites officiels pour des deux logiciels :