• PaulSinnema
  • Registratie: Mei 2017
  • Laatst online: 24-10 19:13
Ik heb 16 zonnepanelen met SolarEdge optimizers en een SolarEdge omvormer SE5K in huis. De omvormer is via TCP verbonden aan mijn netwerk. Ik maak gebruik van het Loxone systeem om de omvormer uit te lezen via Modbus - TCP en dat werkt prima. Ik heb daarnaast 3 Sessy thuisbatterijen.

Ik ben een maand geleden begonnen met het schrijven van software voor mijn installatie. Ik stuur mijn thuisbatterijen aan via de open API die erin zit. Haal energieprijzen op van ENTSO-E, weerdata van WeerOnline, zonne productie via de SolarEdge omvormer en bepaal daarmee wanneer ik de thuisbatterijen moet (ont)laden. Ik handel daarmee dus op de EPEX Day-Ahead-Market en dat werkt nu al heel behoorlijk.

Ik wil de omvormer aan kunnen sturen voor Power Control. Volgens de documentatie kan ik daarmee het vermogen van de omvormer aansturen. Dat zou ik dan willen gebruiken voor als de EPEX prijzen te negatief worden. Ik kan dan het vermogen zo aanpassen dat er niets naar het net gaat maar mijn huis optimaal gebruik kan maken van de gegenereerde energie.

Er is veel dat al wel werkt maar ik loopt tegen een probleem aan bij het aansturen van de omvormer.

Volgens een documentatie van november 2017 met de titel 'Technical Note – Power Control Protocol for SolarEdge Inverters' moet ik een aantal waarden via Modbus in registers schrijven.

Om Power Control in te schakelen moeten de volgende bewerking worden gedaan:

Schrijf een 1 in 0xF142 (UInt32)
Schrijf een 4 in 0xF104 (Uint32)

Commit de gegevens door een 1 in 0xF100 (UInt16) te schrijven.

De omvormer herstart daarna en na een aantal minuten wordt de stroomopwek hervat.

Nu zou ik, volgens de documentatie, een percentage in register 0xF001 (UInt16) (0 - 100%) kunnen schrijven wat de 'Active Power' zou moeten beinvloeden. Dat laatste werkt niet.

Wat ook niet werkt is het restoren van de eerdere waarden in 0xF100 en 0xF142 door een 1 in register 0xF101 (Uint16) te schrijven. Ik krijg daar steevast de foutmelding dat het packet 6 bytes moet bevatten wat volledig onduidelijk is. Ik los dat nu op door de 'oude' waarden terug te schrijven in die registers en weer een commit uit te voeren.

Is er iemand die dit herkend en weet wat er aan de hand is?

  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 07:15

Mrlten

Premium Deluxe Plus

Hi, ik ben sinds gisteren begonnen met een projectje om mijn SolarEdge omvormer aan te sturen via modbus. Het instellen van de Active Power Limit (0xF001) is mij wel gelukt; je hoeft daarvoor helemaal niets te doen met 0xF142, 0xF104 of 0xF100 en je kan het limiet direct wegschrijven naar 0xF001.

Welke programmeertaal gebruik je?

  • Marcel v O
  • Registratie: April 2025
  • Laatst online: 14-04-2025
Geachte heren,

Ik ben zeer geïnteresseerd in de oplossing die jullie hier bespreken. Mag ik vragen welk Modbus-adres jullie inlezen (bijvoorbeeld 400…)? Ik kan dit niet terugvinden in de documentatie.

Met vriendelijke groet,
Marcel

  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 07:15

Mrlten

Premium Deluxe Plus

Marcel v O schreef op vrijdag 11 april 2025 @ 16:23:
Geachte heren,

Ik ben zeer geïnteresseerd in de oplossing die jullie hier bespreken. Mag ik vragen welk Modbus-adres jullie inlezen (bijvoorbeeld 400…)? Ik kan dit niet terugvinden in de documentatie.

Met vriendelijke groet,
Marcel
Ik heb de informatie uit deze pdf gehaald: https://www.haroldhalewij...r-SolarEdge-Inverters.pdf

Als je het maximale omvormer vermogen wilt aanpassen dan is dat de "Active Power Limit". Die heeft adres F001, ofwel 0xF001. Let er op dat je bij het uitlezen en wegschrijven de 'type' en 'size' volgt, niet dat je een int (32 bits, signed) gaat wegschrijven terwijl de documentatie zegt dat het een Uint16 (16 bits, unsigned) is.

Voor de active power limit hoef je alleen maar F001 te zetten. De documentatie is wat verwarrend omdat het F001 benoemd en direct over gaat op de geavanceerde instellingen die je verder niet nodig hebt.

Verder heeft SolarEdge meer registers die je kunt uitlezen, namelijk https://knowledge-center....tation-technical-note.pdf vanaf pagina 17.

  • Marcel v O
  • Registratie: April 2025
  • Laatst online: 14-04-2025
Bedankt voor je feedback, Het is me met behulp van ChatGPT en na wat zoeken en proberen ook gelukt om via Modbus in Loxone de Active Power Limit (0xF001) op i/o adres 61441 middels een 6 - Write Single Register (0x06) en 16UINT aanpasbaar te maken aan mijn actuele verbruik. Nu kan ik op basis van het actuele verbruik gedeeld door mijn max. AC-vermogen van de omvormer de active power limit berekenen en inlezen in Loxone.

Het heeft wat moeite gekost en heb verschillende zaken geprobeerd op basis van de handleiding, maar ik vermoed dat ik voor mijn systeem Commit Power Control (0xF100) op i/o adres 61696 wel dien te wijzigen naar 1 middels een 6 - Write Single Register (0x06) en 16UINT.

Als ik dat doe krijg ik net als bij 0xF001 een confirmation lijn op de log te zien.

Ik heb inmiddels ook mijn energie manage aangepast zodat deze rekening houdt met de verwachte opgewekte zonne energie op basis van 100% Active Power Limit, i.p.v. de actuele opwek, zodat mijn auto lader en verwarming gewoon worden ingeschakeld o.b.v. surplus zonnestroom ongeacht de %-waarde van Active Power Limit.

[ Voor 171% gewijzigd door Marcel v O op 14-04-2025 16:59 . Reden: Nu heb ik wat zinvols te melden ]


  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 07:15

Mrlten

Premium Deluxe Plus

@Marcel v O Mooi dat het gelukt is :) Wel vreemd dat je 0xF100 moet zetten bij jouw omvormer, de mijne (SE4000H, jaartje oud) voert het direct door en het vermogen zie ik ook in de app binnen 2 tellen aanpassen. Misschien een verschil in omvormer versie/firmware.

  • Marcel v O
  • Registratie: April 2025
  • Laatst online: 14-04-2025
Ik heb een SC17K van 2020. Heel goed mogelijk dat oudere modellen deze extra stap vereisen.

  • PaulSinnema
  • Registratie: Mei 2017
  • Laatst online: 24-10 19:13
Mrlten schreef op zondag 16 maart 2025 @ 11:07:
Hi, ik ben sinds gisteren begonnen met een projectje om mijn SolarEdge omvormer aan te sturen via modbus. Het instellen van de Active Power Limit (0xF001) is mij wel gelukt; je hoeft daarvoor helemaal niets te doen met 0xF142, 0xF104 of 0xF100 en je kan het limiet direct wegschrijven naar 0xF001.

Welke programmeertaal gebruik je?
Sorry voor de late reactie. Ik maak gebruik van C# om mijn Sessy's aan te sturen. Je vindt mijn project op GitHub: https://github.com/PaulSinnema/SessyWeb.

Het is nu nog helemaal gericht op mijn thuissituatie met SolarEdge en 3 Sessy's maar dat is in principe goed aan te passen.

Mijn installateur heeft me ontmoedigd om via Modbus mijn omvormer aan te sturen i.v.m. garantie die zou vervallen. Nog niet van hem gehoord of dat ook echt het geval is.

Interessant dat je direct 0xF001 aan kunt sturen. Ga ik proberen.

  • PaulSinnema
  • Registratie: Mei 2017
  • Laatst online: 24-10 19:13
Mrlten schreef op zondag 13 april 2025 @ 12:59:
[...]

Ik heb de informatie uit deze pdf gehaald: https://www.haroldhalewij...r-SolarEdge-Inverters.pdf

Als je het maximale omvormer vermogen wilt aanpassen dan is dat de "Active Power Limit". Die heeft adres F001, ofwel 0xF001. Let er op dat je bij het uitlezen en wegschrijven de 'type' en 'size' volgt, niet dat je een int (32 bits, signed) gaat wegschrijven terwijl de documentatie zegt dat het een Uint16 (16 bits, unsigned) is.

Voor de active power limit hoef je alleen maar F001 te zetten. De documentatie is wat verwarrend omdat het F001 benoemd en direct over gaat op de geavanceerde instellingen die je verder niet nodig hebt.

Verder heeft SolarEdge meer registers die je kunt uitlezen, namelijk https://knowledge-center....tation-technical-note.pdf vanaf pagina 17.
Marcel, 0xF001 betekent dat het een hexadecimaal adres betreft. Omgerekend is dat 61441.

  • PaulSinnema
  • Registratie: Mei 2017
  • Laatst online: 24-10 19:13
Marcel v O schreef op zondag 13 april 2025 @ 19:49:
Bedankt voor je feedback, Het is me met behulp van ChatGPT en na wat zoeken en proberen ook gelukt om via Modbus in Loxone de Active Power Limit (0xF001) op i/o adres 61441 middels een 6 - Write Single Register (0x06) en 16UINT aanpasbaar te maken aan mijn actuele verbruik. Nu kan ik op basis van het actuele verbruik gedeeld door mijn max. AC-vermogen van de omvormer de active power limit berekenen en inlezen in Loxone.

Het heeft wat moeite gekost en heb verschillende zaken geprobeerd op basis van de handleiding, maar ik vermoed dat ik voor mijn systeem Commit Power Control (0xF100) op i/o adres 61696 wel dien te wijzigen naar 1 middels een 6 - Write Single Register (0x06) en 16UINT.

Als ik dat doe krijg ik net als bij 0xF001 een confirmation lijn op de log te zien.

Ik heb inmiddels ook mijn energie manage aangepast zodat deze rekening houdt met de verwachte opgewekte zonne energie op basis van 100% Active Power Limit, i.p.v. de actuele opwek, zodat mijn auto lader en verwarming gewoon worden ingeschakeld o.b.v. surplus zonnestroom ongeacht de %-waarde van Active Power Limit.
Ah, je bent er al uit zie ik, top!

  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 07:15

Mrlten

Premium Deluxe Plus

PaulSinnema schreef op maandag 14 april 2025 @ 22:17:
[...]
Sorry voor de late reactie. Ik maak gebruik van C# om mijn Sessy's aan te sturen. Je vindt mijn project op GitHub: https://github.com/PaulSinnema/SessyWeb.
Dat is zo te zien al een behoorlijk uitgebreide app geworden. Ik ben zelf een .NET developer van beroep en ik werk dagelijks aan een Blazor app :)
Mijn installateur heeft me ontmoedigd om via Modbus mijn omvormer aan te sturen i.v.m. garantie die zou vervallen. Nog niet van hem gehoord of dat ook echt het geval is.
Volgens mij is dat gewoon bangmakerij...

Trouwens, mocht je een SolarEdge energy meter hebben dan kan je de omvormer ook op de "zero export" modus zetten. Dan gaat de omvormer precies opwekken wat het huis verbruikt. En in die modus kan je ook instellen (via modbus) hoeveel watt er nog wel teruggeleverd mag worden.

