APS omvormers uitlezen en regelen zonder ECU-R

Pagina: 1
Acties:

  • Scatman_II
  • Registratie: December 2001
  • Laatst online: 13:23

Scatman_II

R9500 Pro >:)

Topicstarter

Intro

Ik heb al enige tijd mijn Hoymiles inverters via een custom, backwards geengineerd project van een Duits forum volledig aanstuurbaar in Home Assistant hangen. Dwz zonder een dure communicatie unit, maar met een ESP32 en een antenne voor samen €10.

Nou kon ik jaren geen vergelijkbaar project vinden voor APSystems, en begint het met dynamisch contract wel wat vervelend te zijn dat de APSystems panelen (6 stuks op pal zuid) met mijn oude ECU-R (verkeerde model) niet af te schakelen zijn.

Maar hoera! Er blijkt een vergelijkbaar project te bestaan voor APSystems op basis van een esp32 en zigbee antenne!
Het is NIET van mij, het is hier te vinden (ESP32 variant):
https://github.com/patien...nverters/wiki/02-HARDWARE

Dit draait inmiddels een maandje bij mij met de APS QS1 en YC600 inverters. De koppeling met Home Assistant zorgt ervoor dat bij negatieve dynamische energieprijzen de omvormers volledig naar hun minimum worden teruggeregeld, en als de prijs weer positief wordt weer gaan opwekken.

Er zijn smaakjes: esp8266 (alleen uitlezen) of ESP32 danwel Raspi Zero om ook de limieten on the fly in te stellen!

Deze startpost beschrijft mijn ervaringen met het project, maar gebruikt vooral de geweldige Wiki van dit project voor de instructies van de ontwikkelaars.
Daar staan ook plaatjes van de web-UI die wordt aangeboden: https://github.com/patien...2-read-APS-inverters/wiki

Wat kan deze DIY APS ECU?

  • APS ECU functionaliteit (lokaal only, geen app) met een zelfbouw ECU van €15
  • Zelfbouw ECU lokaal uitlezen met domotica software, zoals Home Assistant
  • Met de ESP32 of Raspberry pi ook APS omvormers terugregelen tot een minimum van 20 Watt per kanaal en weer terugschakelen naar maximale productie.
Let op, Wat verlies je dan (zolang de APS ECU-R of -C niet meer verbonden is):
  • Geen connectiviteit meer met de APSystems app en cloud service
Bij mijn weten is het niet mogelijk om twee ECU apparaten tegelijk met de omvormers te verbinden. Maar dit is niet expliciet beschreven. Mijn kennis van Zigbee is niet voldoende om te begrijpen of bijv. 2 coordinators met hetzelfde ID wel asynchroon informatie zouden kunnen opvragen.

Heb je al een ECU-R of -C en wil je die lokaal uitlezen, dan moet je hier zijn: APS ecu-r lokaal data uitlezen (projectje)

Welke spullen heb je nodig?

Shopping list
De componenten die ik gebruikt heb komen van Alie, specifiek deze:
  1. Zigbee module: "TENSTAR CC2530 Zigbee Module UART Draadloze Core Board Development Board CC2530F256"
  2. ESP32 unit: ESP32 WROOM-32 Development Board TYPE-C CH340C/ CP2102 WiFi+Bluetooth Ultra-Low Power Consumption Dual Core Wireless Module (USB C versie, directe link is dood helaas)
  3. Jumper wires female-female (de ontwikkelaar raadt aan om te solderen, om Zigbee problemen te voorkomen)
  4. lasdoos om de onderdelen in te stoppeni
Dit kostte mij samen <€15.
Hoe ziet het er dan uit?
Hardware hier in de wiki, of hier mijn eigen lasdoosje en de webinterface, er is ook een youtube filmpje van de ontwikkelaar..

Flashen van de Zigbee module, flashen van de ESP32

Zoals gezegd zijn er varianten van dit project voor ESP8266 (beperkte functionaliteit), ESP32, en Raspberry Pi.
Ik heb zelf alleen ervaring met de ESP32 variant.

Stappen voor het flashen:
De Zigbee module heeft geen USB en kan op verschillende manieren geflasht worden. Ik heb de ESP32 eerst gebruikt als programmer om de Zigbee module te flashen, en heb daarna de ESP32 geflasht met de ECU code die als .bin beschikbaar is op github met een link op de startpagina.
Let op: Voor het flashen moet je andere draden verbinden tussen Zigbee unit en ESP32, dan daarna tijdens het gebruik als ECU. Dit staat beschreven in de Wiki: https://github.com/patien...ers/wiki/06-ZIGBEE-MODULE

