Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Ginlong Solis omvormer uitlezen voor Domoticz

Pagina: 1
Acties:

  • SuperJoker
  • Registratie: januari 2019
  • Laatst online: 11-01 11:15
Geen vraag, maar meer een howto. Via onze huurbaas (amvest) kregen wij zonnepanelen. Er zijn veel mensen die op deze manier zonnepanelen hebben gekregen.

Hiervoor gebruiken ze de ginlong solis 4G omvormers. Helaas heeft Amvest ervoor gekozen niet gebruik te maken van de standaard wifi monitoring optie op deze apparaten, maar een veel duurdere oplossing, namelijk een externe extra slimme meter en een webportaal. Dit portaal werkt nog niet, is nu in testfase, en de uitrol ervan laat op zich wachten, terwijl er al mensen langer dan een half jaar met panelen zitten.

Echter, deze omvormers hebben een RS485 aansluiting. Deze zit op de onderkant, het is een ronde stekker gemarkeerd 'COM' en er zit een afschroefbaar dopje op. Deze kun je zelf uitlezen.




Benodigdheden

Om deze uit te lezen zoals ik dat doe, heb je nodig:

1x Raspberry Pi Zero W (mag natuurlijk elke pi zijn, ik gebruik deze)
1x RS485 aansluiting tbv. Pi. Ik gebruik deze https://www.abelectronics.co.uk/p/77/rs485-pi

Totaal kosten, als je het bv. bij kiwi bestelt, op dit moment, EUR 24,65.

Als je het netjes wil aansluiten, heb je ook een ronde 4 polige female schroefconnector nodig, deze is bij Conrad te bestellen. Ik heb zelf echter de draadjes gewoon aan de pennetjes gesoldeerd.



Aansluiten

Je kunt deze RS485 hat gewoon bovenop je pi duwen. Een USB RS485 aansluiting zou ook werken. Je hebt als het goed is dan een A(+) en een B(-) aansluiting.

Onderop de omvormer zit dus die ronde stekker. Als je goed kijkt, zul je zien dat de pinnetjes genummerd zijn. Je hebt pin 3 en pin 4 nodig. Pin 3 is A+, pin 4 is B-. Er is geen terminator weerstand nodig, aan geen van beide kanten. Het gaat dus van A op de RS485 aansluiting van de pi, naar de A op de omvormer, en van B naar B.

Instellen

Raspbian
Ik gebruik raspbian strecth lite, het laatste image. Deze kun je downloaden en met etcher op een SD kaart zetten. Hierna maak je in de boot schijf een leeg tekstbestandje aan wat je 'ssh' noemt (hiermee zet je SSH aan) en vervolgens een bestand wat je wpa_supplicant.conf noemt. Hierin zet je:


code:
1
2
3
4
5
6
7
8
9
10
country=NL
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="Het SSI van je wifi"
    scan_ssid=1
    psk="Het password van je wifi"
    key_mgmt=WPA-PSK
}



Hierna kun je deze in je pi steken, en zal je pi opstarten, verbinden met je wifi en kun je er remote op inloggen, bijvoorbeeld met putty. Uit je router kun je halen welk IP adres de pi gekregen heeft. Inloggen kan met username 'pi' wachtwoord 'raspberry'.

Ikzelf haal altijd de user pi weg en maak een eigen user aan met sudorechten, dit is echter niet nodig, en is elders op internet wel te vinden hoe. Kort is het je pi via raspi-config zo zetten dat ie cli inlogged, dan adduser <username>, dan die user toevoegen aan /etc/sudoers, vervolgens opnieuw opstarten, inloggen als die user en dan deluser pi.

Vervolgens apt-get update; apt-get upgrade om alles naar de laatste versie te krijgen.

Dan sudoen naar root (sudo bash). Ik persoonlijk vind dat makkelijker dan continu overal 'sudo' voor te moeten typen.

Als root:


code:
1
2
3
4
apt-get install python python-pip 
python -m pip install pyserial
pip install minimalmodbus
pip install paho-mqtt



Vervolgens; de seriële poorten zijn ze een beetje mee aan het hannesen geweest voor het Bluetooth wat op een zero-W en een pi3+ aanwezig is. Je wil weten op welke seriele poort je RS485 terecht gekomen is. Als je een USB oplossing gebruikt, is dat mogelijk /dev/ttyUSB0. In ons geval (met de RS485 hat) worden de eigen raspberry seriele poorten gebruikt, die op pin 14 en 15 van de GPIO's zit.

Om die te kunnen gebruiken, zet je eerst serieel aan in raspi-config. raspi-config uitvoeren, dan optie 5 kiezen (interfacing), dan optie 6 (serial), "would you like login shell" -> no, "enable serial hardware" -> yes. Bij verlaten van raspi-config zal ie vragen of je opnieuw wil opstarten, dit is nu nog niet nodig.

Hierna open je /boot/config.txt in je favoriete editor. Helemaal onderaan dit bestand voeg je toe:


code:
1
2
enable_uart=1
dtoverlay=pi3-miniuart-bt



Dit zorgt ervoor dat de goede seriële poort op de pi aan pin 14 en 15 zit, en niet aan de bluetooth module.

Open vervolgens /boot/cmdline.txt en controleer dat er geen terminal gestart wordt op je poort. Hier zou zoiets in moeten staan:


code:
1
dwc_otg.lpm_enable=0 console=tty1 root=PARTUUID=196d3d14-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait



Uiteraard is dat partitie-ID bij iedereen anders.