Icm dynamische prijzen kan je dan bijvoorbeeld iets maken als; boven de 2 cent -> maximaal terugleveren, tussen de 0 en 2 cent -> max 2000 watt terugleveren, beneden de 0 cent -> 0 watt terugleveren.

Ik ga binnenkort een SolarEdge inline meter in de meterkast plaatsen en dan kijken wat ik er mee kan icm dynamische prijzen :*)

  • PaulSinnema
  • Registratie: Mei 2017
  • Laatst online: 24-10 19:13
Ja, het is een flinke applicatie geworden. Ik hink nog een beetje op mijn strategie en er zijn nog zaken die, zij het marginaal, resultaat gaan opleveren zoals het beter inschatten wat mijn huis op welke dag/uur verbruikt bij een bepaalde temperatuur. En beter inschatten wat de zonneopbrengst gaat worden. Dat laatste werkt overigens al best wel goed. Ik zit er per dag maximaal 1 a 2 kWh naast maar dat is prima. Ik kijk sowieso naar wat er real-time wordt opgwekt. Nu nog kijken naar wat er real-time wordt verbruikt. Project is nog niet af :)

  • Kris.docx
  • Registratie: December 2022
  • Laatst online: 08-09-2025
Ik heb voor mijn systeem dat ik voor mijn systeem Commit Power Control (0xF100) op i/o adres 61696 wel dienen te wijzigen naar 1, voordat ik de advanced powerlimiet kon aanpassen.

  • ReSpawN
  • Registratie: Augustus 2009
  • Laatst online: 26-10 12:57

ReSpawN

Age of the Geek, baby!

Na het lezen van verschillende bronnen (incl. deze thread en de PDF) heb ik intussen het e.a. werkend, echter heb ik nog steeds een snapback van mijn Active Power Limit (F001), die elke keer terug naar 100 schiet.

Wat bij mij wél lijkt te werken, is een Float32 te schrijven naar F322, te kennen als Dynamic Active Power Limit. Als ik die schrijf throttled de F001 automatisch naar 90. Het lijkt dus dat F300 (Enable Dynamic Power Control) het hele idee een beetje tegenspreekt. Nou kan ik b.v. de HASS add-on "SolarEdge Modbus" tweaken om naar een ander register te schrijven, maar ik vraag me af hoe jullie het hebben ingeregeld. F001 lijkt de voorkeur te hebben (wat ik ook in @PaulSinnema's project zie).

Ik pas het op dit moment aan in Modbus Poll omdat ik het eenmaal goed wil hebben, anders zou ik het in zowel C# als Python kunnen schrijven, zodra die behoefte er is.

[ Voor 0% gewijzigd door ReSpawN op 12-05-2025 17:44 . Reden: Grammar Nazi ]

Age of the Geek, baby!


  • Ron O
  • Registratie: Maart 2025
  • Laatst online: 18-05-2025
Een float32 (0-100) schrijven naar F322 (Dynamic Active Power Limit) lijkt ook mij de enige oplossing om het opgewekte vermogen van de omvormer te beperken.
Als je dynamische prijzen in de app bij export zet gaat dit register ook naar 0% als er niet geleverd moet worden.

  • Sportmind
  • Registratie: Juni 2019
  • Laatst online: 07:02
Mrlten schreef op dinsdag 15 april 2025 @ 19:08:
[...]

Dat is zo te zien al een behoorlijk uitgebreide app geworden. Ik ben zelf een .NET developer van beroep en ik werk dagelijks aan een Blazor app :)


[...]

Volgens mij is dat gewoon bangmakerij...

Trouwens, mocht je een SolarEdge energy meter hebben dan kan je de omvormer ook op de "zero export" modus zetten. Dan gaat de omvormer precies opwekken wat het huis verbruikt. En in die modus kan je ook instellen (via modbus) hoeveel watt er nog wel teruggeleverd mag worden.

Icm dynamische prijzen kan je dan bijvoorbeeld iets maken als; boven de 2 cent -> maximaal terugleveren, tussen de 0 en 2 cent -> max 2000 watt terugleveren, beneden de 0 cent -> 0 watt terugleveren.

Ik ga binnenkort een SolarEdge inline meter in de meterkast plaatsen en dan kijken wat ik er mee kan icm dynamische prijzen :*)
Ben zeer benieuwd wat je ervaringen zijn. Ik wil dit ook graag gaan regelen.

Gasloze vrijstaande woning (A++++), Ecoforest EcoGeo Basic WP, Bodembron, BV 300 L, Duco Energy Premium WTW (2 zones, CO2 gestuurd), 13000 Wp zonnepanelen (4860 Wp ONO, 8140 Wp WZW), Nissan Leaf 2.0, Zappi V2.1, Balans energie 48,2 kWh thuisaccu


  • PaulSinnema
  • Registratie: Mei 2017
  • Laatst online: 24-10 19:13
Mrlten schreef op dinsdag 15 april 2025 @ 19:08:

Trouwens, mocht je een SolarEdge energy meter hebben dan kan je de omvormer ook op de "zero export" modus zetten. Dan gaat de omvormer precies opwekken wat het huis verbruikt. En in die modus kan je ook instellen (via modbus) hoeveel watt er nog wel teruggeleverd mag worden.
Welke meter is dat?

  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 07:15

Mrlten

Premium Deluxe Plus

@PaulSinnema SolarEdge heeft 2 eigen meters, namelijk de Home Inline Meter (met een 1 fase en een 3 fase versie) en de Energiemeter met CT klemmen.

Verder ondersteunen de omvormers ook een aantal third-party meters: https://knowledge-center....edge-external-devices.pdf

  • grootte
  • Registratie: Mei 2011
  • Laatst online: 07-03 19:34
SolarEdge zero export met behulp van Powerfunctie,
zonder aanpassen van instelling op de omvormer, zonder inlinemeter (en zonder accu).

Bij een kWh prijs lager dan de opslag kosten (van bijvoorbeeld 0,02 €) wil je niet exporteren. Maar belasting betalen over kWh’s omdat de zonnepanelen uit staan, dat wil je ook niet.
Maak bij transparency.entsoe.eu een login en maak een API voor de actuele beursprijs aan.
Neem een P1 dongle. In geval van Homewizard: zet in de app de API open.
Geef in jouw router de Solaredge omvormer een vast IP adres.
Installeer Homeassistant (HA).
In HA: installeer HACS
In HA: installeer ENTSOE
In HA: installeer Modbus, vul het vaste IP adres in en de juiste poort (waarschijnlijk 502, zie Setapp).
In HA: installeer Homewizard.
In HA, bij /homeassistant/configuration.yaml voeg onderstaande code toe:
modbus:
- name: solaredge_hub
type: tcp
host: 192.xxx.yyy.zzz
port: 502
sensors:
- name: "SolarEdge Power Limit Feedback"
slave: 1
address: 61441
input_type: holding
data_type: int16
precision: 0
unit_of_measurement: "%"


 
In HA, bij automatiseringen en scénes voeg onderstaande code toe:

alias: Update Power Limit met P1 Meter
description: Past de power limit aan op basis van vermogen P1 meter en elektriciteitsprijs
triggers:
- entity_id: sensor.p1_meter_vermogen
trigger: state
- entity_id: sensor.frank_current_electricity_market_price
trigger: state
actions:
- variables:
positive_price_threshold: 0.02
negative_price_threshold: -0.14
division_factor: 32
p1_value: "{{ states('sensor.p1_meter_vermogen') | float }}"
current_limit: "{{ states('sensor.solaredge_power_limit_feedback') | float }}"
price: >-
{{ states('sensor.frank_current_electricity_market_price') | float }}
new_limit: |
{% if price > positive_price_threshold %}
100
{% elif price < negative_price_threshold %}
0
{% else %}
{% set raw = current_limit + (p1_value / division_factor) %}
{% set rounded_down = (raw | round(0, 'floor')) %}
{% if rounded_down > 100 %}
100
{% elif rounded_down < 0 %}
0
{% else %}
{{ rounded_down }}
{% endif %}
{% endif %}
- data:
hub: solaredge_hub
unit: 1
address: 61441
value: "{{ new_limit | int }}"
action: modbus.write_register
mode: single

Bij de code is inspringen belangrijk, chatgpt kan dat voor jouw doen
Tenslotte, in de code worden de panelen bij een hele lage beursprijs wel helemaal uitgeschakeld.

  • rokl
  • Registratie: Juli 2013
  • Laatst online: 29-06 09:09

rokl

test

Ik heb een SE5000H met LCD display en Firmware 3.2537, aangesloten via ETHERNET. Via Home Assistant en met de solaredge_modbus integratie wil ik het maximaal vermogen van de omvormer automatisch laten beperken afhankelijk van de P1 meter power en de solaredge current power. De software is kant en klaar en werkt prima. Maar uit welke redenen dan ook lukt het schrijven in het register niet of wordt de nieuwe waarde genegeerd. Ik vermoed dat ik een bepaalde instelling in de omvormer nog niet goed heb staan. Wat ik tot nu toe deed:

1. Menu -> Communication -> LAN Conf -> Modbus TCP : ENABLE.
2. Menu -> Power Control ->Energy manager : ENABLE.
3. Menu -> Power Control > RRCR Conf: RRCR gekozen.
4. Menu -> Power Control -> Active Pwr Conf : ENABLE.

Mis ik nog iets?

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
Voor het succesvol kunnen aansturen van mijn SE3500H inverter, moest ik gebruik gaan maken van de SolarEdge Modbus Multi integratie, in plaats Solaredge Modbus

Te installeren via HACS

Let op bij frequent wegschrijven data, naar flash memory inverter. Zie info

[ Voor 24% gewijzigd door Gronaldo op 21-12-2025 14:20 ]


  • Ronald2020
  • Registratie: Augustus 2020
  • Laatst online: 22:25
Hallo,
Bedankt voor het delen van dit idee.
Voor welke Solaredge omvormer is bovenstaande code geschreven? Het schrijven naar Modbus registers blijft een uitdaging waar zelfs Chat GPT de weg kwijt lijkt te raken. Ik probeer uit vinden of dit kan gaan werken voor een SE5K driefasen omvormer. Diverse documenten van Solaredge geven ook geen uitsluitsel.

address: 61441 en port: 502 lijkt niet te werken bij het model SE5K.

[ Voor 9% gewijzigd door Ronald2020 op 02-02-2026 22:27 ]


  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 07:15

Mrlten

Premium Deluxe Plus

@Ronald2020 Heb je al wel Modbus TCP aangezet op de omvormer? Voor het aanzetten van Modbus TCP op de omvormer kan je dit volgen: https://github.com/WillCo...ration#enabling-modbustcp

Je noemt adres 61441 en poort 502 maar dat zijn twee verschillende dingen; je communiceert met de omvormer via het ip adres wat die op jouw thuisnetwerk heeft en poort is 1502 (dus niet 502, behalve als je dat hebt aangepast op de omvormer).

Adres 61441 is het modbus register waarmee je de Active Power Limit insteld, dat adres + een waarde geef je in een modbus aanroep mee.

  • Ronald2020
  • Registratie: Augustus 2020
  • Laatst online: 22:25
Bedankt voor je reactie.
De Modbus integratie via Home assistant werkt prima via het ip adres van mijn omvormer en ik kan diverse zaken uitlezen via Modbus. Dat werkt dus allemaal goed.

Ik loop echter vast op het instellen van de Active Power Limit omdat ik op adres 61441 niet kan schrijven. Port 1502 staat bij mij standaard ingesteld in plaats van 502 zoals hierboven.

