[Home Assistant, MSunPV et Batterie DIY] Le Matériel

Plus d'informations
08 Mar 2025 21:58 - 13 Jui 2025 14:51 #1 par Ixio_Jo
Bonjour,
Suite aux échanges sur le post dédié à Home Assistant , sujet qui m'a énormément inspiré et aidé, je vais présenter un petit peu mon installation ainsi que les développements que j'ai fait pour exploiter une petite batterie.

En Juillet/Aout 2023 j'ai donc installé 6 panneaux Trina 425Wc (2 en ombrière au dessus de ma baie vitrée au SSO azimut réglable de 30 à 60° et 4 fixés sur mon pignon à l'ESE à 60°) sur MO Hoymiles (800VA et 1600VA) puis en novembre 2023 un kit Beem 420Wc Hoymiles 400VA obtenu par la suite pour une misère grâce à une subvention de la métropole et un cash back. J'ai décrit en long en large et en travers sur forum-photovoltaique.fr/ , si vous voulez d'autres détails


J'ai fait le montage le plus simple pour moi et mes moyens, et pour la pose sur le toit en plus de devoir monter de 2 étages entiers, il y avait le problème de la charpente légère en fermettes très espacé (90cm) et peu épaisse. Peut être que j'en rajouterai un jour sur le toit au moins en renforçant avec des chevrons la où je dois visser les supports... peut être pas.
Avec le kit de panneau, j'avais pris une passerelle DTUpro qui m'a énormément déçu. Cloud uniquement, relevé toutes les 15min, plante tout le temps, pas trop intégrable sous HA... 200€ gaché, je me suis très vite procuré un OpenDTU et la c'était exactement ce que je voulais, données quasi en temps réel, intégrable sous HA très facilement !

Avant même l'achat, je savais que sans routeur j'aurai beaucoup de surplus. Ayant commencé à domotiser la maison sous Home Assistant et ayant un relais connecté pour le chauffe eau, j'avais tenté de le passer à 700W (Utilisation d'une des 3 résistances seulement) et de le déclencher dès que j'atteignais 400W de surplus... En vain, le soleil de Normandie étant très variable, ça tombait tout le temps à coté et le relais passait son temps à basculer.

Vu que Home Assistant me plaisait de plus en plus, il était indispensable pour moi d'avoir un routeur communiquant. En parcourant les forums pour voir les différents produits existant je suis tomber sur le MsunPV qui remplissait tous les critères :
- vendu tout fait (au moment je me sentais pas de le monter moi même)
- SSR qui va bien vendu avec
- Communiquant
- Autonome (si ma domotique qui à l'époque n'était pas stable lache, ça marche quand même)
Mon seul regret c'est qu'il n'était pas directement intégré dans HA ni de MQTT, et je me suis beaucoup tapé la tête avec le Tuto de Tochy, même si au final, je m'en suis sorti vite.

J'ai aussi dû modifié mon chauffe eau pour découpler l'électronique, j'ai rajouté dessous un petit coffret électrique, avec 2 disjoncteurs (pour la sécurité et que si quelqu'un autre que moi intervient dessus, qu'il se pose la question...) et un relais NO. Je ne voulais pas dégradé la carte électronique du chauffe eau acquis l'année précédente juste couper des fils ça m'allait... surtout que j'avais déjà coupé les fils pour réduire à 700W

J'ai par la suite rajouté une sonde de température (DS18b20) puis une mesure de débit + sonde de température en sortie, le tout monté sur un ESP8266 sous ESPHome.


Le chauffe eau n'est pas dans la même pièce que le MsunPV donc pas pu mettre la sonde dessus. Je gère donc mes routines nocturne de chauffe par HA, après une mise à jour du vieux portable que j'utilisais (SSD+ 8Go mémoire + installation de Promox au lieu de Ubuntu/Virtual Box), HA est devenu extrêmement rapide et fiable
Donc voila j'étais content, je consommais plus de 80% de toute la modeste production et c'est ridicule mais ça m'obsédait de trouver une solution pas trop cher pour récupérer ces 20% manquant...

