Connecter un onduleur EATON 650 à une VM Proxmox (HA)

Bonjour,

Suite à ma migration de HA sur une machine en Proxmox, je suis en train de réinstaller mon onduleur Eaton pour gérer les coupures de courant et le redémarrage automatique.
J’ai suivi 2 tutos :

J’ai réussi à paramétrer NUT (intégration) sur HA en mettant l’adresse IP de mon Proxmox et l’utilisateur créé avec les tutos sur Proxmox (utilisateur « upsadmin ») :


Dans « ups.conf » j’ai :

[eaton]
driver = usbhid-ups
port = auto
desc = "Eaton Ellipse ECO 650"
vendorid = 0463
productid = ffff
serial = xxxxxxxxxxxx

Dans « upsd.users », j’ai :

[upsadmin]
# Administrative user
password = monpassword
# Allow changing values of certain variables in the UPS.
actions = SET
# Allow setting the "Forced Shutdown" flag in the UPS.
actions = FSD
# Allow all instant commands
instcmds = ALL
upsmon master

[upsuser]
# Normal user
password = monpassword
upsmon slave

Cependant je n’arrive pas à configurer Network UPS Tools dans HA, je crois avoir vu que je n’en ai pas besoin dans cette configuration ? Est ce une erreur ? Voici quand même la config :

users:
  - actions: []
    instcmds:
      - all
    password: monpassword
    username: upsadmin
devices:
  - config:
      - desc = "Eaton Ellipse ECO 650"
      - vendorid = 0463
    driver: usbhid-ups
    name: eaton
    port: auto
mode: netserver
shutdown_host: "false"

Pouvez vous me dire si c’est moi qui déconne :sweat_smile:?

Merci d’avance

Salut,

tu veux installer quoi en plus de l’intégration qui a priori marche déjà ?

Hello Alex,
Je crois que je me suis pris la tête pour rien…

En fait,
soit comme tu l’as fait, tu fais tourner le serveur NUT directement sur proxmox et dans HA tu ty connecte au travers de l’intégration.
soit tu passes l’USB à la VM HA et tu installes NUT en tant que module complémentaire et tu t’y connectes de HA avec l’intégration.

Donc là si tu as l’intégration et que les entités et les valeurs remontent bien, tout va bien.

Parfait, merci pour la confirmation.

Hello,