Nadat dit gedaan is, kun je de pi rebooten. Je RS485 zit dan op /dev/serial0.

Dan is er een script nodig voor het uitlezen. Voor ik dat post, een kleine disclaimer; dit script is zeker niet perfect of klaar. Het werkt, en dat is alles. Het verfraaien, moet je zelf doen.

Open een .py bestand naar keuze. Ik heb het mijne 'solipi.py' genoemd.

// edit: voor de volledigheid; onderstaand is door mij aangepast maar niet bedacht. Het is gebaseerd op:
https://github.com/rogersia/Solis-4G


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
import minimalmodbus
import socket
import serial
import paho.mqtt.client as paho
import time

instrument = minimalmodbus.Instrument('/dev/serial0', 1)
instrument.serial.baudrate = 9600
instrument.serial.bytesize = 8
instrument.serial.parity   = serial.PARITY_NONE
instrument.serial.stopbits = 1
instrument.serial.timeout  = 0.2

broker="192.168.1.2"

# callback for mqtt
def on_message(client, userdata, message):
    time.sleep(1)
    print("received message =",str(message.payload.decode("utf-8")))

try:

        # get data from solis
        Realtime_ACW = instrument.read_long(3004, functioncode=4, signed=False) #Read AC Watts as Unsigned 32-Bit
        print("AC_Watts: " + str(Realtime_ACW) + "W")
        Realtime_DCV = instrument.read_register(3021, numberOfDecimals=0, functioncode=4, signed=False) #Read DC Volts as Unsigned 16-Bit
        print("DC Volt: " + str(Realtime_DCV/100) + "V")
        Realtime_DCI = instrument.read_register(3022, numberOfDecimals=0, functioncode=4, signed=False) #Read DC Current as Unsigned 16-Bit
        print("DC Current : " + str(Realtime_DCI) + "A")
        Realtime_ACV = instrument.read_register(3035, numberOfDecimals=0, functioncode=4, signed=False) #Read AC Volts as Unsigned 16-Bit
        print("AC volt : " + str(Realtime_ACV/10) + "V")
        Realtime_ACI = instrument.read_register(3038, numberOfDecimals=0, functioncode=4, signed=False) #Read AC Current as Unsigned 16-Bit
        print("AC Current :" + str(Realtime_ACI) + "A")
        Realtime_ACF = instrument.read_register(3042, numberOfDecimals=0, functioncode=4, signed=False) #Read AC Frequency as Unsigned 16-Bit
        print("AC Frequency :"+ str(Realtime_ACF/100) + "Hz")
        Inverter_C = instrument.read_register(3041, numberOfDecimals=0, functioncode=4, signed=True) #Read Inverter Temperature as Signed 16-Bit
        print("Inverter Temperature :" + str(Inverter_C/10) + "C")
        AlltimeEnergy_KW = instrument.read_long(3008, functioncode=4, signed=False) # Read All Time Energy (KWH Total) as Unsigned 32-Bit
        print("Generated (All time):" +str(AlltimeEnergy_KW) + "kW")
        Today_KW = instrument.read_register(3014, numberOfDecimals=0, functioncode=4, signed=False) # Read Today Energy (KWH Total) as 16-Bit
        print("Generated (Today) :" + str(Today_KW) + "kW")


        client= paho.Client("solipi")
        client.on_message=on_message
        client.connect(broker)
        client.loop_start()
        client.subscribe("domoticz/in")
        time.sleep(2)
        client.publish("domoticz/in",'{"command":"udevice","idx":125,"nvalue":0,"svalue":"' + str(Realtime_ACW) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":137,"nvalue":' + str(Realtime_DCV/100) + ',"svalue":"' + str(Realtime_DCV/100) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":138,"nvalue":' + str(Today_KW) + ',"svalue":"' + str(Today_KW) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":139,"nvalue":' + str(AlltimeEnergy_KW) + ',"svalue":"' + str(AlltimeEnergy_KW) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":140,"nvalue":' + str(Realtime_DCI) + ',"svalue":"' +  str(Realtime_DCI) + '"}')
        client.disconnect()
        client.loop_stop()

except Exception, e:

        print(str(e));



Uiteraard dien je bovenaan het script je broker (in mijn geval mosquitto) in te vullen, en zijn de ID's die je bij het publishen ziet, specifiek voor mij, hier zul je je eigen ID's moeten invullen. Hier komen we later op terug.

Hierna kun je een simpele cronjob toevoegen die dit script elke minuut uitvoert. Crontab -e, en dan:


code:
1
* * * * * /usr/bin/python /locatie/naar/je/script.py



Hierna ben je klaar op deze pi. Later dienen nog de juiste ID's ingevoerd worden.

Domoticz

Ik ga er vanuit dat Domoticz al gekoppeld is aan mosquitto. Bij hardware kun je mosquitto toevoegen, je selecteert hiervoor 'MQTT Client Gateway with LAN interface'. Dit zorgt ervoor dat Domoticz abonneert op 'domoticz/in'.

Hierna maak je bij hardware een dummy switch aan, ik heb deze 'solis' genoemd.


Daarna kun je onder 'apparaten' virtuele sensors aanmaken. Klik hiervoor op 'maak virtuele sensoren'. Geef de sensor een passende naam naar wens. Deze sensoren vind je vervolgens terug onder 'apparaten'



Hier staat een ID. Dat zijn de ID's die je dient in te vullen op je RS485 pi in het 'solipi.py' script.

gebruik

