Voyons ici comment gérer un onduleur relié à notre Raspberry Domoticz.
Nous prendrons un cas simple ou le raspberry devra s’éteindre tout seul avant la fin des batteries de l’onduleur.
Il y aura deux épisodes à cette saga.
Prérequis
L’onduleur devra être équipé d’un port USB que vous relierez à un des ports USB du Raspberry avec le câble USB correspondant.
Alimentez votre raspi par un des connecteurs électriques dédiés de l’onduleur.
Faites attention il y a parfois des sorties électriques secourues par l’onduleur et d’autres non secourues. Branchez vous bien entendu sur une sortie protégée (c.f. logo ou « Battery » par exemple).
Ouvrez une session ssh sur le Raspberry pour continuer la configuration.
Installation
Tapez la ligne suivante afin d’installer les outils usb si il n’existent pas.
sudo apt-get install usbutils
Puis le logiciel de gestion de l’onduleur
sudo apt-get install nut
Configuration
Lors de l’installation, il s’affiche :
Setting up libupsclient1 (2.6.4-2.3+deb7u1) ... Setting up nut-client (2.6.4-2.3+deb7u1) ... [info] nut-client disabled, please adjust the configuration to your needs. [info] Then set MODE to a suitable value in /etc/nut/nut.conf to enable it. Setting up nut-server (2.6.4-2.3+deb7u1) ...
Comme indiqué il faut éditer /etc/nut/nut.conf par un
sudo nano /etc/nut/nut.conf
Et on place tout en bas le mode à standalone
mode=standalone
Configuration de l’onduleur
Tapez ensuite
sudo nano /etc/nut/ups.conf
un fichier apparait :
# This file is used by upsdrvctl to start and stop your driver(s), and # is also used by upsd to determine which drivers to monitor. The # drivers themselves also read this file for configuration directives. # # The general form is: # # [upsname] # driver = <drivername> # port = <portname> # < any other directives here > # # The section header ([upsname]) can be just about anything as long as # it is a single word inside brackets. upsd uses this to uniquely # identify a UPS on this system. #
Nous allons changer la partie upsname en supprimant les # de début de ligne.
- Remplacez [upsname] entre crochets par un nom de votre choix identifiant cet onduleur.
- driver = devra être rempli avec le nom du driver spécifique à votre onduleur, allez sur cette page pour rechercher votre modèle http://networkupstools.org/stable-hcl.html au bout à droite figure le nom à utiliser dans cette ligne.
Si vous ne trouvez pas, pas de panique beaucoup d’onduleurs fonctionnent avec le driver blazer_usb
Sinon recherchez sur le net avec le nom de votre onduleur pour trouver la référence correcte du matériel.
- port = mettez auto pour que le Raspberry se débrouille , sinon mettez le vrai tty « /dev/tty/ACMO »
Ce qui fait :
[ond_rasp_dz] driver = blazer_usb port = auto
Mon onduleur se nomme ond_rasp_dz
on démarre par
sudo upsdrvctl start
et paf une erreur
Network UPS Tools - UPS driver controller 2.6.4 Network UPS Tools - Megatec/Q1 protocol USB driver 0.08 (2.6.4) Can't claim USB device [0665:5161]: could not detach kernel driver from interface 0: Operation not permitted Driver failed to start (exit status=1)
il s’agit d’un problèmes de droits sur les ports usb, accordons les droits en notant les nombres affichés dans l’erreur ci-dessus.
On crée un fichier de règles pour l’onduleur.
Vous pouvez mettre le nom que vous voulez, toutefois le nom de l’onduleur préfixé par 10 est clair et explicite.
sudo nano /etc/udev/rules.d/10-ond_rasp_dz.rules
et on met la ligne :
SYSFS{idVendor}=='0665', SYSFS{idProduct}=='5161', MODE='0666'
Rebootez le pi, rebootez sinon ça marche pas.
Une fois le pi relancé , retirez le câble usb, patientez 10 seconds, rebranchez.
Maintenant interrogeons l’onduleur par la commande upsc suivie du nom donné plus haut.
sudo upsc ond_rasp_dz
me renvoie (cela dépend de votre onduleur)
battery.charge: 100 battery.voltage: 26.60 battery.voltage.high: 26.00 battery.voltage.low: 20.80 battery.voltage.nominal: 24.0 device.type: ups driver.name: blazer_usb driver.parameter.pollinterval: 2 driver.parameter.port: auto driver.version: 2.6.4 driver.version.internal: 0.08 input.current.nominal: 5.0 input.frequency: 50.1 input.frequency.nominal: 50 input.voltage: 231.6 input.voltage.fault: 231.6 input.voltage.nominal: 220 output.voltage: 231.6 ups.beeper.status: enabled ups.delay.shutdown: 30 ups.delay.start: 180 ups.load: 10 ups.productid: 5161 ups.status: OL ups.type: offline / line interactive ups.vendorid: 0665
On voit entre autres la charge que votre matériel « tire »sur l’onduleur (ups.load 10), le status (OL) = on line , (OB)= sur batteries , le délai avant shutdown (ups.delay.shutdown)
Nous avons donc un onduleur qui fonctionne en liaison avec notre Raspberry, nous verrons comment programmer des instructions d’extinction dans un prochain article.
Quelques références
http://networkupstools.org/ le site de nut
https://doc.ubuntu-fr.org/nut et http://ovanhoof.developpez.com/upsusb/ pour des explications assez génériques.
Quelques trucs en vrac
Problèmes de droits
En faisant un lsusb sans câble USB puis avec on voit apparaître la ligne concernant l’usb relié à l’onduleur.
dans mon cas
Bus 001 Device 004: ID 0665:5161 Cypress Semiconductor USB to Serial
Je vois que l’on est sur le bus 001 , port 004
On va voir les droits par un
ls -l /dev/bus/usb/001 crw-rw-r-- 1 root root 189, 0 Dec 28 22:55 001 crw-rw-r-- 1 root root 189, 1 Dec 28 22:55 002 crw-rw-r-- 1 root root 189, 2 Dec 28 22:55 003 crw-rw-r-- 1 root nut 189, 3 Dec 28 23:04 004 crw-rw-r-- 1 root root 189, 4 Dec 28 22:55 005
on voit bien que le port 004 est associé à nut, Sinon un
sudo chgrp nut /dev/bus/usb/001/004
remet tout ça en place.
Connexion refused, data stale, init SSL
Ces messages sont souvent résolus par le fait de débrancher/rebrancher le câble usb APRES avoir changé udev/rules.d ET avoir rebooté.
Les commandes de l’onduleur
sudo upscmd -l nom_de_l_onduleur donne la liste des commandes comprises et exécutables par l’onduleur, pratique pour le piloter par scripts.
Bonjour
combien consomme un onduleur à vide ? ce ne serait pas plus qu’un RPi en charge ?
Perso j’ai une batterie de téléphone qui alimente le RPi et en charge permanente depuis plus d’un an, et ca tient bien les coupures (et en plus j’ai 9h d’autonomie). La batterie est chargée tout en alimentant le RPi : attention ce n’est pas le cas de toutes les batteries.
Quand on a testé son autonomie, il y a des prg en python qui permettent d’éteindre le rpi proprement après 8h sur batterie par ex. Mais perso, je ne l’ai même pas fait car je ne conçois pas être coupé 8 h par EDF (en tout cas, ca ne n’est jamais arrivé). Si ca arrive 1 fois tous les 10 ans ca ira.
Petite erreur dans l’article,dans configuration de l’onduleur, c’est ups.conf qu’il faut editer et non nut.conf.
Sinon,quelqu’un sait comment on desactive le broadcast dans la console,j’ai des message toutes les 5 min …
bonjour,
Oui en effet c’est corrigé
Merci
Pour arreter les messages c’est la directive WALL dans upsmon.conf en face des lignes NOTIFYFLAG pour le ONBATT,ONLINE…
http://networkupstools.org/docs/man/upsmon.conf.html
Merci ,ca fonctionne
super tuto !
j’ai justement un onduleur, un Rpi, et domoticz dessus ! mais j’ai aussi un NAS synology, et d’autre petite truc a coté.
Pour l’instant l’onduleur (APC Back-UPS pro 1200) est branché sur l’usb du NAS, et ce dernier ordonne l’extinction du Pc si il est allumé (via winNUT).
N’y aurait il pas un équivalent à winnut pour le Rpi? afin qu’il recoive et surtout interprete correctement l’ordre venant du NAS pou s’éteindre? ou alors vaut il mieux faire l’inverse? et utilisé le Rpi pour éteindre NAS/PC etc… mais la je sais pas comment faire non plus. (mais d’aprés la fin de l’article c’est pour bientôt sur easydomoticz ^^)
Normalement , lorsqu’on installe but sur le rpi , cela installe nut-client qui doit être paramétrable via les fichiers de conf pour se connecter à un autre serveur.
Bonjour,
Quand je lance: sudo upsdrvctl start
J’ai une erreur:
Network UPS Tools – UPS driver controller 2.7.2
Network UPS Tools – Generic HID driver 0.38 (2.7.2)
USB communication driver 0.32
Fatal error: ‘maxretry’ is not a valid variable name for this driver.
Look in the man page or call this driver with -h for a list of
valid variable names and flags.
Merci d’avance
PoirS
bonjour
Dans ton fichier de conf tu as du mettre « maxretry » dans le nom du driver à la place du vrai nom
Bonjour,
J’ai bien trouvé mon driver et j’ai modifié le fichier conf comme ça:
#
[Onduleur]
driver = usbhid-ups
port = auto
# < any other directives here >
#
Merci
PoirS
Bonjour je suis en train de mètre en place mon onduleur:
Marque NITRAM
Model POWER BOXX 650 (pas le 650 LCD)
J’ai un message d’erreur quand je fait la commande:
pi@raspberrypi:~ $ sudo upsdrvctl start
Network UPS Tools – UPS driver controller 2.7.2
Network UPS Tools – Megatec/Q1 protocol USB driver 0.11 (2.7.2)
Fatal error: ‘maxretry’ is not a valid variable name for this driver.
Look in the man page or call this driver with -h for a list of
valid variable names and flags.
voici la ligne dans le ups.conf:
[PowerBoxx]
driver = blazer_usb
port = /dev/tty/ACMO
j’ai essayer de mètre le driver du site nut :
Nitram
Elite 500
genericups upstype=8
Elite 2002
genericups upstype=16
Elite 2005
powerpanel
Pas trouver le mien le powerboxx.
Peut être pas compatible?
la commande lsusb il me trouve:
pi@raspberrypi:~ $ lsusb
Bus 001 Device 007: ID 05b8:3059 Agiler, Inc.
Il le détecte bien (j’ai débrancher et rebrancher)
Voila si quelqu’un peut aide…
Merci d’avance
Bonjour,
J’ai également eu lorsque que j’ai lancé « sudo upsdrvctl start » : « Fatal error: maxretry….. »
Pour pallier à ce problème retourner dans le fichier ups.conf et descendre tout en bas , à la dernière ligne rajouté un # devant « maxretry 3 ».
Voilà bonne journée et bon courage à tous, encore merci pour ce tutoriel.