Dans la suite de l’installation de mon onduleur, je viens d’essayer de tester l’extinction automatique des VM puis de Proxmox grâce au topic créé ici par @Pulpy-Luke (Conseils pour fiabiliser mon installation (automatisation des redémarrages) - #23 par Pulpy-Luke) mais cela ne fonctionne pas…je descends à 15% de batterie et rien ne se coupe automatiquement. Pouvez vous m’aider ?

Linux pve 6.8.12-7-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-7 (2025-01-17T08:18Z) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Mon Feb  3 08:07:16 CET 2025 on pts/0
root@pve:~# upsc eaton@localhost
Init SSL without certificate database
battery.charge: 15
battery.charge.low: 20
battery.runtime: 345
battery.type: PbAc
device.mfr: EATON
device.model: Ellipse ECO 650
device.serial: 000000000
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 15
driver.parameter.port: auto
driver.parameter.productid: ffff
driver.parameter.serial: 000000000
driver.parameter.synchronous: auto
driver.parameter.vendorid: 0463
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.transfer.high: 264
input.transfer.low: 184
outlet.1.desc: PowerShare Outlet 1
outlet.1.id: 2
outlet.1.status: off
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 650
ups.power.nominal: 650
ups.productid: ffff
ups.realpower: 0
ups.serial: 000000000
ups.status: OB LB
ups.timer.shutdown: -1
ups.timer.start: -1
ups.vendorid: 0463

Merci à vous

Salut,

Pas simple, dans ces conditions :

  • Sans partager les logs ?
  • Sans partager les tests et les résultats ? A minima ce qui marche

Perso ça fait 3 ans que ça tourne nickel ici, donc c’est sans doute plus un souci de mise en place qu’autre chose, mais pour y voir clair, il faut de l’info

J’ai suivi le tuto ci après : DIY HOME SERVER 2021 - Software - PROXMOX - NUT UPS Monitoring | KREAWEB

Après je ne sais pas trop ce qu’il faut fournir je commence juste sur Proxmox.
J’ai simplement créé le fichier « proxmoxmgnt.sh » qui n’existait pas avec le contenu mis dans ton post :

#!/bin/bash
#list VM
vmlist=$(qm list | awk '{ print $1 }' | grep -v VMID)
#list CTX
ctxlist=$(pct list | awk '{ print $1 }' | grep -v VMID)

case $1 in
    stopvms)
        for i in $vmlist; do
            status=`qm status $i|awk '{ print $2 }'`
            if [ "$status" = "running" ]
            then
                echo "Arret de la VM : $i"
                qm shutdown $i -forceStop -skiplock
            else
                echo "Rien a faire sur la VM : $i, car deja eteinte"
            fi
        done
        for i in $ctxlist; do
            status=`pct status $i|awk '{ print $2 }'`
            if [ "$status" = "running" ]
            then
                echo "Arret du CTX : $i"
                pct unlock $i || lxc-stop  $i
            else
                echo "Rien a faire sur le CTX : $i, car deja eteint"
            fi
        done
        ;;
    startvms)
        for i in $ctxlist; do
            onboot=`pct config $i|grep onboot|awk '{ print $2 }'`
            status=`pct status $i|awk '{ print $2 }'`
            if [ "$onboot" = "1" ]
            then
              if [ "$status" = "stopped" ]
              then
                  echo "Demarrage du CTX : $i"
                  qm start $i
              else
                  echo "Rien a faire sur le CTX : $i, car deja allume"
              fi
            else
                echo "Rien a faire sur le CTX : $i, car pas de lancement automatique"
            fi
        done
        for i in $vmlist; do
            onboot=`qm config $i|grep onboot|awk '{ print $2 }'`
            status=`qm status $i|awk '{ print $2 }'`
            if [ "$onboot" = "1" ]
            then
              if [ "$status" = "stopped" ]
              then
                  echo "Demarrage de la VM : $i"
                  pct start $i
              else
                  echo "Rien a faire sur la VM : $i, car deja allumee"
              fi
            else
                echo "Rien a faire sur la VM : $i, car pas de lancement automatique"
            fi
        done
        # mail -s "Courant retabli" monemail@email.com
        ;;
    stopnuc)
        shutdown -h +0
        ;;
    upsonbatt)
        # mail -s "Panne de courant" monemail@email.com
        ;;
esac

Puis « upsmon.conf » :

SHUTDOWNCMD "/sbin/shutdown -h now"
HOSTSYNC 15
POWERDOWNFLAG /etc/nut/killpower
FINALDELAY 5
NOTIFYCMD /sbin/upssched
NOTIFYMSG ONBATT "%s fonctionne sur batterie"
NOTIFYMSG ONLINE "%s fonctionne de nouveau sur secteur"
NOTIFYMSG LOWBATT "%s indique une batterie faible !"
NOTIFYMSG SHUTDOWN "Le système est entrain de d'éteindre !"

NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
#ONDULEUR
MONITOR eaton@localhost 1 upsadmin monmotdepasse master

J’ai aussi remplacé par le contenu donné dans le fichier « upssched.conf » :

CMDSCRIPT /etc/nut/proxmoxmgnt.sh
AT ONBATT * EXECUTE upsonbatt
AT ONBATT * START-TIMER stopvms 600
AT LOWBATT * EXECUTE stopnuc
AT ONLINE * EXECUTE startvms
AT ONLINE * CANCEL-TIMER stopvms

Pour les logs j’ai essayé de faire « /etc/init.d/ups-monitor status » mais cela ne fait rien.

Je viens déjà de voir une faute dans mon fichier « upsmon.conf » où j’avais « apc » au lieu de « eaton ».

Tu peux prendre cette version là du script qui est mieux Conseils pour fiabiliser mon installation (automatisation des redémarrages) - #20 par Neuvidor
Et depuis la console proxmox, tu peux tester le fonctionnent du script :

sh /etc/nut/proxmoxmgnt.sh stopvms

et

sh /etc/nut/proxmoxmgnt.sh startvms

Pour la prise en compte, il faut aussi relancer le service ups après la config/reconfig

systemctl restart nut-server
systemctl restart nut-client
systemctl restart nut-monitor
systemctl stop upsdrvctl
systemctl start upsdrvctl 

Pour la version du script « proxmoxmgnt.sh » je crois que c’est bien la dernière version que tu as mise dans ce post :

