Bonjour,
Il serait intéressant de créer un plugin pour les onduleurs et batteries de marque Sungrow qui utilisent l’application iSolarCloud.
Ils ont récemment ouvert une API qui pourrait être utilisée pour sa création.
Merci beaucoup
bonjour , oui se serait super !
Didier
Je recherchais ca aussi, et voici comment j’ai fait.
Ca me servira peut être bien autant de sauvegarde que toi de tuto !
1). Perso, j’ai le module de communication WiNet-S livré avec l’onduleur SG8.0RT. Il est accessible à ma smart depuis mon réseau local derrière la box. Donc en 192.168.x.x
1bis). il faut accéder à ce WiNet. En local. MdP usine = admin/pw8888
2). il faut activer le modbus sur TCP dans la config du WiNet. Sur le port standard par exemple. Ca se fait ici :
3). Il te faut le plugin officiel Modbus de Jeedom. L’acheter, l’installer, l’activer et ses dépendances. Le faire fonctionner (mais c’a été direct chez moi). Pour la config :
4). Créer un objet modbus pour ton onduleur sungrow, avec les parametres qui vont bien :
5). Il te faut créer les commandes.
C’était mon premier objet modbus, j’ai un peu galéré avec les registres et le type de commande. Voici un peu de détail.
a) le module crée automatiquement 4 commandes de base, qui servent en écriture. Je les ai supprimés, mais comme elles reviennent à chaque sauvegarde, j’ai fini par les rendre « pas visible »
b). Pour lire l’onduleur, on est en ReadOnly et sur des registres. (c’est pas des R/W et c’est pas du bit/coil ni des commandes). Donc il faudra utiliser la commande FC4 : ca définit que c’est de la lecture, et ca définit aussi la plage d’adresse des registres recherchés.
c). A chaque fois, il va falloir dire quel registre on lit, combien de registres à la suite, leur format d’encodage en binaire (float, integer…) et le mode d’écriture des mots sur plusieurs octets, voir des octets dans un même mot (cf little / big endian). Ca, c’est un peu galère, il te faut la spec de ton onduleur et modbus doktor pour tester.
d). au final, pour l’onduleur sungrow, j’ai fini par faire que des lectures de 1 word en big endian « byte in word » (et évidement je n’avais rien à définir pour les « word in D-word ») Le tout en U32 (codage d’entiers sur 32 bits, donc 2 mots, dont je n’en lisais en fait qu’un seul, le premier. C’était suffisant pour la puissance, l’intensité etc.
Ca donne ca :
e). Il y a qq petits réglages à faire dans l’affichage comme ca :
Et au final, ca présente comme ca :
@Madcow : j’espere que j’ai mis ces infos au bon endroit, j’ai l’impression qu’il y a pas mal de monde qui les cherchaient, ca pourrait être difficile à trouver dans les réponses à des questions…
Bonne journée !
sources :
sungrow sur github de dnoegel
Bonjour Christophe
Merci pour ce travail , je vais essayer de faire la meme chose des que possible , le materiel n’est pas chez moi !
je pense que l’onduleur est un SH6.0RS
je te donnerai un feedback.
Didier
Bonjour Christophe,
j’ai installer le Modbus , ajouter l’objet onduleur en tCP port 502.
j’a i créé la premiere commande P_Inst , la valeur est toujours à 0 !
par contre j’ai trouvé une liste de registre pour le sh06rs ,:
je vais essayer de fouiller
Didier
Didius,
Je n’ai pas utilisé les .tsv. « de manière native ».
Ca doit servir à configurer une autre passerelle, mais ca tombait pas juste pour moi.
J’ai retenu les adresses 5030 5032, etc, que tu vois dans mes impressions d’écran.
Effectivement, le 5030 n’était pas dans le TSV de noeggel. Mais ca me semblait logique que P soit à l’adresse 5030 si Q était juste après.
Autre chose :
- le module modbus crée automatiquement les « double lectures » : quand tu veux un registre supposé être sur 2 octets (ou X octets, comme le type « long ») c’est le module qui duplique les commandes de lecture. (C’est pour cela que c’est le fouilli sur l’impression d’écran.)
- et aussi, de mémoire, il se charge de la correction d’offset (le registre 1 est à l’adresse 0)