Moet ik wellicht eerst RRCR of andere parameters via de Setapp van Solar Edge
aanpassen? Ook dit moet lukken, want dat aanpassen werkt ook, alleen ben ik daar voorzichtig mee omdat ik niet te veel zaken tegelijk wil aanpassen.

[ Voor 4% gewijzigd door Ronald2020 op 03-02-2026 18:25 ]


  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 07:15

Mrlten

Premium Deluxe Plus

@Ronald2020 RRCR kan je uit laten in de omvormer, dat is volgens mij voor landen waar de energiemaatschappij jouw omvormer op afstand kan aansturen. Bij mij staat deze uit en ik kan zonder problemen de active power limit aanpassen.

"Advanced power control" moet zeker aan staan, in de omvormer admin pagina is dat volgens de documentatie menu "Power Control" -> optie "Grid Control" -> Enabled. Hier heb je trouwens geen SetApp voor nodig, die admin pagina kan je openen door de stappen uit mijn eerder gedeelde link te volgen. Let trouwens wel op dat wijzigingen op die pagina direct worden doorgevoerd.

  • Ronald2020
  • Registratie: Augustus 2020
  • Laatst online: 22:25
Grid Control enabled stond al aan, RRCR uit.., zie onderstaand plaatje
Communicatie met Modbus werkt..
Ik zoek nog even verder 😄

Wellicht toch de Solaredge Modbus Multi integratie in Homeassistant proberen in plaats de ‘gewone’ Modbus integratie?

Afbeeldingslocatie: https://tweakers.net/i/jPVExXAkNwMmqYf9WbV-PuMhQRM=/x800/filters:strip_icc():strip_exif()/f/image/tuQipTuCOpBRWMXNZFpDZH4n.jpg?f=fotoalbum_large

[ Voor 20% gewijzigd door Ronald2020 op 04-02-2026 06:59 ]


  • Ronald2020
  • Registratie: Augustus 2020
  • Laatst online: 22:25
@Mrlten
Probleem opgelost, het was een typefout in de YAML code. (adress ipv address😬)

Port 1502 en address 61441 kloppen dus inderdaad ook voor het model SE5K.
RCCR kan disabled blijven en Powergrid moet enabled worden. Het adres 62441 kan ik nu inderdaad aanpassen.Ik heb nog niet kunnen controleren of de omvormer daadwerkelijk het vermogen terugregelt met deze instellingen.
Bedankt voor het meedenken.
Hier nog de YAML code voor een power limit van 50%Afbeeldingslocatie: https://tweakers.net/i/mIwDH5FnE5J0od43zc-6vJ96uyU=/x800/filters:strip_exif()/f/image/FOP0K2lPrzIoBmA1pxX3cdZa.png?f=fotoalbum_large

[ Voor 35% gewijzigd door Ronald2020 op 04-02-2026 21:54 ]


  • Thieske2478
  • Registratie: Januari 2012
  • Laatst online: 27-10 00:28
-

[ Voor 100% gewijzigd door Thieske2478 op 14-03-2026 01:43 ]


  • Thieske2478
  • Registratie: Januari 2012
  • Laatst online: 27-10 00:28
Ik heb de SolarEdge Modbus Multi intergratie kunnen instellen en kan daar de opties aanzetten voor Vermogens beperking. Ik krijg dan deze opties erbij maar helaas reageren ze niet op mijn SE3680H. Iemand nog een idee wat er fout zou kunnen staan?
Afbeeldingslocatie: https://tweakers.net/i/9B9XWpVNTNzwP8mqoSrN3fwi2aw=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/r3rWtM8nelxICPUa7Ag2w5wB.png?f=user_largeAfbeeldingslocatie: https://tweakers.net/i/nZj4BuA6mDnXergLiGPjNXb6MC0=/x800/filters:strip_exif()/f/image/un4Jn3OQTQuwgKKGQnIv6FTJ.png?f=fotoalbum_large

  • bommer
  • Registratie: Februari 2006
  • Laatst online: 20:15
@Thieske2478 Volgens mij moet de “power reduction interface” aanstaan daarvoor.

Wat ik mij weer afvraag, de intergratie geeft ook een waarschuwing dat het gebruikt hiervan het flash storage beinvloed.
Wat is hiervan waar en wat wordt er precies beinvloed?

Solar Edge 9800WP O/W - Itho Amber 95 | Systeem integrator meet en regeltechniek & KNX | projecterings deskundige CCTV & Inbraaksignalering systemen | Meet- en regeltechniek in de klimaatbeheersing (MRK-A)


  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
Active Power Limit is de juiste te gebruiken. Andere limieten zijn voor enkele initiele instellingen bedoeld en worden opgeslagen in flash. Heb ik begrepen van de ontwikkelaar van de integratie.

  • bommer
  • Registratie: Februari 2006
  • Laatst online: 20:15
Gronaldo schreef op zondag 15 maart 2026 @ 09:06:
Active Power Limit is de juiste te gebruiken. Andere limieten zijn voor enkele initiele instellingen bedoeld en worden opgeslagen in flash. Heb ik begrepen van de ontwikkelaar van de integratie.
Wel gek dat die warning dan komt.
Je mag dus dat adres/object/entity iedere seconde aanpassen?

[ Voor 8% gewijzigd door bommer op 15-03-2026 12:58 ]

Solar Edge 9800WP O/W - Itho Amber 95 | Systeem integrator meet en regeltechniek & KNX | projecterings deskundige CCTV & Inbraaksignalering systemen | Meet- en regeltechniek in de klimaatbeheersing (MRK-A)


  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
bommer schreef op zondag 15 maart 2026 @ 12:55:
[...]

Wel gek dat die warning dan komt.
Je mag dus dat adres/object/entity iedere seconde aanpassen?
Zou gewoon een rustige bijsturing nemen, met enige toleranties. Per seconde is niet zinvol.

  • Gwaihir
  • Registratie: December 2002
  • Niet online
Mrlten schreef op zondag 13 april 2025 @ 12:59:
[...]

Ik heb de informatie uit deze pdf gehaald: https://www.haroldhalewij...r-SolarEdge-Inverters.pdf

Als je het maximale omvormer vermogen wilt aanpassen dan is dat de "Active Power Limit". Die heeft adres F001, ofwel 0xF001. Let er op dat je bij het uitlezen en wegschrijven de 'type' en 'size' volgt, niet dat je een int (32 bits, signed) gaat wegschrijven terwijl de documentatie zegt dat het een Uint16 (16 bits, unsigned) is.

Voor de active power limit hoef je alleen maar F001 te zetten. De documentatie is wat verwarrend omdat het F001 benoemd en direct over gaat op de geavanceerde instellingen die je verder niet nodig hebt.

Verder heeft SolarEdge meer registers die je kunt uitlezen, namelijk https://knowledge-center....tation-technical-note.pdf vanaf pagina 17.
Ik heb dit ook maar 'ns in de domotica opgenomen, eveneens met 0xF001. Maar daarbij viel het me op dat er nog een tweede manier wordt genoemd, Enhanced Dynamic Power Control, waarbij met een ramp-up/ramp-down gewerkt wordt.

Is dat voor specifieke gebruiksscenarios, of een inherent betere aanpak? Ik kan me nl. voorstellen dat dit minder heftig is voor de hardware componenten dan een snelle schakeling.

  • Jasper79
  • Registratie: December 2015
  • Laatst online: 07:10
Bedankt, hier was ik naar opzoek.

Tenminste ik heb 3 Solaredge omvormers omdat ik mijn PV steeds heb uitgebreid door een ander dakdeel bij te leggen.

Ik ga met de eerder opgegeven automation eens kijken of ik daar iets mee kan, andere optie is kijken of de Solaredge meter een oplossing is om de 3 omvormers aan te sturen maar het is mij nog niet helemaal duidelijk hoe die werkt.

Wel jammer dat de Eastron SDM630MCT met CT klemmen niet ondersteund is want die heb ik nog liggen.

  • Bakkertje65
  • Registratie: Mei 2018
  • Laatst online: 10-06 16:25
Thieske2478 schreef op zaterdag 14 maart 2026 @ 12:19:
Ik heb de SolarEdge Modbus Multi intergratie kunnen instellen en kan daar de opties aanzetten voor Vermogens beperking. Ik krijg dan deze opties erbij maar helaas reageren ze niet op mijn SE3680H. Iemand nog een idee wat er fout zou kunnen staan?
[Afbeelding][Afbeelding]
Ik had hetzelfde probleem met de SolarEdge SE3500.
Als ik de active power limit slider naar 50% zet gaat deze na ongeveer 30 seconden weer terug naar 100%
Veel geprobeerd maar via deze optie lukte het niet.
Er is ook een "Site Limit" optie aanwezig in de SolarEdge is zichtbaar in de HACS SolarEdge Modbus Multi.
Deze werkt bij mij wel.
De SE3500 betekent max 3500 Watt. Zet je de site limit op 200 watt dan gaat er nog 200 watt je huis in.
Ik heb met een engineer van SolarEdge contact hierover gehad en die bevestigd dat het ook op deze manier kan.

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
@Bakkertje65 Scroll even iets naar boven. Site Limit mag dan werken, maar is niet bedoeld voor frequente schrijfacties.

  • Pirelly
  • Registratie: Maart 2003
  • Laatst online: 23:34
Bakkertje65 schreef op donderdag 21 mei 2026 @ 11:08:
[...]

Ik had hetzelfde probleem met de SolarEdge SE3500.
Als ik de active power limit slider naar 50% zet gaat deze na ongeveer 30 seconden weer terug naar 100%
Veel geprobeerd maar via deze optie lukte het niet.
Er is ook een "Site Limit" optie aanwezig in de SolarEdge is zichtbaar in de HACS SolarEdge Modbus Multi.
Deze werkt bij mij wel.
De SE3500 betekent max 3500 Watt. Zet je de site limit op 200 watt dan gaat er nog 200 watt je huis in.
Ik heb met een engineer van SolarEdge contact hierover gehad en die bevestigd dat het ook op deze manier kan.
Ik had dit probleem ook en heb het geprobeerd met site limit. Dat werkte, maar is niet wenselijk ivm het flash geheugen.

Dus heb ik wat rond gezocht en vond ik ergens de opmerking om de power settings in de omvormer even naar defaults te zetten.

Afbeeldingslocatie: https://tweakers.net/i/uobEDSJZUKKgvq4XxgAbrnhXHno=/x800/filters:strip_icc():strip_exif()/f/image/KpRu3JboJJVsm81uxpSckg5K.jpg?f=fotoalbum_large

Dit kan ook in home assistant.

Activeer de optie "default power settings" als deze uit staat. Klik daarna op de button en de omvormer herstart zich. Daarna werkte de slider bij mij wel.

Afbeeldingslocatie: https://tweakers.net/i/dSU4LUNyzV5Xx4LVuPUyQxSuI-U=/x800/filters:strip_icc():strip_exif()/f/image/TZh256qOzAClzhUDenkLTaD2.jpg?f=fotoalbum_large

Succes!

  • Marsman83
  • Registratie: Januari 2001
  • Laatst online: 26-10 20:02
Ik had onderstaand ook in het HA topic gepost maar wellicht beter passend in dit topic:

Ik probeer Power Control te activeren in mijn SolarEdge SE5K omvormer zodat ik met Home Assistant de opbrengst kan reguleren.

Nu heb ik gevonden dat je in de omvormer RRCR moet aanzetten en in de Home Assistant core.config_entries de waarde power_control":true moet instellen.
Dat heb ik gedaan en de omvormer en HA beiden herstart, ik heb nu idd de slider Active Power Limit alleen doet die niks als ik hem op bijvoorbeeld 50% zet.

Nu las ik dat je ook Advanced Power Control in de omvormer aan moet zetten echter kan ik die optie nergens vinden...

