Besoin d'aide pour gérer un onduleur avec nut

Forum dédié aux problématiques concernant les scripts pour DomoticZ.
Entourez votre code et les logs avec les balises nommées code grâce au bouton <\>.
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Besoin d'aide pour gérer un onduleur avec nut

Message par Pyrrhus »

Bonjour,
J'ai un nas qnap sur lequel j'ai branché en usb un onduleur générique chinois (ceux qui me lisent un peu commencent à comprendre que la ou je vis, on ne trouve pas ce qu'on veut). Mon nas est le SEUL matos qui reconnaisse cet onduleur, meme le raspberry, en essayant plusieurs drivers avec nut, ne veut rien savoir. Par chance le nas peut servir de serveur d'onduleur pour éteindre d'autres appareils en cas de coupure. J'ai donc installé "nut client" sur le raspberry pour monitorer l'onduleur par l'intermédiaire du nas.
N'ayant installé que la partie client de nut, le répertoire /etc/nut était vide, j'ai donc créer 3 fichiers:
- nut.conf

Code : Tout sélectionner

MODE=netclient
- upsmon.conf

Code : Tout sélectionner

MONITOR login@nas_ip 1 admin password slave
SHUTDOWNCMD "/sbin/shutdown -h now"
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYCMD "/etc/nut/notifycmd"
notifycmd script:

Code : Tout sélectionner

#!/bin/bash
#
# NUT NOTIFYCMD script

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin

trap "exit 0" SIGTERM

if [ "$NOTIFYTYPE" = "ONLINE" ]
then
        echo $0: power restored | wall
# curl command 
        # Cause all instances of this script to exit.
        killall -s SIGTERM `basename $0`
fi

if [ "$NOTIFYTYPE" = "ONBATT" ]
then
        echo $0: 40 minutes till system powers down... | wall
#curl command 
        # Loop with one second interval to allow SIGTERM reception.
        let "n = 2400"
        while [ $n -ne 0 ]
        do
                sleep 1
                let "n--"
        done
        echo $0: commencing shutdown | wall
        sleep 10
        upsmon -c fsd
fi
Avec tout ça, lorsque l'onduleur est en mode batterie, on attend 40 minutes avant d'éteindre le raspberry au cas ou le courant revienne.
Si le courant revient avant les 40 minutes, on retourne à la normale.
les

Code : Tout sélectionner

#curl command
permettent de lancer des requêtes lors d'un changement d'état (autant qu'on veut), par exemple enclencher un interrupteur virtuel domoticz ou envoyer un sms...

Mais il y a un cas spécial qui me pose problème: si le raspberry perd, pour une raison ou une autre, la connexion réseau avec la nas (et donc l'onduleur) alors que l'onduleur est sur mode batterie, il est considéré comme "dead" par "nut" qui m'éteint tout de suite le raspberry....
C'est pas cool... j'aimerais au moins un délai... ou pouvoir envoyer des requetes curl avant l'extinction...
Je sais que mon fichier upsmon.conf est incomplet: j'ai entendu parler de l'option DEADTIME, COMMBAD ou NOCOMM et je sais que je devrais rajoutter des lignes dans mon "notifycmd" mais je ne sais pas quoi mettre... j'ai lu ce que je pouvais en français et en anglais sur le net mais je n'ai pas trouver de tuto sur comment modifier le comportement de nut en cas de perte de connexion en mode batterie...
Si un spécialiste de nut passe par là, de l'aide serait la bienvenue !
Merci
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Besoin d'aide pour gérer un onduleur avec nut

Message par patrice »

Bonsoir
Normalement avant de passer en DEAD il doit passer par d'autres états (ONBATT puis LOWBAT) et DEADTIME permet de fixer le delai avant de prononcer la mort de l'onduleur
https://doc.ubuntu-fr.org/nut nous dit que :
Pour permettre à l'upsmon client d'interroger le démon upsmon serveur ou le démon upsd et obtenir des informations "fraiches" sur l'état de (ou des) l'onduleur(s), il faut vérifier les paramètres suivants, et les adapter en fonction du pilote utilisé :

POLLFREQ : intervalle de temps avant rafraîchissement des données sur l'état de l'onduleur.
POLLFREQALERT : intervalle de temps avant rafraichissement une fois l'onduleur en statut "sur batterie" (ONBATT). Doit être inférieur ou égal à POLLFREQ.
DEADTIME : délai maximal pendant lequel un onduleur peut être déclaré "absent" avant d'être déclaré "mort". Passé ce délai, si l'onduleur était précédemment en statut "sur batterie" (ONBATT) il sera considéré en statut "batterie faible" (LOWBATT), ce qui peut causer l'arrêt du système. Le délai doit être un multiple de POLLFREQ et POLLFREQALERT.
NOCOMMWARNTIME : délai d'attente avant notification de la perte de communication avec l'onduleur.
RBWARNTIME : lorsqu'un onduleur indique un changement de batterie, une notification sera envoyée toutes les RBWARNTIME secondes.
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Re: Besoin d'aide pour gérer un onduleur avec nut

Message par Pyrrhus »

Merci Patrice,
Je vais essayer de rajoutter

Code : Tout sélectionner

NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
dans upsmon.conf
et de rajoutter dans notifycmd

Code : Tout sélectionner

if [ "$NOTIFYTYPE" = "LOWBATT" ]
then
        echo $0: UPS disconnected or low battery | wall
# curl command 
# curl command...
        echo $0: commencing shutdown | wall
        sleep 10
        upsmon -c fsd
fi
Je peux essayer de gagner aussi du temps en précisant un DEADTIME 300...
Je reviendrai faire un retour de mes essais demain quand je serai seul chez moi, tester des shutdown c'est pas comme tester des petits scripts !!
Entre temps n'hésitez pas à m'aider si vous connaissez bien "nut" :)
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Besoin d'aide pour gérer un onduleur avec nut

Message par patrice »

Il y a une commande dans nuts (mais j'ai oublie laquelle) qui te permets de simuler des batteries off, des reprises ..
c'est fait pour tester sans couper le jus et mettre au point les scripts
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Pyrrhus
Messages : 130
Inscription : 11 juin 2015, 14:57

Re: Besoin d'aide pour gérer un onduleur avec nut

Message par Pyrrhus »

Apres quelques tests je pense avoir résolu mon problème. J'ai modifié upsmon.conf comme ça:

Code : Tout sélectionner

MONITOR login@nas_ip 1 admin password slave
SHUTDOWNCMD "/sbin/shutdown -h now"
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG ONLINE SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT IGNORE
NOTIFYFLAG COMMOK WALL
NOTIFYFLAG COMMBAD WALL
NOTIFYFLAG NOCOMM WALL
NOTIFYCMD "/etc/nut/notifycmd"
Et c'est tout. Si il y a perte de communication avec l'onduleur meme en batterie il n'y a plus d'arret, juste une information dans la console, pareil lorsque la communication est rétablie. Tant que le l'onduleur n'envoie pas de ONLINE on reste sur le compte a rebours de 40 minutes initié lors du ONBATT. Le raspberry s'étendra au bout de 40 minutes si le courant n'est pas revenu ou si la communication avec l'onduleur du nas est toujours perdue.

Je suis ouvert à toutes proposition si il y a moyen de faire mieux !!
Chris54220
Messages : 124
Inscription : 20 mars 2016, 20:54
Localisation : Nancy

Re: Besoin d'aide pour gérer un onduleur avec nut

Message par Chris54220 »

Bonjour je souhaiterais branche l'onduleur directement sur le Raspberry est le géré qu'avec le Raspi vous pensé que c'est possible.
Dernière modification par Chris54220 le 07 mai 2016, 12:58, modifié 1 fois.
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Besoin d'aide pour gérer un onduleur avec nut

Message par patrice »

Oui c'est possible , merci également de faire des efforts pour l'orthographe et la grammaire
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Chris54220
Messages : 124
Inscription : 20 mars 2016, 20:54
Localisation : Nancy

Re: Besoin d'aide pour gérer un onduleur avec nut

Message par Chris54220 »

bonjour j'en appelle à votre aide
j'ai fait l'install et j'ai une erreur mais je ne trouve pas la solution

Broadcast message from nut@raspberrypi (somewhere) (Sun May 8 10:44:39 2016):

UPS myups@localhost is unavailable


voila mes fichiers de config

upsmon.conf

Code : Tout sélectionner

MONITOR myups@localhost 1 upsmonitor userpass "master"
INSUPPLIES 1

SHUTDOWNCMD "/sbin/shutdown -h +0"

NOTIFYCMD "/etc/nut/notifycmd.sh"

NOTIFYMSG ONLINE        "L'alimentation électrique est de retour ON - UPS %s sur la puissance de la ligne"
NOTIFYMSG ONBATT        "Perte de puissance électrique - UPS %s sur la batterie"
NOTIFYMSG LOWBATT       "Perte d'énergie électrique continue - UPS %s"

NOTIFYFLAG ONLINE       EXEC+SYSLOG+WALL
NOTIFYFLAG ONBATT       EXEC+SYSLOG+WALL
NOTIFYFLAG LOWBATT      EXEC+SYSLOG+WALL
upsd.users

Code : Tout sélectionner

[admin]
    password = adminpass
    actions = SET
    instcmds = ALL

[upsmonitor]
    password  = userpass
    upsmon master
ups.conf

Code : Tout sélectionner

[eaton]
	driver = usbhid-ups
	port = /dev/ttyAMA0
	desc = "MGE UPS Systems"
nut.conf

Code : Tout sélectionner

MODE=standalone
notifycmd.sh

Code : Tout sélectionner

#!/bin/bash
#
# NUT NOTIFYCMD script

PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin:/usr/local/bin

trap "exit 0" SIGTERM

if [ "$NOTIFYTYPE" = "ONLINE" ]
then
        echo $0: power restored | wall
# curl command 
        # Cause all instances of this script to exit.
        killall -s SIGTERM `basename $0`
fi

if [ "$NOTIFYTYPE" = "ONBATT" ]
then
        echo $0: 40 minutes till system powers down... | wall
#curl command 
        # Loop with one second interval to allow SIGTERM reception.
        let "n = 2400"
        while [ $n -ne 0 ]
        do
                sleep 1
                let "n--"
        done
fi

if [ "$NOTIFYTYPE" = "LOWBATT" ]
then
        echo $0: UPS disconnected or low battery | wall
# curl command 
# curl command...
        echo $0: commencing shutdown | wall
        sleep 10
        upsmon -c fsd
fi
patrice
Messages : 1720
Inscription : 22 sept. 2014, 21:51

Re: Besoin d'aide pour gérer un onduleur avec nut

Message par patrice »

Mon ami google me propose https://mikebeach.org/2013/04/24/instal ... tu-server/ pour une ubuntu
udevadm control --reload-rule
udevadm trigger
upsdrvctl start

sinon plein de reponses ici https://www.google.fr/search?q=UPS+myup ... 8wejibCABQ
Raspberry pi 3, Dongle RfxCom et Zigate +, plugin de pipiche, Volets Roulants profalux, contrôle d'éclairage, détecteurs de présence, alarme incendie, pilotage livebox ...
Objectif : WAF > 1
Roland
Messages : 11
Inscription : 24 mai 2016, 08:44

Re: Besoin d'aide pour gérer un onduleur avec nut

Message par Roland »

Bonjour
je viens me greffer à ce sujet pour ne pas en ouvrir un autre, ma question étant simple.
J’ai un raspberry 2 couplé à un onduleur (avec NUT) qui me pose souci :
quand il y a coupure, l’onduleur se met en branle, mais pendant 3 minutes seulement (alors qu’il y a une autonomie de 40 mn).
J’ai dû loupé quelque chose quelque part, mais où ?
Quelle est donc la commande qui gère cet état ?

Merci de me répondre car je sèche.
Répondre