Template mymodbus pour marstek Venus E V3

Bonjour,

Je vous propose ici un template mymodbus pour une batterie Marstek Venus E V3.
Le pluging mymodbus propose déja un template nommé « MARSTEK Venus », mais il a été conçu pour une marstek Venus version 2.
Malheureusement, certains registres de la marstek ont changé de la V2 à la V3 ; il est donc nécessaire d’apporter certaines modifications.

Je propose ce template ordonné de la même façon que le précédent : les commandes sont triées par ordre croissant de numéro de registre.
A chaque utilisateur de trier ensuite comme il le désire, et éventuellement à supprimer ou rajouter d’autres registres.

Marstek ne publie pas officiellement de doc sur l’utilisation de ces registres.
Pour construire mon équipement, j’ai utilisé le template existant, puis adapté en consultant différentes docs dispo sur le net :

https://duravolt.nl/wp-content/uploads/Duravolt-Plug-in-Battery-Modbus.pdf
https://docs.google.com/spreadsheets/d/e/2PACX-1vSyu0LKoSrQQzvrosMH-sOcSKT7pgHSXEwAcIJe0cy3NCrmwiLH6VDGjh0_2HOKhL0nZmnI3Mk5Fb_d/pubhtml
https://github.com/ViperRNMC/marstek_venus_modbus/blob/main/custom_components/marstek_modbus/registers_v3.py
https://github.com/fonske/MarstekVenus-LilygoRS485/blob/main/lilygo_mt1_v3.yaml

Les registres ont été trouvés par reverse engineering, il peut y avoir des choses fausses. Par exemple, le registre 37004 qui est noté dans le doc de ViperRNMC comme étant ac-current, avec un scale de 0.004, et qui donne en fait la même valeur que ac_power, registre 30006 ; c’est la puissance du courant alternatif, pas le courant.

Voici les informations gérées par ce template :

  • plage 30001 - 30006. DC power - AC voltage - AC power
  • plage 30100 - 30101. DC voltage - DC current
  • plage 33000 - 33011 : tot charging energy - tot decharging energy - daily charging energy - daily discharging energy - monthly charging energy - monthly discharging Energy
  • plage 35000 - 35002. temp. - temp. MOS1 - temp. MOS2
  • plage 35010-35011. temp. max cell - temp min cell
  • « 35100 ». Inverter State
  • plage 37005 - 37008. batt SoC - max cell voltage - min cell voltage
  • « 42000 ». mode control
  • « 42010 ». mode forcé (off - charge - décharge)
  • plage 42000 - 42021. puissance de charge forcée - puissance de décharge forcée
  • « 43000 ». Mode d’utilisation (manuel - autoconsommation - AI)
  • plage 44002 = 44003. max charge power - max discharge power

Il n’est pas facile d’optimiser les requêtes en regroupant les registres par plage : les informations sont éparpillées, sans grande logique.
J’avais essayé de faire une plage plage 35000 - 35011 et une autre 42000 - 42021 pour limiter les requetes, mais la marstek refuse.
Ca fait donc un nombre important de petites requetes.

A noter que les registres à partir de 42000 sont en mode lecture/écriture.

J’ai l’intention de créer un autre équipement modbus pour les informations semi-statiques ou spéciales de la marstek ; il sera en mode ‹ sur évenement ›. Chez moi, exécuté une fois par jour.
Il y aura, entre autres, les infos de version, et la tension des cellules de la batterie.
Si ca intéresse certains d’entre vous, je proposerai un autre template dédié.

Félicitations à @Michel_F pour ce plugin ; il est vraiment très bien concu.
Je l’utilise par ailleurs pour interroger mes micro onduleurs DS3 APSystems, avec bonheur.
Et merci @ptitdyno pour le template de la V2, ca m’a été très utile.

Voici le template :
MARSTEK_Venus.json.log (64,1 Ko)
. Il faudra ensuite supprimer l’extension .log après chargement.

2 « J'aime »

Bonjour,

Merci pour le partage de ce template qui sera dans la version de demain.
Je me suis permis une seule petite optimisation qui était sans doute prévue : l’utilisation de la plage « Plage 44002 - 44003 » pour la lecture du registre 44003.

J’en profite d’ailleurs pour passer la bêta en stable, elle n’a pas évolué depuis le 18 décembre et je n’ai pas de retours négatifs.

:heart:

Si vous souhaitez partager un template pour ces appareils, ce sera avec joie que je les intègrerai.

A+
Michel

En effet, ca m’avait échappé.
Merci