Heeft iemand dit al voor elkaar?
Ik gebruik de SolarEdge Modbus HACS integratie (laatste versie)

Ik heb dus Grid Control: Enabled, Power Reduction Interface (RRCR): Enabled en Reactive Power:Power Reduction Interface (RRCR, DRED) staan.

Update: Het werkt inmiddels na nog een herstart van HA.

[ Voor 11% gewijzigd door Marsman83 op 26-05-2026 14:05 ]


  • Jasper79
  • Registratie: December 2015
  • Laatst online: 07:10
Moet je na instellen percentage niet ook nog commit power changes doe?

  • Marsman83
  • Registratie: Januari 2001
  • Laatst online: 26-10 20:02
Ik heb die opties niet, enkel de slider.
Ik gebruik de SolarEdge Modbus integratie, niet de SolarEdge Modbus Multi, die laatste geeft volgens mij meer instellingen echter wil ik mijn opgebouwde histori via SolerEdge Modbus niet kwijt, vandaar dat ik liever bij deze blijf.

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
Jasper79 schreef op dinsdag 26 mei 2026 @ 13:39:
Moet je na instellen percentage niet ook nog commit power changes doe?
Hoeft niet. Alleen zonder duurt het iets langer voordat de nieuwe instellingen actief worden.

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
Voor Home Assistant heb ik een automatisering gemaakt, samen met m'n digitale vriend (ChatGPT) voor het regelen van de Active Power Limit (APL) van de SolarEdge inverter. De APL wordt geregeld naar een gewenste grid outputwaarde - 30W in mijn geval.

Ik activeer deze automatisering wanneer de stroomprijs lager is dan -0,12 euro, middels een simpel 2e automatisering. Bij hogere prijzen exporteer ik normaal naar het grid. Er wordt geen rekening gehouden met een eventuele thuisbatterij op dit moment.

Bij interesse kan ik de code hier delen. Deze is eenvoudig aan te passen aan je eigen wensen en HAS-enities.

  • Jasper79
  • Registratie: December 2015
  • Laatst online: 07:10
Basis voor eigen gebruik is inderdaad welkom

  • edwin2021
  • Registratie: Oktober 2020
  • Laatst online: 07:04
Gronaldo schreef op vrijdag 29 mei 2026 @ 13:15:
Voor Home Assistant heb ik een automatisering gemaakt, samen met m'n digitale vriend (ChatGPT) voor het regelen van de Active Power Limit (APL) van de SolarEdge inverter. De APL wordt geregeld naar een gewenste grid outputwaarde - 30W in mijn geval.

Ik activeer deze automatisering wanneer de stroomprijs lager is dan -0,12 euro, middels een simpel 2e automatisering. Bij hogere prijzen exporteer ik normaal naar het grid. Er wordt geen rekening gehouden met een eventuele thuisbatterij op dit moment.

Bij interesse kan ik de code hier delen. Deze is eenvoudig aan te passen aan je eigen wensen en HAS-enities.
Altijd welkom!

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
Okay. Dit is de automatisering voor de actieve regeling SolarEdge.
Entiteiten aanpassen aan je eigen systeem, spreekt redelijk voor zich.

Zonnepanelen limiet: number.solaredge_i1_active_power_limit
Zonnepanelen opbrengst: sensor.solaredge_i1_ac_power
Instelling APL direct doorvoeren (Commit Power Settings): button.solaredge_i1_commit_power_settings
Net afname: sensor.electricity_meter_power_consumption
Teruglevering: sensor.electricity_meter_power_production
YAML: SolarEdge APL
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
alias: AUTO SolarEdge Dynamische Zero Export
description: Dynamische regeling van SolarEdge exportlimiet met directe commit
triggers:
  - seconds: /5
    trigger: time_pattern
conditions: []
actions:
  - condition: template
    value_template: |
      {{ not within_deadband }}
  - condition: template
    value_template: |
      {{ (final_limit - current_limit) | abs >= 2 }}
  - target:
      entity_id: number.solaredge_i1_active_power_limit
    data:
      value: "{{ final_limit }}"
    action: number.set_value
  - delay:
      milliseconds: 500
  - target:
      entity_id: button.solaredge_i1_commit_power_settings
    action: button.press
    data: {}
mode: restart
variables:
  target_export: 30
  max_step: 20
  deadband_low: 0
  deadband_high: 80
  min_limit: 0
  max_limit: 100
  inverter_max_power: 3650
  grid_import: |
    {{ states('sensor.electricity_meter_power_consumption') | float(0) }}
  grid_export: |
    {{ states('sensor.electricity_meter_power_production') | float(0) }}
  current_limit: |
    {{ states('number.solaredge_i1_active_power_limit') | float(0) }}
  current_pv_power: |
    {{ states('sensor.solaredge_i1_ac_power') | float(0) }}
  net_grid_power: |
    {{ grid_export - grid_import }}
  within_deadband: |
    {{
      grid_export > deadband_low
      and
      grid_export < deadband_high
      and
      grid_import < 20
    }}
  correction_watts: |
    {{ net_grid_power - target_export }}
  desired_pv_power: |
    {{ current_pv_power - correction_watts }}
  raw_target_limit: |
    {{ (desired_pv_power / inverter_max_power * 100) }}
  clamped_target_limit: |
    {% set p = raw_target_limit | float(0) %}
    {% if p < min_limit %}
      {{ min_limit }}

    {% elif p > max_limit %}
      {{ max_limit }}

    {% else %}
      {{ p }}
    {% endif %}
  stepped_limit: |
    {% set delta = clamped_target_limit - current_limit %}
    {% if delta > max_step %}
      {{ current_limit + max_step }}

    {% elif delta < -max_step %}
      {{ current_limit - max_step }}

    {% else %}
      {{ clamped_target_limit }}
    {% endif %}
  final_limit: |
    {{ stepped_limit | round(0) }}

[ Voor 5% gewijzigd door Gronaldo op 29-05-2026 20:32 ]


  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
En hier de automatisering welke de regeling triggert bij negatieve stroomprijzen.
YAML: Negatieve stroomprijs
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
alias: AUTO Negatieve stroomprijs
description: ""
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.current_electricity_market_price
    below: -0.12
    id: Negatief
  - trigger: numeric_state
    entity_id:
      - sensor.current_electricity_market_price
    id: Positief
    above: -0.1
conditions: []
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - Negatief
          - condition: state
            entity_id: sensor.solaredge_i1_status
            state:
              - I_STATUS_THROTTLED
              - I_STATUS_MPPT
        sequence:
          - action: automation.turn_on
            metadata: {}
            data: {}
            target:
              entity_id: automation.auto_solaredge_dynamische_zero_export
          - action: notify.mobile_app_mobiel_xxx
            metadata: {}
            data:
              message: "HAS: Negatieve stroomprijs ACTIEF, zonnepanelen gelimiteerd"
      - conditions:
          - condition: trigger
            id:
              - Positief
        sequence:
          - action: automation.turn_off
            metadata: {}
            data:
              stop_actions: true
            target:
              entity_id: automation.auto_solaredge_dynamische_zero_export
          - action: number.set_value
            metadata: {}
            target:
              entity_id: number.solaredge_i1_active_power_limit
            data:
              value: "100"
          - action: notify.mobile_app_mobiel_xxx
            metadata: {}
            data:
              message: "HAS: Negatieve stroomprijs HERSTELD, zonnepanelen ongelimiteerd"
mode: single

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
Eerste automatisering kan je uiteraard ook altijd actief houden, als je altijd minimale export zou willen hebben, al is dit waarschijnlijk dit jaar nog niet aan de orde. De tweede automatisering gebruik je in dat geval niet.

Succes!

  • PHDNovice
  • Registratie: December 2009
  • Laatst online: 07:18
@Gronaldo Bedankt voor het delen van je script. Ben nu bezig mijn eigen sensors in te voegen, maar ik loop tegen een uitdaging met de variabelen grid_import en grid_export.

Ik gebruik de P1 meter van HomeWizzard en die heeft deze sensors helaas niet. Die heeft alleen maar "Power" met een negatieve waarde bij teruglevering. Voordat ik de script ga herschrijven, heb jij of iemand anders een passende aanpassing op de plank?

Nog even een tip voor diegene welke geen geschikte omvormer hebben:
Zelf had ik een SE8K met CPU V2.x welke Modbus/TCP niet ondersteund. Mijn installateur had een hele pallet vol met oude omvormers retour gekomen van mensen die nieuw omvormer+batterijen ging plaatsen. Heb gratis een 10 jaar jongere SE5K met CPU V4.x opgehaald en zelf vervangen.

Alvast bedankt

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
@PHDNovice Via ChatGPT:

Kan je volgende home assistant automatisering aanpassen. De individuele sensor.electricity_meter_power_consumption en sensor.electricity_meter_power_production vervangen door gecombineerde sensor.hwz_p1_meter_power?

ANTW:

Ja. Als sensor.hwz_p1_meter_power een gecombineerde vermogenssensor is waarbij:
  • positieve waarde = afname van het net (import)
  • negatieve waarde = teruglevering aan het net (export)
dan kun je de automatisering als volgt aanpassen. De logica blijft hetzelfde, alleen worden grid_import en grid_export afgeleid van de nieuwe sensor.
YAML:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
alias: AUTO SolarEdge Dynamische Zero Export
description: Dynamische regeling van SolarEdge exportlimiet met directe commit

triggers:
  - trigger: time_pattern
    seconds: /5

conditions: []

actions:
  - condition: template
    value_template: >
      {{ not within_deadband }}

  - condition: template
    value_template: >
      {{ (final_limit - current_limit) | abs >= 2 }}

  - action: number.set_value
    target:
      entity_id: number.solaredge_i1_active_power_limit
    data:
      value: "{{ final_limit }}"

  - delay:
      milliseconds: 500

  - action: button.press
    target:
      entity_id: button.solaredge_i1_commit_power_settings

mode: restart

variables:
  target_export: 30
  max_step: 20
  deadband_low: 0
  deadband_high: 80
  min_limit: 0
  max_limit: 100
  inverter_max_power: 3650

  grid_power: >
    {{ states('sensor.hwz_p1_meter_power') | float(0) }}

  grid_import: >
    {{ [grid_power, 0] | max }}

  grid_export: >
    {{ [-grid_power, 0] | max }}

  current_limit: >
    {{ states('number.solaredge_i1_active_power_limit') | float(0) }}

  current_pv_power: >
    {{ states('sensor.solaredge_i1_ac_power') | float(0) }}

  net_grid_power: >
    {{ grid_export - grid_import }}

  within_deadband: >
    {{
      grid_export > deadband_low
      and grid_export < deadband_high
      and grid_import < 20
    }}

  correction_watts: >
    {{ net_grid_power - target_export }}

  desired_pv_power: >
    {{ current_pv_power - correction_watts }}

  raw_target_limit: >
    {{ desired_pv_power / inverter_max_power * 100 }}

  clamped_target_limit: >
    {% set p = raw_target_limit | float(0) %}
    {% if p < min_limit %}
      {{ min_limit }}
    {% elif p > max_limit %}
      {{ max_limit }}
    {% else %}
      {{ p }}
    {% endif %}

  stepped_limit: >
    {% set delta = clamped_target_limit - current_limit %}
    {% if delta > max_step %}
      {{ current_limit + max_step }}
    {% elif delta < -max_step %}
      {{ current_limit - max_step }}
    {% else %}
      {{ clamped_target_limit }}
    {% endif %}

  final_limit: >
    {{ stepped_limit | round(0) }}
Controleer nog wel even de richting van sensor.hwz_p1_meter_power:

