Onduleur Huawei SUN2000 - Modbus ? API?

Bonjour à tous,
Possesseur d’un onduleur Huawei SUN2000, je suis à la recherche d’un moyen de le faire communiquer avec Jeedom étant donné qu’il n’y pas de plugin dispo sur le market.

Il existe 2 possibilités :

  • via Modbus, mais les 2 plugins dispo sur le market sont HS et n’ont pas l’air de vouloir fonctionner avec l’onduleur alors que des logiciels tiers y arrivent…
    Même avec un ticket ouvert le sur le plugin officiel, ca n’a pas l’air de vouloir avancer étant donné le peu de prise en considération du problème…

  • Via l’API : est ce que certains d’entre vous (les possesseurs) ont réussi a intégrer un script permettant de récupérer les infos de l’onduleur ?

Si certains d’entre vous ont envie d’avancer sur le sujet, ils sont les bienvenus :slight_smile:

Bonjour,

Mon installation est prévue pour début de semaine prochaine, et c’est également un SUN 2000 que je vais recevoir … Je me lance donc aussi dans cette recherche !

Courage !

Bonjour,

Même problème que vous … Depuis février, avez-vous trouvé qlq chose ? :slight_smile:

Avez-vous testé ceci ? Digital3D : Onduleur Huawei SUN2000 et Jeedom
Perso, j’ai pas de Synology

Bàv,

Salut,

la version beta de MyModbus disponible sur le market devrait être compatible avec ta configuration.
Si tu souhaites essayer, je suis disposé à t’aider sans problème.

J’ai changé de principe d’installation, ça ne touche plus au python du système (trop invasif et rendait le système instable) je suis quasi sûr que ça marcherait chez toi.

Dis-moi si tu veux essayer. Tu peux déjà essayer de ton coté et en cas de soucis, poster ton problème ici, on regardera ensemble.

PS: valable pour tous ceux qui ont cet onduleur.

A+
Michel

1 « J'aime »

Bonjour,
Je rencontre le même problème… et j’ai une petite préférence par la solution « ModBus » car je n’aime pas trop aller chercher sur le cloud une information disponible sur mon réseau local…

Après un certain nombre de recherches j’ai trouvé une libraire python faite pour HA pour récupérer les informations de l’onduleur par ModBus TCP.
Afin de tester cette solution j’ai fait un petit client MQTT qui publie le résultat du ModBus vers le broker MQTT de Jeedom.

Actuellement je fais tourner en « nohup » mon code python sur une VM syno et ça fonctionne très bien.
Le code est dispo sur ce repo github et il y a un petit readme pour décrire sommairement comment l’exécuter

Pour info: ça marche avec un dongle FE et avec le WLAN de l’onduleur, par contre le port à utiliser et le slave_id sont différents

  • WLAN onduleur (port=6607 et slave_id=0)
  • Dongle FE (port=502 et slave_id=1)

Très cordialement
Gonzalo
PS: Je n’ai jamais fait de plugin, si quelqu’un peut m’aider à transformer ce code en plugin ça devrait permettre d’avoir un modbus2mqtt

1 « J'aime »

bonjour @gonzalodrobles
je n’ai jamais mis à jour le post c’est vrai, pour info nous avons reussi a faire fonctionner les plugin modbus déjà dispo sur le store.

Bonjour @agadoc
Puis je avoir la conf utilisée svp?
Très cordialement
Gonzalo

@gonzalodrobles, oui, sur quel plugin ?
Sur l’officiel, ca se passe dans la configuration générale du plugin.

En fait ce qu’il se passe, c’est que les plugin ne laissent pas le temps à l’onduleur de répondre, du moins à la 1ere connexion, et de ce fait génèrent un timeout.

Dans la config générale du plugin Modbus :

Dans Mymodbus, l’ancienne version, il faut ajouté un timesleep dans la conf, il me semble en avoir parlé sur le topic de mymodbus.

Pour Mymodbus nouvelle version, je te laisse voir ça avec @Michel_F qui a intégré ça d’une main de maître me semble t’il :wink:

1 « J'aime »

Salut à vous,

je serais heureux de pouvoir vous aider simplement à l’aide de MyModbus. Si vous avez besoin d’aide pour un test, je suis dispo par MP.
(je ne vends rien… :wink: )

A+
Michel

Bonsoir,

je récupère bien les infos de mon onduleur SUN2000 en modbus avec le plugin modbus, mais je n’arrive pas à lire les valeurs négatives du registre 37113 ( compteur d’énergie GRID).
Avez vous une astuce ?

Je n’arrive pas à lire les registres avec le plugin MyModbus avec les même configs.

Je vous remercie

Salut @Aurels71,

