Afdrukken
Categorie: Arduino and ESP
Hits: 1466

Gebruikerswaardering: 5 / 5

Ster actiefSter actiefSter actiefSter actiefSter actief
 


Lees je APsystems Micro Inverters en PV-Panelen lokaal uit met mijn sAPS_ECU oplossing
Lokaal dus geen externe service of cloud nodig maar extern kan natuurlijk wel.
Het aantal in te geven ECU's en Inverters bepaald je PV-installatie, tot max. 100 Inverters/ECU.
Kosten: afhankelijk van hoe snel je het in huis wil hebben: € 2,= tot € 15;= incl. BTW en verz..


(klik miniatuurtje)

Dit ESP32 sESP_ECU project is onderdeel van mijn, wat van de norm afwijkende, zonnepanelen project (zie ook mijn sEnergy-P1-poort, PV-DHZ en PV-BOILER artikelen). Alleen een simpele ESP32-module is daarvoor nodig. Deze ESP32 Arduino sAPS_ECU software is volledig vrij te gebruiken en te wijzigen. Het is tamelijk compact, eenvoudig te installeren en heeft ondanks dat toch voldoende mogelijkheden om als gebruiker wat meer informatie van je Inverters te verkrijgen: De hardware:
Alleen een ESP-WROOM-32 module heb je hiervoor nodig. (zoek naar ESP32)
En natuurlijk ook een voeding: 5 DCV, minimaal 500 mA (in je rommelbak?). Via USB of direct aan de VIN/5V-pin. Spanning gelijktijdig op USB en de VIN/5V-pin.... niet doen!!!
(Voor je een ESP32 besteld kijk even bij mijn sEnergy-project misschien wil je dat ook wel namaken)
Prijzen: € 2,= tot € 15;= incl. BTW en verz. (afhankelijk van hoe snel je het wil ontvangen - 2022).
Huisvesting: transparant doosje. (doosje van b.v. spijkers, schroeven, ...)


De software:
De makkelijkste en eenvoudigste manier, voor jou en voor je computer:
Installeer de Arduino IDE v2.n, maar indien je OTA (update Over The Air) wil gebruiken dan werkt dat misschien nog niet en moet je Arduino IDE v1.n daarvoor gebruiken.
Daarna: installeer ESP32/a> in de Arduino IDE. Hoe eventuele bibliotheekbestanden te installeren? Daarvoor zoek je even op het WWW, daar is hulp te over. Download mijn sAPS_ECU oplossing en  un-zip het in de Arduino code folder. Ook mijn simpleLib.zip moet je even downloaden en in de .../Arduino/libraries folder uitpakken. Ook moet je een library van Links2004-WebSockets in de map .../Arduino/libraries dumpen, ander kun je niet met de webbrowsers communiseren. Gedaan? Nu kun je sAPS_ECU.ino openen en personaliseren.
Naast de ESP32 software zijn er vier Webbrowser-Websocket-bestanden bijgesloten om de gegevens uit de Micro Inverters en PV-panelen te bekijken en in grafieken weer te geven.
5 van de 35 commando's uit de "APsystems_EMA_App_v8.0.1" software:
Ik heb slechts 5 van de 35 mogelijke commando's gebruikt, meer lijkt mij niet zo nodig. Je kunt de programmacode heel eenvoudig met meerdere commando's uitbreiden. Een lijst en hoe je er mee aan de slag zou kunnen gaan vindt je in de folder commandsList. Je moet echter wel heel erg je best doen om uit te vinden wat voor een informatie je van de ECU ontvangt (zie bij HEX-waarden helemaal onderaan).

Maximum aantal aan Inverters bij een "normale" huis PV-installatie:
Het ene is afhankelijk van het andere! Afhankelijk van hoofdzekering, Inverters en PV-panelen kan het aantal geïnstalleerde Inverters nogal variëren.
Hier wat meer informatie (hoort eigenlijk niet in dit artikel thuis maar misschien moet je toch nog wel wat wijzigen):
APS opgave: OD: 20%. Onder Dimensioneren = "evenwicht" tussen Inverterpoort en PV-paneel.
Bij OOST/WEST opstelling zou OD 35% mogen zijn, maar mij lijkt dat niet zo verstandig als ik bij mij naar enkele dagen in juni kijk: 12 x 360Wp panelen, 2 OOST en 10 WEST, rond 14 uur meer dan  4000 Watt dat is meer dan 17 A.
Aan een 300W Inverterpoort hang je dus, voor een optimaal rendement, een PV-paneel van 360Wp.
De waarde van een groepzekering is maximaal 60% van de waarde van je hoofdzekering.
Maximaal te installeren vermogen aan PV-panelen per hoofdzekering fase:
   formule: <hoofdzekering>A  / 1,6 x 230V x 1,2 = <string>Wp aan maximaal toelaatbaar vermogen.
   25A hoofdzekering maximaal: 16A installatieautomaat, 4420Wp string, 2,5 mm2 bedraad.
   30A hoofdzekering maximaal: 20A installatieautomaat, 5520Wp string, 4,0 mm2 bedraad.
   40A hoofdzekering maximaal: 25A installatieautomaat, 6900Wp string, 4,0 mm2 bedraad.