positieve waarde = afname van het net (import)
negatieve waarde = teruglevering aan het net (export)

Anders moeten grid_import en grid_export juist omgewisseld worden.

[ Voor 3% gewijzigd door Gronaldo op 04-07-2026 15:41 ]


  • PHDNovice
  • Registratie: December 2009
  • Laatst online: 07:18
Gronaldo schreef op zaterdag 4 juli 2026 @ 15:34:
@PHDNovice Via ChatGPT:

Kan je volgende home assistant automatisering aanpassen. De individuele sensor.electricity_meter_power_consumption en sensor.electricity_meter_power_production vervangen door gecombineerde sensor.hwz_p1_meter_power?

ANTW:

Ja. Als sensor.hwz_p1_meter_power een gecombineerde vermogenssensor is waarbij:
  • positieve waarde = afname van het net (import)
  • negatieve waarde = teruglevering aan het net (export)
dan kun je de automatisering als volgt aanpassen. De logica blijft hetzelfde, alleen worden grid_import en grid_export afgeleid van de nieuwe sensor.
YAML:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
alias: AUTO SolarEdge Dynamische Zero Export
description: Dynamische regeling van SolarEdge exportlimiet met directe commit

triggers:
  - trigger: time_pattern
    seconds: /5

conditions: []

actions:
  - condition: template
    value_template: >
      {{ not within_deadband }}

  - condition: template
    value_template: >
      {{ (final_limit - current_limit) | abs >= 2 }}

  - action: number.set_value
    target:
      entity_id: number.solaredge_i1_active_power_limit
    data:
      value: "{{ final_limit }}"

  - delay:
      milliseconds: 500

  - action: button.press
    target:
      entity_id: button.solaredge_i1_commit_power_settings

mode: restart

variables:
  target_export: 30
  max_step: 20
  deadband_low: 0
  deadband_high: 80
  min_limit: 0
  max_limit: 100
  inverter_max_power: 3650

  grid_power: >
    {{ states('sensor.hwz_p1_meter_power') | float(0) }}

  grid_import: >
    {{ [grid_power, 0] | max }}

  grid_export: >
    {{ [-grid_power, 0] | max }}

  current_limit: >
    {{ states('number.solaredge_i1_active_power_limit') | float(0) }}

  current_pv_power: >
    {{ states('sensor.solaredge_i1_ac_power') | float(0) }}

  net_grid_power: >
    {{ grid_export - grid_import }}

  within_deadband: >
    {{
      grid_export > deadband_low
      and grid_export < deadband_high
      and grid_import < 20
    }}

  correction_watts: >
    {{ net_grid_power - target_export }}

  desired_pv_power: >
    {{ current_pv_power - correction_watts }}

  raw_target_limit: >
    {{ desired_pv_power / inverter_max_power * 100 }}

  clamped_target_limit: >
    {% set p = raw_target_limit | float(0) %}
    {% if p < min_limit %}
      {{ min_limit }}
    {% elif p > max_limit %}
      {{ max_limit }}
    {% else %}
      {{ p }}
    {% endif %}

  stepped_limit: >
    {% set delta = clamped_target_limit - current_limit %}
    {% if delta > max_step %}
      {{ current_limit + max_step }}
    {% elif delta < -max_step %}
      {{ current_limit - max_step }}
    {% else %}
      {{ clamped_target_limit }}
    {% endif %}

  final_limit: >
    {{ stepped_limit | round(0) }}
Controleer nog wel even de richting van sensor.hwz_p1_meter_power:

positieve waarde = afname van het net (import)
negatieve waarde = teruglevering aan het net (export)

Anders moeten grid_import en grid_export juist omgewisseld worden.
Wow, dat was snel. Ben zelf nog niet zo handig met die AI stuff. Komt nog wel :P Ik ga er gelijk mee aan de slag. Wel erg jammer dat HA alle comments in YAML weg haalt. Ben gewend meer comments dan code te schrijven

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
PHDNovice schreef op zaterdag 4 juli 2026 @ 15:48:
[...]

Wow, dat was snel. Ben zelf nog niet zo handig met die AI stuff. Komt nog wel :P Ik ga er gelijk mee aan de slag. Wel erg jammer dat HA alle comments in JAML weg haalt. Ben gewend meer comments dan code te schrijven
Eens, maar het is nu even niet anders :)

  • Mooraalkikker
  • Registratie: December 2012
  • Laatst online: 27-10 18:22
Gronaldo schreef op vrijdag 29 mei 2026 @ 20:18:
Okay. Dit is de automatisering voor de actieve regeling SolarEdge.
Entiteiten aanpassen aan je eigen systeem, spreekt redelijk voor zich.

Zonnepanelen limiet: number.solaredge_i1_active_power_limit
Zonnepanelen opbrengst: sensor.solaredge_i1_ac_power
Instelling APL direct doorvoeren (Commit Power Settings): button.solaredge_i1_commit_power_settings
Net afname: sensor.electricity_meter_power_consumption
Teruglevering: sensor.electricity_meter_power_production
YAML: SolarEdge APL
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
alias: AUTO SolarEdge Dynamische Zero Export
description: Dynamische regeling van SolarEdge exportlimiet met directe commit
triggers:
  - seconds: /5
    trigger: time_pattern
conditions: []
actions:
  - condition: template
    value_template: |
      {{ not within_deadband }}
  - condition: template
    value_template: |
      {{ (final_limit - current_limit) | abs >= 2 }}
  - target:
      entity_id: number.solaredge_i1_active_power_limit
    data:
      value: "{{ final_limit }}"
    action: number.set_value
  - delay:
      milliseconds: 500
  - target:
      entity_id: button.solaredge_i1_commit_power_settings
    action: button.press
    data: {}
mode: restart
variables:
  target_export: 30
  max_step: 20
  deadband_low: 0
  deadband_high: 80
  min_limit: 0
  max_limit: 100
  inverter_max_power: 3650
  grid_import: |
    {{ states('sensor.electricity_meter_power_consumption') | float(0) }}
  grid_export: |
    {{ states('sensor.electricity_meter_power_production') | float(0) }}
  current_limit: |
    {{ states('number.solaredge_i1_active_power_limit') | float(0) }}
  current_pv_power: |
    {{ states('sensor.solaredge_i1_ac_power') | float(0) }}
  net_grid_power: |
    {{ grid_export - grid_import }}
  within_deadband: |
    {{
      grid_export > deadband_low
      and
      grid_export < deadband_high
      and
      grid_import < 20
    }}
  correction_watts: |
    {{ net_grid_power - target_export }}
  desired_pv_power: |
    {{ current_pv_power - correction_watts }}
  raw_target_limit: |
    {{ (desired_pv_power / inverter_max_power * 100) }}
  clamped_target_limit: |
    {% set p = raw_target_limit | float(0) %}
    {% if p < min_limit %}
      {{ min_limit }}

    {% elif p > max_limit %}
      {{ max_limit }}

    {% else %}
      {{ p }}
    {% endif %}
  stepped_limit: |
    {% set delta = clamped_target_limit - current_limit %}
    {% if delta > max_step %}
      {{ current_limit + max_step }}

    {% elif delta < -max_step %}
      {{ current_limit - max_step }}

    {% else %}
      {{ clamped_target_limit }}
    {% endif %}
  final_limit: |
    {{ stepped_limit | round(0) }}
Tnx het script lijkt hier te werken. Had nog wel een vraagje mbt tot de negatieve tarieven.

Ik zie in de triggers niks staan dat die het script om de 15 minuten moet doen bijvoorbeeld? Dus ik vroeg mij af hoe hij dan kan zien hoe de prijzen zijn op dat moment?

Of is het meer een statisch gegeven dat hij afgaat als een soort alarm als de prijs onder een bepaald niveau zakt?

  • Mooraalkikker
  • Registratie: December 2012
  • Laatst online: 27-10 18:22
Mooraalkikker schreef op zondag 5 juli 2026 @ 21:13:
[...]

Tnx het script lijkt hier te werken. Had nog wel een vraagje mbt tot de negatieve tarieven.

Ik zie in de triggers niks staan dat die het script om de 15 minuten moet doen bijvoorbeeld? Dus ik vroeg mij af hoe hij dan kan zien hoe de prijzen zijn op dat moment?

Of is het meer een statisch gegeven dat hij afgaat als een soort alarm als de prijs onder een bepaald niveau zakt?