Forcément, je ne voulais pas lacher les MO Hoymiles, avec l'openDTU, j'avais tout ce que je voulais, donc non pas de MPPT, je voulais de l'AC coupling. En plus j'étais difficile, j'avais 2 batteries de trottinettes Xiaomi parfaitement fonctionnelles (les batteries !) en 36V sous la main. Je voulais me faire la main dessus même si la capacité de chacune était très modeste (380Wh)...et c'est la que mes errements ont commencés. Je devrais peut-être en parler pour expliquer ce qu'on NE DOIT PAS faire malgré que j'ai toujours maintenu un niveau de sécurité sur ce que j'ai fait (disjoncteur, fusible et BMS), j'ai eu des petits incidents, qui heureusement ne m'ont couté que un peu de matériel. Il faut bien être conscient qu'une batterie 36 ou 48V, ça ne va pas vous électrocuter, par contre ça génère des courants forts qui nécessitent beaucoup de prudence, de réflexion dans le choix des composants et des cables et surtout une bonne compréhension sur le fonctionnement des BMS. J'en parlerai peut être dans la discussion plus tard.

Je rajoute que dans tout ce qui va suivre, si vous le reproduisez, c'est à vos risques et périls, je ne tiens pas à vous encourager à le faire. Surtout si vous ne savez pas ce que vous faites et que vous n'êtes pas conscient des risques pris, ne faites rien.

