Onduleur, Raspberry, Domoticz

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.

 

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in domoticz, linux, raspberry.

11 Comments

  1. 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.

  2. 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 …

  3. 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 ^^)

  4. 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.

  5. 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

     

  6. bonjour

    Dans ton fichier de conf tu as du mettre « maxretry » dans le nom du driver à la place du vrai nom

  7. 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

  8. 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

  9. 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.

Comments are closed.