Ben nog een aardige nitwit op gebied van HA, dus ben nog bezig om de logica te zien

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
@Mooraalkikker
Ik heb een automatisering verstrekt voor het beperken van de terugregeling, deze kan je naar wens altijd actief laten zijn, of alleen activeren bij negatieve stroomprijzen. Dat laatste doet mijn tweede automatisering (op basis van een integratie van dynamische energietarieven, zoals bijvoorbeeld van Frank Energie of Nordpool.

[ Voor 5% gewijzigd door Gronaldo op 05-07-2026 23:29 ]


  • Mooraalkikker
  • Registratie: December 2012
  • Laatst online: 27-10 18:22
Gronaldo schreef op zondag 5 juli 2026 @ 22:14:
@Mooraalkikker
Ik heb een automatisering verstrekt voor het beperken van de terugregeling, deze kan je naar wens altijd actief laten zijn, of alleen activeren bij negatieve stroomprijzen. Dat laatste doet mijn tweede automatisering (op basis van een integratie van dynamische energietarieven, zoals bijvoorbeeld van Frank Energie of Nordpool.
Yes ik heb het gekoppeld met de prijzen van tibber, maar ik vroeg mij af hoe dit script wordt getriggerd? Nu doe ik op handmatig actie uitvoeren, maar vroeg mij af of ik nog een trigger moet toevoegen dat hij dit script elk kwartier uitvoert?

Ik snap dat de script van de zonnepanelen (je eerste script) geactiveerd kan worden door dit script van de dynamische prijzen, maar hoe wordt dat script van de dynamische prijzen (je tweede script) geautomatiseerd getriggerd? Of is dat niet nodig?

[ Voor 3% gewijzigd door Mooraalkikker op 06-07-2026 06:30 ]


  • Jasper79
  • Registratie: December 2015
  • Laatst online: 07:10
Ik heb hem niet bekeken maar nee aan dat de trigger de prijs zelf is dus iedere prijswijziging een trigger moment is.

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
@Mooraalkikker
Even korte uitleg, maar voor verdere HAS uitleg is dit niet de juiste plak.

Eerst automatisering wordt iedere 5 sec automatisch getriggerd (mits automatisering actief is):
code:
1
2
3
triggers:
  - trigger: time_pattern
    seconds: /5
De tweede automatisering controleert op prijsniveau en geeft een trigger-id Negatief of Positief.
code:
1
2
3
4
5
6
7
8
9
10
11
triggers:
  - trigger: numeric_state
    entity_id:
      - sensor.current_electricity_market_price
    below: -0.12
    id: Negatief
  - trigger: numeric_state
    entity_id:
      - sensor.current_electricity_market_price
    id: Positief
    above: -0.1
Afhankelijk van trigger-id wordt eerste automatisering in- of uitgeschakeld.

Bij uitschakelen eerste automatisering, wanneer prijs weer hoger is, wordt ook de Power Limit weer op 100% gezet.

  • Mooraalkikker
  • Registratie: December 2012
  • Laatst online: 27-10 18:22
Nog een andere vraag. Ik lees verschillende berichten of active_power_limit nu wel of niet naar flash schrijft. Als ik dit topic moet geloven is dat niet get geval? Maar als ik via AI kijk (ik weet het, niet de beste manier), dan heeft die het erover dat je Dynamic power control moet enablen?

Dus voordat ik straks met een kapotte flash zit van omvormer, is dit iets wat aan moet worden gezet? Ik heb de SE4000H omvormer. En zo ja, hoe hebben jullie dat gedaan icm Home Assistant en Modbus?

Want dit lees ik in de specs:

'Active Power Limit dynamic control: This register controls the active power limit of the inverter dynamically. It is set as the percentage of the inverter’s maximum power. For example: when setting the register of SE5000 to 20, it will limit the inverter to 1000W which is 20% of 5000W'

Dus lijkt mij dat het gewoon dynamisch is? En dat AI zit te goochelen met andere implementaties?

[ Voor 30% gewijzigd door Mooraalkikker op 06-07-2026 13:31 ]


  • bommer
  • Registratie: Februari 2006
  • Laatst online: 20:15
Duidelijk dat je active power control moet gebruiken, net als bij andere als ik die slider op 50% zet bijvoorbeeld. Wordt hij gelijk weer terug gezet.

Solar Edge 9800WP O/W - Itho Amber 95 | Systeem integrator meet en regeltechniek & KNX | projecterings deskundige CCTV & Inbraaksignalering systemen | Meet- en regeltechniek in de klimaatbeheersing (MRK-A)


  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
bommer schreef op maandag 6 juli 2026 @ 19:28:
[...]

Duidelijk dat je active power control moet gebruiken, net als bij andere als ik die slider op 50% zet bijvoorbeeld. Wordt hij gelijk weer terug gezet.
Gebruik je SolarEdge Modbus Multi? Dat wat bij mij de juiste integratie. Ook de default power settings activeren kan helpen.

  • bommer
  • Registratie: Februari 2006
  • Laatst online: 20:15
Gronaldo schreef op maandag 6 juli 2026 @ 19:30:
[...]

Gebruik je SolarEdge Modbus Multi? Dat wat bij mij de juiste integratie. Ook de default power settings activeren kan helpen.
Check ga ik proberen, ik gebruik idd de multi.

Solar Edge 9800WP O/W - Itho Amber 95 | Systeem integrator meet en regeltechniek & KNX | projecterings deskundige CCTV & Inbraaksignalering systemen | Meet- en regeltechniek in de klimaatbeheersing (MRK-A)


  • Mooraalkikker
  • Registratie: December 2012
  • Laatst online: 27-10 18:22
Zat nog wel te denken dat het script misschien nog 1 scenario mist? Het moment dat de prijzen zo negatief zijn dat je geld toe krijgt als je stroom verbruikt?

Dan wil je namelijk helemaal geen oplevering hebben van je zonnepanelen, dus ook niet je eigen verbruik, of denk ik nu heel gek?

Als ik binnenkort eens tijd heb, zal ik eens kijken of ik met de logica van de huidige 2 scripts dit scenario kan verwerken.

  • bommer
  • Registratie: Februari 2006
  • Laatst online: 20:15
Gronaldo schreef op maandag 6 juli 2026 @ 19:30:
[...]

Gebruik je SolarEdge Modbus Multi? Dat wat bij mij de juiste integratie. Ook de default power settings activeren kan helpen.
Default power settings was inderdaad de truuk, nu reageert de slider prima.

Solar Edge 9800WP O/W - Itho Amber 95 | Systeem integrator meet en regeltechniek & KNX | projecterings deskundige CCTV & Inbraaksignalering systemen | Meet- en regeltechniek in de klimaatbeheersing (MRK-A)


  • PHDNovice
  • Registratie: December 2009
  • Laatst online: 07:18
Gronaldo schreef op zaterdag 4 juli 2026 @ 15:49:
[...]

Eens, maar het is nu even niet anders :)
Ik heb je script in gebruik en het werkt zoals verwacht. *O*

Ik ben nu bezig om de script te optimaliseren en van veel commentaar te voorzien. Ik ben er zo een die altijd exact wil weten hoe het werkt en beschrijft. Wellicht dat een ander er wat aan heeft. :)

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
@PHDNovice

Ben benieuwd, zie het graag 👍

  • edwin2021
  • Registratie: Oktober 2020
  • Laatst online: 07:04
PHDNovice schreef op woensdag 8 juli 2026 @ 11:58:
[...]

Ik heb je script in gebruik en het werkt zoals verwacht. *O*

Ik ben nu bezig om de script te optimaliseren en van veel commentaar te voorzien. Ik ben er zo een die altijd exact wil weten hoe het werkt en beschrijft. Wellicht dat een ander er wat aan heeft. :)
Zeker heel benieuwd. Wil eerdaags eens ermee testen voordat het 2027 is 😉

Ik moet alleen nog wel omschakelen naar de solaredge multi variant denk ik.

  • PHDNovice
  • Registratie: December 2009
  • Laatst online: 07:18
Hier de aangepaste automatisering met commentaar toegevoegd. Hopelijk heeft men er wat aan. Het is nog work in progress :) Suggesties en vragen zijn altijd welkom. Maar ik ga nu eerst een weekje op vakantie :)F
YAML:
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
# Gebaseerd op een automation script beschikbaar gesteld door Gronaldo op Tweakers :-)
# Automation van Gronaldo werkt prima, maar ik heb wat optimalisaties gedaan en commentaar toegevoegd.
# Doel van deze Automation is om energie export van de omvormer te minimaliseren.

alias: SolarEdge Dynamische Export Beperking
description: Dynamische regeling van SolarEdge exportlimiet met directe commit

# Deze Automation word elke 5 seconden getriggerd.
# Let op de polling intervalen van alle gerelateerde integraties. Deze moeten ongeveer gelijk zijn aan de laagste interval. In mijn geval is de P1 meter de beperkende factor.
#   Polling interval van P1 van HomeWizard = 5sec
#   Polling interval van "Solaredge ModBus Multi" ~5sec
#
# Waarde P1 meter wordt elke 5s uitgelezen door de standaard HomeWizzard integratie.
# Trigger alleen als de P1 waarde veranderd buiten de "DeadBand" waarden. Dus er is geen trigger zolang deze binnen de "DeadBand" waarde zit.
# Deze trigger zorg voor minimaal pendelen.
# Voor de Dashboard heb ik een 2de Automation met zelfde trigger tbv een heartbeat indicatie.
#
triggers:
  - trigger: power.changed
    target:
      entity_id: sensor.p1_meter_power
    options:
      threshold:
        type: outside
        value_min:
          active_choice: number
          unit_of_measurement: W
          number: -80
        value_max:
          active_choice: number
          unit_of_measurement: W
          number: 0

# 3 Condities
#   1: Boolean Helper toegevoegd als conditie. Vanaf de DashBoard kan je deze automation activeren middels een toggle switch.
#   2: APL is alleen actief als de status "THROTTLED" of "MPPT" is. --> Zinloos als status bv "SLEEPING" is.
#   3: Verandering van limit moet >=1% zijn.
#
conditions:
  - condition: state
    entity_id: input_boolean.solaredge_export_beperking_enabled
    state:
      - "on"
  - condition: state
    entity_id: sensor.garage_solaredge_status
    state:
      - I_STATUS_THROTTLED
      - I_STATUS_MPPT
  - condition: template
    value_template: |
      {{ (final_limit - current_limit) | abs >= 1 }}

# Een eventueel nog lopende script wordt eerst gestopt voordat de nieuwe mag starten.
#
mode: restart

# 6 acties.
#   1: Zet de nieuwe PowerLimit 
#   2: (DashBoard) HeartBeat indicator op Dashboard aan dat er iets gewijzigd word.
#   3: (DashBoard) Indicators on/off als er meer/minder vermogen gevraagd wordt
#   4: Delay (Het duurt het even voordat alles door de omvormer verwerkt is alvorens een commit gegeven kan worden)
#   5: Commit de nieuwe PowerLimit. (Anders zit er een vertraging in) (Hoe lang? Geen idee)
#   6: (DashBoard) HeartBeat indicator op Dashboard uit
#   7: (DashBoard) Indicators off als er meer/minder vermogen gevraagd wordt
#
actions:
  - target:
      entity_id: number.garage_solaredge_active_power_limit
    data:
      value: "{{ final_limit }}"
    action: number.set_value
 
 - action: input_boolean.turn_on
    target:
      entity_id: input_boolean.heartbeat
    - action: input_boolean.turn_{{ 'on' if Limit_Decrease_Requested else 'off' }}
    target:
      entity_id: input_boolean.solaredge_apl_decr
  - action: input_boolean.turn_{{ 'on' if Limit_Increase_Requested else 'off' }}
    target:
      entity_id: input_boolean.solaredge_apl_incr
 
 - delay:
      milliseconds: 500
 
   - target:
      entity_id: button.garage_solaredge_commit_power_settings
    action: button.press
    - action: input_boolean.turn_off
    target:
      entity_id: input_boolean.heartbeat
  
  - action: input_boolean.turn_off
    target:
      entity_id:
        - input_boolean.solaredge_apl_incr
        - input_boolean.solaredge_apl_decr

variables:
  # Tip: Alle variablen hier zijn locaal, maar je kan ze ook vervangen door Helper-Variabelen.
  # Dan kan je deze op een DashBoard tonen en gebruiken om te zien wat er gebeurt en ook voor debuggen.
  # Hoe? Moet ik nog uitzoeken :-)

  # Voor de berekeningen is 30W export als target waarde gekozen. 
  # DeadBand is nodig om pendelen te voorkomen. Is nu verwerkt in de trigger en kan komen te vervallen.
  # Bandbreedte en kleinste step moeten op elkaar afgestemd zijn. Maw (Bandbreedte > Min. Step)
  #
  target_export: 30
  deadband_low: 0
  deadband_high: 80

  # Max delta per 5sec is hier gelimiteerd op 20%. Echte waarde(s) nog te bepalen via SolarEdge documentatie.
  # Waarom? --> Waarschijnlijk omdat het anders te lang duurt? 
  # Niet elke omvormer kan even snel veranderen. De verandering moet ook binnen de 5sec interval uitgevoerd kunnen worden.
  #
  max_step: 20

  # Maximale vermogen van de omvormer is nodig voor de berekeningen. De rated vermogen is vaak ~105% van het nominale vermogen. Dus SE5K = 5250W
  # Dus bij 50% power limit, gaat de omvormer clippen bij 2625W. Dit is een absolute en dus geen relatieve setting.
  # De kleinste stap is dus 52,5W (1% van 5000)
  # Pas als de Inverter Status daadwerkelijk "I_STATUS_THROTTLED" is word er pas echt afgeknepen door de omvormer.
  # Active Power Limit is tussen 0% en 100% in te stellen.
  # --> Min verhoogd naar 1%. Omvormer lijkt lang op 0% te hangen als is daar komt. Begrijp ook niet waarom 0% ooit gevraagd zou kunnen worden.
  #
  inverter_max_power: 5250  
  min_limit: 1
  max_limit: 100

  # De daadwerkelijke berekeningen staan hieronder.
  # ToDo: Randgevallen bepalen en begrijpen.
  # - Status MPPT --> kan niet meer vermogen geleverd worden (Aanpassen APL% heeft geen zin)
  # - Status THROTTLED & <100% er is nog extra vermogen beschikbaar.

  # Bepaal huidige import/export waarden.
  # HomeWizzard meter geeft een negatieve waarde bij teruglevering.
  # Trace: grid_power: -18
  # Trace: grid_import: 0
  # Trace: grid_export: 18
  #
  grid_power: "{{ states('sensor.p1_meter_power') | float(0) }}"
  grid_import: "{{ [grid_power, 0] | max }}"
  grid_export: "{{ [-grid_power, 0] | max }}"

  # Huidige APL & Power generation uitlezen.
  #
  current_limit: "{{ states('number.garage_solaredge_active_power_limit') | float(0) }}"
  current_pv_power: "{{ states('sensor.garage_solaredge_ac_power') | float(0) }}"

  # 
  # Trace: net_grid_power: 18
  #
  net_grid_power: "{{ grid_export - grid_import }}"

  # Power correctie noodzakelijk om op de target te komen.
  # Trace: correction_watts: -12 --> De omvormer moet 12W meer power gaan leveren
  #
  correction_watts: "{{ net_grid_power - target_export }}"

  # Bepalen hoeveel vermogen de omvormer moet gaan leveren
  # Trace: current_pv_power    : 520.4
  # Trace: desired_pv_power    : 532.4
  desired_pv_power: "{{ current_pv_power - correction_watts }}"

  # Berekenen wat de nieuwe Power setting in % moet worden.
  # Trace: inverter_max_power  : 5250
  # Trace: desired_pv_power    : 532.4
  # Trace: current_limit       : 10
  # Trace: raw_target_limit    : 10.140952380952381

  raw_target_limit: "{{ desired_pv_power / inverter_max_power * 100 }}"

  # Zorg ervoor dat de PowerLimitlimit altijd tussen 1% en 100% blijft. )
  # Trace: min_limit           : 1
  # Trace: max_limit           : 100
  # Trace: clamped_target_limit: 10.140952380952381
  #
  clamped_target_limit: "{{ clamp(raw_target_limit | float(0), min_limit, max_limit) }}"

  # Zorgt ervoor dat de maximale power delta 20% is
  # Trace: stepped_limit: 10.140952380952381
  stepped_limit: "{{ clamp(clamped_target_limit, current_limit - max_step, current_limit + max_step) }}"

  # Nieuwe PowerLimit in % afgerond.
  # Trace: final_limit: 10
  #
  final_limit: "{{ stepped_limit | round(0) }}"
 
  # Indicatie of er meer of minder vermogen gevraagd wordt.
  # Dashboard word geupdate in de actions sectie.
  #
  Limit_Increase_Requested: "{{ final_limit > current_limit }}"
  Limit_Decrease_Requested: "{{ final_limit < current_limit }}"

  • PHDNovice
  • Registratie: December 2009
  • Laatst online: 07:18