De Wiki beschrijft niet in detail hoe je kunt flashen. Ik vond deze online tool geweldig handig hiervoor:Het lukte mij wel om de Zigbee antenne te flashen, maar niet direct goed om de .bin file naar de ESP32 te flashen met deze tool.
Hiervoor heb ik de Arduino IDE gebruikt. De stappen zijn dan:
  1. Arduino IDE portable zip downloaden (hoef je niet te installeren) https://www.arduino.cc/en/software/
  2. ESP32 toevoegen in de 'board manager' van de Arduino IDE: https://docs.espressif.co...en/latest/installing.html
  3. Flashen van de ESP32 met de Example sketch "Webupdate OTA" --> Hierdoor wordt de ESP32 een webserver waar je de .bin file kunt uploaden, dan flasth de ESP32 zichzelf.

Hardware check & koppelen APS inverters aan de DIY ECU

Controleer dat de bedrading klopt (nogmaals: deze is anders dan bij het flashen): https://github.com/patien...erters/wiki/ZIGBEE-MODULE
Controleer of de ESP32 aan je thuisnetwerk hangt, bijvoorbeeld in je router of met een netwerk discovery tool als "Fing" (alternatief welkom), en browse naar het IP van de ESP32.
Wiki hoe je de Zigbee-ESP32 connectie vanuit de webinterface kunt checken: https://github.com/patien.../09-TESTING-AND-DEBUGGING
Pair problemen?
Dit is blijkbaar een lastig deel.
Bij mij n YC600 was het voldoende om de APS ECU-R uit te zetten, de inverter IDs in te vullen in de ESP32 web-interface, en een paar keer op pair te drukken. Voor mijn QS1 die moeilijk deed heb ik de groep (in de meterkast) van de inverter een keer uit/aan gezet, even gewacht en vaak geprobeerd. Ik heb ook de ESP32 nog een keer gepowercycled.
De Wiki geeft nog de volgende tip over het ECU ID instellen: https://github.com/patien...ters/wiki/TROUBLESHOOTING "change the ecu-id to D8A3011B9780 , this ID has proven to work.".
Laten we ervaringen delen.

Domotica integratie - Domoticz / Home Assistant

De ontwikkelaar gebruikt zelf Domoticz en beschrijft dat (bondig) in de Wiki: Wiki
Mijn post met mijn Home Assistant integratie is hier: https://gathering.tweakers.net/forum/view_message/85150960

Help ik kom er niet uit, wat nu?

To do / graag input gevraagd voor startpost
  1. Welke omvormers werken nog meer, moet je dan ergens op letten?
  2. Wat is de beste methode om omvormers te koppelen, dit lijkt trial & error nu
  3. Kan de webtool https://mt.xyzroe.cc/ toch wel gebruikt worden om de ESP32 te flashen, zo ja hoe? Of is er sowieso een betere / snellere manier? (Arduino Web IDE, andere alles in 1 flashtool?)
Disclaimer
Ik ben NIET de ontwikkelaar van dit project. Ik weet ook NIET of de inverters door frequente lees/schrijfcommando's kapot kunnen gaan, of dat op enige andere manier je inverters om zeep geholpen kunnen worden, garanties vervallen doordat de APS ECU niet meer verbonden is (voor externe monteur monitoring etc) - dus dit project uitvoeren is geheel op eigen risico.

[update 22/05: grote overhaul omdat deze post nu de startpost van dit nieuwe topic is geworden]

[ Voor 106% gewijzigd door Scatman_II op 22-05-2026 20:33 ]

OC / CM - Begint eer ge Bezint


  • Nibblebit
  • Registratie: December 2020
  • Laatst online: 10:17

Nibblebit

It's a four-bit aggregation

Ja precies, dat is alleen uitlezen maar echt aansturen van de microinverters is de vraag of dat ook lukt met de ESP32-ECU

Don't be naive, you are not the customer - you are the product!


  • Aengineering
  • Registratie: Oktober 2005
  • Laatst online: 13:35
ik heb ESP32-ECU ook gebouwd met esp32 maar krijg mijn omvormers niet gekoppeld ik ben benieuwd naar jullie ervaringen. hopelijk inspiratie om verder te gaan. apparaat lijkt wel goed te werken maar de omvormers geven geen handshake. :-(

  • Scatman_II
  • Registratie: December 2001
  • Laatst online: 13:23

Scatman_II

R9500 Pro >:)

