Bonjour à tous,
Petit retour d’expérience sur l’installation et l’utilisation de l’onduleur Ellipse ECO 800 connecté à mon Rasberry. Suivi du statut dans Jeedom avec fermeture propre du RaspBian en cas de faible énergie.
Surtout si vous pensez qu’il faut améliorer le sujet, ne pas hésiter
Je me suis fortement inspiré du tuto https://doc.ubuntu-fr.org/nut, principalement pour installer la composante NUT Server.
J’ai sauté quelques étapes qui n’étaient pas utiles dans mon contexte
J’ulise le plugin nut_free qui permet d’interroger le serveur NUT (Linux) qui lui même reçoit les infos de l’onduleur via le port USB.
Le plugin met à jour le statut de l’onduleur toutes les minutes ce qui est largement suffisant pour gérer l’arrêt du Raspberry.
Les étapes
- 1 - Installation du service NUT
- 2 - Configuration du service NUT
- 3 - Installation/configuration du plugin nut_free
- 4 - Scénario afin de gérer l’arrêt ‹ propre › du raspberry en cas de forte baisse de la batterie
1 - Installation du service NUT
Commandes Rasbian simples
J’effectue toutes mes commandes en aignat au préalable tapé ‹ sudo su ›, vrai pour toute la suite
Sudo su
apt-get install nut
2 - Configuration du service NUT
2.1 - Vérification de la présence de l’onduleur
Il est bien présent dans la liste des équipements USB en utilisant la commande lsusb
‹ MGE UPS systems UPS › est bien présent
lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 012: ID 0463:ffff MGE UPS Systems UPS
Bus 001 Device 010: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 009: ID 1a40:0101 Terminus Technology Inc. Hub
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
2.2 Configuration de NUT
ouverture du fichier nut.conf, j’utilise nano pour ouvrir les fichiers
nano /etc/nut/nut.conf
Modifier la ligne en fin de fichier MODE en indiquant le MODE
MODE=standalone
2.3 Configuration du driver NUT pour les services NUT préconisé pour un onduleur Eaton
Cela est indiqué sur le site de NUT https://networkupstools.org/
Ouverture du fichier ups.conf
nano /etc/nut/ups.conf
ATTENTION : il faut impérativement supprimer la ligne ‹ maxretry = 3 › car visiblement pause problème avec ce driver, trouvé sur d’autres Tutos.
[eaton] : est le nom de référence que vous voulez utiliser pour les lignes de commandes
desc : description libre qui sera remontée par le serveur NUT et donc dans le plugin NUT_FREE
Ajouter à la fin du fichier les lignes suivantes
[eaton]
driver = usbhid-ups
port = auto
desc = "Eaton Ellipse Eco 800"
2.4 Gestion des droits sur l’onduleur
Nécessaire uniquement si vous voulez lancer des ordres d’exécution comme la demande de l’arrêt de l’onduleur. j’ai fait au plus simple car pas besoin pour moi de sécurité multiples.
Le user et Password sera a passé dans la ligne de commande pour arrêter l’onduleur.
Ouverture du fichier upsd.users
nano /etc/nut/upsd.users
Ajouter les lignes suivantes, le user et password est à votre convenance
[admin]
password = adminpass
actions = SET
instcmds = ALL
2.5 Les taches sont terminées, on peut lancer les services à la main
je préfère redémarrer mon raspberry , et vérification du bon fonctinnement avec les commandes
Après le reboot en ligne de commande
‹ Eaton › étant le nom que l’on a attrbué dans le fichier de paramètres
Retour du statut de l’onduleur
upsc eaton ups.status
OL
Résultat OL : Onduleur alimenté
Retour de toutes les infos (il y a du monde )
upcs eaton
Init SSL without certificate database
battery.charge: 95
battery.charge.low: 20
battery.runtime: 2565
battery.type: PbAc
device.mfr: EATON
device.model: Ellipse ECO 800
device.serial: 000000000
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.data: MGE HID 1.39
driver.version.internal: 0.41
input.transfer.high: 264
input.transfer.low: 161
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.power: 25
outlet.switchable: no
output.frequency.nominal: 50
output.voltage: 230.0
output.voltage.nominal: 230
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.delay.start: 30
ups.firmware: 02
ups.load: 0
ups.mfr: EATON
ups.model: Ellipse ECO 800
ups.power.nominal: 800
ups.productid: ffff
ups.serial: 000000000
ups.status: OL
ups.timer.shutdown: 0
ups.timer.start: 0
ups.vendorid: 0463
Commandes acceptées par l’onduleur
(à connaitre pour effectuer un arrêt par exemple au bout de x secondes)
upscmd -l eaton@localhost
Résultat
beeper.disable - Disable the UPS beeper
beeper.enable - Enable the UPS beeper
beeper.mute - Temporarily mute the UPS beeper
beeper.off - Obsolete (use beeper.disable or beeper.mute)
beeper.on - Obsolete (use beeper.enable)
load.off - Turn off the load immediately
load.off.delay - Turn off the load with a delay (seconds)
load.on - Turn on the load immediately
load.on.delay - Turn on the load with a delay (seconds)
shutdown.return - Turn off the load and return when power is back
shutdown.stayoff - Turn off the load and remain off
shutdown.stop - Stop a shutdown in progress
3 - Installation/configuration du plugin nut_free
3.1 Installation
L’installation se fait comme tous les plugin dans Jeedom.
On va retrouver le plugin au niveau de la catégorie ‹ Monitoring ›
3.2 Paramétrage
Ajout d’un Nut_free
Voici le visuel
Je conseille de ne pas ajouter et ou modifier les commandes de cet objet car le plugin met à jour la structure également, j’ai donc préféré créer un Virtuel afin de gérer les statuts et les infos dans mes scénarios
3.3 Un virtuel
J’ai créé un objet virtueL afin de visualiser en clair le status (ne pas avoir les codes barbares à gérer de type 0L) et ainsi comprendre plus facilement mes scénarios.
Mon virtuel se nomme Onduleur
La ligne importante est en fait le Status afin de mettre en ‹ clair › Secteur, Batterie, Erreur.
Si le retour n’est pas Secteur ou Batterie cela signifie que l’on a un problème de communication avec l’onduleur.
Voici la valeur pour Status
(substr(#[Technique][Nut_Free - Eaton][UPS MODE]# ,0,2) == "OL") ? "Secteur" : (substr(#[Technique][Nut_Free - Eaton][UPS MODE]#,0,2) == "OB") ? "Batterie" : "Erreur"
Voici le Visuel
Cela permet d’avoir ce Visuel que j’affiche dans mon Design et que je vais utiliser dans mes scénarios
4 - Scénario
Maintenant que tout cela est mis en place nous allons gérer les évènement de l’onduleur.
- Erreur de communication
- Mode Batterie
- Mode Secteur
L’objectif est d’arrêter l’onduleur si le niveau de batterie est inférieur à 20% et d’arrêter Jeedom proprement.
Dans mes scénarios, j’utilise un scénario qui se nomme ‹ Notification › qui est en fait mon centre de communication gérant l’envoi des mails, l’ajout d’un message dans le centre de messagerie et si nécessaire l’envoi d’un SMS. Le pourquoi de différents TAG transmis, pas utile si vous n’avez pas conçu un centre de notification
Pour rappel, free_nut met à jour les informations de l’onduleur toutes les minutes.
J’ai 2 Scénarios :
- Onduleur Management : Qui va interagir sur un changement de status de l’onduleur
- Onduleur Management - Alarme : Qui sera activé par le scénario Onduleur Management si nous sommes sur batterie, ce scénario se déclenchera alors sur les évènements de changement de niveau de batterie.
Scénario Onduleur Management
Déclencheur Statut de l’onduleur
Si l’onduleur sur secteur
- Informe du retour du courant
- Désactive le scénario « Onduleur Management - Alarme » informant du changement du niveau de batterie, plus besoin car retour du courant
Si l’onduleur sur Batterie
- Active le scénario « Onduleur Management - Alarme »
- Lancement du scénario
Si l’onduleur en Erreur
- Informe de l’erreur
Scénario Onduleur Management - Alarme
Déclencheur sur le changement de niveau de batterie , activé et lancé initialement par le scénario précédent (afin d’envoyer la première alerte)
- Informe du niveau de la batterie
- Si la batterie est inférieure à 20%
- Informe de l’arrêt de Jeedom
- Lancement de la commande de l’arrêt de l’onduleur (arrêt dans 90 secondes)
On fait une pose de 10 secondes afin de s’assurer que Jeedom a bien eu le temps d’envoyer les informations dans le centre de notification et que l’onduleur a bien reçu l’ordre - Arrêt de Jeedom
La ligne de commande permettant l’arrêt de l’onduleur après 90 secondes est la suivante
upscmd -u admin -p adminpass eaton@localhost load.off.delay 90
Voici par exemple le message reçu dans le centre de messagerie