edwin2021 schreef op woensdag 8 juli 2026 @ 21:56:
[...]

Zeker heel benieuwd. Wil eerdaags eens ermee testen voordat het 2027 is 😉

Ik moet alleen nog wel omschakelen naar de solaredge multi variant denk ik.
Ik krijg nu al zo goed als niets voor teruglevering. Dus dit is mijn bijdrage aan grid-stabiliteit.

Ik gebruik ook de multi.

  • Gronaldo
  • Registratie: Oktober 2005
  • Laatst online: 20:31
@PHDNovice Mooi werk. Ziet er goed uit.

  • Jasper79
  • Registratie: December 2015
  • Laatst online: 07:10
Persoonlijk zou ik de export op zo'n 200W willen hebben. Ik heb een Thuisbatterij en die gaat laden bij overschot echter is hij te dom (momenteel) om dat op commando te doen.


Daarom dacht ik, 200W teruglevering die de batterij dan gaat gebruiken om te laden waardoor de zonnepanelen weer 200W gaan terugleveren etc. Net zo lang dat de batterij aan z'n limiet zit.

  • John5519
  • Registratie: Oktober 2026
  • Laatst online: 14-10 13:30
Hallo Robert,

Ik ben bezig te proberen om mijn terug levering op nul te zetten, maar wel uiteraard mijn eigen gebruik van de zonnepanelen te halen. Ik had gelezen dat dit mogelijk is via P1 en de slimme meter.

Van Solaredge support werd mij dat afgeraden, maar werd de Energy Meter with Modbus Connection SE-WND-3Y400-MB-K2 aanbevolen. Tja...de slager prijst uiteraard ook zijn eigen vlees aan, maar even zo goed kan het waar zijn

Om de besturing met de P1 voor elkaar te krijgen probeerde ik dat met chatgpt, maar uiteindelijk belande ik in een soort loop, waarmee ik niet verder kwam.

De modbus energie meter heb ik wel overwogen, maar die heeft forse voelers om de 3 fase draden in de meterkast, buitenwerks 6x6 cm...dat kan ik in de bestaande kast nauwelijks kwijt.

Na het tweakers forum door gelezen te hebben, zie ik dat onder andere jij je hier behoorlijk mee hebt bezig gehouden, en kun je mij misschien zeggen of de P1 methode een heilloze weg is. Alle andere commentaren van lezers zijn uiteraard ook welkom.

Mijn solaredge SR4000 is een oudje uit 2017, en heeft geen verdere firmware update mee na ver. 3.2537. Nieuwere versies schijnen overigens beperktere software wijzigingsmogelijkheden te hebben.

[ Voor 5% gewijzigd door John5519 op 13-10-2026 19:20 ]


  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 07:15

Mrlten

Premium Deluxe Plus

@John5519 Je kan het zelf bouwen door of een SolarEdge energie meter na te bootsen, of zoals @PHDNovice continu de power limit van de omvormer aan te passen.

Een derde optie die je kunt overwegen; er zijn P1 meters die een SolarEdge energie meter kunnen nabootsen, dan hoef je zelf niet aan de slag met scripts/automatisering. Eentje die ik zo uit mijn hoofd weet is die van Elgris: P1 EM Smart meter – elgris – THE SMART METER Je zult dan wel een (modbus) kabel moeten trekken tussen de P1 meter en de omvormer.

Maar ik weet niet of deze opties (of de andere genoemd in dit topic) gaan werken met jouw wat oude omvormer.

Ik heb trouwens zelf een SolarEdge energie meter nagebootst hier thuis en dat draait meer dan prima :)

  • John5519
  • Registratie: Oktober 2026
  • Laatst online: 14-10 13:30
Hallo Mriten,

hartelijk dank voor je reactie.

Het schijnt dat mijn inverter wat beperkingen heeft doordat deze op oudere firmware draait,
versie 3.2537 en deze niet te updaten is, waardoor sommige opties niet werken.
Maar ik ga zeer zeker jouw derde optie bekijken. Misschien past het met mijn inverter.

[ Voor 3% gewijzigd door John5519 op 13-10-2026 19:22 ]


  • PHDNovice
  • Registratie: December 2009
  • Laatst online: 07:18
@Mrlten Die Elgris meter lijkt me een erg interessante oplossing.

@John5519 Volgens de SolarEdge documentatie over SunSpec supported inverters:

Depending on their type, SolarEdge devices may be configured in either of the two ways:
  • Using SolarEdge Go mobile application
  • Using the LCD
All SolarEdge inverters with SolarEdge Go configuration are SunSpec-supported.

SolarEdge inverters with the LCD that have Firmware version 3.xxxx and above only are SunSpecsupported.

  • PHDNovice
  • Registratie: December 2009
  • Laatst online: 07:18
.

[ Voor 99% gewijzigd door PHDNovice op 13-10-2026 20:28 ]


  • edwin2021
  • Registratie: Oktober 2020
  • Laatst online: 07:04
Mrlten schreef op dinsdag 13 oktober 2026 @ 18:57:
@John5519 Je kan het zelf bouwen door of een SolarEdge energie meter na te bootsen, of zoals @PHDNovice continu de power limit van de omvormer aan te passen.

Een derde optie die je kunt overwegen; er zijn P1 meters die een SolarEdge energie meter kunnen nabootsen, dan hoef je zelf niet aan de slag met scripts/automatisering. Eentje die ik zo uit mijn hoofd weet is die van Elgris: P1 EM Smart meter – elgris – THE SMART METER Je zult dan wel een (modbus) kabel moeten trekken tussen de P1 meter en de omvormer.

Maar ik weet niet of deze opties (of de andere genoemd in dit topic) gaan werken met jouw wat oude omvormer.

Ik heb trouwens zelf een SolarEdge energie meter nagebootst hier thuis en dat draait meer dan prima :)
Hoe boots je een solaredge energie meter na?

  • PHDNovice
  • Registratie: December 2009
  • Laatst online: 07:18
Ondertussen is mijn vorige HA script aardig achterhaald. Hier de laatste versie. Zoals altijd bevat de script vééél meer commentaar dan code.

Feedback en vragen zijn altijd welkom :-)
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
# Based on an automation script shared by Gronaldo on Tweakers :-)
# Gronaldo's automation works fine, but I made some optimizations and added a few comments ;-)

# Goals and automation philosophy of this automation:
#   - Maximize self-consumption by minimizing export to the Grid.
#   - Mitigation of common integration or Inverter errors.
#   - Automation should do nothing if there is nothing meaningful to do. (Be Lazy)
#   - Code readability above efficiency in speed or size.
#   - Main steps visible on a DashBoard (In Progress)
#   - Automation fully documented.
#   - Thoughts & Options mentioned.
#
# Note: This Automation can't compete with the native SolarEdge solution including InLine Meter as that will operate near real-time.

alias: SolarEdge Dynamic Export Limitation
description: Dynamic control of SolarEdge export limit

# [POSSIBLE TRIGGER STRATEGIES]
# A: Often used strategy is to use random trigger every x seconds
#   - When triggered currently known Grid Power and PV Power are used for calculations. Depending on polling intervals these values can already be > 3sec old and 5 sec apart.
#   - It does technically work somehow, but it's the worst possible strategy.
#   - Polling: (P1 5s / ModBus 5s)
# B: Trigger on the P1 meter.
#   - This guarantees that the actual Grid Power value is used for the calculations and that only the PV Power value can be dated.
#   - Use threshold option to define deadband.
#   - Polling: (P1 5s / ModBus 5s)
# C: Trigger on the P1 meter & Update PV Power value.
#   - Once triggered the first action would be to refresh the PV Power value via (button.garage_solaredge_refresh). This is the most logical strategy.
#     However, it seems the HA orchestrator introduces accumulative delays when repeated rendering it less usable. (Self-Protection?)
#        - Crated an automation to measure these accumulative delays.
#   - Polling: (P1 5s / ModBus 300s)
# D: [CURRENT STRATEGY] Same as C but with 2sec ModBus interval.
#   - With 2sec interval, the PV Power value is max 2sec old (Reasonable compromise)
#     - 1sec interval fails (for me) as soon as APL value gets changed.
# E: (To Test) Trigger based on changing PV Power value.
#   - Check if forcing update of P1 sensors gives the same delay penalties. (It does)

# [CURRENT TRIGGER]
# The P1 meter value is read every 5s by the standard HomeWizard integration, so this determines the interval of this Automation.
# The Automation is only triggered if the current Grid Power goes outside the given DeadBand. No triggers are fired while within the DeadBand.
#   - This guarantees that the Grid Power value is actual.
#   - Deadband values can be chosen as desired as long as the gap is wider than the smallest Power Delta of your Inverter.
#   - A wider deadband means less APL corrections are required.
# Note: When home appliances are running the power draw can fluctuate a lot with many small changes. So it's better to keep the DeadBand a bit wide.
# Note: If APL is set to say 2500W it will actually drift +/- 0,1% (+/- 25W) on my inverter.

triggers:
  - trigger: power.changed
    target:
      entity_id: sensor.p1_meter_power
    options:
      threshold:
        type: outside
        value_min:
          active_choice: number
          unit_of_measurement: W
          number: -100
        value_max:
          active_choice: number
          unit_of_measurement: W
          number: 0