Het maximum aan PV-panelen kun je zo eenvoudig bepalen, en dat dan per 1, 2 of 3 fases. Het maximum aantal aan Inverters per PV-string is afhankelijk van de gekozen type('s) Inverter(s). Het maximum aantal van 18 PV-panelen per string is inmiddels achterhaald met de komst van hogere vermogens per PV-paneel.
In de software kun je één ECU en theoretisch tot wel 100 Micro Inverters invullen. Aan een APS Inverters hang je standaard 2 panelen, maar tot 2022 produceerde APS ook Inverters met 3 en 4 aansluitingen.
Bij een string van 18 panelen kunnen er dus 5 tot 9 inverters geinstalleerd zijn.


Heb je er wat aan?
Zonder dit project gaat ook prima via apsystemsema.com maar als niet-installateur kun je met mijn oplossing ook je Micro Inverters in de gaten houden. Als je de PV-gegevens, in b.v. JSON formaat, zou willen doorsturen dan heb je hier een eenvoudige en goede oplossing aan (zelf even de software aanpassen om de resultaten door te sturen, stelt niet veel voor, JSON code format voorbeeld is bijgesloten). Ik zelf doe alle huisautomatisering "op eigenwijze" en niets via derden.
Voorbeeld opgevraagde gegevens waar mee je verder kunt.... (zie ook de afbeeldingen bovenaan):
SYST;20221124;12:53;3486.80;378;1.68 (in 5 minuten interval)
 DAY;20221124;08:03; 6;08:08; 8;08:13;9;08:18; enz.... (heden of, indien beschikbaar, naar datum)
NOW0;20221124;12:53;408000195173;-62;YC6;226;50;16;20;23
NOW1; enz....(per inverter een regel)
HYST;20221027;4.20;20221028;4.53;20221029;3.74; enz.... (reeks aan opgeslagen dagen + heden)
  omschrijvingen (kijk naar kader en kleuren):
    ;20221124; yyyymmdd
    ;12:53;    hh:mm
    ;3486.80;  kWh vanaf registratie
    ;20;       W/5 min
    ;4.20;     kWh dagtotaal
;408000195173;-62;YC6;226;50;16; Inverter, Zigbee db, Inverter type, ACV, Hz, °C Uitvoer SYST en NOWn naar JSON (donker met regen dus panelen 0-4 W): SYST;20221129;16:10;3496.00;11;1.97 {"date":"20221129","time":"16:10","live":"3496.00","now":"11","day":"1.97"} NOW0;20221129;16:09;408000195173;-69;YC6;221;50;12; 0; 0 {"date":"20221129","time":"16:09","inv":"408000195173","db":"-69","type":"YC6","AVC":"221", "Hz":"50","*C":"12","p1W":" 0","p2W":" 0"} NOW1;20221129;16:09;806000015993;-70;QS1;220;50;11; 1; 0; 4; 4 {"date":"20221129","time":"16:09","inv":"806000015993","db":"-70","type":"QS1","AVC":"220", "Hz":"50","*C":"11","p1W":" 1","p2W":" 0","p3W":" 4","p4W":" 4"} .... enz. met alle Inverters ...


Zigbee signaalsterkte:
Theoretisch moet het Zigbee signaal binnen een afstand van 50 m goed tot redelijk te ontvangen zijn. Indien een Zigbee signaal slecht is kun je de module beter wat dichter bij de Micro Inverters opstellen of, ergens halfweg, een Zigbee signaalversterker in een stopcontact steken. -30db is uitstekend -80db is slecht (hierboven in NOW0: -62).
Het signaal kan door externe omstandigheden worden beinvloed (sneeuw, ijzel, WiFi, Bleutooth, alarm, auto's).

ECU en Inverters serienummers:

De serienummers vindt je onder de ECU en Inverters en in je APS-App en Webbrowser:

(ik heb na installatie de  Inverters met stickertjes gefotografeerd, weet je altijd waar welke is gemonteerd).
In de software geef je de ECU(s) en de Inverters naar je eigen gewenste volgorde in. De uitvoer is dan ook in die volgorde. De in te voeren volgorde van de Inverters mag dus afwijken van die in de APS EMU registratie.

De APsystems ECU IP('s) in je Router als STATIC instellen:
Je kunt je ECU ook aan een LAN-kabel hangen, in dat geval kun één van de twee ECU IP adressen kiezen.
  1) Haal de spanning even van de ECU af
  2) Open je Router in een webbrowser en ga naar NETWERKEN
  3) Maak een window-afbeelding en plak deze even in het een of andere tekenprogramma (in Windows kun je "Screen snip" gebruiken)
  4) Spanning weer op je ECU
  5) Vergelijk met de afbeelding uit 3) welk(e) IP(s) er zijn bijgekomen
  6) Geef de nieuwe IP(s) een naam, maak het/ze STATIC (meestal met een vinkje)
      (FRITZ!Box router voorbeeld)
      Dit is WiFi, boven bij de meest rechtse afbeelding bovenaan zie je ook die via LAN
  7) Gebruik één van de twee IP in de sAPS_ECU.ino code.
      Wijzig het host IP in onderstaande coderegel:
      const char *host = "192.168.178.33"; // insert your local ECU IP.....