#!/bin/bash
#list VM
vmlist=$(qm list | awk '{ print $1 }' | grep -v VMID)
#list CTX
ctxlist=$(pct list | awk '{ print $1 }' | grep -v VMID)

case $1 in
    stopvms)
        for i in $vmlist; do
            status=`qm status $i|awk '{ print $2 }'`
            if [ "$status" = "running" ]
            then
                echo "Arret de la VM : $i"
                qm shutdown $i -forceStop -skiplock
            else
                echo "Rien a faire sur la VM : $i, car deja eteinte"
            fi
        done
        for i in $ctxlist; do
            status=`pct status $i|awk '{ print $2 }'`
            if [ "$status" = "running" ]
            then
                echo "Arret du CTX : $i"
                pct unlock $i || lxc-stop  $i
            else
                echo "Rien a faire sur le CTX : $i, car deja eteint"
            fi
        done
        ;;
    startvms)
        for i in $ctxlist; do
            onboot=`pct config $i|grep onboot|awk '{ print $2 }'`
            status=`pct status $i|awk '{ print $2 }'`
            if [ "$onboot" = "1" ]
            then
              if [ "$status" = "stopped" ]
              then
                  echo "Demarrage du CTX : $i"
                  pct start $i
              else
                  echo "Rien a faire sur le CTX : $i, car deja allume"
              fi
            else
                echo "Rien a faire sur le CTX : $i, car pas de lancement automatique"
            fi
        done
        for i in $vmlist; do
            onboot=`qm config $i|grep onboot|awk '{ print $2 }'`
            status=`qm status $i|awk '{ print $2 }'`
            if [ "$onboot" = "1" ]
            then
              if [ "$status" = "stopped" ]
              then
                  echo "Demarrage de la VM : $i"
                  qm start $i
              else
                  echo "Rien a faire sur la VM : $i, car deja allumee"
              fi
            else
                echo "Rien a faire sur la VM : $i, car pas de lancement automatique"
            fi
        done
        # mail -s "Courant retabli" your@email.com
        ;;
    stopnuc)
        shutdown -h +0
        ;;
    upsonbatt)
        # mail -s "Panne de courant" your@email.com
        ;;
esac

J’ai testé tes lignes de script, cela coupe bien ma VM.
Par contre au redémarrage j’ai cela :
image

Puis quand je rentre tes lignes de commande j’ai ça :

Une VM listée comme LXC ?
ça donne quoi ça ?

qm list | awk '{ print $1 }' | grep -v VMID
pct list | awk '{ print $1 }' | grep -v VMID

Il y a un souci sur la gestion de l’onduleur, refais un tour sur le tuto d’installation

J’obtiens ça :
image

J’ai bien essayé de reprendre le tuto mais je ne vois rien de plus…une idée plus précise d’où j’aurai pu foirer un truc dans l’installation ?
Si je passe les lignes du tuto :

upsdrvctl stop
upsdrvctl start

Cela semble fonctionner :

Pour moi, ça c’est bon, donc je ne comprends pas trop l’erreur
Peux-tu refaire un

sh -x /etc/nut/proxmoxmgnt.sh startvms

et partager ce que ça donne ?

Ok, mes commandes sont pas les bonnes, un sujet de moins

Voici le résultat :

C’est pas du tout pareil que là.

Ton dernier test fonctionne :sweat_smile:

sh -x /etc/nut/proxmoxmgnt.sh stopvms

Verifie le la VM est OFF puis
et

sh -x /etc/nut/proxmoxmgnt.sh startvms

j’ai testé, ça recommence…


Je ne comprends pas

Ah, j’ai vu l’erreur ligne 55, il faut changer pct contre qm

                  echo "Demarrage de la VM : $i"
                  qm start $i
```

En fait c’est même pire que ça, j’ai comparé avec le truc à la maison et sur les sources partagées il y a une inversion des commandes pct et qm pour les 2 démarrage… Du coup, c’est pas parfait.
J’ai corrigé les postes que j’ai retrouvé, mais il faut que tu mettes à jour aussi de ton coté.
Désolé

Je n’ai pas tout a fait compris ce quil faut corriger et dans quel(s) fichier(s) ?

Au passage, comment peut on supprimer en masse sur le terminal en Spice? Car je galère avec le « suppr » mais c’est long quand il y a 400 lignes…

Merci :slightly_smiling_face:

il faut changer

Et linux la commande pour effacer un fichier c’est rm

rm /etc/nut/proxmoxmgnt.sh