Hierna zou e.e.a. moeten functioneren, en krijg je dit:


Vanaf dit punt kun je zelf verder fine-tunen naar wens.

De waardes staan op rood, omdat het nu donker is, en de omvormer in het donker uit staat. Dus krijgt domoticz nu geen waardes. Morgen weer.

Het best te consumeren met 1kg JOZO.


  • Erik2B
  • Registratie: februari 2002
  • Laatst online: 21:43
Ziet er goed uit!.

Wij hebben dezelfde setup gekregen. Echter heb ik een datalog stick aangeschaft om het bij te houden.
Dit gaat nu via de monitor site van Ginlong en ik wil deze nu eigenlijk lokaal gaan afvangen via een raspberry.

is jouw script daarvoor te gebruiken?

gr Erik

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
@Erik2B

Voor uitlezen met o.a. een Raspberry van de Ginlong Monitoring website en van de DLS_Lan en DLS_WiFi wordt al werk verricht in andere threads: kijk bijv. eens in deze thread.
De basis-versie van het script (geleend uit een ander Forum) met uitlezing van Ginlong-portal1.0 levert Actual Power, EToday en ETotal, met output naar Domoticz en naar PVOutput.
Via Ginlong-portal 2.0 (gisteren ontdekt) zou je meer info moeten kunnen pakken, maar dat wordt nog uitgezocht.

Toulon7559 wijzigde deze reactie 30-01-2019 19:03 (59%)
Reden: tekst aangepast


  • Erik2B
  • Registratie: februari 2002
  • Laatst online: 21:43
@Toulon7559
Bedankt voor je reactie! Zag inderdaad dat er nu meer met solis gedaan werd tov een maand of 3 geleden 😏

Ben me zeker aan het inlezen daarin, maar mijn scripting talent is nog minimaal.

Ginlong portal 2.0? Hmmmm gebruik nu tijdelijk de app via de monitoring site. Maar heb het idee dat die maar om de x tijd update..

Blijf je met spanning volgen.

Thanks!

  • wessel145
  • Registratie: juli 2010
  • Laatst online: 07:21
Toulon7559 schreef op woensdag 30 januari 2019 @ 18:07:
@Erik2B


Via Ginlong-portal 2.0 (gisteren ontdekt) zou je meer info moeten kunnen pakken, maar dat wordt nog uitgezocht.
Klopt. ik ben op het moment bezig met dat script en op dit moment krijg ik netjes alle data binnen, verdere updates zal ik in het andere draadje posten!

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
@wessel145

Bij mij lukt het overgangs-inloggen op het Ginlong-Portal2.0 op geen enkele manier:
melding is steeds 'server too busy'
Bij inloggen op het nieuwe Ginlog-portal m.b.v. mijnPortal1.0-UN+PW en bij nieuw registreren krijg ik de reactie 'invalid account':
:'( dat schiet dus niet op ......

Toulon7559 wijzigde deze reactie 31-01-2019 10:14 (10%)


Acties:
  • 0Henk 'm!

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
Het heeft even geduurd ( en misschien toeval dat het gebeurde nadat ik een email kon sturen naar een Ginlong-contactadres), maar heb nu toch toegang gekregen tot Ginlong Portal2.0, zelfs met dezelfde inlog-info als voor Portal1.0.

Wessels code van Github gebruikt, en kom zover dat GinMon.py tot proef-executie komt.
Moest wel even een aantal eenvoudige maatregelen nemen om (i.p.v. Python3) met Python2.7 verder te komen, waarbij module-installatie het eenvoudigst gaat vanuit de root m.b.v. sudo pip install ..... :
  • configparser moet ConfigParser zijn [volgens https://docs.python.org/2/library/configparser.html ]
  • en dat betreft een import-regel en script-regel 156
  • requests moet worden geïnstalleerd, voordat je die module kunt importeren
  • pymysql moet eveneens worden geïnstalleerd zodat het script goed loopt
Loop daarna even vast op een melding die wat meer studie vraagt:
Welcome to Ginlong monitoring tool v2 by wessel145
Loading Config
Config Loaded, logging in
Traceback (most recent call last):
File "GinMon.py", line 177, in <module>
InverterID = CheckLogin()
File "GinMon.py", line 56, in CheckLogin
if rson['result'].get('isAccept') == 1:
KeyError: 'result'
Kleinigheidje gevonden dat InverterID in de respons van Ginlong onder deviceId zit.
Gezien de foutmelding even daarmee zitten experimenteren in het script, maar dat geeft (nog) geen oplossing.

Ziet iemand welke script-aanpassing nodig is om verder te komen met toepassing van Python2.7?

Toepassing van een Python-versie 3.X is misschien de eenvoudiger oplossing, maar diverse programma's op mijn computers moeten Python2.7 hebben (of ik moet ze ombouwen), dus dan maar naast elkaar en gescheiden aanroepen waar nodig.
Python3.4 is eenvoudig genoeg te installeren via
sudo apt-get update
sudo apt-get install python3
Dan daarna nog een aantal benodigde modules ook in de Python3.4 folder zien te krijgen, want Python3.4 gebruikt geen modules uit de folders van Python2.7 en omgekeerd..
Als ik vanuit de root-foolder de benodigde modules installeer, dan komen ze nu niet bij Python3.4 terecht, hoewel ik meen ze in de goede richting te sturen met bijv. een van de volgende 2 CLI-aanroepen
sudo apt-get install python3-<modulenaam>
sudo pip3 install <modulenaam>
Wat is de eenvoudigste methode om benodigde Python-modules netjes zichtbaar gelinkt met de Python3.4-folder te krijgen?
.

Toulon7559 wijzigde deze reactie 05-03-2019 10:45 (100%)
Reden: tekst uitgebreid


Acties:
  • 0Henk 'm!

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
Inmiddels is via webtoegang voor de Ginlong Monitoring Website alleen Portal2.0 in bedrijf.
Op de Domoticz Forumsite is een aangepast Python-script beschikbaar gekomen, waarmee de essentiële PV-data kan worden opgehaald en weggezet naar je Domoticz.

Opletten dat je dit script onder Python2.7 moet draaien:
met Python3.x krijg je foutmeldingen.

Acties:
  • 0Henk 'm!

  • eth0
  • Registratie: mei 2002
  • Laatst online: 14-10 08:46
Toulon7559 schreef op woensdag 1 mei 2019 @ 09:42:
Inmiddels is via webtoegang voor de Ginlong Monitoring Website alleen Portal2.0 in bedrijf.
Op de Domoticz Forumsite is een aangepast Python-script beschikbaar gekomen, waarmee de essentiële PV-data kan worden opgehaald en weggezet naar je Domoticz.

Opletten dat je dit script onder Python2.7 moet draaien:
met Python3.x krijg je foutmeldingen.
Heb dat script aangepast om er nog meer uit te halen, en deze meteen weg te schrijven in een influxdb.

Daar heb ik nu het volgende uitgehaald.



Zal tzt hier wel een tutorial van maken en de source delen.

eth0 wijzigde deze reactie 08-05-2019 20:52 (3%)


  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
Zeer benieuwd naar deze uitgebreide uitlezing van Ginlong Portal2.0!

De RS485-uitlezing van Superjoker (aan het begin van deze thread) is het andere eind van de uitleesmogelijkheden.

;) Nu alleen nog Wessel145's uitlezing vanaf LAN werkend krijgen.
Dan heb je ongeveer alle mogelijkheden ingevuld ......

