• dvdhaar
  • Registratie: Maart 2018
  • Nu online
Ik heb beide dongels uitgetrokken. Via HA zet ik RC force discharge aan en RC force discharge staat op 10000.
Discharge end slot 1 zet ik op 23:59 en toch na 6 minuten springt de force discharge uit.. waarom doet de omvormer dit zelf? Of kan ik beter een andere waarde instellen?

  • erikfw
  • Registratie: Februari 2006
  • Laatst online: 19:09
dvdhaar schreef op donderdag 19 maart 2026 @ 18:43:
Ik heb beide dongels uitgetrokken. Via HA zet ik RC force discharge aan en RC force discharge staat op 10000.
Discharge end slot 1 zet ik op 23:59 en toch na 6 minuten springt de force discharge uit.. waarom doet de omvormer dit zelf? Of kan ik beter een andere waarde instellen?
Wel hele nuttige info! Want met dongles er in, gebeurd dat ook ongeacht de waarde van discharge
Slot wijziging is overigens niet nodig (ook met dongles niet) Doet niks

  • melvinnie
  • Registratie: April 2011
  • Niet online
erikfw schreef op donderdag 19 maart 2026 @ 18:56:
[...]

Wel hele nuttige info! Want met dongles er in, gebeurd dat ook ongeacht de waarde van discharge
Slot wijziging is overigens niet nodig (ook met dongles niet) Doet niks
Inderdaad, ben ik ook mee gestopt. Maakt helemaal geen verschil. Wel opmerkelijk dat het zonder dongles ook gebeurt. Zet de omvormer de laatst ontvangen waarde van ZP steeds terug misschien?

  • dvdhaar
  • Registratie: Maart 2018
  • Nu online
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
Afbeeldingslocatie: https://tweakers.net/i/5WNo0aYp607KNdEPjZAjmpMPmpQ=/x800/filters:strip_icc():strip_exif()/f/image/nkgl5I7GLCuQ9yxjf5vZBhJF.jpg?f=fotoalbum_large

[ Voor 49% gewijzigd door dvdhaar op 19-03-2026 19:29 ]


  • dvdhaar
  • Registratie: Maart 2018
  • Nu online
Zodra je in de app of HA de batterij in Zelfconsumptie modus hebt gezet en je zet RC Force Discharge aan dan zal ‘ie constant blijven ontladen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
alias: Solis | RC Force Discharge Keep Alive
description: >
  Zet RC Force Discharge elke minuut opnieuw aan zolang: -
  Batterijbesturingsmodus = Zelfconsumptie - RC Force Discharge is ingeschakeld
triggers:
  - minutes: /1
    trigger: time_pattern
conditions:
  - condition: state
    entity_id: select.thuisbatterij_batterijbesturingsmodus
    state:
      - self_consumption
  - condition: state
    entity_id: switch.rc_force_battery_discharge
    state:
      - "on"
actions:
  - action: switch.turn_off
    metadata: {}
    target:
      entity_id: switch.rc_force_battery_discharge
    data: {}
  - target:
      entity_id:
        - switch.rc_force_battery_discharge
    action: switch.turn_on
    data: {}

[ Voor 33% gewijzigd door dvdhaar op 19-03-2026 19:53 ]


  • dvdhaar
  • Registratie: Maart 2018
  • Nu online
Nu nog een automatisering maken die RC force discharge + modus op zelfconsumptie zet bij aanvang van de duurste uren (EPEX).

  • erikfw
  • Registratie: Februari 2006
  • Laatst online: 19:09
dvdhaar schreef op donderdag 19 maart 2026 @ 19:58:
Nu nog een automatisering maken die RC force discharge + modus op zelfconsumptie zet bij aanvang van de duurste uren (EPEX).
Moment, deel hem zo in een minuutje ;)

