dvdhaar schreef op donderdag 19 maart 2026 @ 19:27:
Claude AI zegt dat de omvormer ongeveer om de 5 minuten terugvalt als beveiliging. Ik zet nu handmatig de trigger RC Force Discharge heel snel van aan naar uit en weer aan. Nu blijft ie al een kwartier constant ontladen.
Ontlaadvermogen blijft daardoor ook constant tov de dips daarvoor
[Afbeelding]
Heel toevallig Claude gevraagd om research te doen naar de opties om het ontladen strakker te krijgen. Daarin kwam bovenstaande ook voorbij. Maar ondanks dat ik al lange tijd in Zelfconsumptie ontlaad zie ik alsnog perioden waarin er maar 300 watt wordt teruggeleverd (van zelfconsumptie). Ook Zonneplan lijkt force discharge dus uit te schakelen. Ik zal morgen de dongles er even uithalen om te zien of hij dan wel doorgaat zonder onderbreking.
Ook een extra rede om de time slots niet te gebruiken, je schrijft naar flash dus moet spaarzaam gebruikt worden.
Claude vond ook een interessant Github project voor een MITM tussen de dongle en de omvormer. In de omschrijving wordt ook gesproken over registers 44100 en hoger welke niet in de integratie zitten die meer prioriteit zouden hebben. Moet wel een NDA voor getekend worden
https://github.com/peufeu2/GrugBus?tab=readme-ov-file.
Om al die compute niet verloren te laten gaan hieronder de research van Claude. Ik vond het best interessant.
Solis S6-EH3P dual-port control: Zonneplan vs local Modbus
De Solis S6-EH3P heeft geen port priority mechanisme — beide de COM port (Zonneplan's 4G module) en de RS485 port schrijven naar dezelfde interne registers, en het laatste commando wint. De 5-minuten force-discharge onderbreking die je ervaart is vrijwel zeker de hardcoded
deadman-switch timer op register 43135, die na ~300 seconden automatisch reset naar nul als veiligheidsmaatregel. Zonneplan's Powerplay algoritme kan dit verergeren door periodiek eigen charge/discharge commando's te sturen via de COM port, waardoor er een "touwtrekken" ontstaat over dezelfde registers. Het goede nieuws: de fysiek gescheiden poorten van de S6, gecombineerd met een keep-alive automation en enkele architectuurkeuzes, maken coëxistentie werkbaar.
---
De dual-port architectuur van de S6 is een voordeel, maar geen firewall
De S6-EH3P heeft
fysiek gescheiden communicatie-interfaces: een USB-type COM port (waar Zonneplan's 4G stick in zit) en RJ45 RS485 poorten voor directe Modbus RTU verbindingen. Dit is een flinke verbetering ten opzichte van oudere Solis modellen (S5, RHI), die slechts één 4-pin COM port hadden die gedeeld werd tussen de datalogger en eventuele externe controllers — wat directe bus-level collisions veroorzaakte.
Op de S6 maakt de COM port de omvormer een Modbus slave die reageert op de data stick als master, terwijl de RS485 port een onafhankelijke slave-interface biedt voor externe controllers zoals Home Assistant via een Waveshare RS485-to-Ethernet adapter.
Er is geen gedocumenteerd of door de community ontdekt register dat prioriteit toekent tussen deze twee interfaces. Beide poorten eindigen bij dezelfde microcontroller en wijzigen dezelfde holding register space. Wanneer Zonneplan's cloud een write-commando stuurt naar register 43135 via de COM port op tijdstip T, en jouw lokale automation naar hetzelfde register schrijft via RS485 op tijdstip T+1, staat jouw waarde — totdat Zonneplan opnieuw schrijft.
Het Zonneplan-specifieke model (
S6-EH3P10K-H-ZP) is door de solis_modbus HA-integratie community bevestigd dezelfde registermap te gebruiken als de standaard EU-variant, hoewel
issue #191 op die repo opmerkt dat het ZP-model kan afwijken in bepaalde register-multipliers.
---
De 5-minuten reset is een hardcoded deadman switch, niet Zonneplan
Register
43135 (Remote Control Force Battery Charge/Discharge) accepteert drie waarden: 0 = uit, 1 = force charge, 2 = force discharge. De bijbehorende registers zijn
43136 (force charge vermogen, in stappen van 10W) en
43129 (force discharge vermogen, in stappen van 10W). Dit zijn de juiste registers voor dynamische EMS-aansturing omdat ze RAM-gebaseerd zijn en geen flash memory slijtage veroorzaken.
Echter,
43135 reset automatisch naar 0 na ongeveer 5 minuten, ongeacht of een extern systeem ingrijpt. Dit is bevestigd door meerdere onafhankelijke gebruikers:
- DIY Solar Forum gebruiker rpdom bevestigde dat de lading slechts 5 minuten duurt, waarna 43135 zichzelf terugzet naar 0. Hij moet het register blijven aansturen om het laden actief te houden, en vermoedde al dat het een veiligheidsmechanisme is. Hij bevestigde dat de timer reset bij elke write, en hield forced charging succesvol in stand door elke 4 minuten en 50 seconden te schrijven.
- Een openHAB-integratie gebruiker met een S6 bevestigde identiek gedrag: het deadman switch effect is ook daar waargenomen, waarbij 43135 na 5 minuten terugvalt naar 0.
Er bestaat geen register om deze timeout-duur aan te passen. Het lijkt hardcoded in de omvormer-firmware. Dit betekent dat zelfs zonder Zonneplan aangesloten, force charge/discharge commando's periodiek ververst moeten worden. Het aanbevolen interval is
elke 3-4 minuten voor betrouwbare werking.
Het dubbele probleem ontstaat wanneer Zonneplan's Powerplay algoritme
ook naar deze registers schrijft op zijn eigen schema. Zonneplan's API onthult velden zoals
manual_control_enabled: false en
dynamic_charging_enabled: true, wat bevestigt dat de cloud actief het batterijgedrag beheert. Wanneer Powerplay besluit de charge/discharge status te wijzigen — voor onbalansmarkt-handel of netbalancering — stuurt het Modbus writes via de COM port die overschrijven wat jouw lokale automation net heeft ingesteld.
---
Kritieke Modbus registers voor energieopslag-aansturing
De volledige registerset die relevant is voor batterijbeheer valt uiteen in twee categorieën:
flash-opgeslagen registers (spaarzaam schrijven om de omvormer niet te bricken) en
RAM-gebaseerde registers (veilig voor frequent schrijven).
RAM-gebaseerde registers — veilig voor real-time aansturing:code:
1
2
3
4
5
6
7
| Register | Naam | Waarden | Opmerkingen
---------|-------------------------------|--------------------------------|---------------------------
43135 | Force charge/discharge mode | 0=uit, 1=charge, 2=discharge | Auto-reset na ~5 min
43136 | Force charge vermogen | Eenheden van 10W (200=2000W) | Actief wanneer 43135=1
43129 | Force discharge vermogen | Eenheden van 10W | Actief wanneer 43135=2
43130 | Battery charge power limit | Eenheden van 10W, 0=geen lim. | Override op 43135/43136
43131 | Battery discharge power limit | Eenheden van 10W, 0=geen lim. | Override op 43135/43136 |
Flash-opgeslagen registers — alleen voor initiële configuratie:code:
1
2
3
4
5
6
7
| Register | Naam | Belangrijkste waarden | Opmerkingen
------------|-------------------------------|--------------------------------------------------------------------|-------------------
43110 | Energy storage control switch | Bitfield: BIT0=self-use, BIT1=timed, BIT4=backup, | Write naar flash
| | BIT5=grid charge, BIT6=feed-in priority | bij elke wijziging
43117/43118 | Max charge/discharge stroom | 0.1A stappen, max 70A | Flash slijtage risico
43141-43150 | Timed charge/discharge schema | Uur/minuut voor start/eind | Flash slijtage risico
43010 | Overdischarge SOC | Percentage | Default 20% |
Een cruciale nuance:
registers 43130 en 43131 (power limits) hebben voorrang op de force charge/discharge registers. Als 43131 op een waarde anders dan nul staat, capt die het discharge vermogen ongeacht wat 43129 opdraagt. Zet 43130 of 43131 op 0 om de limiet volledig op te heffen.
---
NDA-beschermde registers op 44100+ bieden directe grid power control
Community-leden op DIY Solar Forum ontdekten dat firmware-updates (DSP ≥ 80, HMI ≥ 76)
"Remote Dispatch" registers ontsloten vanaf adres 44100. Deze stellen naar verluidt in staat om grid import/export power setpoints direct in te stellen — een veel responsievere en preciezere sturingsmethode dan force charge/discharge. Eén gebruiker bevestigde dat hij import/export direct op het grid kon instellen, en dat de omvormer snel reageerde bij waardeveranderingen.
Echter,
Solis vereist een getekende NDA voor toegang tot documentatie van deze registers. Niemand heeft de details publiekelijk gedeeld. Als je dit niveau van controle nodig hebt, neem dan contact op met Solis technische support en vraag het NDA-document aan voor het "Remote Dispatch" Modbus protocol extensie. De firmwareversie die nodig is voor de S6-EH3P kan afwijken van de genoemde S5-versies (DSP 80/HMI 76), dus bevestig dit met Solis.
---
Vijf praktische oplossingen, gerangschikt op effectiviteit
Oplossing 1: Keep-alive automation (simpelst, direct toepasbaar).
Schrijf elke 3-4 minuten naar registers 43135 en 43136/43129 vanuit Home Assistant. Dit overwint de deadman switch en herstelt je commando na elke Zonneplan override. Een basis HA-automation:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| automation:
- alias: "Solis Force Discharge Keep-Alive"
trigger:
- platform: time_pattern
minutes: "/4"
condition:
- condition: state
entity_id: input_boolean.force_discharge_active
state: "on"
action:
- service: modbus.write_register
data:
hub: solis
slave: 1
address: 43135
value: 2
- service: modbus.write_register
data:
hub: solis
slave: 1
address: 43129
value: 300 # 3000W discharge |
Dit werkt maar creëert een race condition met Zonneplan: je commando houdt ~4 minuten stand, Zonneplan kan tussendoor overriden, en jij herstelt weer.
Verwacht korte onderbrekingen wanneer Zonneplan's write toevallig tussen jouw refresh-cycli landt.
Oplossing 2: MITM energy meter spoofing (meest robuust, Zonneplan-immuun).
Het
GrugBus project implementeert een man-in-the-middle aanval op de energiemeter-bus. Een Python script op een Orange Pi leest de echte Eastron meter, wijzigt de vermogensuitlezingen, en voert aangepaste data aan de meterpoort van de omvormer. De omvormer "gelooft" dat de grid power flow correctie nodig heeft en laadt/ontlaadt dienovereenkomstig.
Deze aanpak is immuun voor zowel de deadman switch als Zonneplan's COM port commando's omdat je de perceptie van de omvormer manipuleert, niet zijn sturingsregisters. Zonneplan kan schrijven wat het wil naar 43135; de eigen self-use logica van de omvormer overheerst op basis van de vervalste meterdata.
Oplossing 3: Zonneplan's 4G module loskoppelen.
Fysiek verwijderen van de 4G stick uit de COM port elimineert alle conflicten. De omvormer valt terug op zijn lokaal geconfigureerde zelfverbruik-modus. Je RS485 verbinding wordt de enige sturingsinterface. De afweging: je verliest
Powerplay-inkomsten (Zonneplan's onbalansmarkt-handel) en Zonneplan's remote monitoring. Je energiecontract zelf zou geldig moeten blijven omdat facturering via de P1 slimme meter loopt, niet via de omvormer-stick.
Check echter je Zonneplan-overeenkomst — de batterijservice-voorwaarden vereisen waarschijnlijk dat de module aangesloten blijft.
Oplossing 4: De Zonneplan HA-integratie gebruiken voor gecoördineerde aansturing.
De onofficiële HA-integratie (
fsaris/home-assistant-zonneplan-one) heeft in versie 2025.12.1 een
"Battery control mode" entity toegevoegd. Deze onthult Zonneplan's
manual_control_enabled en
dynamic_charging_enabled flags. Je zou mogelijk
manual_control_enabled: true kunnen togglen via de API voordat je eigen Modbus commando's stuurt, waarmee je Powerplay vertelt om even niet mee te sturen. Dit vereist verdere tests, aangezien de schrijfmogelijkheden van de integratie voor batterijsturing nog volop in ontwikkeling zijn.
Oplossing 5: NDA-toegang aanvragen voor 44100+ registers.
Neem contact op met Solis support, teken hun NDA, en verkrijg toegang tot de Remote Dispatch registers. Deze bieden mogelijk een sturingspad met een langere timeout of dat geconfigureerd kan worden om COM port commando's te negeren. Dit is speculatief — niemand heeft publiekelijk het timeout-gedrag van de 44100+ registers bevestigd — maar het vertegenwoordigt de meest "nette" engineering-oplossing.
---
Firmware en configuratie vereisten
Voordat je dual-port operatie probeert, zorg dat de volgende setup op orde is. Meerdere community-leden melden dat
datalogger firmware versie 100121cf cruciaal is voor stabiele parallelle operatie op de S6 — andere versies (waaronder 100171b6) veroorzaken communicatiestoringen wanneer beide poorten tegelijk actief zijn. Vraag deze specifieke firmware aan bij Solis support indien nodig.
Schakel
"Parallel Operation Mode" in via de instellingen van de omvormer in de SolisCloud Bluetooth app. Eén gebruiker bevestigde dat dit een cruciale stap is die vaak over het hoofd wordt gezien: je moet Parallel Operation Mode activeren. Pas na het activeren van deze modus is de RS485-poort ingeschakeld voor gebruik, en zie je 'Master 1x' op het display van de omvormer. Stel daarnaast het aantal verbonden apparaten in op
2 (in plaats van de standaard 1) in de datalogger configuratie.
Voor de RS485-verbinding, gebruik een
Waveshare RS485-to-Ethernet adapter geconfigureerd als Modbus TCP-naar-RTU gateway (poort 502, 9600 baud, 8N1). Sluit aan op de RJ45 RS485-poort van de S6 (pin 4 en 5 voor data). De HA-integraties die goed werken voor deze setup zijn
Pho3niX90/solis_modbus (HACS, specifiek getest met het ZP-model) en de native HA Modbus-integratie voor directe register-toegang.
---
Conclusie
Het dual-port conflict van de Solis S6-EH3P is geen bug maar de botsing van twee ontwerpbeslissingen: een safety-first deadman switch die commando's automatisch laat verlopen, en een architectuur waarbij beide communicatiepoorten één registerruimte delen zonder arbitratie.
De 5-minuten onderbreking is de deadman timer, niet per se Zonneplan — hoewel Zonneplan's writes het probleem verergeren. De meest direct toepasbare fix is een 4-minuten keep-alive automation op registers 43135+43129/43136. Voor kogelvrije aansturing die vredig naast Zonneplan bestaat, omzeilt de MITM meter-aanpak (GrugBus) het hele register-conflict door de omvormer te sturen via zijn eigen energiebalanceringslogica in plaats van via betwiste commandoregisters. Voor de schoonste langetermijnoplossing, ga de NDA aan bij Solis voor de 44100+ Remote Dispatch registers, die mogelijk een meer geavanceerde sturingsinterface bieden die ontworpen is voor precies dit multi-party coördinatiescenario.