Topicstarter
Aengineering schreef op maandag 23 maart 2026 @ 11:33:
ik heb ESP32-ECU ook gebouwd met esp32 maar krijg mijn omvormers niet gekoppeld ik ben benieuwd naar jullie ervaringen. hopelijk inspiratie om verder te gaan. apparaat lijkt wel goed te werken maar de omvormers geven geen handshake. :-(
Ik heb de ESP32 en zigbee antenne nog niet binnen dus kan je nog niet helpen. Maar ik had zelf ook mijn twijfels of de al aan de ECU gekoppelde inverters (een YC600 en een QS1 in mijn geval) niet eerst weer ontkoppeld zouden moeten worden.
Misschien dat het uitschakelen van de ECU-R, en daarna powercyclen (de groep even uit, en daarna weer aan - als de panelen ook wat opwekken!) van de inverters helpt?

Ik weet niet hoe actief de issues bij de git pagina zijn, maar bij de 3 projecten (ESP8266, ESP32 en RaspiZero versies) daar zoeken naar iemand met hetzelfde probleem kan ook nieuwe ideeën geven.. succes!

OC / CM - Begint eer ge Bezint


  • Scatman_II
  • Registratie: December 2001
  • Laatst online: 13:23

Scatman_II

R9500 Pro >:)

Topicstarter
Nibblebit schreef op maandag 23 maart 2026 @ 11:02:
Ja precies, dat is alleen uitlezen maar echt aansturen van de microinverters is de vraag of dat ook lukt met de ESP32-ECU
Volgens de functielijst dus wel. Je kunt de power per inverter terugregelen tot 20 watt meen ik (kan per paneel zijn, gisteravond gelezen, weer vergeten).
Ik heb nu voor mijn Hoymiles een script in home assistant dat de inverts een 'soft off' signaal geeft en dat werkt goed, hopelijk kan ik dan ook de APS automatisch terugregelen, en weer op regelen zodra de tarieven omhoog gaan.

Nog even teruggezocht, zie link uit mijn vorige post:
As from version ESP32-ECU-v1_3 we have the opportunity to set a maximum output for an inverter. This means when we set max power to 20 (which is the minimum value), each channel produces max 20W. This means total inverter 40W.
Minimaal 20W per kanaal dus.

[ Voor 21% gewijzigd door Scatman_II op 23-03-2026 19:29 ]

OC / CM - Begint eer ge Bezint


  • Aengineering
  • Registratie: Oktober 2005
  • Laatst online: 13:35
Bijde :P ik moet wel zeggen dat de focus bij mij meer licht op opslag Boiler, Accu en dynamische tarieven, maar mocht ik daar niet voldoende kwijt raken is dit project handig.

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

Afbeeldingslocatie: https://tweakers.net/i/7x4KHeb12x-nTrqxePw61ExF9AU=/x800/filters:strip_icc():strip_exif()/f/image/0f1ThZGCoJtEa9bGiLTL266q.jpg?f=fotoalbum_large

[ Voor 10% gewijzigd door Aengineering op 28-03-2026 20:22 ]


  • Aengineering
  • Registratie: Oktober 2005
  • Laatst online: 13:35
het wil me niet lukken ik heb een inverteren vrijgemaakt maar verbind niet.
Afbeeldingslocatie: https://tweakers.net/i/NL3PN2XqG_bxpinKyglZzLUmMkM=/x800/filters:strip_icc():strip_exif()/f/image/ziZfiykcJzm9gBKevzLVr3mC.jpg?f=fotoalbum_large

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

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

Afbeeldingslocatie: https://tweakers.net/i/oNfbxuY7LKMsFZ6Ah8mvgr3-UAY=/x800/filters:strip_icc():strip_exif()/f/image/8eFAQpnMKIPaCHNxEA5ZTZUO.jpg?f=fotoalbum_large

Afbeeldingslocatie: https://tweakers.net/i/0hC3tY_FoNGGE7P_t0PO0fmEYaA=/800x/filters:strip_icc():strip_exif()/f/image/YdaTVlDHlS0amUryhWNyV4lQ.jpg?f=fotoalbum_large

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

[ Voor 8% gewijzigd door Aengineering op 30-03-2026 18:53 ]


  • Scatman_II
  • Registratie: December 2001
  • Laatst online: 13:23

Scatman_II

R9500 Pro >:)

