Retour aux articles • DOMOTIQUE • • 3 min de lecture

Intégrer des onduleurs dans Home Assistant

Connecter ses onduleurs à Home Assistant pour une gestion intelligente et automatisée

Intégrer des onduleurs dans Home Assistant

Introduction

L’objectif ici est de connecter son onduleur à Home Assistant pour y ajouter de l’intelligence grâce aux automatisations d’Home Assistant.

Prérequis

  • Onduleur avec une prise USB pour recevoir la DATA (dans mon cas, j’utilise un EATON Ellipse PRO 1600)
  • Appareil pour héberger notre conteneur (dans mon cas, un Raspberry). Attention, il faut que cet appareil soit connecté avec un câble USB à l’onduleur.
  • Et l’intégration de NUT de Home Assistant

Installation

Détécter notre onduleur

Une fois l’onduleur branché sur l’appareil, il faut déterminer le port.

Pour ce faire, on peut exécuter la commande suivante :

lsusb
Animation exécution CLI dans le terminal
Ce qui donne chez moi
Ce qui donne chez moi

A partir du résultat on peut faire un :

lsusb -D /dev/bus/usb/001/004
Ce qui donne chez moi
Ce qui donne chez moi

Affecter les droits

On lui donne les droits :

cat >/etc/udev/rules.d/99-usb-serial.rules <<EOF
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}==“0463”, ATTRS{idProduct}==“ffff”, MODE="0660", GROUP="nut"
EOF
udevadm control --reload-rules && udevadm trigger

On redemarre notre service pour que notre modification soit prise en compte

sudo udevadm control --reload-rules
sudo /etc/init.d/udev restart

–> Astuce pour savoir quel est le groupe :

ls -l /dev/bus/usb/001/004

Construire notre container

Nous allons utiliser l’image de nut-upsd de botsudo pour notre conteneur.

Le principe est simple : un serveur qui expose les données de notre onduleur et des clients (comme notre Home Assistant) qui se connectent pour récupérer les informations.

Configurer le port si besoin

vi./config/ups.conf
[ups]
        desc = "UPS"
        driver = usbhid-ups
        port = auto

Configurer la whiteliste d’IPs

vi./config/upsd.conf
LISTEN 127.0.0.1 3493
LISTEN 172.16.x.x

–> Remplacer 172.16.x.x par une ip d’un client qui aura le droit de se connecter au serveur (exemple notre home assistant)

Configurer l’authentification

vi./config/upsd.users

[admin]
        password = XXXXXXXXXXXXXXXXXXXX
        actions = set
        actions = fsd
        instcmds = all

[monitor]
        password = XXXXXXXXXXXXXXXXXX
        upsmon master

[ups]
        desc = "UPS"
        driver = usbhid-ups
        port = auto

Puis créer le docker-compose

vi docker-compose.yaml
version: "3.3"
services:
  nut:
    image: botsudo/nut-upsd:latest
    ports:
      - 3493:3493
    devices:
      - /dev/bus/usb/001/004:/dev/bus/usb/001/004 # à remplacer par votre chemin
    restart: unless-stopped
    privileged: true
    volumes:
      - ./config/:/opt/nut-config
      - ./config/ups.conf:/etc/nut/ups.conf
      - ./config/upsd.users:/etc/nut/upsd.users

Configurer Home assistant

Ajouter l’intégration appellé NUT ans home assistant

nut.png

Remplir les champs qu’on a définit dans upsd.users

nut01.png

Si tout se passe correctement vous aurez une nouvelle intégration qui apparaît :

nut02.png

Et vous verrez l’état de votre onduleur :

nut03.png

Automation

Un exemple d’automation pour être alerté par Telegram si la batterie de l’onduleur est en dessous de 50%

# Battery en dessous de 50 %
- id: ups_eaton_battery_50
  alias: ups_eaton_battery_50
  trigger:
  - platform: state
    entity_id:
      - sensor.ups_battery_charge
  condition:
    - condition: numeric_state
      entity_id: sensor.ups_battery_charge
      below: 50
  action:
    - service: notify.telegram_groupe
      data_template:
        title: 🔋 Home assistant 🔋
        message: UPS EATON batterie est en dessous de 50%🔋
  mode: single

Un autre exemple pour être alerté en cas de coupure avec EDF:

#SECTEUR EDF DOWN
- id: ups_eaton_input_voltage
  alias: ups_eaton_input_voltage
  trigger:
  - platform: state
    entity_id:
      - sensor.ups_input_voltage
  condition:
    - condition: numeric_state
      entity_id: sensor.ups_input_voltage
      below: 1
  action:
    - service: notify.telegram_groupe
      data_template:
        title: 🔋 Home assistant 🔌
        message: UPS EATON coupure EDF détécté car {{ trigger.to_state.attributes.status }}🔌
  mode: single

conclusion

L’intégration et l’automatisation des onduleurs dans Home Assistant permettent de surveiller l’état de votre onduleur et réagir rapidement en cas de coupure de courant ou de problème.