J’int√®gre le Power Boost EM112 de chez Carlo Gavazzi dans Home Assistant via le port RS485 (Modbus)

Information importante

A noter que l’int√©gration d√©crite ci-dessous ne peut fonctionner que si la cl√© USB/RS485 est le seul √©quipement du bus RS485 connect√©e au EM112. En effet (et gr√Ęce √† l’aide d’Eric G.) J’ai compris qu’il ne pouvait y avoir qu’un seul √©quipement maitre sur le bus. Or le maitre est celui qui interroge et l’esclave celui qui r√©pond. l’EM112 est donc esclave.

Mon id√©e premi√®re √©tait de sniffer les trames de dialogues entre l’EM112 et ma Wallbox, la Wallbox √©tant maitre, je ne peux faire cela. Pour la beaut√© de l’exercice, j’ai test√© avec deux maitres, cela fonctionne on retrouve des valeurs mais de temps en temps, quand les deux maitres posent une question ensemble, on se retrouve avec une erreur.

Si quelqu’un peut m’orienter vers une mani√®re de “snifer” le bus 485 pour intercepter les informations que le EM112 envoie √† une Wallbox par exemple, je suis preneur car √† ce stade, je ne peux avoir une Wallbox et une Cl√© RS485/USB en parall√®le (deux maitres).

 Mat√©riel utilis√© et drivers

L’√©quipement le plus cher de tout mon tableau (1.33‚ā¨ sur Ali ūüėā), celle-ci fonctionne, visiblement il y a des fausses cl√©s, j’ai peut-√™tre eu de la chance mais ce vendeur est s√©rieux.

Evidemment d√®s r√©ception, je l’ai ouverte pour trouver une r√©f√©rence, c’est une YYH-256

En cherchant sur les forum, on retrouve que c’est (probablement) un fork de CH341 les drivers de ce dernier sont m√™me utilis√©s.

A noter que mes recherches de drivers ont √©t√© inutiles puisque la cl√© est nativement reconnue sur le RaspberryPi4/HAOS que j’utilise.

Je poste ici ce sch√©ma qui donne les circuits utilis√©s, √† noter que le quartz a disparu, ce n’est pas un oubli √† la soudure, c’est une √©volution de la cl√© (un composant gagn√©, c’est un composant gagn√©).

 

Je relie la clé USB au port RS485

La clé a deux connecteurs D+ et D-, il suffit de les connecter sur les broches B+(4) et A-(5) du EM112

Je connecte la clé sur le port USB du Raspi4

Je teste imm√©diatement la commande¬† lsusb sur la ligne de commande et je constate que quand la nouvelle cl√© est branch√©e, j’ai une ligne de plus, c’est plut√īt bon signe.

Je passe les soucis de ports /dev/ttyUSB0 et /dev/ttyUSB1 qui changent √† chaque d√©marrage, j’ai solutionn√© et document√© la solution sur :

Je note que j’utiliserai le port /dev/serial/by-id/usb-1a86_USB2.0-Ser_-if00-port0 pour me connecter √† cette cl√©.

Je configure l’int√©gration Modbus qui est nativement dans HA

Dans mon fichier configuration, j’ajoute la ligne modbus: !include modbus.yaml

Et dans modbus.yaml, je déclare la clé

- name: modbus_hub
  type: serial
  #port: /dev/ttyUSB1
  port: /dev/serial/by-id/usb-1a86_USB2.0-Ser_-if00-port0
  baudrate: 9600
  bytesize: 8
  method: rtu
  parity: N
  stopbits: 1  
  retries: 5
  close_comm_on_error: false
  delay : 5
  timeout : 2
  message_wait_milliseconds : 1000

Je déclare chaque sensor 

A partir de l√†, je me plonge dans la documentation de Gavazzi et je vais chercher les lignes qui m’int√©ressent :

Pour avoir l’adresse de chaque sensor, je converti les adresses en hexa en d√©cimal puis je d√©clare les 4 sensors dans modbus.yaml :

sensors:
  - name: EM112_W
    unit_of_measurement: W
    state_class: measurement
    device_class: energy
    slave: 1
    address: 4
    data_type: int32
    input_type: input
    precision: 0 
    scale: 0.1
    scan_interval: 10
    lazy_error_count : 999
    swap : word
    
  - name: EM112_A
    unit_of_measurement: A
    state_class: measurement
    device_class: current
    slave: 1
    address: 2
    data_type: int32
    input_type: input
    precision: 0
    scale: 0.001
    scan_interval: 10
    lazy_error_count : 999
    swap : word
    
  - name: EM112_VA
    unit_of_measurement: VA
    state_class: measurement
    device_class: energy
    slave: 1
    address: 6
    data_type: int32
    input_type: input
    precision: 0 
    scale: 0.1
    scan_interval: 10
    lazy_error_count : 999
    swap : word
    
  - name: EM112_kwh
    unit_of_measurement: kwh
    state_class: total_increasing
    device_class: energy
    slave: 1
    address: 16
    data_type: int32
    input_type: input
    precision: 0 
    scale: 0.1
    scan_interval: 10
    lazy_error_count : 999
    swap : word

Je vérifie le résultat

Parfait ! Il ne reste plus qu’√† jouer √† faire une jolie carte…

Rappel

Ne pas mettre en production en parall√®le d’une Wallbox

Si quelqu’un peut m’orienter vers une mani√®re de “snifer” le bus 485 pour intercepter les informations que le EM112 envoie √† une Wallbox par exemple, je suis preneur car √† ce stade, je ne peux avoir une Wallbox et une Cl√© RS485/USB en parall√®le (deux maitres).

Bibliographie, Références