Topicstarter
Mijn pogingen van het ESP32 uitlees/aanstuurproject.
Ik heb inmiddels ook wat spulletjes binnen (CC2530 en een Wemos ESP32) en ben wat verder gaan lezen in de documentatie. De 'nood' is ook wat hoger, met dynamische prijzen morgen van -37 cent en inverters die niet vanzelf uitgaan :P
Ik ben nog een beetje aan het verdwalen in het flashen van de CC2530 (dat kan op tig manieren maar allemaal zijn ze nog wat complex voor mij om te doorgronden), en hoe je daarna de inverters moet pairen.

Wat ik dus dusver heb gedestilleerd is, flashen van de CC2530 met custom firmware is nodig. Dat kan [edi] met de geweldige online tool onderin dit bericht! op verschillende manieren:
1. met een arduino --> programmaatje op een ESP / Arduino dat ccloader heet
2. met een raspberry pi --> programmaatje op een raspberry pi dat flash_cc2531 heet
3. met een windows pc --> een tool die z-tool heet
Van geen van deze opties staat uitleg op deze git (googel het maar, staat erbij ;) ) dus dat is nog wat uitzoekwerk.

Daarna moet de ESP32 zelf geflasht worden, dit lijkt redelijk toe recht aan, er kan een .bin geflasht worden over OTA. Dus eerst een OTA scriptje naar de ESP32 uploaden, en daarna zou dat deel makkelijk moeten zijn..


Pairen van de inverters kan daarna via meerdere manieren lijkt het:
1. Pairen via de web UI die dan op de ESP32 draait (maar blijkbaar lukt dat nog niet goed?
2. Pairen via de z-tool software die in deze package zit CC25xx_firmware op dit deel van de git

eh dus bovenstaande maar eens uitproberen nu :o

Update:
stapjes verder gekomen, met de fantastische tool https://mt.xyzroe.cc/ ! Instructies hiervoor: https://github.com/xyzroe.../docs/how-to/cc_loader.md
De tool zegt zowel de ESP32 als de CC2530 te kunnen flashen, geniaal.

Update 2: Flashen zou gelukt moeten zijn, maar de ESP verbindt niet met wifi en maakt ook geen AP. Nu via de lange weg nog eens proberen..

Update3:
Module min of meer werkend gekregen met werkende ESP32 webinterface (via Arduino IDE de Webupdate OTA geflasht, daarmee de .bin) en, op het oog, werkende zigbee connectie. Alleen de inverter (eerste test met de YC600) 'praat' nog niet. En nu is de zon ook weg, later verder proberen..

[ Voor 8% gewijzigd door Scatman_II op 25-04-2026 20:27 ]

OC / CM - Begint eer ge Bezint


  • Scatman_II
  • Registratie: December 2001
  • Laatst online: 13:23

Scatman_II

R9500 Pro >:)

Topicstarter
Scatman_II schreef op zaterdag 25 april 2026 @ 15:26:
[...]

Mijn pogingen van het ESP32 uitlees/aanstuurproject.
Ik heb inmiddels ook wat spulletjes binnen (CC2530 en een Wemos ESP32) en ben wat verder gaan lezen in de documentatie. De 'nood' is ook wat hoger, met dynamische prijzen morgen van -37 cent en inverters die niet vanzelf uitgaan :P
Ik ben nog een beetje aan het verdwalen in het flashen van de CC2530 (dat kan op tig manieren maar allemaal zijn ze nog wat complex voor mij om te doorgronden), en hoe je daarna de inverters moet pairen.

Wat ik dus dusver heb gedestilleerd is, flashen van de CC2530 met custom firmware is nodig. Dat kan [edi] met de geweldige online tool onderin dit bericht! op verschillende manieren:
1. met een arduino --> programmaatje op een ESP / Arduino dat ccloader heet
2. met een raspberry pi --> programmaatje op een raspberry pi dat flash_cc2531 heet
3. met een windows pc --> een tool die z-tool heet
Van geen van deze opties staat uitleg op deze git (googel het maar, staat erbij ;) ) dus dat is nog wat uitzoekwerk.

Daarna moet de ESP32 zelf geflasht worden, dit lijkt redelijk toe recht aan, er kan een .bin geflasht worden over OTA. Dus eerst een OTA scriptje naar de ESP32 uploaden, en daarna zou dat deel makkelijk moeten zijn..


