1. Inleiding
Omvormers van SolarEdge hebben de speciale eigenschap dat alle panelen van bijbehorende optimizers worden voorzien. Dit brengt de mogelijkheid met zich mee de opbrengst per paneel bij te houden. SolarEdge biedt haar eigen monitoring portaal om de opbrengst bij te houden. Hierop is de actuele situatie per paneel, per string en per omvormer in te zien. Bovendien zijn er grafieken beschikbaar van spanning, stroom, energie en vermogen van de omvormer en de panelen. Voor programmeurs is er de Monitoring API, waarmee de data van de omvormer (maar niet van de panelen) programmatisch ter beschikking wordt gesteld. De Monitoring API maakt het ook mogelijk om de data van de SolarEdge website rechtstreeks naar PVOutput.org te laten doorsturen.Er zijn een aantal beperkingen aan de SolarEdge website, de Monitoring API en de koppeling met PVOutput. Zo is informatie per paneel in het geheel niet beschikbaar via de Monitoring API. Op de monitoring website kun je wel gedetailleerde informatie over de panelen krijgen, maar alleen op de grafiekenpagina die niet werkt op smartphones en tablets (en die naar mijn mening sowieso maar matig van kwaliteit is). De koppeling met PVOutput laat ook te wensen over, deze heeft last van herhaaldelijk afronden en het verkeerd toepassen van de 'active power' waarde van de omvormer, waardoor de cijfers op PVOutput behoorlijk afwijken van wat op de SolarEdge monitoring website wordt vermeld.
Om deze beperkingen en tekortkomingen te overwinnen wil de echte Tweaker natuurlijk best de handen uit de mouwen steken en een eigen logging database en website opzetten. Maar dat blijkt met SolarEdge omvormers nog niet zo eenvoudig. Daarom is dit topic er nu!