Verderop staan nog wat aanwijzingen welke de programmacode voor jouw installatie geschikt maakt.

Is APsystem ECU nauwkeurig?
Het antwoord is NEE. Het meet soms te veel en soms te weinig. Waarom? Het is slechts een momentopname. APsystems meet niet constant maar meet domweg de PV-waarden eens per 5 minuten. Tussen twee metingen in kan er dus meer of minder licht op je PV-panelen zijn gevallen. Dit beantwoorden ze dan ook, met weinig woorden, op vragen van gebruikers.

Kun je het met weinig moeite en kosten nauwkeuriger meten?
Dat kun je heel eenvoudig en zeer nauwkeuriger met een goedkope MID kWh pulsmeter (1000 of 2000 pulsjes per kWh) doen (zie mijn sEnergy-project). Daar vind je ook een eenvoudige ESP32 met SD-Card oplossing om je slimme meter uit te lezen (P1-Port DSMR protocol).


Minimaal in de programmacode aan te brengen wijzigingen in het rood:
   ESP32 sAPS_ECU.ino:
const char *staSsid = "je Router SSID",
         *staPassword = "je Router wachtwoord";
const IPAddress staIP(192, 168,178, 128),
             staGatewayIP(192, 168, 178, 1),
                staSubnetIP(255, 255, 255, 0);
const IPAddress staPrimDNS(8, 8, 8, 8),
                            staSecDNS(8, 8, 4, 4);
const double latSun = 52.1234, // your location ...
                     lonSun = 5.5678// ... used by sunrise/set
En natuurlijk ook je ECU-serienummer en de serienummers van je inverters invullen.
   String
      ecuId = ".................",
      inv[]= {"................", "................", "................", "max. 100 Inverters", ".........enz.};
In alle HTML-Websocket-bestanden moeten de IP-adressen met die in de ESP32 code overeen stemmen. Om wijzigingen aan te brengen open je de HTML bestanden in kladblok of een soortgelijk programma zoals notepad++ en beslist NIET in een tekstverwerker.

(voor de C/C++ experts)
Het gebruik van Arduino String en HEX-waarden als String i.p.v. char en byte array's:

Een ESP32 heeft ruim voldoende geheugen om String te kunnen gebruiken.
APS ECU geeft korte maar ook zeer lange reeksen aan bytes terug, afhankelijk van het commando soms honderden. Het voordeel van String is dat de lengte niet van te voren moet worden vastgelegd, iets wat bij char en byte array's wel het geval is. Verder is String manipulatie eenvoudiger als *char manipulatie. Hier onder een eenvoudig voorbeeld ter verduidelijking:
Als je bytes als bytes opslaat dan doe je dat in een array als: {171, 83,32,34,17,07,18,52,50,226} het moet er in passen en afzonderlijke waarden moet je dan stuk voor stuk onderzoeken.
Sla je dit als HEX-String op dan ziet het er zo uit "AB5320221107123432E2" en hier kun je heel eenvoudig de diverse String functies op loslaten (zie arduino stringobject). 2022-11-07 12:34
Eigenlijk is de HEX-notatie voor één enkele byte 0x00 t/m 0xFF (0 t/m 255), die '0x' wordt, zo nodig, in de code voorgevoegd. HEX-String naar getallen is wat lastiger uit te zoeken maar daar kan de EMA App v8 je misschien ook wel verder bij helpen ;-)