Pairen van de inverters kan daarna via meerdere manieren lijkt het:
1. Pairen via de web UI die dan op de ESP32 draait (maar blijkbaar lukt dat nog niet goed?
2. Pairen via de z-tool software die in deze package zit CC25xx_firmware op dit deel van de git

eh dus bovenstaande maar eens uitproberen nu :o

Update:
stapjes verder gekomen, met de fantastische tool https://mt.xyzroe.cc/ ! Instructies hiervoor: https://github.com/xyzroe.../docs/how-to/cc_loader.md
De tool zegt zowel de ESP32 als de CC2530 te kunnen flashen, geniaal.

Update 2: Flashen zou gelukt moeten zijn, maar de ESP verbindt niet met wifi en maakt ook geen AP. Nu via de lange weg nog eens proberen..

Update3:
Module min of meer werkend gekregen met werkende ESP32 webinterface (via Arduino IDE de Webupdate OTA geflasht, daarmee de .bin) en, op het oog, werkende zigbee connectie. Alleen de inverter (eerste test met de YC600) 'praat' nog niet. En nu is de zon ook weg, later verder proberen..
Eerste succesjes gehaald met de ESP32-ECU opstelling - de inverters (YC600 en QS1 met 6 panelen) zijn verbonden en uit te lezen!

De ECU-R is uit het stopcontact. De inverters moesten een paar keer gepowercycled worden voordat ze met de ESP32 wilden verbinden (dat heb ik met de QS1 zeker 20x moeten proberen, met 3x powerylen of zo..).

Er is geen plug en play home assistant integratie dus dat is nog puzzelen met mqtt of rest. Ook het afschakelen (terug naar 20W per kanaal) van de panelen heb ik nog niet geprobeerd, eerst maar even kijken of dit stabiel genoeg draait zo.

WebUI & fysieke opstelling met ESP32 wroom (€3,90) en zigbee antenne CC2530 (€2,70) + lasdoosje (€4 8)7), dus een ECU voor totaal ~€11 (en wat uurtjes uitzoekwerk..).
Afbeeldingslocatie: https://tweakers.net/i/DBYmNn_-sM2iSk0QwJj7OCNObu4=/800x/filters:strip_exif()/f/image/bpCZbqUq1SP8broPiFxF78Pz.png?f=fotoalbum_large
Afbeeldingslocatie: https://tweakers.net/i/mecZs4siCu_UfbzXWcmT1GVUDQg=/fit-in/4000x4000/filters:no_upscale():strip_exif()/f/image/dXL1HFPpvMDUaJPBJRZO8yqd.png?f=user_large

Niet af maar toch grote blij al :D

Update: inmiddels ook 'throtteling' via de webinterface uitgetest met de YC600, ook dit lijkt netjes te werken.
Instellen op '20' -> wordt max 20W per kanaal opgewekt,
Instellen op '500' -> Panelen wekken weer maximaal op per kanaal.
To do: data inlezen in home assistant, als dat werkt proberen via een automatisering vermogen terug te schroeven.

[ Voor 8% gewijzigd door Scatman_II op 27-04-2026 12:07 ]

OC / CM - Begint eer ge Bezint


  • Vincent_89
  • Registratie: December 2016
  • Laatst online: 14:20
Scatman_II schreef op zondag 26 april 2026 @ 16:19:
[...]

Eerste succesjes gehaald met de ESP32-ECU opstelling - de inverters (YC600 en QS1 met 6 panelen) zijn verbonden en uit te lezen!
Wat gaaf zeg dat het gelukt is! Ik volg dit draadje al een tijdje en ook de "ESP32-read-APS-inverters" Github. Heb zelf 3x APS QT2 inverters liggen. Vraag me af of het daar voor zal werken. Er is wel iemand mee bezig geweest die het via een fork toegevoegd lijkt te hebben, maar zonder bericht of het daadwerkelijk gelukt is. Iemand hier toevallig die het met QT2 omvormers aan de praat gekregen heeft? Binnenkort ook maar wat componeten bestellen en gaan klooien!

  • Scatman_II
  • Registratie: December 2001
  • Laatst online: 13:23

Scatman_II

R9500 Pro >:)

Topicstarter
Scatman_II schreef op zondag 26 april 2026 @ 16:19:
[...]

Eerste succesjes gehaald met de ESP32-ECU opstelling - de inverters (YC600 en QS1 met 6 panelen) zijn verbonden en uit te lezen!

De ECU-R is uit het stopcontact. De inverters moesten een paar keer gepowercycled worden voordat ze met de ESP32 wilden verbinden (dat heb ik met de QS1 zeker 20x moeten proberen, met 3x powerylen of zo..).