Toulon7559 wijzigde deze reactie 09-05-2019 16:56 (114%)
Reden: tekst uitgebreid


Acties:
  • 0Henk 'm!

  • eth0
  • Registratie: mei 2002
  • Laatst online: 14-10 08:46
Had deze ook al in een ander topic gepost, maar is hier natuurlijk ook op zijn plaats.

Heb een python script gemaakt, welke de statistics van de Ginlong pagina scraped van mijn Solis inverter. Dit python script kan vervolgens deze data dan weer loggen naar PVoutput, influxdb en/of een mqtt.

Ik lees de monitoring.csisolar.com daar kan je met de zelfde username/password inloggen als op m.ginlong.com. Echter is hier het device gedeelte al klaar op deze pagina welke op de ginlong nog niet. Als die pagina's zijn van de zelfde club en gebruiken de zelfde achterliggende database.

Zie voor meer info: https://blog.kruyt.org/ginlong-scraper/

Plaatje van een Grafana dashboard.



En mijn pvoutput: https://pvoutput.org/list.jsp?userid=70678

eth0 wijzigde deze reactie 13-05-2019 23:34 (20%)


Acties:
  • 0Henk 'm!

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
@eth0

Nog een kleinigheid aan te passen in het deel met uitvoer naar PVOutput.
Het tijdverschil is niet over het hele jaar constant 2 uur, want voorloping nog iets met zomertijd en wintertijd.
Je moet m.i. voor de uitvoer naar PVOutput kiezen, óf voor UTC, óf voor lokale tijd.

Acties:
  • 0Henk 'm!

  • eth0
  • Registratie: mei 2002
  • Laatst online: 14-10 08:46
Toulon7559 schreef op zondag 19 mei 2019 @ 08:13:
@eth0

Nog een kleinigheid aan te passen in het deel met uitvoer naar PVOutput.
Het tijdverschil is niet over het hele jaar constant 2 uur, want voorloping nog iets met zomertijd en wintertijd.
Je moet m.i. voor de uitvoer naar PVOutput kiezen, óf voor UTC, óf voor lokale tijd.
Ah, klopt ja, dit was nog een quick workaround. Zal hier eens een betere oplossing voor maken...

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
@eth0

Het volgende is als volledig 'blanco' vraag bedoeld, omdat ik bij mij 'rare dingen' zie en een verklaring zoek!

Klopt bij jou enigermate de info uit je script met de info die op andere manier voor je Solis-inverter wordt gelezen? Cq lijkt de uitgelezen info realistisch?
Of zie je dezelfde zaken die ik waarneem?

Heb vandaag zitten kijken naar de waarden uit het Portal-uitlezende script, maar begrijpelijkheid is bij mij soms ver te zoeken:
# Temp en VPV1 lijken gedurende productie realistisch, maar blijven in de nacht ergens ongedefinieerd/flatline hangen, en soms ook overdag
# IPV1 is in de scriptprint netjes
# DC_Power_PV1 is steeds None in de scriptprintout
# de AC-Waarden voor Voltage, Current en Power zijn 0 in de scriptprintout,
- AC_Voltage en AC_Current zijn overeenkomstig bij upload naar Domoticz steeds 0 zowel op widget als in de grafiek
- AC_Power is na upload naar Domoticz 0 op de widget, maar lijkt wel weer te kloppen in de grafiek.
Voor AC_Power gebeurt dus in Domoticz ondergronds iets ongrijpbaars.

  • eth0
  • Registratie: mei 2002
  • Laatst online: 14-10 08:46
