Mise en place onduleur Eaton Ellipse ECO avec retour info et script de fermeture

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 :wink:

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 :slight_smile:
, 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 :slight_smile: )
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 ›
image

3.2 Paramétrage
Ajout d’un Nut_free


Voici le visuel
image
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
image

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 :wink:

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%
    1. Informe de l’arrêt de Jeedom
    2. 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
    3. 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
image

6 « J'aime »

Beau tuto !
Merci pour la communauté :blush: :+1:

Pour ma part j’ai préféré laisser l’onduleur gérer l’arrêt de la machine (dans upsmon.conf) et arrêter jeedom avant via scenario. Je suis sous proxmox et VM (l’onduleur est sur le proxmox).
Comme ça je ne dépend pas de Jeedom pour l’arrêt onduleur.

Une autre solution :slight_smile:

En fait dans mon cas je gère ma baie informatique avec Jeedom, je n’ai que ce système avec des données en local chez moi, tout le reste est dans les nuages, avec un lien internet 1GB ça facilite beaucoup :wink: .

C’est pour cela que je gère avec Jeedom l’onduleur (pas d’autre système tournant en permance chez moi), ce qui permet d’arrêter également la box, réperteur wifi, switch qui sont branchés sur l’onduleur également.

1 « J'aime »

Tu veux dire 1 Mo comme chez moi sûrement :joy:
En effet c’est une autre solution, et la tienne n’est pas moins bonne que la mienne. Tout est dans le contexte :blush:

Top et bien détaillé. C’est ce que je fait avec NUT et mon eaton. Je ne coupe pas l’onduleur par contre à la fin. Je ne saisi pas l’utilité mais vous allez peut-être m’en dire plus😋

Bien éteindre proprement les machines c’est bien mais comment les réveillez vous ensuite apres retour du courant? A la mano?

Pour ma part jeedom j’ai un Pi4 sans bouton power donc une fois éteint même si le courant revient si l’onduleur avait encore du jus il faudrait debranche l’alim du pi et la remettre. Pas très WAF.

Je suis en full openzwave donc sans jeedom c’est compliqué (enfin y a plus rien😅) . Donc j’ai trouvé une parade. il y en a sûrement d’autres.

J’ai mis une prise fibaro homekit entre le rpi et l’onduleur. Homekit fonctionne avec mon ipad qui traine dans la maison ( et que je recharge régulièrement mais ça tient assez longtemps). En cas de coupure, j’ai une notif jeddomconnect, et jeedom s’arrete proprement si batterie trop faible. La box internet est aussi ondulée.
Et apres le retour du courant, la prise fibaro est alimentée donc il me suffit de l’éteindre/rallumer via l’app Home sur mon tel et jeedom redémarre.

J’ai oublié de le mettre dans le sujet.

En fait j’arrête l’onduleur pour qu’au retour de courant la prise soit de nouveau active et ainsi faire démarrer le raspberry.
En limite basse de batterie, même si le courant revient ma procedure d’arrêt s’exécute quand même, pas grave car l’ onduleur va redémarrer aussi car le courant est revenu.
Mais … j’ai également une prise connectée wifi smartlife intégrée à google home (mes smartphone sont sur Android :slight_smile: ) qui me permet si nécessaire d’effectuer un arrêt et redémarrage (ceinture et bretelle)

2 « J'aime »

Le seul problème que je vois dans ton scénario, c’est si le courant revient dans les 90 secondes qui suivent l’ordre d’arret de l’onduleur… Dans ce cas, l’onduleur s’arrete quand meme et rien ne redemarre… N’y a-t-il pas moyen d’annuler l’ordre d’arret ?

Tu as raison, c’est ce que j’ai détaillé, je ne souhaite pas arrêter la procédure car après le procédure d’arrêt si le courant est présent, l’onduleur redémarre automatiquement et donc le RaspBerry.

J’essai d’être toujours au plus simple et ne pas traiter des cas qui n’arriverons jamais.
Dans le temps d’arrêt il n’y aura q’un seul retour du serveur NUT (le plugin interroge toutes les minutes), la probabilité pour le courant revienne sur les 30 dernières secondes existe mais …

Oui cela est possible en tapant la commande upscmd -l eaton@localhost (voir ci-dessus dans les infos de mise enplace)
Tu as une commande possible pour l’onduleur qui est ce que tu souhaites

shutdown.stop - Stop a shutdown in progress

Je n’ai pas testé mais il n’y a pas de raison que cela ne fonctionne pas.
Faire un dernier check de l’état de l’onduleur juste avant le shutdown du raspberry et passer cette commande, maintenant à tester avec le délai de réactivité de l’onduleur et ne pas se retrouver à ce que celui-ci coupe quand même alors que Jeedom ne sait pas arrêté ‹ proprement ›, cela serait dommage car perte du bénéfice de l’onduleur.

Si tu as mis en place merci de faire un petit retour.

1 « J'aime »

En fait, moi j’ai mis en place avec upsmon un script qui envoie les événements en temps réel à Jeedom, donc j’ai les infos en temps réel, donc si le courant revient dans les 90 secondes, jeedom est au courant.
J’ai testé le cas de retour de courant dans les 90 secondes, l’onduleur continue son arrêt et ne se rallume pas.
Je vais tester avec le shutdown stop dès que possible.

Sympa comme partage d’information sur ton installation.
Ma config est un peu différente de la tienne , mon back-ups pro 1500 est connecte sur un raspberry avec le serveur nut dessus.
Le plus difficile etait de faire communiquer le raspberry avec mon synology.
Et pour ça il faut faire attention pour ceux qui veulent cette configuration de bien renseigner le fichier ups.conf .
Il faut absolument mettre [ups] sinon ca ne fonctionne pas. Et bien sur modifier les fichier qui vont avec.

2 « J'aime »