Er is geen plug en play home assistant integratie dus dat is nog puzzelen met mqtt of rest. Ook het afschakelen (terug naar 20W per kanaal) van de panelen heb ik nog niet geprobeerd, eerst maar even kijken of dit stabiel genoeg draait zo.

WebUI & fysieke opstelling met ESP32 wroom (€3,90) en zigbee antenne CC2530 (€2,70) + lasdoosje (€4 8)7), dus een ECU voor totaal ~€11 (en wat uurtjes uitzoekwerk..).
[Afbeelding]
[Afbeelding]

Niet af maar toch grote blij al :D

Update: inmiddels ook 'throtteling' via de webinterface uitgetest met de YC600, ook dit lijkt netjes te werken.
Instellen op '20' -> wordt max 20W per kanaal opgewekt,
Instellen op '500' -> Panelen wekken weer maximaal op per kanaal.
To do: data inlezen in home assistant, als dat werkt proberen via een automatisering vermogen terug te schroeven.
Met mijn toch zeer beperkte programmeerkennis uren bezig geweest met het inlezen van de ESP32-ECU sensorwaarden in Home Assistant. Bleek dat vooral het gebruik maken van de Developer tools > template editor me hoofdpijn heeft bezorgd, hoewel er prima data in de mqtt topics werd gestuurd kwam dit niet binnen in deze developer tool :(
In de ESP32_ECU heb ik json format 4 gekozen, dan krijg je deze output voor elke inverter:
code:
1
{"inv_serial":"8010000XXXXX","freq":50.0,"temp":27.0,"acv":233.9,"ch0":[34.9,1.7,58.5,1248.54],"ch1":[35.0,1.7,57.7,1228.57],"ch2":[34.3,2.7,107.5,1446.85],"ch3":[33.3,3.0,117.0,1450.01],"totals":[340.7,5373.98]}
Anyhow, na lang prutsen toch maar alle sensors individueel (mqtt discovery kreeg ik niet werkend helaas..) toegevoegd in configuration.yaml.
Volgende keer proberen met mqtt berichten pushen naar de ESP32 om throttling voor elkaar te krijgen.

Sorry voor de lap code. Zoals in de json hierboven te zien is is er nog meer data uit te lezen zoals voltage, stroom en energie per paneel maar ik gebruik niet alles.
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
mqtt:
  sensor:
  # All sensors for inverter 1 which is the QS1 with 4 PV panels attached.
  - state_topic: "homeassistant/ESP32ECU/1"
    name: "APS Inverter 1 Temperature"
    unique_id: "APS_inverter1_temp"
    device_class: "temperature"
    unit_of_measurement: "°C"
    value_template: '{{ value_json["temp"] }}'
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/1"
    name: "APS Inverter 1 Voltage"
    unique_id: "APS_inverter1_voltage"
    device_class: "voltage"
    unit_of_measurement: "V"
    value_template: '{{ value_json["acv"] }}'
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/1"
    name: "APS Inverter 1 panel 1 power"
    unique_id: "APS_inverter1_panel1_power"
    device_class: "power"
    unit_of_measurement: "W"
    value_template: "{{ value_json.ch0[2] }}"
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/1"
    name: "APS Inverter 1 panel 2 power"
    unique_id: "APS_inverter1_panel2_power"
    device_class: "power"
    unit_of_measurement: "W"
    value_template: "{{ value_json.ch1[2] }}"
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/1"
    name: "APS Inverter 1 panel 3 power"
    unique_id: "APS_inverter1_panel3_power"
    device_class: "power"
    unit_of_measurement: "W"
    value_template: "{{ value_json.ch2[2] }}"
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/1"
    name: "APS Inverter 1 panel 4 power"
    unique_id: "APS_inverter1_panel4_power"
    device_class: "power"
    unit_of_measurement: "W"
    value_template: "{{ value_json.ch3[2] }}"
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/1"
    name: "APS Inverter 1 totalpower"
    unique_id: "APS_inverter1_totalpower"
    device_class: "power"
    unit_of_measurement: "W"
    value_template: "{{ value_json.totals[0] }}"
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/1"
    name: "APS Inverter 1 totalgeneration"
    unique_id: "APS_inverter1_totalgeneration"
    device_class: "energy"
    unit_of_measurement: "kWh"
    state_class: "total_increasing"
    value_template: "{{ ((value_json.totals[1] | float(0)) / 1000) | round(3) }}"

  # All sensors for Inverter 0 which is the YC600 with 2 PV panels attached.
  - state_topic: "homeassistant/ESP32ECU/0"
    name: "APS Inverter 0 Temperature"
    unique_id: "APS_Inverter0_temp"
    device_class: "temperature"
    unit_of_measurement: "°C"
    value_template: '{{ value_json["temp"] }}'
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/0"
    name: "APS Inverter 0 Voltage"
    unique_id: "APS_Inverter0_voltage"
    device_class: "voltage"
    unit_of_measurement: "V"
    value_template: '{{ value_json["acv"] }}'
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/0"
    name: "APS Inverter 0 panel 1 power"
    unique_id: "APS_Inverter0_panel1_power"
    device_class: "power"
    unit_of_measurement: "W"
    value_template: "{{ value_json.ch0[2] }}"
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/0"
    name: "APS Inverter 0 panel 2 power"
    unique_id: "APS_Inverter0_panel2_power"
    device_class: "power"
    unit_of_measurement: "W"
    value_template: "{{ value_json.ch1[2] }}"
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/0"
    name: "APS Inverter 0 totalpower"
    unique_id: "APS_Inverter0_totalpower"
    device_class: "power"
    unit_of_measurement: "W"
    value_template: "{{ value_json.totals[0] }}"
    expire_after: 330
  - state_topic: "homeassistant/ESP32ECU/0"
    name: "APS Inverter 0 totalgeneration"
    unique_id: "APS_Inverter0_totalgeneration"
    device_class: "energy"
    unit_of_measurement: "kWh"
    state_class: "total_increasing"
    value_template: "{{ ((value_json.totals[1] | float(0)) / 1000) | round(3) }}"
Update: vandaag met de ESP32-ECU 1 dag gedraaid, geen tijd gehad om met vermogen terugschroeven te spelen, maar in elk geval draait het nu stabiel voor 1 dag tijdens productie van de 2 omvormers, en komt het netjes in Home Assistant binnen.
Afbeeldingslocatie: https://tweakers.net/i/Z75N-x3iUUbuZByMo_9kPTk9L6A=/800x/filters:strip_exif()/f/image/67SWDfsy3XJMLrgYgCE8CfAN.png?f=fotoalbum_large

Update2: Met de ESP32 draait het inmiddels 2 dagen stabiel, 's ochtends komen de inverters netjes 'online' en binnen in Home Assistant. Zojuist ook het 'throttlen' van de QS1 en de YC600 uitgeprobeerd, getriggerd door een Home Assistant automation, resultaat: werkt! :o :9~
Twee inverters los van elkaar (door in de automation alleen de mqtt publish per inverter te triggeren), en hij regelt netjes terug naar ongeveer 20W per kanaal (dus de QS1 zit op 4x ~20W = blijkbaar 90 Watt, en de YC600 op 2x ~20W is 40W):
Afbeeldingslocatie: https://tweakers.net/i/RmHG3r8YboBHNHD2oewL0oNced0=/800x/filters:strip_exif()/f/image/3yZx7jYaytYwzbwA0Tu1GTLK.png?f=fotoalbum_large
Met deze mqtt publish in een Home Assistant automation, die telkens 5 min na het hele uur de Dynamische energieprijs checkt:
code:
1
2
3
4
5
6
7
action: mqtt.publish
metadata: {}
data:
  payload: "{"throttle":0,"val":500} "
  topic: ESP32-ECU-3204764/in
  qos: "0"
enabled: true
Let op, beetje tegen-intuitief: de waarde na 'throttle' is het inverter ID (bij mij 0 en 1), de waarde bij 'val' is de terugregelwaarde per paneel, dus val 20 betekent terugregelen naar 20W per kanaal, val 500 is naar maximum per kanaal.

Voor de volledigheid: De componenten die ik gebruikt heb komen van Alie, specifiek deze:
- Zigbee module: "TENSTAR CC2530 Zigbee Module UART Draadloze Core Board Development Board CC2530F256"
- ESP32 unit: ESP32 WROOM-32 Development Board TYPE-C CH340C/ CP2102 WiFi+Bluetooth Ultra-Low Power Consumption Dual Core Wireless Module (USB C versie, directe link is dood helaas)
- Jumper wires female-female
- lasdoos van de Karwei
Om ze te flashen zie mijn vorige post voor de online tool die me hielp, en de instructies in de Wiki voor de wiring (let op, voor flashen zijn andere pinnen nodig dan voor het gebruik na het flashen)


Nog twee aanvullingen:
1. Ik heb van bovenstaande nog niks geduurtest. Garantie tot de deur.
2. Inmiddels veroorzaak ik / andere ESP32-ECU enthousiastelingen wat topic vervuiling. Ik kan een apart topic hiervoor openen indien gewenst om het netjes te houden!

[ Voor 19% gewijzigd door Scatman_II op 29-04-2026 17:54 . Reden: Code in quote blok geplaats zodat ie inklapt. Update na 1 dag draaien met plaatje. ]

OC / CM - Begint eer ge Bezint


  • Scatman_II
  • Registratie: December 2001
  • Laatst online: 13:23

Scatman_II

R9500 Pro >:)