J’ai utilisé le template déja proposé : APS_ECU_1Phase
Je m’était mal exprimé : il fait passer par la passerelle ECU pour obtenir les infos des micro onduleurs.

1 « J'aime »

Merci ! juste installé avec module elfin wifi ca fonctionne niquel ! Bravo.

Juste une question d’utilisation. Comment forcer de la recharge en n’utilisant que le plugin ?

Je souhaiterais recharger la nuit en HC puis en journée programmer de l’autoconso en fonction de TEMPO et de challenge sur LiberteWatt.

Sur le coup, pour l’autoconso, il y a un mode d’utilisation donc c’est bon. Mais comment faire pour « ne rien faire » (ni charge ni décharge ni autoconso) et pour lancer et arrêter la recharge ?

Merci d’avance.

A tester (je n’ai pas testé en mode scénario). Pour forcer la recharge :

  • mode control RS485 On (valeur modbus 21930)
  • mode forcé : charge (valeur modbus 1)
    possibilité de régler la puissance de charge depuis max charge power (par pas de 50W)

En fin de cycle, passer mode forcé à None (valeur modbus 0) et mode control RS485 à Off (valeur modbus 21947)

Idem précédent, avec une charge (ou décharge) réglée à 0.

Il est peut-être possible de faire la même chose en utilisant le mode manuel.
Voir ce doc : Modbus Table - Google Drive
à partir des registres 43100, on devrait pouvoir régler les paramètres du mode manuel. Je n’ai pas testé ; ce n’est peut-être pas disponible pour la venus V3.

1 « J'aime »

Merci ! en fait j’avais mal compris le fonctionnement.
Il faut comprendre le RS485 est un mode comme AUTOCONSO ou MANUEL. Si on l’active, on remarque dans l’appli qu’il n’y a pas de mode de fonctionnement, vide. Alors on peut régler une puissance de charge ou décharge. Si on désactive, on peut ensuite remettre en manuel ou autoconso.
De même, le mode STAND BY peut être fait par un RS485 actif et charge et décharge à la valeur 0.
Sur le coup, j’ai créé des commandes supplémentaires dans l’équipement morbus :

Et enfin un virtuel qui enchaîne plusieurs actions de l’équipement modbus pour faire le boulot :

J’essaie de comprendre ; je ne suis pas un expert jeedom.

Concernant la création des commandes supplémentaires dans l’équipement modbus : je suppose que c’est nécessaire en mode ‹ programmé › parce qu’on ne peut pas exécuter une commande action de type liste depuis un scénario ou un autre objet jeedom permettant d’exécuter une action ; c’est bien ça ?
Si oui, en effet, la création de ces commandes est vraiment utile.

Concernant le virtuel : dans ta copie d’écran, je ne vois pas d’enchainement d’actions ; je suppose que c’est tronqué dans cette image ?
Si oui, tu pourrais passer une copie texte du contenu du champ Valeur ?

Merci

Oui tu as bien compris :

Commande AUTOCONSO : #[Marstek][VenusE][mode d utilisation AUTOCONSO]#

Commande CHARGE_START : #[Marstek][VenusE][puissance de charge forcée 1200]#&&#[Marstek][VenusE][mode Forcé CHARGE]#&&#[Marstek][VenusE][mode control RS485 ON]#

Commande STANDBY : #[Marstek][VenusE][puissance de charge forcée 0]#&&#[Marstek][VenusE][mode Forcé NONE]#&&#[Marstek][VenusE][mode control RS485 ON]#

Merci.
Pour revenir en mode autoconso, tu n’est pas obligé de remettre le mode control 485 à OFF ?

Je souhaite pouvoir gérer le mode de fonctionnement de la batterie depuis jeedom, à l’aide de scénarios.

J’ai opté pour créer des commandes comme toi, c’est à priori nécessaire :
mode autoconsommation
mode manuel
mode control RS485 on
mode control RS485 off
mode forcé none
mode forcé charge
mode forcé décharge
charge forcée 0
charge forcée 1200
charge forcée 2500

On peut éventuellement se passer du virtuel pour enchainer les actions, en utilisant la configuration de la commande, onglet configuration, action avant ou après exécution de la commande.
exemples :

charge forcée 0 (ou 1200, ou 2500), action après exécution de la commande :

#[Marstek][Marstek Venus E V3][mode forcé charge]#
#[Marstek][Marstek Venus E V3][mode control RS485 on]#

mode autoconsommation, action avant exécution de la commande :
#[Marstek][Marstek Venus E V3][mode control RS485 off]#