Toulon7559 schreef op woensdag 22 mei 2019 @ 19:49:
@eth0

Het volgende is als volledig 'blanco' vraag bedoeld, omdat ik bij mij 'rare dingen' zie en een verklaring zoek!

Klopt bij jou enigermate de info uit je script met de info die op andere manier voor je Solis-inverter wordt gelezen? Cq lijkt de uitgelezen info realistisch?
Ja deze zijn bij mij realistisch. Maar ik lees ze niet direct uit de inverter, maar uit de portal waar de inverter deze upload.
Of zie je dezelfde zaken die ik waarneem?

Heb vandaag zitten kijken naar de waarden uit het Portal-uitlezende script, maar begrijpelijkheid is bij mij soms ver te zoeken:
# Temp en VPV1 lijken gedurende productie realistisch, maar blijven in de nacht ergens ongedefinieerd/flatline hangen, en soms ook overdag
Die flat line komt doordat de inverter in de nacht geen data verstuurt. En overdacht soms mist er een upload 9van die 1x per 5 min gedaan wordt), ik heb nog niet uitgezocht of dat door de inverter/stick komt of door de portal.
# IPV1 is in de scriptprint netjes
# DC_Power_PV1 is steeds None in de scriptprintout
# de AC-Waarden voor Voltage, Current en Power zijn 0 in de scriptprintout,
Dit zijn de waardes welke ik nu terug krijg. Kan jij ook een printje sturen?


results from monitoring.csisolar.com

Wed May 22 18:33:14 2019

DC_Voltage_PV1: 269.00
DC_Voltage_PV2: 267.00
DC_Current1: 0.40
DC_Current2: 0.40
AC_Voltage: 232.60
AC_Current: 1.20
AC_Power: 209.04000000000002
AC_Frequency: 49.98
DC_Power_PV1: None
DC_Power_PV2: None
Inverter_Temperature: 33.20
Daily_Generation: 24.30
Monthly_Generation: 382
Annual_Generation: 1417.2999999999995
Total_Generation: 1714.00
Generation_Last_Month: 536
- AC_Voltage en AC_Current zijn overeenkomstig bij upload naar Domoticz steeds 0 zowel op widget als in de grafiek
- AC_Power is na upload naar Domoticz 0 op de widget, maar lijkt wel weer te kloppen in de grafiek.
Voor AC_Power gebeurt dus in Domoticz ondergronds iets ongrijpbaars.
Hoe upload jij naar domoticz via mqtt? En over welke grafiek heb jij heb? In domoticz of in grafana?

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
Dit is de printout die ik krijg als ik het script run vanaf Putty's CLI
Thu May 23 10:02:53 2019

DC_Voltage_PV1: 140.60
DC_Voltage_PV2: 0.00
DC_Current1: 3.60
DC_Current2: 0.00
AC_Voltage: 0.00
AC_Current: 0.00
AC_Power: 490.9752
AC_Frequency: 49.92
DC_Power_PV1: None
DC_Power_PV2: None
Inverter_Temperature: 51.70
Daily_Generation: 1.50
Monthly_Generation: 48.1
Annual_Generation: 179.09999999999994
Total_Generation: 1133.00
Generation_Last_Month: 65
Blijkbaar heb ik door het scriptgeknutsel gisteravond toch nu AC_Power aan de gang gekregen:
lijkt dan iets heel subtiels te zijn in de script-layout .....
Kan me niet voorstellen wat het is, maar vanavond nog eens heel nauwkeurig vergelijken tussen het origineel en 'mijn versie' óf en waar verschillen zitten voor de waarden die bij mij nu 0 geven.
Mijn script voor aansturing van update naar Domoticz zet ik in een volgend bericht.

Toevoeging 26 mei 2019:
Vergelijken heeft wat opgeleverd.
In een ander script vond ik een lijst met identifiers geldend op de Ginlong Monitoring Portal.
Voor sommige waarden iets anders dan in eth0's script.
de 2 onderstaande regels aangepast en nu komen netjes waarden binnen.
AC_Voltage = resultJson['result']['deviceWapper']['dataJSON'].get('1af') #1ah
AC_Current = resultJson['result']['deviceWapper']['dataJSON'].get('1ai') #1ak
De oorspronkelijke identifiers uit eth0's script staan achter het #je.

Toulon7559 wijzigde deze reactie 26-05-2019 17:39 (48%)
Reden: tekst uitgebreid


  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
Aanhangsel aan het Python-script van eth0 voor overdracht van waarden naar Virtual devices in Domoticz, op dezelfde processor waarop het Python-script draait.
Daarom in die regels IP-adres = 127.0.0.1 = localhost
Gebruikt dus geen MQTT, maar een JSON-call voor directe DeviceUpdate.
Let op dat de betreffende scriptregels met httpresponse allemaal doorlopen over 2 of meer regels.
Gelijktijdig waarden uit dit script wegschrijven naar Virtual Device van een Domoticz op een andere processor is ook niet moeilijk:
zie als voorbeeld de commented regel onderaan, die wegschrijft naar Domoticz op IP-adres = 192.168.1.5

Bij de upload voor de P1Meter moet een schaalfactor worden aangebracht tussen de Solis-portal-uitlezing en de invoer naar het Virtual Device, omdat de originele Energie-data een factor 1000 verkeerd zit, met kWh t.o.v. Wh. Script-regels geleend uit een ander Ginlong-script in dit Forum.
Script-regel "if POWER >= 0" met zijn "else" is voor deze Solis-uitlezing meer voorzorg dan praktijk, ingegeven door scripts voor sommige andere inverters die in rust soms iets consumeren.
# --------------------------------------------------
# START OF UPLOAD TO DOMOTICZ
# --------------------------------------------------
# Imports for script-operation