Topicstarter
Inmiddels draait de ESP32-ECU al een maandje prima, en de data komt netjes in Home Assistant binnen.

2 kleine dingen die nog opvallen:
- Bereik lijkt minder dan dat van de APS ECU-R, bij regen blijft er een laag water op mijn platte garagedak staan (tussen omvormers buiten en ECU binnen) en dan missen er wat datapunten. De ESP32-ECU verbindt altijd weer netjes vanzelf dus kan ik mee leven.
- Er viel me zojuist één glitch op met een extreem hoge waarde in de home assistant data (10kW productie piek oid, echt onmogelijk), hou ik even in de gaten. Weet niet of HA het probleem is of de ESP.

Nu dit een nieuw, apart topic is geworden hoop ik binnenkort wat tijd te kunnen pakken om de startpost completer te maken. Startpost geupdate!

OC / CM - Begint eer ge Bezint


  • killabee.nl
  • Registratie: December 2006
  • Laatst online: 17:05
Ik ben zelf ook al een tijdje bezig met het ESP32-ECU project maar ik krijg niet alle data van mijn inverters binnen. Het pairen lukt wel maar daarna krijgt de ESP32 geen data binnen.

Op de Github kwam ik een post tegen over mogelijk AES encryptie op de zigbee pakketten. Waardoor de ESP32 de zigbee pakketten niet kan lezen.