Donc après plusieurs mois d'essais voila ma solution actuelle :
- Une batterie LFP 16s 48V 50Ah, controlé par BMS JK 60A 0.4A de balance active. Un fusible de 30A à la sortie, il faudrait que je rajoute un sectionneur
- Un chargeur 1000W 48V ( monté à 56V) controlé par un MCP41010 à la place du potentiomètre de courant
- Un onduleur réseau Soyosource GTN 1200 lim 48V (hélas non homologué en France bien qu'il soit protégé comme la réglementation l'exige)
- Un controleur de batterie basé sur un INA226 (gros gadget qui mime le fonctionnement d'un BMV Victron et qui marche pas mal du temps)
- Un disjoncteur DC 25A entre la batterie d'un coté et le chargeur et onduleur de l'autre (qui me sert de sectionneur pour le moment)

La plupart des éléments commandables sont géré par ESPHome. Je me suis beaucoup aidé de code trouvé sur GitHub, en particulier la page de Syssi qui a quasiment intégré dans ESPHome tout ce qui existe dans le matériel pour batterie.

Je vais détailler un peu les éléments dans les postes suivants (limite d'images)
Pièces jointes :
Dernière édition: 13 Jui 2025 14:51 par Ixio_Jo.
Les utilisateur(s) suivant ont remercié: Paps42, patmtp35

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
08 Mar 2025 22:50 #2 par Ixio_Jo
Batterie 48V
12 cellules achetées en Juin 2024 sur AliExpress (oui j'étais encore de l'optique du 36V avec mes batteries de trottinette), livrées en Septembre, qualité pas top (un peu gonfflé, courbe de charge/décharge pas équivalentes entre les cellules), je ne recommande pas pour à peine plus cher sur nkon la qualité est garantie.

J'ai complété par 4 cellules même si les premières était pas top, pas le choix que de prendre les mêmes pour faire du 48V. Pourquoi 48V ? à cause de l'onduleur, j'en reparle plus tard. Commandées en novembre 2024 livrées en Janvier.
Prix total des 16: 340€. On verra combien de temps ça tient, je surveille. Si ca lâche je prendrai de la meilleure qualité, mais je suis pas inquiet pour la sécurité, les LFP ne posant pas trop de problèmes.

JKBMS 60A : super BMS avec équilibreur actifs 0.4A intégrés, totalement contrôlable en Bluetooth ou via un port serie ~30€. Totalement intégrable sur HA avec ESPHome via github.com/syssi/esphome-jk-bmscette intégration


La Batterie est dans une caisse en contreplaqué de récupération, faite par mes soins et compressée (un peu, j'ai pas de clef dynamométrique chez moi et le bois se déforme) par 5 tiges M8 isolé par du tuyau. Les cellules sont isolées les unes des autres par des PCBs. Je peux rajouter une photos mais ça n'a que peu d'interêt vous en trouverez des dizaines de mieux faites que la mienne sur Internet.

J'ai mis un fusible 30A en sortie, je compte pas injecter ou tirer plus de 20A dessus.

Chargeur
Ma principale préoccupation que j'ai eu quand j'ai commencé le projet, était de comment on peut contrôler l'intensité de charge. Après avoir regardé quelques vidéos, ma première idée a été d'utiliser un convertisseur DC-DC boost branché sur le 12V d'une vieille alimentation PC.

C'était pas cher, 13€ le boost 1200W, et en plus il possède 3 potentiomètres :
- 1 pour s'arrêter quand la tension d'entrée est trop faible
- 1 pour contrôler la tension de sortie
- 1 pour contrôler le courant de sortie

La charge d'une batterie se limitant par le courant, il faut donc contrôler ce potentiomètre de 0-10kOhm. En cherchant un peu, j'ai repéré que le MCP41010 est un potentiomètre contrôlable par un port SPI. A l'époque un custom permettait de le gérer directement sous ESPHome. Aujourd'hui les customs ne sont plus géré sous ESPHome, donc je propose ce GitHub où avec ChatGPT j'ai développé un external component.


Il suffit de remplacer le potentiomètre par les PIN 567 du MCP. Sur l'ESP8266, j'avais aussi rajouté un contacteur pour allumer ou éteindre l'alimentation de PC via un des câbles (celui qui permet d'allumer le PC au final)
Et voila on a une alimentation "Smart" ! Mais vraiment une mauvaise alimentation, j'avais 70% de rendement à la charge et seulement 250W de puissance de charge max.

Pour faire mieux, j'ai regardé si à tout hasard, on ne pouvait pas trouver des alimentations CC avec le même genre de potentiomètre que le convertisseur Boost et bingo, j'ai trouvé ça :

Bien plus puissant, meilleure rendement (~90%), juste le potentiomètre CC est de 5kOhm. J'ai juste rajouté une 10kOhm en parallèle du MCP41010, après plusieurs tests, je n'ai branché que 2 des pins du MCP en parallèle de la 10kOhm, sur l'autre partie j'ai mis quelques kOhm en fixe, ça me permet de descendre plus bas en courant.
J'ai aussi mis un relais sur la partie AC de l'alimentation qui est commandé par un petit relais DC commandé par une sortie de l'ESP. Ca permet de "débrancher" l'alimentation quand je ne m'en sert pas

Maintenant on a un smart chargeur sous ESPHome contrôlable par Home Assistant en fonction du surplus ! Et bien que ça ressemble à une usine à gaz, il réagit très vite, quelques secondes tout au plus, il est aussi rapide (ou lent selon le point de vue) et la récupération des infos du MSunPV


Voila, j'ai écrit 2 gros bouts, j'attaque demain si j'ai le temps le reste du matériel et ensuite j'explique comment je gère ça sous HA
Pièces jointes :
Les utilisateur(s) suivant ont remercié: Paps42, DarkGamelle

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
09 Mar 2025 00:13 #3 par patrick
Bonjour Jonathan,

J'ai fait un peu la même installation que toi: ard-tek.com/index.php/forum/support-tech...tterie?start=0#22380
Je ne me suis pas embêté comme toi à gérer les MO (5 Hoymiles 800W) et le chargeur, tout est commandé en tout ou rien par le MSunPV.

Conso pour février 10kWh et ça devrait encore descendre => 1kWh pour la première semaine de mars ! :whistle:

Seul truc pénible pour l'instant c'est l'alimentation/chargeur qui fait un bruit d'enfer. :evil:

Pour info, je limite la tension des batteries à 55V en sortie du chargeur soit 3.44V par cellule avec le BMS qui commence l'équilibrage à 3.4V => de 1 à 3mV de différence entre les cellules.
Malgré ces tensions plutôt faibles on voit bien que la courbe de tension augmente très rapidement au dessus de 54.5V, signe que les cellules sont bien chargées à bloc.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
09 Mar 2025 11:13 #4 par Defaliz
Merci beaucoup pour ce partage !
Je vais étudier ça de très près...

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
11 Mar 2025 13:20 - 11 Mar 2025 13:21 #5 par patmtp35
Réponse de patmtp35 sur le sujet [Home Assistant, MSunPV et Batterie DIY] Le Matériel
Bonjour et merci Jonathan,

voila ce qu'il manquait a mon install pouvoir piloter alim via esp, afin de ne pas faire de bêtises peux tu nous faire un petit shema du branchement avec l'alim ali ?

merci d'avance

Patrick
Dernière édition: 11 Mar 2025 13:21 par patmtp35.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
11 Mar 2025 21:56 - 12 Mar 2025 10:12 #6 par Ixio_Jo
Coucou, désolé de pas avoir eu le temps de compléter plus tôt... ça va prendre du temps avant d'être complet de toute façon.

Chargeur (suite)
Donc voici le schéma "paint" du branchement du MCP41010 sur l'ESP8266 et sur l'alimentation. Il faut au préalable démonter la carte et déssouder le potentiomètre qui limite l'intensité. Sur mon alimentation c'était celui près du bord, mais il faudra vérifier au cas par cas.

Il faut aussi vérifier le calibre du potentiomètre. Dans mon cas, c'était un 5KOhm max donc le MCP41010 (0=>10kOhm, 256 niveaux) était le plus approprié. En mettant en parallèle une résistance de 10kOhm comme dans le schéma, on peut exploiter toute la dynamique du MCP, mais la puissance ne sera pas linéaire avec la valeur. Pour ma part, je viens de revoir ce que j'ai fait, je ne l'ai pas mise, mais j'utilise que la moitié de la dynamique (120 niveaux), mais c'est c'est pas vraiment linéaire non plus :


J'ai pas revérifié sur mon montage si les PIN 5/6 ou 6/7 du MCP à relier à l'alimentation, j'ai relu la DATASHEET, ça doit etre ce que j'ai mis sur le schéma mais je peux me tromper. Dans ce cas la puissance sera MAX pour le MCP à 0. Il faudra soit changer les PIN (se brancher sur 5-6) soit modifier le code de l'ESP.

Normalement la PIN 5 du MCP devrait être reliée à l'alimentation mais j'ai constaté que ainsi (avec 1kOhm fixe)ça me permettait de descendre plus bas en puissance. Plus pratique pour réguler, mais les contre sont : perte de rendement à basse puissance, chute de la tension de sortie (j'ai du remonter avec le potentiomètre interne), et je suspecte une perte de linéarité. C'est à vérifier et à adapter en fonction de ce que vous voyez. Pour ma part, en plus bas j'ai 50W de consommation AC pour 33W DC avec le MCP à 0 (66% de rendement). Je me limite au niveau 120 sur le MCP, ce qui me fait 935W AC pour 820W DC (87% de rendement).


Voila ma dernière calibration pour s'en rendre compte, faite sur la puissance AC consommé (le but c'est quand même de charger avec le surplus)

Attention, il existe au moins 2 formats pour la puce, la taille standard et la taille micro, qui est impossible à monter sans un PCB. J'ai du me résoudre à acheter en plus un PCB d'adaptation


Le code ESPHome comme indiqué dans le message précédent, je le propose sur ce GIT . Et j'ai mis quelques boutons

Le bouton charge, c'est pour alimenter ou pas le charge avec un relais électromécanique commandé par un petit relais statique 3.3V piloté sur une sortie de l'esp :
substitutions:
  switch1_pin:  GPIO04  
switch:
 - platform: gpio
    pin:
      number: ${switch1_pin}
      inverted: false
    name: Charge
Pièces jointes :
Dernière édition: 12 Mar 2025 10:12 par Ixio_Jo.
Les utilisateur(s) suivant ont remercié: patmtp35

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
12 Mar 2025 10:28 #7 par patmtp35
Réponse de patmtp35 sur le sujet [Home Assistant, MSunPV et Batterie DIY] Le Matériel
Génial !! merci Jonathan pas de souci on a tous nos tafs a coté :)

Je commande le matos :)

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
14 Mai 2025 07:51 - 14 Mai 2025 08:07 #8 par Ixio_Jo
Coucou,
Pas beaucoup communiqué depuis, mais juste pour préciser que j'ai cramé l'alimentation 1000W qui servait de chargeur. Visiblement c'est les MOSFETs de hachage du 230V qui ont laché ce qui a provoqué la destruction des NTCs juste avant, et peut être d'autres éléments plus loin dans le circuit, j'ai essayé de réparer en changeant les NTCs et les MOSFETs, mais ça a plus empiré les choses, donc j'arrête avec cette alimentation.