import json
import urllib

# Presetting of IDX for virtual sensors related to Ginlong-inverter
domoticz_P1 = "3290" # IDX for virtual P1 meter
domoticz_Temp = "2729" # IDX for virtual Temperature
domoticz_VPV1 = "2730" # IDX for virtual sensor for input voltage
domoticz_IPV1 = "2732" # IDX for virtual sensor for input current
domoticz_AC_PE = "2734" # IDX for virtual sensor for output power & energy
domoticz_AC_V = "2736" # IDX for virtual sensor for output voltage
domoticz_AC_I = "2735" # IDX for virtual sensor for output current

# Setting & Linking of parameters
# Scaling for Total_Generation in Wh
multiply='1000.0'
etotal1000 = float(Total_Generation) * float(multiply)
etotalstr=str(etotal1000)
# Translation and fill-in in line with Wiki-dictionary for API/JSON
USAGE1 = 0
USAGE2 = 0
RETURN1 = etotal1000
RETURN2 = 0
CONS = 0
PROD = AC_Power
TEMPERATURE = Inverter_Temperature
VOLTAGE_DC = DC_Voltage_PV1
VOLTAGE_AC = AC_Voltage
CURRENT_DC = DC_Current1
CURRENT_AC = AC_Current
POWER = AC_Power
ENERGY = etotal1000

print 'Update of Domoticz:'
httpresponse = urllib.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=udevice&idx=" + str(domoticz_P1) + "&nvalue=0&svalue=" + str(float(USAGE1)) + ";" + str(float(USAGE2)) + ";" + str(float(RETURN1)) + ";" + str(float(RETURN2)) + ";" + str(float(CONS)) + ";" + str(float(PROD)) )
print 'Uploaded P1'

if POWER >= 0:
httpresponse = urllib.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=udevice&idx=" + str(domoticz_Temp) + "&nvalue=0&svalue=" + str(float(TEMPERATURE)) )
print 'Uploaded Temp'
httpresponse = urllib.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=udevice&idx=" + str(domoticz_VPV1) + "&nvalue=0&svalue=" + str(float(VOLTAGE_DC)) )
print 'Uploaded V_PV'
httpresponse = urllib.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=udevice&idx=" + str(domoticz_IPV1) + "&nvalue=0&svalue=" + str(float(CURRENT_DC)) )
print 'Uploaded I_PV'
httpresponse = urllib.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=udevice&idx=" + str(domoticz_AC_PE) + "&nvalue=0&svalue=" + str(float(POWER)) + ";" + str(float(ENERGY)) )
print 'Uploaded P&E'
httpresponse = urllib.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=udevice&idx=" + str(domoticz_AC_V) + "&nvalue=0&svalue=" + str(float(VOLTAGE_AC)) )
print 'Uploaded V_AC'
httpresponse = urllib.urlopen("http://127.0.0.1:8080/json.htm?type=command&param=udevice&idx=" + str(domoticz_AC_I) + "&nvalue=0&svalue=" + str(float(CURRENT_AC)) )
print 'Uploaded I_AC'
# httpresponse = urllib.urlopen("http://192.168.1.5:8080/json.htm?type=command&param=udevice&idx=" + str(domoticz_AC_PEB) + "&nvalue=0&svalue=" + str(float(POWER)) + ";" + str(float(ENERGY)) )
# print 'Uploaded P&E to RPIB'
else:
print 'No Power = No Upload'

# --------------------------------------------------
# END OF UPLOAD TO DOMOTICZ
# --------------------------------------------------

Toulon7559 wijzigde deze reactie 26-05-2019 11:25 (16%)
Reden: tekst aangepast


Acties:
  • 0Henk 'm!

  • roeldev
  • Registratie: juni 2010
  • Laatst online: 20:16
eth0 schreef op woensdag 22 mei 2019 @ 20:40:

Die flat line komt doordat de inverter in de nacht geen data verstuurt. En overdacht soms mist er een upload 9van die 1x per 5 min gedaan wordt), ik heb nog niet uitgezocht of dat door de inverter/stick komt of door de portal.
Zelf heb ik 2 Solis inverters hangen en beiden hebben af en toe ook gaten van 10-20 min. in de grafieken op de portal. Mijn vermoeden is dat dit aan de DLS ligt die simpelweg op dat moment z'n data niet kan versturen. Dit is sowieso een keer gebeurd tijdens een firmware update van de DLS, wat opzich logisch is.

Acties:
  • 0Henk 'm!

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
@eth0

De oplossing voor tz-correctie t.o.v. lokale tijd is eenvoudig:
de offset van 7200 seconden weghalen.

Enige effect bij wisseling van zomer- en wintertijd is dan een kleine zigzag in de grafiek, vanwege de tijdsprong in de wisselnacht.

Toevoeging 29 mei 2019
Draait het script een paar dagen goed en dan sta je toch weer raar te kijken door een foutmelding die script-uitvoering blokkeert.
Traceback (most recent call last):
File "/home/pi/domoticz/scripts/python/Ginlong_scraper00.py", line 57, in <module>
if resultJson['result'].get('isAccept') == 1:
KeyError: 'result'
Zou het iets te maken kunnen hebben met de manier en frequentie van aanroepen?
Dit laatste script draait namelijk vanwege het scriptgeknutsel nog 'onder test', naast Wessel145's script dat het echte werk doet in nagenoeg hetzelfde tempo met dezelfde login-info.
Alleen geen verbetering merkbaar als ik Wessel145's script weghaal ..........

