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