J'arrive pas à mettre la suite du message, le forum fait des trucs bizarres donc je découpe en plusieurs bouts

c'est donc les apostrophes, j'ai tout enlevé, désolé si c est pas agréable à lire


Pour l origine du défaut, peut-être les réglages que j ai fait (mais pour moi c est les éléments plus loin dans le circuit qui aurait dû lâcher, ce qui n est pas le cas vu le sursaut de vie que j ai eu sur l alimentation après changement des MOSFETs), le trop grand nombre d extinction/redémarrage ( et là c est effectivement les NTCs puis les MOSFETs qui prennent, mais j avais déjà limité la possibilité de démarrage après un arrêt, et là, l alimentation a lâché pendant un fonctionnement à courant constant ), les variations fréquentes de courant de sortie?
J avais aussi modifié le boitier pour remplacer le ventilateur très bruyant d origine, j ai peut-être perturbé le refroidissement de certains composants.

En tout cas, je suis bien triste et frustré, je me doutais bien que à 40€ les 1000W, ça ne durerait pas la vie, mais là ça faisait que 9 mois...

Bien entendu que je compte remplacer cette alimentation, et si possible ne pas reproduire le problème... J avais donc le choix entre reprendre une alimentation de même techno mais plus puissante tout en travaillant dans la même gamme de courant (afin de moins stresser les composants, et d avoir un meilleur refroidissement), ou trouver une autre techno dans la même gamme de prix. Par-dessus, être plus prudent sur les variations de courant et les extinctions/redémarrage.