conditions:

  # [OPTIONAL / DASHBAORD]
  # Boolean Helper added as a condition so the automation can be enabled/disabled from the dashboard via toggle switch.
  #   Note: Disabling will not restore APL to 100% (By design for testing purposes)
  #
  - condition: state
    entity_id: input_boolean.solaredge_export_beperking_enabled
    state:
      - "on"

  # [CONDITION] Automation will not run if the Inverter sensor states are unavailable due to Integration or Inverter Error
  #   - This prevents calculations with missing sensor data.
  # Note: ModBus Multi updates all sensors in one burst: if AC Power is available, all other entities are available too.
  #
  - condition: template
    value_template: >
      {{ states('sensor.garage_solaredge_ac_power') not in ['unavailable', 'unknown', 'none'] }}

  # [CONDITION] Automation will only run when the inverter has status "THROTTLED" or "MPPT".
  #   - It would be pointless to run if the inverter has the status "SLEEPING".
  #
  - condition: state
    entity_id: sensor.garage_solaredge_status
    state:
      - I_STATUS_THROTTLED
      - I_STATUS_MPPT

actions:

  # Get ACTUAL AC Power value from Inverter. (The biggest challenge here)
  #   - To be able to make an accurate calculation, the ACTUAL AC_Power value from the Inverter is required. 

  # [REFRESH STRATEGY OPTIONS]
  #   => This is the biggest challenge for this Automation.
  #
  #   A: Refresh now & wait for change doesn't work as needed. (ModBus Polling interval lowerd to 100s)
  #     -  HA doesn't seem to like out of band reads/writes.
  #   B: Use wide DeadBand to minimize updates and use Refresh now anyhow.
  #     - Still to be tested.
  #   C: [CURRENT STRATEGY] Polling Interval reduced to 2s and accept PV_Power value can be up to 2sec old.
  #     - 1s interval breaks when starting to change APL values (2sec is stable on my system)
  #
  #   D: Use Shelly Pro EM XYZ to get PV current per phase:
  #     - Data is realtime as data is pushed to HA.
  #     - Only 1 phase needs to be monitored as power per phase is near identical.



  # ==================================================================
  #[STRATEGY A] Doesn't work as expected :-(
  #   - Left here for further review/follow-up
  #
  # Capture the current last_updated timestamp before the update_entity call.
  #   - After the update we wait until this value changes, ensuring ModBus Multi has fetched a fresh values before all calculations.
  #
  #- variables:
  #    PV_Last_Updated: "{{ states.sensor.garage_solaredge_ac_power.last_updated | as_timestamp }}"

  # Force an update of the current PV power so we can calculate with up-to-date values.
  #   - ModBus Multi updates all sensors simultaneously in one ModBus-poll burst.
  #
  #- action: button.press
  #  target:
  #    entity_id: button.garage_solaredge_refresh

  # [WAIT FOR UPDATE]
  # Wait until last_updated changes: proof that the new values have been received.
  #   - Timeout of 2000ms as fallback for a slow bus; continue_on_timeout: true so the automation does not stop on timeout but continues with the last known values.
  #   - In theory this (should) complete faster than 1000ms.
  #
  # [ISSUE]: Quite often the sensor is not updated within 2000ms. Delays can even go above 6sec.
  #
  #- wait_template: "{{ states.sensor.garage_solaredge_ac_power.last_updated | as_timestamp > PV_Last_Updated }}"
  #  timeout:
  #    milliseconds: 2000
  #  continue_on_timeout: true
  # ==================================================================

  - variables:

     # For the calculations -50W Grid Power (export) is used as the target value. Right in the middle of the Deadband.
     # The DeadBand as defined within the Trigger and the width need to be matched (DeadBand > Min. Step)
     # 
     Targeted_Grid_Power: -50

     # The inverter's maximum power is required for calculation the new APL value. The rated power is often ~105% of nominal. So SE5K = 5250W.
     # At an APL setting of 50%, the inverter's power output will be limited to ~2625W.
     # The smallest possible APL step is therefor 52.5W (1% of 5250).
     #
     Inverter_Power_Rating: 5250
     
     # Active Power Limit can be set between 0% and 100%.
     #    Note: Min set to 1% as the Inverter seems to stick to 0% for a long time once it gets there for some reason.
     #    Note: When Inverter Status shows "THROTTLED", the inverter is actually limiting power output.
     #
     Min_APL_Limit: 1
     Max_APL_Limit: 100

     # According to SE documentation every inverter can switch between 0% and 100% within 2s.
     # Max_APL_Delta can be limited here if required. Intentionally set to 99% here for testing purposes (effectively disabled).
     #
     Max_APL_Delta: 99

     # Dynamic minimum PV value.
     # Not essential, but a safeguard if calculations go wrong so the PV Power stays > standby consumption of the house.
     #  Note: 4% (~210W) chosen as this matches the minimum power consumption of my house when absent.
     #  Note: Same can actually be achieved by setting (Min_APL_Limit = 4). (Future Optimalization?)
     #
     Min_PV_Power: "{{ Inverter_Power_Rating * 0.04 }}"

     # [ACTUAL CALLCULATIONS]
     # The actual calculations for this automation are here below. Calculations could be combined, but that would reduce readability.
     #  Note: Script efficiency isn't relevant as it runs only once per 5 sec.
 
     # Get the current Grid Power from the P1 meter. 
     #  Note: The HomeWizard meter returns a negative value when feeding back to the grid.
     #
     Current_Grid_Power: "{{ states('sensor.p1_meter_power') | float(0) }}"

     # Get current APL Limit
     # [V5 Safety #1] Fallback changed from float(0) to float(100).
     # With float(0) the Max_APL_Delta clamp became [-99, 99], covering the full APL range and
     # completely disabling rate limiting. float(100) = no restriction, safest unknown state.
     #  - Statistically (in my setup) APL is just under 10% most of the time during the day. So, 10% would be a more suitable fallback value.
     #
     Current_APL_Limit: "{{ states('number.garage_solaredge_active_power_limit') | float(100) }}"

     # Get current PV Power
     #
     Current_PV_Power: "{{ states('sensor.garage_solaredge_ac_power') | float(0) }}"

     # Calculate the PV Power correction needed to reach the Targeted Grid Power.
     #  Note: With a lot of appliances (Car charging) running, don't be surprised if (Required Power >> Inverter_Power_Rating)
     #
     Required_PV_Power_Delta: "{{ Current_Grid_Power - Targeted_Grid_Power }}"

     # Calculate how much power the inverter must deliver to match the target export.
     #  Note: Required_PV_Power can never go negative due to max() (Mitigation)
     #  Note: Can never go lower that Min_PV_Power.
     #
     Required_PV_Power: "{{ max(Min_PV_Power, (Current_PV_Power + Required_PV_Power_Delta) | float(0)) }}"

     # Calculate what the new APL limit should be in x.xxx%.
     #
     Raw_Target_APL_Limit: "{{ Required_PV_Power / Inverter_Power_Rating * 100 }}"

     # Ensure the APL limit always stays between defined Min & Max APL Limits.
     #
     Clamped_Target_APL_Limit: "{{ clamp(Raw_Target_APL_Limit | float(0), Min_APL_Limit, Max_APL_Limit) }}"

     # Ensures the maximum APL delta per cycle is limited to the defined Max_APL_Delta value
     #  - Now set to 99% effectively disabling this step.
     #
     Stepped_APL_Limit: "{{ clamp(Clamped_Target_APL_Limit, Current_APL_Limit - Max_APL_Delta, Current_APL_Limit + Max_APL_Delta) }}"

     # New APL_Limit rounded to whole percent.
     #
     New_APL_Limit: "{{ Stepped_APL_Limit | round(0) }}"

     # [OPTIONAL / DASHBAORD]
     #  - APL Delta indicator.
     #
     New_APL_Delta: "{{ New_APL_Limit - Current_APL_Limit }}"

  # [CONDITION] Automation will only execute if there is actualy a change to the APL limit.
  #     - Prevents unnecessary Modbus load and wear on the commit counter.
  #
  - condition: template
    value_template: "{{ (New_APL_Limit - Current_APL_Limit) | abs >= 1 }}"

  # [CONDITION] Automation will only increase APL_Limit if there is actually more PV Power available.
  #     - Inverter Status MPPT --> Inverter is already providing max PV Power (Increasing APL% would be pointless)
  #     - Inverter Status THROTTLED & APL<100% --> Additional power can be delivered. (How much can't be determined as far as I know)
  # Note: Decreasing APL_Limit remains obviously possible in all cases.
  #
  - condition: template
    value_template: "{{ not (states('sensor.garage_solaredge_status') == 'I_STATUS_MPPT' and Current_APL_Limit < 100 and New_APL_Limit > Current_APL_Limit) }}"

  # [EXECUTE ACTIONS]
  # Execute actions with the calculated variables.
  #

  # [UPDATE APL LIMIT]
  # Update the APL limit to the new value.
  #   Note: After changing the APL limit a commit is required to make it effective. (See below)
  #
  - target:
      entity_id: number.garage_solaredge_active_power_limit
    data:
      value: "{{ New_APL_Limit }}"
    action: number.set_value

  # [OPTIONAL / DASHBAORD]
  #   - HeartBeat indicator on DashBoard. (A separate automation turns the boolean off again after 500ms, so visible as a short pulse.)
  #   - Show Required APL Delta
  #   - Show Required PV Power
  #   - Show Required PV Delta
  #
  - action: input_boolean.turn_on
    target:
      entity_id: input_boolean.solaredge_apl_heartbeat

  - target:
      entity_id: input_number.solaredge_apl_delta
    data:
      value: "{{ New_APL_Delta }}"
    action: input_number.set_value

  - target:
      entity_id: input_number.solaredge_required_pv_power
    data:
      value: "{{ Required_PV_Power }}"
    action: input_number.set_value

  - target:
      entity_id: input_number.solaredge_required_pv_delta
    data:
      value: "{{ Required_PV_Power_Delta }}"
    action: input_number.set_value

  # [AUTOMATION COOLDOWN]
  #   - This delay actually just blocks the starting of an other instance to ensure the Inverter has time to change it's power output. 
  # P1 updates every 5s so no trigger should arrive sooner.
  #   - Per SunSpec Technical Note (Appendix B):
  #     - Commit reaction time < 1.5s
  #     - Active power < 1s.
  # Without this delay the cycle completes in ~2.5s, leaving ~2.5s before the next trigger well above the 1.5s reaction time. Safe to remove; kept for conservative margin.
  #
  - delay:
      seconds: 3

# Single mode will block another new instance from starting while the current session is still running.
#
mode: single

  • Mrlten
  • Registratie: Februari 2005
  • Laatst online: 07:15

Mrlten

Premium Deluxe Plus

edwin2021 schreef op dinsdag 13 oktober 2026 @ 20:29:
[...]

Hoe boots je een solaredge energie meter na?
Met dit Python project: nmakel/solaredge_meterproxy: Modbus proxy for SolarEdge inverters and unsupported kWh meters

Met hoe dat project precies geïnstalleerd en geconfigureerd moet worden kan ik je helaas niet helpen. Ik heb de code wel als voorbeeld gebruikt voor mijn eigen software en ik ga er vanuit dat dat project ook prima zou moeten werken.

  • edwin2021
  • Registratie: Oktober 2020
  • Laatst online: 07:04
Mrlten schreef op dinsdag 13 oktober 2026 @ 21:01:
[...]

Met dit Python project: nmakel/solaredge_meterproxy: Modbus proxy for SolarEdge inverters and unsupported kWh meters

Met hoe dat project precies geïnstalleerd en geconfigureerd moet worden kan ik je helaas niet helpen. Ik heb de code wel als voorbeeld gebruikt voor mijn eigen software en ik ga er vanuit dat dat project ook prima zou moeten werken.
Thnx!
Pagina: 1