La règle de ce forum c’est un post par question/problème, ne t’étonne donc pas si un modérateur déplace ton message et surtout ne le prends pas mal…

La version beta du plugin MyModbus permet de lire correctement beaucoup de type de variables et gère les valeurs négatives comme il faut.
Tu peux te faire un avis en lisant la documentation du plugin : https://bebel27a.github.io/jeedom-mymobdus.github.io/fr_FR/index_b

S’il te faut un coup de main fias un nouveau post en précisant le tag #plugin-mymodbus, je ferai ce que je peux pour t’aider.

A+
Michel

Salut @Aurels71
pour ma part je passe par un scenario pour mettre à jour tous mes virtuels liés aux infos récupérées via modbus.

Voici le calcul que j’effectue pour les valeurs négatives du registre 37113 :

Ca se passe dans la 1ere boucle SI pour le negatif :

le calcul de la valeur est le suivant :

(#[Maison][Onduleur Luna2000][EDFProd]#-4294967296)+65535

Même principe pour la batterie.

Ca donne ca :

Ici la prod est en positive car j’injecte, mais quand j’importe, ca passe en négatif.

Salut,

Tout a fait d’accord avec le message de @Michel_F, si tu rencontres une difficulté avec un plugin en particulier le mieux est d’ouvrir un sujet dédié plutôt que d’en faire part au détour d’un sujet ayant plus ou moins de lien.

Bonsoir à tous,

Je vous remercie pour vos conseils.
@agadoc je ne comprends pas pourquoi tu est en Kwh pour la prod instantanée, c’est plutôt des Kw.
Je vais faire un test avec ta formule dans un scénario , mais (#value#-4294967296)+65535 ne fonctionne pas dans la formule de calcul de la commande.

@Michel_F Je me lance sur pour faire un nouveau post, car j’ai toujours une erreur de lecture avec MyModbus.

Amicalement,

Aurélien

Salut à tous,

Pouvez-vous me dire si le plugin Mymodbus peut communiquer avec un SUN2000-3.68KTL-L1 (avec 2 batteries) et où je peux trouver les différents registres modbus?

Merci !!!

Tu as tout en dessous je pense

Ok super je vais déjà essayé ça mais j’ai bien plus d’infos depuis le portail Web : j’ai des infos différentes pour chaque batterie aussi

Voila la doc des adresses modbus de l’onduleur :
https://www.digital3d.com/download/Huawei%20Solar%20Inverter%20Modbus%20Interface%20Definitions.pdf

Ah magnifique : grand merci à toi !

Je n’ai pas encore essayé le plugin mais quand je tente avec la commande mbpoll sous linux ça n’a pas l’air de marcher pour récupérer ici le model id :

mbpoll 192.168.1.10 -a 1 -r 30070 -c 1
mbpoll 1.4-12 - FieldTalk™ Modbus(R) Master Simulator
Copyright © 2015-2019 Pascal JEAN, GitHub - epsilonrt/mbpoll: command line utility to communicate with ModBus slave (RTU or TCP)
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type ‹ mbpoll -w › for details.

mbpoll: Connection failed: Operation now in progress.

J’ai bien activé le modbus via TCP et je pense que le slave id est bien le 1 (avec le 0 marche pas non plus)

Salut,

pour info, j’ai continué mes tests et j’arrive à avoir des valeurs en ajoutant un Poll rate d’au - 10 secondes avec mbpoll : donc la première fois j’ai pas d’info puis ensuite il veut bien m’en donner :

mbpoll 192.168.1.10 -a 1 -r 30071 -c 1 -l 10000
mbpoll 1.4-12 - FieldTalk™ Modbus(R) Master Simulator
Copyright © 2015-2019 Pascal JEAN, GitHub - epsilonrt/mbpoll: command line utility to communicate with ModBus slave (RTU or TCP)
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions; type ‹ mbpoll -w › for details.

Protocol configuration: Modbus TCP
Slave configuration…: address = [1]
start reference = 30071, count = 1
Communication…: 192.168.1.10, port 502, t/o 1.00 s, poll rate 10000 ms
Data type…: 16-bit register, output (holding) register table

– Polling slave 1… Ctrl-C to stop)
Read output (holding) register failed: Connection timed out
– Polling slave 1… Ctrl-C to stop)
[30071]: 347

Comme dit plus haut, cet onduleur n’aime pas les connexions trop rapide : d’ailleurs y’a une sorte de firewall dessus car nmap ne me donne pas les ports ouverts …

Aussi, pour mon modèle les registres ne correspondent quasi pas !!! Bizarre

Et enfin je viens d’installer Mymodbus et ça ne fonctionne pas : « no route to host » à mon avis pour la même raison, faut se connecter et attendre x temps avant de lui demander une valeur de registre