Ca marche bien, j’ai fait différents essais.
L’avantage est de ne pas avoir à créer un virtuel : tout ce qui concerne la batterie se trouve dans un seul équipement.
L’inconvénient : c’est moins évident à comprendre, et on peut potentiellement faire des choses pas terrible comme celle-la :

mode autoconsommation, action avant exécution de la commande :

#[Marstek][Marstek Venus E V3][charge forcée 0]#
#[Marstek][Marstek Venus E V3][mode control RS485 off]#

Je l’avais fait par inadvertance, sans me rappeler que l’action #[charge forcée 0]# entrainait d’autres choses ; ca a amené à un disfonctionnement au niveau de l’équipement, sans remontée d’erreur. Il a fallu redémarrer manuellement le démon pour que ca reparte.

Je vais donc utiliser ta technique du virtuel.

Questions annexes, un peu hors sujet (je ne suis pas doué en présentation) :

  • Tu as fait quelque chose de ‹ joli ›, genre utilisation de widget, pour présenter proprement les options de pilotage de la batterie ?

  • je souhaite créer un second équipement modbus pour la batterie, avec les infos semi statiques (numéro de série, versions de firm, …) et aussi les infos de tension de chaque cellule.
    Ca sera un équipement en rafraichissement sur évenement. Il sera déclenché une fois par jour, à l’aide d’un scénario ; ca, je sais faire.
    J’aimerais également permettre un raffraichissement à la demande, à l’aide de la commande « Raffraichir » de l’équipement ; je ne sais pas faire un ‹ bouton › ou autre widget qui utiliserait cette commande pour cela. Je suis preneur de vos suggestions.

Je vous conseille de faire un équipement MyModbus de type « interface d’un autre équipement » avec lecture 1x sur 800 (ou qqc comme ça) si jamais vous n’arrivez pas à avoir 2 connexions simultanées.


Pour les commande action dont la valeur est à définir lors du scénario, il est possible de les configurer de type curseur, de préciser #slider# dans le champs d’option et je pense que la valeur sera à saisir dans le scénario (je crois que c’est ce que j’ai chez moi, mais n’y ai pas accès en ce moment et ne peux pas valider).

J’ai créé hier mon second équipement (quee j’ai appelé Marstek Venus E V3 bonus), en raffraichissement sur évenement.

Pour le rafraichir à la demande depuis le dashboard, j’ai procédé comme ceci :

Quand je clique sur ce bouton, le scénario lance bien le rafraichissement de l’équipement, puis rebascule le switch virtuel sur Off.

A priori, ca fonctionne bien comme cela, il n’y a pas de conflit entre cet équipement « Marstek Venus E V3 bonus » rafraichi à la demande et l’équipement « Marstek Venus E V3 » en mode polling.

Voici le rendu dashboard de cet équipement en mode tableau :

Et celui de l’équipement « Marstek Venus E V3 »:

J’ai l’intention maintenant d’enrichir le virtuel « Marstek actions » avec des actions comme l’a décrit @fredlamour , et d’essayer de le rendre plus sexy.

Je ne vois pas comment spécifier la valeur d’un slider depuis une action commande d’un scénario …

Bonjour

Soit vous n’avez pas testé, soit votre commande a un souci. Car une fois la commande slider choisie, vous devriez avoir une case pour entrer la valeur. En tout cas, c’est le cas pour la posistion de mes volets.

Antoine

1 « J'aime »

Je n’avais jamais remarqué que lorsqu’on saisi une commande de type curseur dans une action de scénario, un nouveau champ apparait …
Et donc, je n’avais pas testé spécifiquement.:kissing:

Je vois que ca marche aussi pour les listes.

MERCI BEAUCOUP :clap: :clap:

1 « J'aime »

Et dans ce champs on peut mettre une valeur fixe ou une formule
Ici une valeur (pour 2 commandes) :

Ici une formule :

Suite aux échanges avec @Tonio16 et @Michel_F, Il n’est pas utile de créer ces commandes ; je suis revenu à la conf initiale, similaire au template.

Pour faire un virtuel similaire à celui de @fredlamour, j’ai procédé comme cela :

  • création d’une commande info que j’ai appelé ‹ info bidon › ; elle ne sert à rien, mais sera nécessaire pour créer les commandes action de type défaut. Je n’ai pas réussi à faire sans.
  • création des commandes action suivantes, liées à cette commande info, de type défaut :
    . mode standby
    . charge forcée 1200
    . décharge forcée 1200
    . mode autoconsommation
    . mode manuel

J’utilise la partie configuration - action après exécution de la commande pour séquencer les commandes modbus

Voici 2 exemples :