Tᴡᴇᴇ ʙᴇʟᴀɴɢʀɪᴊᴋᴇ ᴏᴘᴍᴇʀᴋɪɴɢᴇɴ!![]() ![]() |
1.1 Wat kan ik hiermee?
Met dit project (in de staat waarin het zich nu bevindt) kun je het volgende:- Telemetriedata (van de omvormer en de optimizers) die een SolarEdge omvormer naar de monitoring portal stuurt onderscheppen en opslaan in een MySQL database
- De data van de omvormer automatisch laten uploaden naar PVOutput
2. Afluisteren versus uitlezen
Er zijn grofweg twee manieren waarmee SolarEdge omvormers hun data beschikbaar kunnen stellen: via een seriële verbinding (RS-232 of RS-485) of via het internet. De keuze hiertussen kan gemaakt worden in het instellingenmenu van de omvormer. Het moge duidelijk zijn dat de meeste SolarEdge omvormers aan het internet worden gehangen, zodat gebruik gemaakt kan worden van de SolarEdge monitoring portal. De in dit topic beschreven methode is bedoeld voor omvormers die op het internet worden aangesloten. De omvormer blijft gewoon met de monitoring portal verbonden, maar de verbinding tussen de omvormer en de servers van SolarEdge zal worden afgeluisterd. De data die de omvormer (elke 5 minuten) verzendt naar de monitoring website kan zo worden onderschept en opgeslagen zodat het in een eigen monitoring website getoond en naar hartenlust geanalyseerd kan worden. Als bonus krijg je zelfs data die op de monitoring website niet te vinden is, zoals de temperatuur van de optimizers!De verbinding met de servers van SolarEdge is sinds december 2015 beveiligd met AES-128 encryptie. Deze versleuteling is (voor zover bekend) onkraakbaar, dus een met AES-128 beveiligde verbinding kan alleen afgeluisterd worden als je de gebruikte beveiligingssleutel weet. SolarEdge heeft de versleuteling van de verbinding toegevoegd aan recente firmware (vermoedelijk vanaf CPU versie 3.x), maar deze staat bij nieuw geïnstalleerde omvormers standaard uit. Ergens in de eerste 48 uur dat de omvormer contact heeft met de servers van SolarEdge wordt de beveiligingssleutel uitgewisseld en direct daarna wordt de versleuteling aangezet. Het is dus belangrijk dat de verbinding al afgeluisterd wordt wanneer de versleuteling nog niet aan staat!
In het geval dat je de beveiligingssleutel niet hebt weten te onderscheppen (bijvoorbeeld omdat je omvormer er al een tijdje hangt) is het nog mogelijk om deze met een RS-232 verbinding uit te lezen. Hiervoor zul je wel de kap van de omvormer moeten openen, niet iedereen ziet dat zitten. Doe dit alleen als je weet waar je mee bezig bent en zorg voor je eigen veiligheid dat de DC schakelaar aan de onderkant op OFF staat. Als alternatief kun je een 'factory reset' van de omvormer (een optie in het service menu) uitvoeren om de encryptie weer uit te zetten. Let wel: na een factory reset staat de productieteller weer op nul en moet de omvormer opnieuw gepaird worden met de optimizers.
Wellicht dat dit topic in de toekomst wordt uitgebreid met informatie voor het rechtstreeks uitlezen van de omvormer via RS-232 (eventueel over USB) of RS-485. Het voordeel van uitlezen via een seriële verbinding is dat de uitleesfrequentie kan worden verhoogd en er geen gedoe is met encryptie. Het nadeel is dat je de monitoring website niet meer kunt gebruiken en je dus volledig zelf verantwoordelijk bent voor de monitoring.
3. Benodigdheden
Om de verbinding tussen de omvormer en de servers van SolarEdge te kunnen afluisteren en de data op te slaan heb je wel wat spullen nodig. Vooral de opzet van het netwerk is van belang: als je je omvormer en je computer aansluit op een normale switch of router neemt het verkeer gewoon de kortste weg naar buiten en kan de computer de omvormer dus niet afluisteren. Zorg dat je het volgende in huis hebt:- Een computer die altijd aan staat (mag een server, nas of Raspberry Pi zijn) en waar je MySQL, tcpdump en Python3 scripts op kunt draaien. Als je nog geen spul 24/7 hebt draaien kan ik een pricewatch: Raspberry Pi 3 Model B 1GB aanbevelen. Vanaf nu heet deze computer de logger.
- Een domme ouderwetse ethernet hub (dus géén switch of router) óf een switch met 'port mirroring' functie óf een tweede netwerkaansluiting op je logger. Veel mensen hebben geen van de drie opties in huis. Als je ook nog geen logger had is dit een extra reden voor de Raspberry Pi 3 Model B: die heeft een ethernetpoort én WiFi (dus twee netwerkverbindingen). Als je al een logger hebt kun je eenvoudig een tweede netwerkpoort toevoegen met een USB-naar-Ethernet dongle.
4. Het netwerk instellen
Het installeren van de logger komt in de volgende sectie aan bod. Eerst moeten we het netwerk op orde krijgen. Ik raad je aan om het eerst te proberen met een andere computer in de plaats van de omvormer zodat je zonder dataverlies kunt checken of de verbinding werkt en of je met tcpdump op de logger het verkeer van de computer kunt zien. Sluit i.v.m. de encryptie de omvormer pas aan op het internet als je zeker weet dat de logger kan meeluisteren!- Met een domme ethernet hub: Sluit drie netwerkkabels op de hub aan, één naar de omvormer, één naar de logger en één naar de rest van je netwerk voor de internettoegang. De omvormer en de logger ontvangen nu elkaars verkeer. Zo kan de logger dus meeluisteren met de communicatie van de omvormer.
- Met een switch met 'port mirroring' functie: Sluit de logger aan op de 'mirror port' (andere termen: 'analysis port', 'monitoring port'). Op de 'gewone' netwerkpoorten sluit je de kabel naar de omvormer en de kabel naar de rest van het netwerk aan. Stel de switch zo in dat de data op de poort waar de omvormer aan hangt wordt gemirrord naar de mirror port.
- Met twee netwerkpoorten op de logger: Sluit de omvormer aan op de ene netwerkpoort en verbind de andere met de rest van je netwerk. Stel een netwerkbrug in tussen de twee netwerkpoorten (zie sectie 4.1). De omvormer maakt dan verbinding met het netwerk via de logger, wat de logger natuurlijk in staat stelt om hem af te luisteren.
- Met WiFi en een netwerkpoort op de logger: Bijvoorbeeld in het geval van de Raspberry Pi 3 Model B heb je te maken met één ethernetpoort en een WiFi-verbinding, wat de configuratie wat complexer maakt. Als je omvormer een WiFi-module heeft kun je het beste sectie 4.1 volgen. Als je omvormer geen WiFi heeft ga je naar sectie 4.2.
4.1 Omvormer ━┫ kabel of WiFi ┣━ Logger ━┫ kabel ┣━ Internet
Een logger met twee netwerkverbindingen die bekabeld aan het internet hangt is redelijk eenvoudig op te zetten. Met de volgende netwerkconfiguratie kun je twee ethernetpoorten (eth0 en eth1) bridgen. Hiervoor moet bridge-utils geïnstalleerd zijn. Sla deze code op in /etc/network/interfaces. Na een reboot wordt de configuratie actief.code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| ## /etc/network/interfaces auto lo br0 iface lo inet loopback iface eth0 inet manual iface eth1 inet manual iface br0 inet static bridge_ports eth0 eth1 address 192.168.178.2 broadcast 192.168.178.255 netmask 255.255.255.0 gateway 192.168.178.1 dns-nameservers 8.8.8.8 8.8.4.4 |
Pas de IP-adressen in dit voorbeeld eventueel aan zodat ze op jouw netwerk zijn afgestemd. In het voorbeeld is 192.168.178.2 het adres van de logger en 192.168.178.1 het adres van het modem.
Heb je een omvormer met WiFi-module en je logger heeft ook WiFi, dan kun je met 'hostapd' de logger een WiFi-netwerk laten uitzenden. Die kun je dan op dezelfde manier bridgen (verander 'eth1' in 'wlan0' in de code hierboven). Het WiFi netwerk waar de omvormer mee verbindt wordt gebridged met de netwerkpoort die de verbinding naar buiten levert. Op die manier stel je de logger in feite in als draadloos toegangspunt (AP).
Om de logger te testen sluit je even een computer/laptop aan in plaats van de omvormer en draai je het volgende commando op de logger (verander 'eth1' naar 'wlan0' als de testcomputer via WiFi verbinding maakt):
user@logger$ sudo tcpdump -c 25 -i eth1 tcp
Op de testcomputer open je dan een website, waarna je op de logger output moet zien verschijnen. Als dat is gelukt kun je verder bij Sectie 5.
4.2 Omvormer ━┫ kabel ┣━ Logger ━┫ WiFi ┣━ Internet
De meeste mensen zullen geen WiFi module bij hun SolarEdge omvormer hebben. Met een logger met WiFi zoals de Raspberry Pi 3 Model B kom je dan hier op uit: we gebruiken de WiFi om de logger met het internet te verbinden, zodat de omvormer met de netwerkkabel aan de logger kan worden gehangen. We kunnen dan geen netwerkbrug maken zoals bij sectie 4.1; in plaats daarvan stellen we de logger in als router. Dat gaat als volgt.Installeer 'wpasupplicant' als je WiFi-netwerk met WPA Personal is beveiligd (99% kans...). Je moet je WiFi-wachtwoord omzetten in een 'PSK' (Pre-Shared Key) met het volgende commando:
user@logger$ wpa_passphrase Naam-Van-Jouw-WiFi-Netwerk JouwWachtwoordHier123!
Je krijgt dan als output o.a. een regel die begint met 'psk=' gevolgd door een reeks letters en cijfers. Die letters en cijfers heb je nodig in de volgende stap.
Sla de volgende code op in /etc/network/interfaces en vul hierin de naam van jouw WiFi-netwerk en je PSK in. Zorg ook dat de IP-adressen die onder 'wlan0' staan genoemd kloppen. 192.168.178.2 is in dit voorbeeld het IP-adres van de logger, 192.168.178.1 het IP-adres van je modem.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| ## /etc/network/interfaces auto lo iface lo inet loopback # Instellingen voor de Wi-Fi verbinding: auto wlan0 iface wlan0 inet static address 192.168.178.2 broadcast 192.168.178.255 netmask 255.255.255.0 gateway 192.168.178.1 dns-nameservers 8.8.8.8 8.8.4.4 wpa-ssid Naam-Van-Jouw-WiFi-Netwerk wpa-psk a897a679b6b987a665a765c786a8769f876a7856754765f67097d0987a96787d # Instellingen voor de bedrade verbinding naar de omvormer (deze hoeven niet veranderd te worden): auto eth0 iface eth0 inet static address 192.168.179.1 network 192.168.179.0 broadcast 192.168.179.255 netmask 255.255.255.0 |
Om de omvormer een IP-adres te geven moeten we een DHCP-server instellen. Installeer 'isc-dhcp-server' om te beginnen. Open dan het bestand /etc/dhcp/dhcpd.conf en zet het volgende erin:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| ## /etc/dhcp/dhcpd.conf option domain-name "example.com"; option domain-name-servers 8.8.8.8, 8.8.4.4; default-lease-time 600; max-lease-time 7200; option subnet-mask 255.255.255.0; option broadcast-address 192.168.179.255; option routers 192.168.179.1; subnet 192.168.179.0 netmask 255.255.255.0 { range 192.168.179.10 192.168.179.100; } |
Met alleen een IP-adres ben je er nog niet, de omvormer moet ook verbinding kunnen maken met het internet. Hiervoor is Network Address Translation (NAT) nodig, wat we instellen met 'iptables'. We stellen hiermee de logger in als router. Sla het onderstaande script op als /opt/scripts/se-nat.sh:
Bash:
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
| ## /opt/scripts/se-nat.sh echo -e "\n\nLoading simple rc.firewall-iptables version $FWVER..\n" DEPMOD=/sbin/depmod MODPROBE=/sbin/modprobe EXTIF="wlan0" INTIF="eth0" echo " External Interface: $EXTIF" echo " Internal Interface: $INTIF" #== Uncomment the lines below if Modbus/TCP is used ======================= #== MODBUS SETUP ========================================================== #IP="192.168.179.10" # This is the SolarEdge inverter IP connected on $INTIF #MBPORT="502" # This is the modbus communications port do not change #MODBUS="$IP:$MBPORT" #echo " ===============================" #echo " Modbus communication is used" #echo " SolarEdge Inverter IP: $MODBUS" #echo " ===============================" #== END MODBUS SETUP ====================================================== #========================================================================== echo -en " loading modules: " echo " - Verifying that all kernel modules are ok" $DEPMOD -a echo "----------------------------------------------------------------------" echo -en "ip_tables, " $MODPROBE ip_tables echo -en "nf_conntrack, " $MODPROBE nf_conntrack echo -en "nf_conntrack_ftp, " $MODPROBE nf_conntrack_ftp echo -en "nf_conntrack_irc, " $MODPROBE nf_conntrack_irc echo -en "iptable_nat, " $MODPROBE iptable_nat echo -en "nf_nat_ftp, " $MODPROBE nf_nat_ftp echo "----------------------------------------------------------------------" echo -e " Done loading modules.\n" echo " Enabling forwarding.." echo "1" > /proc/sys/net/ipv4/ip_forward echo " Enabling DynamicAddr.." echo "1" > /proc/sys/net/ipv4/ip_dynaddr echo " Clearing any existing rules and setting default policy.." iptables-restore <<-EOF *nat -A POSTROUTING -o "$EXTIF" -j MASQUERADE #== Uncomment the lines below if Modbus/TCP is used ======================= #-A PREROUTING -i "$EXTIF" -p tcp --dport "$MBPORT" -j DNAT --to "$MODBUS" #-A PREROUTING -i "$INTIF" -p tcp --dport "$MBPORT" -j DNAT --to "$MODBUS" #== END MODBUS ============================================================ COMMIT *filter :INPUT ACCEPT [0:0] :FORWARD DROP [0:0] :OUTPUT ACCEPT [0:0] #== Uncomment the line below if Modbus/TCP is used ======================== #-A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate NEW -p tcp --dport "$MBPORT" -j ACCEPT #== END MODBUS ============================================================ -A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT -A FORWARD -j LOG COMMIT EOF echo -e "\nrc.firewall-iptables v$FWVER done.\n" |
(Mocht je de omvormer ook nog via Modbus/TCP willen uitlezen, dan moet je de gemarkeerde regels even uncommenten en het juiste IP-adres van de omvormer invullen. Met dank aan @Cabbie_86 voor deze bijdrage!)
Maak het script uitvoerbaar en test het ook even:
user@logger$ chmod a+x se-nat.sh user@logger$ sudo sh se-nat.sh
Als hier geen errors uit naar voren komen werkt het.
Dit script moet automatisch worden uitgevoerd bij het opstarten van de logger. Dit kan door het bestand /etc/systemd/system/se-nat.service te maken, met de volgende inhoud:
code:
1
2
3
4
5
6
7
8
9
10
11
12
| ## /etc/systemd/system/se-nat.service [Unit] Description=This service sets up NAT for the SE side After=network.target [Service] ExecStart=/bin/bash /opt/scripts/se-nat.sh ExecReload=/bin/kill -HUP $MAINPID KillMode=process [Install] WantedBy=multi-user.target |
Vervolgens activeer je de service met het volgende commando:
user@logger$ sudo systemctl enable se-nat.service user@logger$ sudo systemctl start se-nat.service
Om de logger te testen sluit je even een computer/laptop aan in plaats van de omvormer en draai je het volgende commando op de logger:
user@logger$ sudo tcpdump -c 25 -i eth0 tcp
Op de testcomputer open je dan een website, waarna je op de logger output moet zien verschijnen.
5. De logging software instellen
Nu het netwerk zo is ingesteld dat de omvormer kan worden afgeluisterd, kan begonnen worden met het instellen van de logging software. Hiervoor zijn grofweg drie opties: het project van user jbuehl op GitHub, mijn eigen solaredge-logger project, of het maken van een eigen brouwsel. Vanzelfsprekend zal ik hier de installatie van solaredge-logger bespreken, omdat ik daar het meest bekend mee ben.Solaredge-logger is als volgt opgebouwd:
- Met behulp van 'tcpdump' wordt de netwerkverbinding van de omvormer afgeluisterd, alle TCP communicatie wordt opgeslagen in PCAP bestanden. De solaredge-logger service wordt elke nacht herstart, zodat er van elke dag een apart PCAP bestand wordt gemaakt.
- Het PCAP bestand wordt tegelijkertijd meegelezen door een script dat de gewenste data hieruit destilleert en opslaat in een eenvoudige MySQL database met een tabel voor omvormer data en een tabel voor optimizer data.
- Een stand-alone PHP script dat de data van de omvormer-tabel uploadt naar PVOutput, wordt d.m.v. een cronjob elke 2 minuten uitgevoerd.
- Los hiervan worden er twee scripts meegeleverd waarmee de beveiligingssleutel van de omvormer verkregen kan worden.
- Om te beginnen kan de laatste versie gedownload worden van jerweb.nl/downloads/solaredge-logger. Het project staat ook op GitHub.
- Zorg dat de volgende pakketten zijn geïnstalleerd: mysql-server, python3-mysqldb, python3-crypto. Als je ook naar PVOutput wilt uploaden, komen daar nog bij: php-cli, php-mysql, php-curl. (Mocht je de melding krijgen dat deze php-pakketten niet bestaan, probeer dan php7- of php5- als prefix.)
- Maak een MySQL database aan met behulp van de SQL statements in 'database.txt'.
- Maak de directory '/opt/se-logger' en zet de bestanden 'liveupdate.py', 'pvo-upload.php' en 'se-logger-service.sh' erin.
- Open 'liveupdate.py' en vul de gebruikersnaam en het wachtwoord van de MySQL database in in het SETTINGS gedeelte bovenaan. Je vindt hier ook de plaats waar de beveiligingssleutel van de omvormer ingevuld moet worden. Als je omvormer nog niet aan het internet is verbonden, of CPU versie lager dan 3.x heeft, heb je de sleutel nog niet nodig. In sectie 6.1 staat meer informatie over hoe je deze kunt achterhalen wanneer je merkt dat er opeens geen data meer de database in gaat. Heeft je omvormer CPU versie 3.x of hoger én hangt hij al langer dan een paar uurtjes aan het internet? Kijk dan even naar sectie 6.2.
- (Optioneel, voor PVOutput updates) Open 'pvo-upload.php' en vul ook hierin de gebruikersnaam en het wachtwoord van de MySQL database in in het SETTINGS gedeelte bovenaan. Verder vul je hier ook de PVOutput API key en het System ID in, welke je kunt vinden op de Account Settings pagina van PVOutput. (Let op: Als je niet aan PVOutput hebt gedoneerd is de hoeveelheid status updates die tegelijk verzonden kunnen worden gelimiteerd tot 30. In dat geval moet je in pvo-upload.php de 'LIMIT 100' aanpassen naar 'LIMIT 30' om problemen te voorkomen.)
- Open 'se-logger-service.sh' en zorg dat in het SETTINGS gedeelte 'interface' verwijst naar de netwerkpoort waarop de omvormer is aangesloten. Als je sectie 4.1 hebt gevolgd is het waarschijnlijk 'eth1' of 'wlan0'; als je sectie 4.2 hebt gevolgd is het 'eth0'.
- Zet het bestand 'se-logger.service' in de '/etc/systemd/system' directory. Draai je Raspbian? Dan moet je de 'KillMode=' regel aanpassen naar 'KillMode=control-group'. Als je sectie 4.2 had gevolgd (logger via WiFi verbonden met het internet) is het aan te raden om /etc/systemd/system/se-nat.service aan te passen en de 'After=' regel te veranderen naar 'After=network.target se-logger.service'. Dit zorgt ervoor dat de omvormer pas toegang krijgt tot internet als de logger service draait.
- Vervolgens activeer je de service met het volgende commando:
user@logger$ sudo systemctl enable se-logger.service user@logger$ sudo systemctl start se-logger.service
- We stellen cronjobs in die de service elke nacht herstarten en elke 2 minuten een update sturen naar PVOutput. Geef hiervoor het commando 'sudo crontab -e' en kopieer dan de inhoud van 'crontab.txt' welke bij de se-logger download inbegrepen was naar jouw crontab. (Als je geen PVOutput uploads wilt, moet je de regel waar 'pvo-upload.php' in staat weglaten.)
- tcpdump.log: bevat de 'error' output van tcpdump. Hier hoort één regel in te staan met iets dat lijkt op: "tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes". Als er meer in staat is er mogelijk iets mis, of is de se-logger service gestopt.
- liveupdate.log: bevat de 'error' output van liveupdate.py (het belangrijkste script van se-logger). Wat je hier NIET in wilt lezen is "End of file. Shutting down.", wat betekent dat de service is gestopt. Als je hier veel "Warning! Skipping (getal) mysterious bytes!" in tegen komt betekent dit vrijwel zeker dat je omvormer encryptie gebruikt en dat in het SETTINGS gedeelte van liveupdate.py niet de juiste sleutel is ingevuld. Kijk dan even in sectie 6.1.
- solarege-20160924003000.pcap: bevat alle onderschepte communicatie van de omvormer. De getallen in de bestandsnaam geven de datum en tijd (jaar, maand, dag, uur, minuut, seconde) waarop de se-logger service werd gestart. Doordat de service elke nacht wordt herstart krijg je voor elke dag een aparte capture file. Je kunt deze bestanden openen in een programma als Wireshark. Tip: bewaar deze bestanden als back-up! Hierin zit alle data. Zelfs als je je database verliest kun je hem met deze bestanden weer helemaal vullen.
6. De encryptiesleutel achterhalen
Bij solaredge-logger worden twee kleine Python scripts meegeleverd die helpen de encryptiesleutel te achterhalen. Net zoals solaredge-logger zelf, werken deze scripts met Python 3 en dus niet met Python 2.6.1 De encryptiesleutel achterhalen uit PCAP capture bestanden
Zoals in sectie 2 al is uitgelegd, staat bij nieuw geïnstalleerde omvormers de encryptie standaard uit. Ergens in de eerste 48 uur dat de omvormer contact heeft met de servers van SolarEdge wordt de beveiligingssleutel uitgewisseld en direct daarna wordt de versleuteling aangezet. Als je solaredge-logger hebt opgezet vóórdat de encryptie werd aangezet, zit je encryptiesleutel ergens in de 'solaredge-xxx.pcap' bestanden in de /opt/se-logger directory verscholen. Bij solaredge-logger wordt een script 'find-key-in-pcap.py' meegeleverd, welke je kunt gebruiken om de sleutel op te zoeken in de PCAP bestanden die de se-logger service maakt. Dit kan met het commando:user@logger$ python3 find-key-in-pcap.py /opt/se-logger/*.pcap
Als het script met succes je beveiligingssleutel weet te vinden wordt hij netjes getoond zodat je hem in liveupdate.py kunt zetten. Ga daarna te werk volgens sectie 6.3.
Als de sleutel niet kan worden gevonden, zul je waarschijnlijk via RS-232 de sleutel van de omvormer moeten opvragen (sectie 6.2). Ook kun je een 'factory reset' van de omvormer (een optie in het service menu) uitvoeren om de encryptie weer uit te zetten (dank @xces voor het proberen). Let wel: na een factory reset staat de productieteller weer op nul en moet de omvormer opnieuw gepaird worden met de optimizers.
6.2 De encryptiesleutel achterhalen via RS-232
Als je omvormer al encryptie gebruikte voordat je se-logger had ingesteld, of als om wat voor reden dan ook de encryptiesleutel toch niet in je PCAP bestanden terecht is gekomen, blijft er altijd nog een plan B. Bij solaredge-logger zit ook een script 'get-key-by-rs232.py', waarmee de sleutel rechtstreeks uit de omvormer uitgelezen kan worden. Hiervoor moet je een computer (dit hoeft niet per se de logger te zijn en kan ook prima op Windows) op de RS-232- of USB-aansluiting die aan de binnenkant van de omvormer zit aansluiten. In het SETTINGS gedeelte bovenaan het script vul je de naam van de seriële poort en (de eerste 8 tekens van) het serienummer van je omvormer in. Vervolgens voer je het script uit (met Python 3) en vertelt het je de encryptiesleutel. De werking van dit script is praktisch gegarandeerd (het is echt een heel simpel script), maar het aansluiten van de omvormer vereist wat extra kennis en bovendien moet hiervoor de kap van de omvormer verwijderd worden, wat sommigen als 'over de grens' kunnen ervaren. Probeer deze situatie dan liever te mijden als het nog niet te laat is!6.3 De database bijwerken nadat je de encryptiesleutel hebt ingevoerd
Als de solaredge-logger service heeft staan draaien zonder dat je een encryptiesleutel had ingevuld in het SETTINGS gedeelte van 'liveupdate.py' terwijl de omvormer versleutelde gegevens verstuurde, is de versleutelde data niet in de MySQL database terecht gekomen. Met het volgende eenvoudige stappenplan kun je de database weer op orde maken.- Trek de netwerkkabel van de omvormer eruit om dataverlies te voorkomen
- Stop de se-logger service met het commando:
user@logger$ sudo service se-logger stop
- Je kunt nu de database bijwerken met de versleutelde gegevens door het commando:
Dit kan in het begin heel wat 'duplicate key' warnings geven. Als het goed is eindigt dat met een bericht "Setting new 0503 key" waarna het script in relatieve stilte verder gaat. Er moet in ieder geval geen "Warning! Skipping (getal) mysterious bytes!" meer komen.user@logger$ python3 /opt/se-logger/liveupdate.py /opt/se-logger/*.pcap
- Als je PVOutput uploads had aan staan kun je maximaal 2 minuten later zien of de aanpassing is gelukt. Anders kun je eventueel in de database kijken of de data van vandaag er nu in staat.
- Wanneer je hebt geconcludeerd dat dat goed is gegaan, start je de se-logger service weer met het commando:
user@logger$ sudo service se-logger start
7. Tot slot
Zoals je waarschijnlijk wel hebt kunnen merken is het niet zo eenvoudig om een SolarEdge omvormer te loggen. Voel je vrij om in dit topic om hulp te vragen. Er zullen vast delen van deze startpost zijn die duidelijker moeten. Zeker voor mensen zonder ervaring met Linux zal het pittig zijn, maar samen kunnen we vast wel een mooi overzicht van leesvoer maken om de in de startpost gebruikte Linuxdingen toe te lichten. Wat dat betreft is dit topic net zo "under construction" als het project zelf!Met dank aan Tweaker Aegle voor het meetesten van deze software en GitHub-gebruikers jbuehl en Whizkidzz voor hun onmisbare werk om het SolarEdge protocol te ontcijferen.
[Voor 204% gewijzigd door Jerrythafast op 27-05-2020 07:13]