J avais déjà repéré sur DIYsolarforum des personnes réalisant des chargeurs pour batterie ("chargeverter") à partir d alimentation pour baie télécom. C est des alims montées en grappe qui se changent à chaud, et qui délivre 3kW à 48V, on trouve la Huawei R4850G2 et l Emerson R48-3000e3. Visiblement, on peut en trouver beaucoup d occasion sur Aliexpress (j imagine que vu l application, elles sont automatiquement changées à intervalle régulier même si elles sont parfaitement fonctionnelles) pour moins de 100€ avec le transport. C est vraiment donné pour du matériel professionnel, même d occasion. Le rendement annoncé est de 96% à 50% de charge et reste au-dessus des 94% entre 20% et 100% de charge (voir

On peut trouver des modèles reprogrammés pour sortir une tension adaptée à la charge des batteries LiFePO4 et vendu avec une carte pour connecter le secteur et les bornes CC. Après une petite recherche, j ai trouvé un petit développement en ESPHome pour contrôler le CANBUS de l alimentation Emerson et avoir accès au courant max et des infos des capteurs interne. J ai donc jeté mon dévolu dessus, et j ai commandé ce modèle

Je viens de commander avec un adaptateur CANBUS en SPI (MCP2515), je vous dirais ce que ça donne par la suite.
Dernière édition: 14 Mai 2025 08:07 par Ixio_Jo. Raison: problème d apostrophe

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
05 Jui 2025 13:50 - 13 Jui 2025 15:02 #9 par Ixio_Jo
Après 2 semaines de tests, je peux confirmer que je suis très satisfait de mon achat, l'alimentation Emerson R48-3000e3 fonctionne à merveille.



Elle était fourni avec une carte se connectant à son port arrière permettant d'y brancher l'alimentation AC (L N T), la sortie DC (+ -) ainsi que le port CAN (CanH, CanL).

Celle-ci est contrôlé par un petit ESP8266 sous ESPHome via un MCP2515 pour la communication en CANbus, avec le montage suivant


(faut que je vérifie le sens du MISO/MOSI du port SPI et le sens du CanH et CanL, j'ai un doute). J'ai référencé le le montage sur la borne - de l'alimentation.

J'utilise un code ESPHome github.com/leodesigner/esphome-emerson-vertiv-r48 avec quelques modif sur le YAML et j'ai fait quelques essais sur le code du pilote, d'où mon propre dossier GitHub.
esphome:
  name: test-controle-emerson
  friendly_name: Test Controle Emerson

  on_boot:
    priority: -100
    then:
      - number.set:
          id: set_output_voltage
          value: 56.6

      - number.set:
          id: set_output_max_current
          value: 10

      - number.set:
          id: set_input_current
          value: 6  
      - switch.turn_on:                             
          id: ac_sw
      - switch.turn_on:                             
          id: dc_sw          

external_components:
  - source: 
      type: git
      url: http://github.com/IxioJo/esphome-emerson-vertiv-r48
      ref: main
    refresh: 0s



esp8266:
  board: esp01_1m

# Enable logging
logger:
  level: DEBUG

# Enable Home Assistant API
api:
  encryption:
    key: xxx

ota:
  - platform: esphome
    password: xxxx

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Test-Controle-Emerson"
    password: xxx

captive_portal:



spi:
  id: McpSpi
  clk_pin: GPIO14
  mosi_pin: GPIO13
  miso_pin: GPIO12


canbus:
  - platform: mcp2515
    id: can
    spi_id: McpSpi
    use_extended_id: true
    cs_pin: GPIO15
    can_id: 0x0607FF83
    bit_rate: 125kbps
    mode: NORMAL
    data_rate: 10Mhz


emerson_r48:
  canbus_id: can
  update_interval: 1s




sensor:
  - platform: emerson_r48
     
    output_voltage:
      name: Output voltage
      id: DC_Voltage

    output_current:
      name: Output current
      id: DC_Current
    output_temp:
      name: Temperature
    input_voltage:
      name: AC Voltage
    max_output_current:
      name: DC max current
      unit_of_measurement: '%'




       

  - platform: template
    name: outPower
    id: outpower
    unit_of_measurement: W
    device_class: power
    update_interval: 6s 
    accuracy_decimals: 2
    lambda: |-
      if(id(DC_Current).state>0) { return ( id(DC_Current).state * id(DC_Voltage).state ); } 
      else {return 0;}          
      


number:
  - platform: emerson_r48
    output_voltage:
      name: Set output voltage
      id: set_output_voltage
    max_output_current:
      name: Max output current
      unit_of_measurement: '%'
      id: set_output_max_current
      
    max_input_current:
      name: Max input current
      id: set_input_current

button:
  - platform: emerson_r48
    set_offline_values:
      name: Set offline values
  - platform: restart
    name: "Restart ESP"

switch:
  - platform: emerson_r48
    ac_sw:
      name: "AC switch Turn OFF"
      restore_mode: ALWAYS_ON
      id: ac_sw
    dc_sw:
      name: "DC switch Turn OFF"
      restore_mode: ALWAYS_ON
      id: dc_sw
    fan_sw:
      name: "FAN switch MAX"
    led_sw:
      name: "LED switch"

      

      



Au niveau du montage, j'ai fait 3 supports à l'impression 3D pour le fixé au tableau avec l'onduleur et le tableau DC pour séparer les différents éléments sur des disjoncteurs indépendants (onduleur 25A, chargeur 40A, batterie 40A), c'est un peu overkill mais bon. Il y a en plus un fusible de 30A dans la batterie DIY en plus du disjoncteur et du BMS JK. Si jamais un court circuit n'est pas coupé malgré tout ça, je ne comprends pas.


A gauche, il y a une carte avec l'Esp32 S3 qui contrôle tout le monde... sauf le chargeur qui est pour le moment sur le petit ESP8266 en attendant que je mette à jour la carte. La carte est alimenté directement par la batterie via un convertisseur DC-DC 5V isolé (pour ne pas créer un chemin supplémentaire si un disjoncteur descend), de plus faut que je rajoute un fusible dessus.

Après les tests j'ai pu constaté un très bon fonctionnement de l'alimentation, elle est très réactive, très précise et son rendement très élevé (95% à 15A 55V). On peut contrôler un relais coté AC un autre coté DC mais aussi la tension de sortie à 0.1V près, le courant de sortie de 10% à 121% de 50A par pas de 0.1% soit 0.05A (dans les faits je limite à 30%). Le 10% de courant mini vient des spécifications, le fonctionnement n'est pas garanti en baissant plus le courant. J'ai modifié le code pour pouvoir descendre plus bas, je me limite à 5% mais jusqu'à 1% ça semble possible au prix d'un rendement beaucoup moins bon.



Un point d'attention particulier est que l'alimentation reprend ses réglages de base si aucune info n'a été envoyé au CanBus pendant 30sec, donc attention de modifier les réglages de base avec le bouton Set offline values en particulier la tension DC et le courant AC max. Autre inconvénient, elle fait un peu de bruit mais moins que mon alimentation précédente. Les capteurs sont limités à 5 (Vac in, Vdc, I Dc, % I Dc max et la température). J'aurai aimé, I ac in, Pin, Pout, rendement.

J'ai tenté de voir si ces infos n'était pas récupérable en modifiant le code .CPP pour interroger d'autres variables, mais en l'absence de documentation complète, c'est très hasardeux et j'ai failli briquer l'alimentation en limitant en dur le courant de sortie à 1% malgré que j'utilisais que les supposé instructions d'interrogation de capteur, donc j'ai arrêté les essais, finalement, ça fonctionne bien.

EDIT : Après vérification chez moi, la connexion du SPI me parait bonne, par contre il fallait croisé le CAN, j'ai changer l'image en conséquent
Pièces jointes :
Dernière édition: 13 Jui 2025 15:02 par Ixio_Jo.
Les utilisateur(s) suivant ont remercié: patmtp35, Tochy

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
13 Jui 2025 10:03 #10 par Ixio_Jo
Maintenant que le hardware est à peu près stabilisé, la question est comment on régule tout ça.
Donc j'avertie tout de suite, c'est une usine à gaz, un peu honte de mettre le code ici. Le principe c'était d'utiliser uniquement la mesure du MsunPV sous Home Assistant et c'est uniquement la domotique qui régule autant la charge de la batterie que la décharge dans l'onduleur. Du fait des retards entre la mesure du routeur, sa mise en ligne sur "status.xlm", la récupération par HA, le traitement de l'info, la commande sur l'ESP et le temps de réaction du chargeur ou de l'onduleur, pour être stable, il ne faut pas être trop rapide dans les changements.

L'ensemble des commandes est effectué par des automatismes de HA en fonction de l'état dans lequel est la batterie :

J'ai donc décidé de créer plusieurs états pour le système, afin que la domotique sache les actions à effectuer :

Les états sont donc :
  • Off : dans cet état l'onduleur et le charges sont en veille, le chauffe-eau est en auto, on ne régule rien
  • Charge : Onduleur en veille, Chargeur activé, on régule le courant d'entrée en fonction de la puissance injectée dans le chauffe eau ou de la consommation réseau, le chauffe eau est en auto
  • Discharge : Onduleur activé, Chargeur en veille, on régule la puissance de sortie en fonction de la consommation, le chauffe eau est OFF, (le MsunPV est réglé pour injecté que jusqu'à 100W dans le réseau)
  • Nightcharge : analogue à Off, utiliser pour forcer une charge au passage en heure creuse
  • DeepSleep: Analogue à Off, mais ne va pas essayer de passer en Charge ou Discharge si les conditions le permettent
  • BatterySaving: Analogue à charge, bascule dans ce mode si le niveau de charge de batterie devient critique (niveau de charge <8% ou tension mini d'une cellule <3V) jusqu'à un retour à des conditions plus sécurisées
Le basculement d'un état à l'autre se fait principalement par des automatismes mais j'ai aussi un mode forcé (Battery Force mode On/Off), qui permet de manuellement passé d'un état à l'autre (juste en changeant la valeur de "Battery State")

Pour les automatismes de changement d'état voici ce que j'ai proposé (le code est dans des balises "spoiler" pour que ça soit plus digeste) :
Déclenchement Charge Batterie


Déclenchement Décharge


Arrêt Charge Batterie


Arrêt Décharge Batterie


Modes Forcés
Pièces jointes :
Les utilisateur(s) suivant ont remercié: patmtp35

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
13 Jui 2025 11:12 - 13 Jui 2025 11:13 #11 par Ixio_Jo
Ensuite pour réguler la puissance de sortie ou d'entrée, j'ai des automatisations qui sont déclenchées à chaque mise à jour de la mesure de puissance (aka toute les secondes !)

Smart Charge
Pour la charge vu que le surplus part dans le chauffe eau, donc il n'est pas perdu, c'est assez simple, si je suis au dessus ou ou dessous de la valeur cible, j'augmente ou je diminue

Smart DisCharge


Pour la décharge, la il faut être précis, pas envi d'injecter sur le réseau la nuit, donc j'ai mis en place un régulateur PID. Le but c'est de tendre vers une erreur nulle en limitant les rebonds. L'erreur calculée via un template, si j'injecte un peu dans le chauffe eau, je retranche la valeur, sauf si le chauffe eau est chaud :
{%set heaterpower = states('sensor.msunpv_outbal')|float(3) %}

{{(states('input_number.pid_target_power')|float(3)-
states('sensor.msunpv_powreso')|float(3)+6.87*heaterpower|float(3) ) if( states('input_boolean.eau_chaude')=='off') else (states('input_number.pid_target_power')|float(3)-
states('sensor.msunpv_powreso')|float(3))}}
La dérivée de l'erreur est calculée via une entrée HA, moyenné sur 6s (faudrait que j'essaye avec moins) pour limiter le bruit. L'intégrale elle est calculé par un script Python généré par ChatGPT (il faut l'extension Pyscript )

Intégrale

Je pense qu'il faudrait utilisé une extension qui gère directement le PID, mais bon, au moment j'ai pas trouvé.
J'ai atteint une certaine stabilité en utilisant les coefs suivant : P = 0.2, D = 0.25, I=0.005. Je pense qu'on peut mieux faire, mais la je suis satisfait, pour 2.2kWh injecté sur une journée/nuit, j'ai en général moins de 50Wh injecté sur le réseau en régulant à 0W
Pièces jointes :
Dernière édition: 13 Jui 2025 11:13 par Ixio_Jo.
Les utilisateur(s) suivant ont remercié: patmtp35

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
13 Jui 2025 11:44 #12 par Ixio_Jo
Réponse de Ixio_Jo sur le sujet [Home Assistant, MSunPV et Batterie DIY]
BONUS : la régulation de fin de charge.
En fin de charge, la tension des cellules s'envolent rapidement, si elles ne sont pas toute parfaitement identiques, ni équilibrées correctement , certaines vont atteindre la tension max(3.65V), alors que d'autres vont rester dans la zone de charge (3.4V). Comme beaucoup, j'ai donc acheté un JKBMS équipé d'un équilibreur actif, en gros il transfert le courant des cellules ayant la plus haute tension, vers celle ayant la plus basse tension. Ce qu'il faut savoir, c'est que ce genre d'équilibreur actif est séquentiel, il décharge une cellule vers une capa, puis, charge un autre cellule depuis cette capa. Donc le courant moyen est au final de la moitié de celui annoncé, (0.4A pour le mien, donc 0.2A) pour seulement 1 cellule (donc la puissance moyenne transférée est de 0.2*3.6 = 0.72W). La conclusion, c'est long !!

C'est en général suffisant, mais pour aider le système, j'effectue une fin de charge en ralentissant lorsqu'une cellule atteint les 3.5V. Sachant que mon équilibreur est programmer pour ne commencer à travailler que au dessus de 3.44V, quand les cellules atteignent la zone où elles sont quasiment pleine, plus tôt c'est pas forcément utile surtout si les cellules n'ont pas des courbes de charge 100% identique, ce qui est mon cas :
Voici la courbe de charge réalisée ce matin, on est parti d'une batterie autour de 30% le matin, qu'on a commencé à charger avant que le LL et le LV nécessite un peu de courant. Pendant toutes ces phases, les cellules se suivent pas trop mal, mais en fin de charge vers 12.h15, on voit que certaines décrochent plus vite que d'autres. Dès qu'une cellule dépasse les 3.5V je diminue la tension du charge de 0.1V (sur ~56V) autant de fois que nécessaire pour repasser sous les 3.5V. Quand la tension max de chacune des cellules passe sous les 3.48V, je remonte de 0.1V. A la fin j'arrive bien à toute les cellules à 3.5V et je considère la batterie pleine. J'éteins le chargeur peu après (quand le courant d'entrée reste suffisamment faible assez longtemps) et je ne le redéclenche que si je passe sous les 99%.
Après cela on voit que lentement le cellules tendent vers leurs tensions de repos, mais pareil pas toute à la même vitesse, et la je préfère ne plus équilibrer, parce que ces cellules qui descendent plus vite ne sont pas forcément celles qui vont atteindre la tension min de sécurité (2.5V à 3V) le plus rapidement. Je n'effectue qui l'équilibrage par le haut.
Fin de charge


Mise en veille Chargeur
Pièces jointes :
Les utilisateur(s) suivant ont remercié: patmtp35

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
16 Jui 2025 13:26 #13 par patmtp35
merci beaucoup pour tout ce partage et tes explications , ayant des projets persos qui sont venu télescoper ceux de la domotique, j'ai pas encore tout acheter pout monter ton type d'alim . de plus l'ete entre les deux panneaux dédier plus le chargeur basique tout passe et ca charge vite, c'est plus l'hiver que j'ai la charge a reguler :)

Connexion ou Créer un compte pour participer à la conversation.

Propulsé par Kunena