Afgelopen weekend heb ik met een zigbee sniffer (CC2531) een scan gedaan en daar zie ik inderdaad encrypted zigbee pakketten. Dat zal verklaren waarom ik een aantal inverters wel kan uitlezen en de anderen niet. Ik heb namelijk een mix van DS3, QS1 en YC600.

Op het github topic heb ik de vraag gesteld of we AES encryptie kunnen toevoegen aan de ESP firmware: Decrypting newer ECU firmware ZigBee traffic — protocol notes + ESP32 code · Issue #55 · patience4711/ESP32-read-APS-inverters

  • Scatman_II
  • Registratie: December 2001
  • Laatst online: 13:23

Scatman_II

R9500 Pro >:)

Topicstarter
Dank voor het delen. Vervelend dat inverters met encryptie aan niet kunnen worden gekoppeld. Hopelijk vindt patience4711 (de dev) tijd, zin en een manier om het te implementeren. Als hij daarvoor een kopje-koffie-knop op de devsite moet plaatsen lijkt me dat prima :)

Ik was afgelopen weekend weg en zag ineens geen data meer binnenkomen in HA van de ESP32. Bleek de ESP volledig gecrasht (webinterface ook niet meer aanroepbaar), bij thuiskomst hielp alleen een powercycle. Toen weer na 3 tellen connectie en live data.
Even kijken of dit vaker gebeurt en of ik evt een auto-reboot via HA moet gaan doen.

[ Voor 4% gewijzigd door Scatman_II op 27-05-2026 20:38 ]

OC / CM - Begint eer ge Bezint


  • nf999
  • Registratie: Juli 2023
  • Laatst online: 16:49
Prachtig project! Heb het draaiend met CC2530+CC2591 en betere zigbee antenne. 4xDS3 draaiend inc throttling. Enige oplossing waarmee ik nu kan throttlen. Wel nu paar keer disconnects van wifi gehad, na ongeveer 1 dag. Power supply al vervangen, nog even monitoren. Gebruik FW 1.4c voor throttlen, 1.4b mist throt in mqtt bericht

[ Voor 10% gewijzigd door nf999 op 30-05-2026 10:22 ]


  • nf999
  • Registratie: Juli 2023
  • Laatst online: 16:49
Wat mij opviel is dat de waarde van temperatuur bij overzetten flink afweek van de ECU-R (60C naar 40C ongeveer). Code laat ook zien dat het afgeleide benaderingen zijn, vanwege gesloten zigbee code, wat echt nog wel jammer is. Heb wat waarden vanuit console naast elkaar gezet, maar is voor mij weinig chocola van te maken zonder input vanuit APS ..
Pagina: 1