Toulon7559 wijzigde deze reactie 31-05-2019 15:33 (61%)
Reden: Alinea toegevoegd


Acties:
  • 0Henk 'm!

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
Al iemand geslaagd voor Ginlong-inverters volgend op dit script (of vergelijkbaar) een robuuste uitlees-implementatie te maken die werkt met upload vanuit de inverter naar Server_B?

Toulon7559 wijzigde deze reactie 27-05-2019 15:41 (37%)


  • Alphyraz
  • Registratie: juli 2011
  • Laatst online: 21:26
Ik heb een vraag. Ik heb het bordje op Kiwi Electronics gevonden (https://www.kiwi-electronics.nl/rs-485-pi). Ik heb momenteel al een Raspberry pi Zero. Waar moet ik verder nog rekening mee houden qua bedrading en dergelijke?

Ik hoor graag van je. :)

Acties:
  • 0Henk 'm!

  • Alphyraz
  • Registratie: juli 2011
  • Laatst online: 21:26
@SuperJoker Ik wil niet onbeleefd en ongeduldig overkomen, maar zou je misschien mijn vraag kunnen beantwoorden? _/-\o_

  • Pimmetje16
  • Registratie: september 2005
  • Laatst online: 13-09 17:57
SuperJoker schreef op dinsdag 8 januari 2019 @ 20:37:
Als je het netjes wil aansluiten, heb je ook een ronde 4 polige female schroefconnector nodig, deze is bij Conrad te bestellen. Ik heb zelf echter de draadjes gewoon aan de pennetjes gesoldeerd.
Wat voor een connector zou aan te raden zijn. Ik kan er geen vinden waarvan ik zou denken dat ie past

  • Alphyraz
  • Registratie: juli 2011
  • Laatst online: 21:26
Pimmetje16 schreef op donderdag 6 juni 2019 @ 16:26:
[...]

Wat voor een connector zou aan te raden zijn. Ik kan er geen vinden waarvan ik zou denken dat ie past
Hier ben ik ook heel erg benieuwd naar. Als je dat dan combineert met deze stick, dan is het nog makkelijker en met zo’n connector hoef je ook niet aan de omvormer te gaan solderen en dat lijkt me een stuk slimmer.

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
Voor aansluiten en instellen van de Ginlong Solis inverters is deze URL misschien ook handig:
https://usservice.ginlong.com/support/home

Acties:
  • 0Henk 'm!

  • wessel145
  • Registratie: juli 2010
  • Laatst online: 07:21
eth0 schreef op maandag 13 mei 2019 @ 23:18:

Heb een python script gemaakt, welke de statistics van de Ginlong pagina scraped van mijn Solis inverter. Dit python script kan vervolgens deze data dan weer loggen naar PVoutput, influxdb en/of een mqtt.
Gaaf, ik ben zelf ook een tijdje bezig geweest https://github.com/wessel145/GinMon met zo'n python script. Aangezien pvoutput en m'n mariadb voor mij t belangrijkste was ben ik daar opgehouden, leuk om te zien dat de aanpak vergelijkbaar is :)

Acties:
  • 0Henk 'm!

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
@Aphyraz

De KiWi RS485--url in je bericht geeft een fout.
Bedoel je misschien deze AddOn met Artikelcode: KW-1827?

Deze opzet-PCB van Linksprite werkt trouwens ook goed:
het wiki-artikeltje en de Sparkfun-handleiding geven aanwijzingen hoe het PCB aan te sluiten en toe te passen.
Deze nagenoeg gelijke uitvoering te vinden bij Conrad.

Toulon7559 wijzigde deze reactie 16-06-2019 15:27 (64%)


  • Alphyraz
  • Registratie: juli 2011
  • Laatst online: 21:26
@Toulon7559 Bedankt. Dat was inderdaad het product dat ik bedoelde. De link is denk ik veranderd want toen ik 'm postte werkte hij nog wel.

Bedankt voor de link naar het product bij Conrad. Het enige wat ik nu nog moet weten is wat voor aansluiting ik nodig heb aan de andere kant, die dus op de omvormer aangesloten moet worden.

  • Toulon7559
  • Registratie: oktober 2016
  • Laatst online: 12-10 10:20
Connector-info vinden blijkt niet zo eenvoudig, want Ginlong_Solis meldt daarover in de beschrijvingen helemaal niets behalve de pin-nummers en voorkeursdraadkleuren.

  • roeldev
  • Registratie: juni 2010
  • Laatst online: 20:16
Toulon7559 schreef op maandag 17 juni 2019 @ 16:40:
Connector-info vinden blijkt niet zo eenvoudig, want Ginlong_Solis meldt daarover in de beschrijvingen helemaal niets behalve de pin-nummers en voorkeursdraadkleuren.
Met wat zoek werk kom ik dit product tegen dat er wel interessant uit ziet: SOL-DLB-LOOM3-2M

Dit zijn zover ik het kan zien de juiste connectors. Wel goed aan de prijs direct.

  • Alphyraz
  • Registratie: juli 2011
  • Laatst online: 21:26