Daar is ie
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
- binary_sensor:
      - name: "Dure uren"
        state: >
          {% set data = state_attr('sensor.zonneplan_current_electricity_tariff', 'forecast') %}
          {% if not data %}
            false
          {% else %}
            {% set vandaag = now().date() %}
            {% set vandaag_data = data
              | selectattr('datetime', 'search', vandaag|string)
              | sort(attribute='electricity_price_excl_tax', reverse=True)
              | list %}

            {% set ns = namespace(ochtend=[], middag=[], gekozen=[]) %}

            {% for uur in vandaag_data %}
              {% set local_dt = as_local(as_datetime(uur.datetime)) %}
              {% set hour = local_dt.hour %}
              {% set local_uur = uur | combine({'local_datetime': local_dt}) %}

              {% if hour < 12 and ns.ochtend | count < 2 %}
                {% set ns.ochtend = ns.ochtend + [local_uur] %}
                {% set ns.gekozen = ns.gekozen + [local_uur] %}
              {% elif hour >= 12 and ns.middag | count < 2 %}
                {% set ns.middag = ns.middag + [local_uur] %}
                {% set ns.gekozen = ns.gekozen + [local_uur] %}
              {% endif %}

              {% if ns.gekozen | count == 4 %}
                {% break %}
              {% endif %}
            {% endfor %}

            {% set current_hour = now().hour %}
            {{ ns.gekozen
                | selectattr('local_datetime.hour', 'equalto', current_hour)
                | list
                | count > 0 }}
          {% endif %}

[ Voor 74% gewijzigd door erikfw op 19-03-2026 20:22 ]


  • melvinnie
  • Registratie: April 2011
  • Niet online
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.

  • dvdhaar
  • Registratie: Maart 2018
  • Nu online
Vraag me af of dit nu nog wel gecorrigeerd wordt. Het lijkt erop dat de dongle in de slimme meter communiceert met de dongles in de accu. Doordat ik die had losgekoppeld mis ik nu data/teruglevering van ongeveer 14 kW tussen 18:00 en 20:00.

Afbeeldingslocatie: https://tweakers.net/i/meQEqlV0XsOQw5-hVNcy920wTVc=/x800/filters:strip_exif()/f/image/2HQdaNutkTLeW4BX9kkzvDCl.png?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/cWMeKejlMqyso_86nWPu3-rf61Y=/x800/filters:strip_exif()/f/image/x50f8rJrZYbAafzvyIYTKZFl.png?f=fotoalbum_large

  • FunkyEnyak
  • Registratie: Maart 2023
  • Laatst online: 15:35
dvdhaar schreef op donderdag 19 maart 2026 @ 21:11:
Vraag me af of dit nu nog wel gecorrigeerd wordt. Het lijkt erop dat de dongle in de slimme meter communiceert met de dongles in de accu. Doordat ik die had losgekoppeld mis ik nu data/teruglevering van ongeveer 14 kW tussen 18:00 en 20:00.

[Afbeelding]

[Afbeelding]
Naar wat ik heb begrepen van anderen wordt dit uiteindelijk op je eind afrekening verrekend. Echter wat me opvalt is dat iedereen probeert te ontladen op epex prijzen.. als we met zijn allen zonneplan blijven vragen om deze optie toe te voegen zou je hopen dat ze uiteindelijk wel naar hun klanten gaan luisteren ;-) dus met zijn allen klantenservice blijven bestoken met de vraag of ze deze optie willen toevoegen. met name met huidige hoge gas prijzen, zullen de avondpieken interessant blijven om op te kunnen ontladen!

  • dvdhaar
  • Registratie: Maart 2018
  • Nu online
Vanmorgen met dongles erin ontladen met bovenstaande automation, alvast een mooi resultaat :)

Afbeeldingslocatie: https://tweakers.net/i/tfqCqkhhqZXcD-vBuT-95ZbmsSo=/x800/filters:strip_icc():strip_exif()/f/image/ub2y13KseDq2gWbmnyHAvV3e.jpg?f=fotoalbum_large

  • GaMbiNo
  • Registratie: April 2001
  • Laatst online: 18:45
Wel bijzonder, we hadden hier eerder deze week iemand die aangaf een conflict te hebben met ZP omtrent een alarm code 512, en nu is die t.net account ineens verwijderd. Ik denk niet dat we er nog achter komen hoe dat geëindigd is dan. :?

edit: Ik vind hem ook niet meer op de onbalansmarkt website. Apart.

[ Voor 12% gewijzigd door GaMbiNo op 20-03-2026 18:14 ]

Pagina: 1 ... 73 74 Laatste