Ik heb nu een data monitoring stick, maar wat een gare troep is dat zeg. Ik ga dus liever voor een eigen oplossing met een Raspberry Pi. :)
Past een female jumpfire niet gewoon op de pinnen van de omvormer? Het is dus inderdaad nog niet zo makkelijk om een geschikte connector te vinden, maar volgens TS moet die op Conrad te vinden zijn.

  • roeldev
  • Registratie: juni 2010
  • Laatst online: 20:16
Alphyraz schreef op maandag 17 juni 2019 @ 18:59:
Ik heb nu een data monitoring stick, maar wat een gare troep is dat zeg. Ik ga dus liever voor een eigen oplossing met een Raspberry Pi. :)
Past een female jumpfire niet gewoon op de pinnen van de omvormer? Het is dus inderdaad nog niet zo makkelijk om een geschikte connector te vinden, maar volgens TS moet die op Conrad te vinden zijn.
Heb je hier toevallig al enige vooruitgang mee geboekt? Ik ben van plan om ook zelf data uit de omvormer te trekken, in hoeverre dat mogelijk is. De Ginlong site met al hun statistieken komen namelijk in de verste verte niet overheen met de maandelijkse rapporten die ik van Nuon ontvang. Ik zou daar ook graag zelf wat meer controle op hebben.

  • Alphyraz
  • Registratie: juli 2011
  • Laatst online: 21:26
roeldev schreef op donderdag 29 augustus 2019 @ 16:45:
[...]

Heb je hier toevallig al enige vooruitgang mee geboekt? Ik ben van plan om ook zelf data uit de omvormer te trekken, in hoeverre dat mogelijk is. De Ginlong site met al hun statistieken komen namelijk in de verste verte niet overheen met de maandelijkse rapporten die ik van Nuon ontvang. Ik zou daar ook graag zelf wat meer controle op hebben.
Ik kan je vertellen dat ik al ruim twee maanden de omvormer uitlees met een Raspberry Pi en een Python-script. Ik heb destijds ook een tutorial/how to geschreven maar die is nog niet af en is er sindsdien bij ingeschoten. Ik zal hier binnenkort weer eens wat tijd insteken. Het werkt bij mij in ieder geval wel perfect.

  • roeldev
  • Registratie: juni 2010
  • Laatst online: 20:16
Alphyraz schreef op donderdag 29 augustus 2019 @ 16:56:
[...]

Ik kan je vertellen dat ik al ruim twee maanden de omvormer uitlees met een Raspberry Pi en een Python-script. Ik heb destijds ook een tutorial/how to geschreven maar die is nog niet af en is er sindsdien bij ingeschoten. Ik zal hier binnenkort weer eens wat tijd insteken. Het werkt bij mij in ieder geval wel perfect.
Ah dat is fijn om te horen! Zou je misschien je tutorial/how to en code willen delen? Ga ik even kijken of ik het thuis ook aan de praat krijg

  • Alphyraz
  • Registratie: juli 2011
  • Laatst online: 21:26
roeldev schreef op vrijdag 30 augustus 2019 @ 09:15:
[...]

Ah dat is fijn om te horen! Zou je misschien je tutorial/how to en code willen delen? Ga ik even kijken of ik het thuis ook aan de praat krijg
Ik snap je enthousiasme, zo was ik ook, haha. Ik ben deze week helaas nog niet in de gelegenheid om het af te maken, maar volgende week wel. Het is in ieder geval goed dat je al zo’n datalogging stick hebt. In de tutorial die waarmee ik dus nog bezig ben staat een lijst aan spullen die je nodig hebt en dat zijn er maar een paar. De datalogging stick is het belangrijkst. :)

  • roeldev
  • Registratie: juni 2010
  • Laatst online: 20:16
Alphyraz schreef op vrijdag 30 augustus 2019 @ 13:03:
[...]

Ik snap je enthousiasme, zo was ik ook, haha. Ik ben deze week helaas nog niet in de gelegenheid om het af te maken, maar volgende week wel. Het is in ieder geval goed dat je al zo’n datalogging stick hebt. In de tutorial die waarmee ik dus nog bezig ben staat een lijst aan spullen die je nodig hebt en dat zijn er maar een paar. De datalogging stick is het belangrijkst. :)
Haha, precies! Maar begrijp me niet verkeerd, het heeft geen haast, ik kan best even wachten. Doe het wanneer het jou uitkomt :)

  • Pimmetje16
  • Registratie: september 2005
  • Laatst online: 13-09 17:57
Ik heb inmiddels een 3D printer. De eerste print is een connector voor Solis, hij lijkt nog te passen ook :).

  • Alphyraz
  • Registratie: juli 2011
  • Laatst online: 21:26
roeldev schreef op vrijdag 30 augustus 2019 @ 13:08:
[...]


Haha, precies! Maar begrijp me niet verkeerd, het heeft geen haast, ik kan best even wachten. Doe het wanneer het jou uitkomt :)
Roels knutselblog: Solis-omvormer uitlezen met een Raspberry Pi
Enjoy! :)

  • roeldev
  • Registratie: juni 2010
  • Laatst online: 20:16
Super nice! Ziet er goed uit. Makkelijk te volgen. Ik ga dr zeker ook even naar kijken!

  • Alphyraz
  • Registratie: juli 2011
  • Laatst online: 21:26
Mooi, haha. Hopelijk heb je er wat aan!
Pagina: 1


Apple iPhone 11 Nintendo Switch Lite LG OLED C9 Google Pixel 4 FIFA 20 Samsung Galaxy S10 Sony PlayStation 5 Elektrische voertuigen

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True