Ginlong Solis omvormer uitlezen voor Domoticz

Pagina: 1
Acties:

Acties:
  • +3 Henk 'm!

  • SuperJoker
  • Registratie: Januari 2019
  • Laatst online: 30-01-2023
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.

Afbeeldingslocatie: https://i.imgur.com/MKmBJdp.jpg


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.

Afbeeldingslocatie: https://i.imgur.com/2BWDYYN.jpg

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.
Afbeeldingslocatie: https://i.imgur.com/eAtgDGc.png

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'

Afbeeldingslocatie: https://i.imgur.com/dLKfCM2.png

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:
Afbeeldingslocatie: https://i.imgur.com/3OaQ5zd.png

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.


Acties:
  • 0 Henk 'm!

  • Erik2B
  • Registratie: Februari 2002
  • Laatst online: 11:42
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

Acties:
  • +1 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
@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.

[ Voor 59% gewijzigd door Toulon7559 op 30-01-2019 19:03 . Reden: tekst aangepast ]


Acties:
  • 0 Henk 'm!

  • Erik2B
  • Registratie: Februari 2002
  • Laatst online: 11:42
@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!

Acties:
  • 0 Henk 'm!

  • LigeTRy
  • Registratie: Juli 2010
  • Laatst online: 21-10 13:11
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!

Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
@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 ......

[ Voor 10% gewijzigd door Toulon7559 op 31-01-2019 10:14 ]


Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
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?
.

[ Voor 100% gewijzigd door Toulon7559 op 05-03-2019 10:45 . Reden: tekst uitgebreid ]


Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14: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.

Acties:
  • 0 Henk 'm!

  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09 22:14
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.

Afbeeldingslocatie: https://tweakers.net/ext/f/HysYs9yhPvJdjhfIAiIAoeCR/full.png

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

[ Voor 3% gewijzigd door eth0 op 08-05-2019 20:52 ]


Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
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 ......

[ Voor 114% gewijzigd door Toulon7559 op 09-05-2019 16:56 . Reden: tekst uitgebreid ]


Acties:
  • 0 Henk 'm!

  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09 22:14
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.

Afbeeldingslocatie: https://blog.kruyt.org/content/images/2019/05/grafana-dashboard-ginlong-small.png

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

[ Voor 20% gewijzigd door eth0 op 13-05-2019 23:34 ]


Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
@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:
  • 0 Henk 'm!

  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09 22:14
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...

Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
@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.

Acties:
  • 0 Henk 'm!

  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09 22:14
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?

Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
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.

[ Voor 48% gewijzigd door Toulon7559 op 26-05-2019 17:39 . Reden: tekst uitgebreid ]


Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
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
# --------------------------------------------------

[ Voor 16% gewijzigd door Toulon7559 op 26-05-2019 11:25 . Reden: tekst aangepast ]


Acties:
  • 0 Henk 'm!

  • roeldev
  • Registratie: Juni 2010
  • Laatst online: 10-09 18:55
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:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
@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 ..........

[ Voor 61% gewijzigd door Toulon7559 op 31-05-2019 15:33 . Reden: Alinea toegevoegd ]


Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
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?

[ Voor 37% gewijzigd door Toulon7559 op 27-05-2019 15:41 ]


Acties:
  • 0 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
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:
  • 0 Henk 'm!

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

Acties:
  • 0 Henk 'm!

  • Pimmetje16
  • Registratie: September 2005
  • Laatst online: 01-10 15:10
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

Acties:
  • 0 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
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.

Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
Voor aansluiten en instellen van de Ginlong Solis inverters is deze URL misschien ook handig:
https://usservice.ginlong.com/support/home

Acties:
  • 0 Henk 'm!

  • LigeTRy
  • Registratie: Juli 2010
  • Laatst online: 21-10 13:11
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:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
@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.

[ Voor 64% gewijzigd door Toulon7559 op 16-06-2019 15:27 ]


Acties:
  • 0 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
@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.

Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
Connector-info vinden blijkt niet zo eenvoudig, want Ginlong_Solis meldt daarover in de beschrijvingen helemaal niets behalve de pin-nummers en voorkeursdraadkleuren.

Acties:
  • 0 Henk 'm!

  • roeldev
  • Registratie: Juni 2010
  • Laatst online: 10-09 18:55
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.

Acties:
  • 0 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
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: 10-09 18:55
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.

Acties:
  • +1 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
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.

Acties:
  • 0 Henk 'm!

  • roeldev
  • Registratie: Juni 2010
  • Laatst online: 10-09 18:55
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

Acties:
  • 0 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
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. :)

Acties:
  • 0 Henk 'm!

  • roeldev
  • Registratie: Juni 2010
  • Laatst online: 10-09 18:55
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 :)

Acties:
  • 0 Henk 'm!

  • Pimmetje16
  • Registratie: September 2005
  • Laatst online: 01-10 15:10
Ik heb inmiddels een 3D printer. De eerste print is een connector voor Solis, hij lijkt nog te passen ook :).

Acties:
  • +2 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
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: 10-09 18:55
Super nice! Ziet er goed uit. Makkelijk te volgen. Ik ga dr zeker ook even naar kijken!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
Mooi, haha. Hopelijk heb je er wat aan!

Acties:
  • 0 Henk 'm!

  • Possible
  • Registratie: Mei 2002
  • Laatst online: 17-10 14:33
Pimmetje16 schreef op maandag 9 september 2019 @ 12:33:
Ik heb inmiddels een 3D printer. De eerste print is een connector voor Solis, hij lijkt nog te passen ook :).
Mijn zwager heeft dezelfde omvormer en zou graag ook zijn omvormer willen uitlezen. Heb je toevallig de print van de connector in gebruik? En zou je er eventueel 1 voor mij willen maken?

Ik wil namelijk niet gaan solderen aan zijn omvormer :)

@Alphyraz Of wellicht is er nog een andere optie om de omvormer uit te lezen zonder te solderen?

[ Voor 9% gewijzigd door Possible op 01-11-2019 20:00 ]

Gasloos sinds 2020 - 3240wp-Z Live 5100wp-W Live 8340wp-Merged Live Altantic Explorer 200 Live


Acties:
  • 0 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
Possible schreef op vrijdag 1 november 2019 @ 19:59:
[...]


Mijn zwager heeft dezelfde omvormer en zou graag ook zijn omvormer willen uitlezen. Heb je toevallig de print van de connector in gebruik? En zou je er eventueel 1 voor mij willen maken?

Ik wil namelijk niet gaan solderen aan zijn omvormer :)

@Alphyraz Of wellicht is er nog een andere optie om de omvormer uit te lezen zonder te solderen?
Als we zouden weten wat voor soort connector er aan dat soort dataloggingsticks zou zitten, dan kun je die gebruiken en aansluiten op de omvormer. Volgens mij weet alleen nog steeds niemand wat het voor connector is.

Acties:
  • 0 Henk 'm!

  • jay123
  • Registratie: December 2013
  • Laatst online: 09:56
Mijn zwager heeft dezelfde omvormer en zou graag ook zijn omvormer willen uitlezen. Heb je toevallig de print van de connector in gebruik? En zou je er eventueel 1 voor mij willen maken?
Ik heb vandaag, aan de hand van deze tutorial, mijn eigen omvormer ook aangesloten (weliswaar ipv domoticz heb ik home assistant, maar 90% is hetzelfde).

Zelf heb ik gewoon een soort van klemmetje op de 3de & 4de pin vastgezet, en deze leest het ook zonder problemen uit, zonder solderen aan de omvormer zelf. Het is dan wel niet zo stevig, maar zit toch allemaal in een omkasting in de toekomst dus dan blijft dat wel in orde.

-edit- Thanks voor de tutorial trouwens! Helder en ongeveer op een klein uurtje alles up and running gekregen!

[ Voor 8% gewijzigd door jay123 op 24-11-2019 22:06 ]


Acties:
  • 0 Henk 'm!

  • Jur
  • Registratie: Januari 2000
  • Niet online

Jur

Dus....

Even een kickje,

Ik probeer met het script van eth0 mijn solis inverter uit te lezen:

Ik ben een volledige nOOb (nog :)) op het gebied van de scripting en krijg het niet voor elkaar met de verschillende scripts.
Ik vermoed dat dit te maken heeft met de Python versie (gebruik nu 3.7, ik denk dat alles geschreven is voor 2.7), na wat aanpassingen loop ik vast op onderstaand:

updateDate = resultJson['result']['deviceWapper'].get('updateDate')
TypeError: string indices must be integers

Door mijn nOOb zijn, kom ik hier ook met google niet echt uit, iemand tips?

[ Voor 6% gewijzigd door Jur op 01-04-2020 12:35 ]


Acties:
  • 0 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
Ik denk dat je hier beter een nieuw topic voor kunt maken aangezien dit topic niet heel erg levendig meer is. Ik zie wel dat je op het eind .get('updateDate') gebruikt. Moet dat niet gewoon ['updateDate'] zijn? Mijn Python skills zijn ook niet geweldig, maar dat verschil ten opzichte van de originele code viel me op.

Acties:
  • 0 Henk 'm!

Verwijderd

Hoi Super Joker,

ik zag jou post , en heb nu ook een paar solis omvormers. ze zijn verbonden met een LAN stick.
Ik ben een starter (dummy) op gebied van raspberry en domoticz.
graag wil ik het momentele vermogen van mijn panelen uitlezen, om deze info weer te doorkoppelen aan
een elektrisch element (9 kW) in mijn warmte buffers. Als de opbrengst van mijn panelen redelijk is.

Zou jij mij aan kunnen geven hoe ik het momentele vormogen kan uitlezen .

alvast bedankt voor je tijd en groeten,

Alex wever

Acties:
  • +1 Henk 'm!

  • galadril
  • Registratie: Maart 2012
  • Laatst online: 22-07 20:13
Ik heb een Android en iOS app gemaakt voor het uitlezen van wat waardesn van je Ginlong inverter (als je de wifi data logger hebt)

Apple:
https://apps.apple.com/nl...ergy-monitor/id1517272630

Android:
https://play.google.com/s...heinisblog.ginlongmonitor


[ Voor 12% gewijzigd door galadril op 09-06-2020 08:40 ]


Acties:
  • 0 Henk 'm!

  • Erik2B
  • Registratie: Februari 2002
  • Laatst online: 11:42
Ik wil wat meer gaan spelen met logging, maar heb een probleem...

Weet het wachtwoord niet meer van de ginlong Wifi dongel voor de solis omvormer :(

Weet iemand hoe je dit kan resetten of omzeilen? zit geen knopje op om een reset uit te voeren.

Acties:
  • +1 Henk 'm!

  • galadril
  • Registratie: Maart 2012
  • Laatst online: 22-07 20:13
Erik2B schreef op dinsdag 9 juni 2020 @ 09:58:
Ik wil wat meer gaan spelen met logging, maar heb een probleem...

Weet het wachtwoord niet meer van de ginlong Wifi dongel voor de solis omvormer :(

Weet iemand hoe je dit kan resetten of omzeilen? zit geen knopje op om een reset uit te voeren.
https://usservice.ginlong...stick-to-factory-settings

Acties:
  • 0 Henk 'm!

  • Erik2B
  • Registratie: Februari 2002
  • Laatst online: 11:42
Bedankt, kwam die ook tegen... maar geen knopje helaas ben een beetje huiverig om op de punten sluiting te maken...

Had gehoopt dat er nog een andere manier was.

_/-\o_

Acties:
  • +1 Henk 'm!

  • Blihi
  • Registratie: Juni 2018
  • Laatst online: 09-10 15:42
Even een wat ouder topic kicken.

Ik heb de informatie uit dit topic en de gelinkte tutorial gebruikt om mijn twee Solis inverters uit te lezen met Domoticz op een Raspberry Pi B. Dat had meer voeten in aarde dan gedacht.

Eerst moest de Pi geupdated worden om Domoticz en MQTT te installeren, maar dat zal ik jullie besparen.

Vervolgens heb ik met behulp van twee USB dongles, de Solis omvormers aangesloten. Om de verbinding met de ronde connector te maken heb ik een oude voedingsplug van een PC uit elkaar gehaald. Daar zitten busjes in die je om de pennen van de connector kunt klemmen.

De omvormers hangen zo'n twintig meter van de Pi af, maar er liep een ongebruikte UTP kabel door de muur, dus daarvan heb ik twee aderparen gebruikt voor de seriele interface. Dat werkt feilloos.

De hier geposte scripts werkten helaas niet direct. Maar na wat aanpassingen heb ik twee scripts draaiend gekregen. Eentje voor de continue data en eentje voor de dagelijkse gegevens.

Mijn Solis 1P3K-4G heeft twee strings verbonden en mijn Solis mini 3000-4G heeft (uiteraard) maar 1 string. Dat betekent dat ik drie keer voltage en amperes uit moet lezen, plus de vermogens per omvormer. Om de data van de tweede string te krijgen moet je codes 3023 en 3024 gebruiken (op goed geluk gegokt en dit klopt met het display op de omvormer).

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

z = minimalmodbus.Instrument('/dev/ttyUSB0', 1)
z.serial.baudrate = 9600
z.serial.bytesize = 8
z.serial.parity   = serial.PARITY_NONE
z.serial.stopbits = 1
z.serial.timeout  = 3

ow = minimalmodbus.Instrument('/dev/ttyUSB1', 1)
ow.serial.baudrate = 9600
ow.serial.bytesize = 8
ow.serial.parity   = serial.PARITY_NONE
ow.serial.stopbits = 1
ow.serial.timeout  = 3

broker="localhost"

# 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 mini 3000
        # print("ZZW (Solis Mini 3000 4G)")
        Realtime_ACW_z = z.read_long(3004, functioncode=4, signed=False) #Read AC Watts as Unsigned 32-Bit
        # print("AC_Watts: " + str(Realtime_ACW_z) + "W")
        Realtime_DCV_z = z.read_register(3021, functioncode=4, signed=False) #Read DC Volts as Unsigned 16-Bit
        # print("DC Volt: " + str(Realtime_DCV_z/10) + "V")
        Realtime_DCI_z = z.read_register(3022, functioncode=4, signed=False) #Read DC Current as Unsigned 16-Bit
        # print("DC Current : " + str(Realtime_DCI_z) + "A")
        Realtime_ACV_z = z.read_register(3035, functioncode=4, signed=False) #Read AC Volts as Unsigned 16-Bit
        # print("AC volt : " + str(Realtime_ACV_z/10) + "V")
        Realtime_ACI_z = z.read_register(3038, functioncode=4, signed=False) #Read AC Current as Unsigned 16-Bit
        # print("AC Current :" + str(Realtime_ACI_z) + "A")
        Realtime_ACF_z = z.read_register(3042, functioncode=4, signed=False) #Read AC Frequency as Unsigned 16-Bit
        # print("AC Frequency :"+ str(Realtime_ACF_z/100) + "Hz")
        Inverter_C_z = z.read_register(3041, functioncode=4, signed=True) #Read Inverter Temperature as Signed 16-Bit
        # print("Inverter Temperature :" + str(Inverter_C_z/10) + "C")

        # get data from solis 1P3K
        # print("OZO/WNW (Solis 1P3K 4G)")
        Realtime_ACW_ow = ow.read_long(3004, functioncode=4, signed=False) #Read AC Watts as Unsigned 32-Bit
        # print("AC_Watts    : " + str(Realtime_ACW_ow) + "W")
        Realtime_DCV_ow1 = ow.read_register(3021, functioncode=4, signed=False) #Read DC Volts as Unsigned 16-Bit
        # print("DC Volt    1: " + str(Realtime_DCV_ow1/10.0) + "V")
        Realtime_DCI_ow1 = ow.read_register(3022, functioncode=4, signed=False) #Read DC Current as Unsigned 16-Bit
        # print("DC Current 1: " + str(Realtime_DCI_ow1/10.0) + "A")
        Realtime_DCV_ow2 = ow.read_register(3023, functioncode=4, signed=False) #Read DC Volts as Unsigned 16-Bit
        # print("DC Volt    2: " + str(Realtime_DCV_ow2/10.0) + "V")
        Realtime_DCI_ow2 = ow.read_register(3024, functioncode=4, signed=False) #Read DC Current as Unsigned 16-Bit
        # print("DC Current 2: " + str(Realtime_DCI_ow2/10.0) + "A")
        Realtime_ACV_ow = ow.read_register(3035, functioncode=4, signed=False) #Read AC Volts as Unsigned 16-Bit
        # print("AC volt : " + str(Realtime_ACV_ow/10) + "V")
        Realtime_ACI_ow = ow.read_register(3038, functioncode=4, signed=False) #Read AC Current as Unsigned 16-Bit
        # print("AC Current :" + str(Realtime_ACI_ow/10.0) + "A")
        Realtime_ACF_ow = ow.read_register(3042, functioncode=4, signed=False) #Read AC Frequency as Unsigned 16-Bit
        # print("AC Frequency :"+ str(Realtime_ACF_ow/100) + "Hz")
        Inverter_C_ow = ow.read_register(3041, functioncode=4, signed=True) #Read Inverter Temperature as Signed 16-Bit
        # print("Inverter Temperature :" + str(Inverter_C_ow/10.0) + "C")

        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":1,"svalue":"' + str(Realtime_ACW_z/1.0) + '"}')
        # client.publish("domoticz/in",'{"command":"udevice","idx":12,"nvalue":' + str(Realtime_DCV_z/10.0) + ',"svalue":"' + str(Realtime_DCV_z/10.0) + '"}')
        # client.publish("domoticz/in",'{"command":"udevice","idx":5,"nvalue":' + str(Realtime_DCI_z/10.0) + ',"svalue":"' +  str(Realtime_DCI_z/10.0) + '"}')
        # client.publish("domoticz/in",'{"command":"udevice","idx":15,"nvalue":' + str(Inverter_C_z/10.0) + ',"svalue":"' +  str(Inverter_C_z/10.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":12,"svalue":"' + str(Realtime_DCV_z/10.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":5,"svalue":"' +  str(Realtime_DCI_z/10.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":15,"svalue":"' +  str(Inverter_C_z/10.0) + '"}')

        client.publish("domoticz/in",'{"command":"udevice","idx":2,"svalue":"' + str(Realtime_ACW_ow/1.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":11,"svalue":"' + str(Realtime_DCV_ow1/10.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":6,"svalue":"' +  str(Realtime_DCI_ow1/10.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":25,"svalue":"' + str(Realtime_DCV_ow2/10.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":24,"svalue":"' +  str(Realtime_DCI_ow2/10.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":16,"svalue":"' +  str(Inverter_C_ow/10.0) + '"}')

        client.publish("domoticz/in",'{"command":"udevice","idx":23,"svalue":"' + str(Realtime_ACW_z/1.0+Realtime_ACW_ow/1.0) + '"}')
        client.disconnect()
        client.loop_stop()

except Exception, e:

    try:
        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":1,"svalue":0}')
        client.publish("domoticz/in",'{"command":"udevice","idx":12,"svalue":0}')
        client.publish("domoticz/in",'{"command":"udevice","idx":5,"svalue":0}')
        client.publish("domoticz/in",'{"command":"udevice","idx":15,"svalue":0}')

        client.publish("domoticz/in",'{"command":"udevice","idx":2,"svalue":0}')
        client.publish("domoticz/in",'{"command":"udevice","idx":11,"svalue":0}')
        client.publish("domoticz/in",'{"command":"udevice","idx":6,"svalue":0}')
        client.publish("domoticz/in",'{"command":"udevice","idx":25,"svalue":0}')
        client.publish("domoticz/in",'{"command":"udevice","idx":24,"svalue":0}')
        client.publish("domoticz/in",'{"command":"udevice","idx":16,"svalue":0}')

        client.publish("domoticz/in",'{"command":"udevice","idx":23,"svalue":0}')
        client.disconnect()
        client.loop_stop()

    except Exception, f:

        print(str(f));


Het tweede script leest eens per uur de cumulatieve gegevens uit.

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

time.sleep(30)
# wait 30 seconds

z = minimalmodbus.Instrument('/dev/ttyUSB0', 1)
z.serial.baudrate = 9600
z.serial.bytesize = 8
z.serial.parity   = serial.PARITY_NONE
z.serial.stopbits = 1
z.serial.timeout  = 3

ow = minimalmodbus.Instrument('/dev/ttyUSB1', 1)
ow.serial.baudrate = 9600
ow.serial.bytesize = 8
ow.serial.parity   = serial.PARITY_NONE
ow.serial.stopbits = 1
ow.serial.timeout  = 3

broker="localhost"

# 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 mini 3000

        # print("ZZW (Solis Mini 3000 4G)")
        AlltimeEnergy_KW_z = z.read_long(3008, functioncode=4, signed=False) # Read All Time Energy (KWH Total) as Unsigned 32-Bit
        # print("Generated (All time):" +str(AlltimeEnergy_KW_z) + "kWh")
        Today_KW_z = z.read_register(3014, functioncode=4, signed=False) # Read Today Energy (KWH Total) as 16-Bit
        # print("Generated (Today) :" + str(Today_KW_z/10) + "kWh")

        # get data from solis 1P3K
        # print("OZO/WNW (Solis 1P3K 4G)")
        AlltimeEnergy_KW_ow = ow.read_long(3008, functioncode=4, signed=False) # Read All Time Energy (KWH Total) as Unsigned 32-Bit
        # print("Generated (All time):" +str(AlltimeEnergy_KW_ow) + "kWh")
        Today_KW_ow = ow.read_register(3014, functioncode=4, signed=False) # Read Today Energy (KWH Total) as 16-Bit
        # print("Generated (Today) :" + str(Today_KW_ow/10) + "kWh")


        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":19,"svalue":"' + str(Today_KW_z/10.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":22,"svalue":"' + str(AlltimeEnergy_KW_z/1.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":20,"svalue":"' + str(Today_KW_ow/10.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":21,"svalue":"' + str(AlltimeEnergy_KW_ow/1.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":17,"svalue":"' + str(AlltimeEnergy_KW_ow/1.0+AlltimeEnergy_KW_z/1.0) + '"}')
        client.publish("domoticz/in",'{"command":"udevice","idx":18,"svalue":"' +  str(Today_KW_ow/10.0+Today_KW_z/10.0) + '"}')
        client.disconnect()
        client.loop_stop()

except Exception, e:

        print(str(e));


Wat opvalt in beide scripts is dat de waardes op een andere manier gedeeld worden. Ik deel alles door 10.0 of 1.0 om waardes te krijgen met decimalen. Om een of andere reden accepteert Python het eerdere script met "numberOfDecmilals" niet. Daarnaast heb ik een exception in gebouwd om 0 terug te geven in het eerste script. Dit is nodig als de inverter uitvalt nadat de zon onder is. Dan wil je toch een waarde registreren (namelijk 0). Het tweede script doet dat uiteraard niet.

De sleep(30) in het tweede script is om ervoor te zorgen dat de twee scripts niet tegelijk draaien (in cron kun je geen seconden opgeven). Dat zou namelijk communicatiefouten geven.

Al met al werkt het zo prima. Ik ben blij dat ik geen data naar China hoef te sturen om te zien hoeveel kWh de installatie oplevert.

WP: Toshiba Estia 8kW split HWT-801H(R)W-E + HWT-1101 binnenunit met 300 liter SWW tank. PV: 4 strings, totaal 12590 Wp


Acties:
  • 0 Henk 'm!

  • eth0
  • Registratie: Mei 2002
  • Laatst online: 15-09 22:14
Jur schreef op woensdag 1 april 2020 @ 12:34:
Even een kickje,

Ik probeer met het script van eth0 mijn solis inverter uit te lezen:

Ik ben een volledige nOOb (nog :)) op het gebied van de scripting en krijg het niet voor elkaar met de verschillende scripts.
Ik vermoed dat dit te maken heeft met de Python versie (gebruik nu 3.7, ik denk dat alles geschreven is voor 2.7), na wat aanpassingen loop ik vast op onderstaand:

updateDate = resultJson['result']['deviceWapper'].get('updateDate')
TypeError: string indices must be integers

Door mijn nOOb zijn, kom ik hier ook met google niet echt uit, iemand tips?
Ik moet deze nog eens omzetten naar python 3, maar nu is deze idd voor python 2. Overigens lees ik niet de inverter uit, maar de site waar de inverter de data naar toe stuurd...

Acties:
  • +1 Henk 'm!

  • Remco45
  • Registratie: Januari 2013
  • Laatst online: 16-09 21:23
Met dank aan @SuperJoker en @Alphyraz heb ik o.a. hun info gebruikt voor het uitlezen van mijn Solis 3-fase omvormer. Reden is dat de website voor mij niet goed werkte en ik liever zo dicht mogelijk naar "de bron ga".
Deze omvormer hangt naast mijn Mitsubish warmtepomp binnenunit en daarvoor had ik al een Procon A1M die de WP uitleest en via een RS485 - USB converter de WP data naar een Raspberry stuurt.

Ik heb de wifi-stick uit elkaar gehaald en de connector gebruikt voor de datakabel. Eenvoudig de pinnen 2 (black = Ground), 3 (yellow = A+) en 4 (blue = B- ) middels een korte drie-aderige twisted cable aangesloten op de converter. Op de connector heb ik wel een 120 Ohm afsluitweerstand tussen de A en de B gesoldeerd.

Vervolgens experimenteel de juiste registers bepaald: dat zijn dezelfde als voor de 1-fase omvormer met enkele toevoegingen.
Hieronder een afbeelding met twee data pollers welke de gegevens uitlezen.

Afbeeldingslocatie: https://tweakers.net/i/kHpIJ7cTsq79O9JkQS-MCivk9p8=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/dQ02wMZ7Iu1JSSUaD0nPomh4.jpg?f=user_large

De eerste poller leest alleen de diverse gegenereerde vermogens uit.
De tweede de DC-data voor beide strings (vermoedelijk kunnen bij 4 MPPTs de strings 3 en 4 met opvolgende registers 3025-3028 worden uitgelezen) en de AC-data voor de drie fasen alsmede Omvormer inwendige temperatuur en de netfrequentie.

Het enige register wat ik (nog) niet heb kunnen testen is INV_Pwr_last_year want ik heb deze omvormer pas enkele weken ;) .

[ Voor 3% gewijzigd door Remco45 op 04-09-2020 11:03 ]

Mitsubishi Zubadan 11,2 kW; 14500 Wp (6100 Oost en 8400 West)


Acties:
  • 0 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
@Remco45 Fijn dat het gelukt is om het één en ander uit te lezen met behulp van dit topic en mijn blog. :)

Acties:
  • 0 Henk 'm!

  • Remco45
  • Registratie: Januari 2013
  • Laatst online: 16-09 21:23
Alphyraz schreef op vrijdag 4 september 2020 @ 14:46:
@Remco45 Fijn dat het gelukt is om het één en ander uit te lezen met behulp van dit topic en mijn blog. :)
Zeker @Alphyraz , bij jouw blog had ik ook een reactie willen plaatsen, maar reageren is niet meer mogelijk.
Had je zelf ondertussen ook die andere registers gevonden, of wellicht nog andere waarvan ik het bestaan nog niet weet?

Mitsubishi Zubadan 11,2 kW; 14500 Wp (6100 Oost en 8400 West)


Acties:
  • 0 Henk 'm!

  • Alphyraz
  • Registratie: Juli 2011
  • Laatst online: 21-10 13:35
Remco45 schreef op vrijdag 4 september 2020 @ 15:02:
[...]

Zeker @Alphyraz , bij jouw blog had ik ook een reactie willen plaatsen, maar reageren is niet meer mogelijk.
Had je zelf ondertussen ook die andere registers gevonden, of wellicht nog andere waarvan ik het bestaan nog niet weet?
Ik moet eerlijk bekennen dat ik zelf niet met registers heb geprobeerd te spelen. Althans, ik heb het wel geprobeerd maar ik heb niets nuttigs kunnen vinden. Wat dat betreft is mijn code vrijwel identiek aan die hier in dit topic stond.

Acties:
  • +1 Henk 'm!

  • jotheman
  • Registratie: September 2000
  • Laatst online: 19-10 21:58

jotheman

Was like that when I got here!

Okay, ik heb sinds kort ook zonnepanelen en heb ontzettend zitten vechten om ze uit te lezen. Het gaat om een Solis inverter (Ginlong) waarvan de statistieken "automatisch" geüpload worden naar de portal pagina m.ginlong.com. Ik gebruik als mobiele app de "Solis Home" app, dus gebruik je die ook, dikke kans dat je deze aanpak op een gelijksoortige manier kunt uitlezen.

Ik heb ontzettend veel zitten zoeken om de statistieken vanuit de Solis-inverter naar Domoticz te krijgen. Ik kom veel info en topics tegen van mensen die het allemaal op verschillende manier hebben aangepakt, waarbij het soms wel gelukt is, soms niet. Dit is iig mijn verhaal, hopelijk heeft er iemand iets aan. En ja, ik cross-post dit bewust in meerdere topics zodat mensen met dezelfde uitdaging het allemaal (hopelijk) snel terug kunnen vinden.

De aanpak:
- Zorg dat je op m.ginglong.com kunt aanmelden en dat je het username/wachtwoord beschikbaar hebt,
- Maak in Domoticz Dummy hardware aan met 2 sensors erbij, een voor het verbruik (lees: wat je PV opwekt) en een switch (wat de status is van je PV, aan of uit). Zie hieronder voor hoe dit er bij mij uitziet:
Afbeeldingslocatie: https://tweakers.net/i/uWr2AKjUb3kI9Esz_lX5c8mynpg=/800x/filters:strip_exif()/f/image/HbRW6VijpMxSQbkH1rYRZnAd.png?f=fotoalbum_large
- Zet onderstaand Python-script (heet bij mij ginlong.py) op je Domoticz-machine neer en zorg dat je Python beschikbaar hebt op het masjientje. Update de parameters onder #config en #domoticz settings:
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
#!/usr/bin/python
import requests
import urllib, urllib2
import json

#config
username            = 'email@address.com'               #your username to log on to m.ginlong.com
password            = 'P@ssw0rd!'               #your password to log on to m.ginlong.com
domain              = 'm.ginlong.com'           #webportal to read
plantId             = '965529'                  #plant id (can be found on m.ginlong.com page information)
lan                 = '2'                       #language (2 = English)

#domoticz settings
domoticz_host           = 'domoticzuser:domoticzpassword@192.168.2.53'              #Username/password and IP of Domoticz
domoticz_port           = '8080'                #Port to connect to Domoticz
domoticz_url            = 'json.htm'            #URL to post stats to Domoticz, does not require changes normally
domoticz_device_idx         = '486'         #IDX of Watt meter in Domoticz
domoticz_device_onoff_idx       = '485'         #IDX of on/off switch (to see whether its on or off for PV)

# Create session for requests
session = requests.session()

#building url
url = 'http://'+domain+'/cpro/login/validateLogin.json'
params = {
    "userName": username,
    "password": password,
    "lan": lan,     
    "domain": domain,
    "userType": "C"
}

#login call
resultData = session.post(url, params=params)
resultJson = resultData.json()
if resultJson['result'].get('isAccept') == 1:
    print("Login Succesful!")
else:
    print("Login Failed!!")
    Exit()

# Get plant details
url = 'http://m.ginlong.com/cpro/epc/plantview/view/doPlantList.json'

cookies = {'language': lan}
resultData = session.get(url, cookies=cookies)
resultJson = resultData.json()

# Uncomment lines below to write the exported json-file to the location noted
#out_file = open("/usr/local/bin/ZPExport.json", "w")
#json.dump(resultJson, out_file, indent = 6)
#out_file.close()

ActualPower = resultJson['result']['pagination']['data'][0].get('curPower')
ActualPowerNoSep = str(ActualPower).split(".")[0]
etoday = resultJson['result']['pagination']['data'][0].get('energyToday')
multiply='1000.0'
etotal1000 = float(etoday) * float(multiply)
etotalstr=str(etotal1000)
etotalstrNoSep = str(etotalstr).split(".")[0]
OnOrOff = resultJson['result']['pagination']['data'][0].get('status')

#logging values
print 'ActualPower: ' + str(ActualPowerNoSep)
print 'etoday: ' + str(etotalstrNoSep)
print 'Status: ' + str(OnOrOff)

#uploading values to domoticz
url = ("http://" + domoticz_host + ":" + domoticz_port + "/" + domoticz_url+ "?type=command&param=udevice&idx=" + domoticz_device_idx+ "&nvalue=0&svalue=" + str(ActualPowerNoSep))
urlonoff = ("http://" + domoticz_host + ":" + domoticz_port + "/" + domoticz_url+ "?type=command&param=udevice&idx=" + domoticz_device_onoff_idx+ "&nvalue=" + str(OnOrOff))
urllib.urlopen(url)
urllib.urlopen(urlonoff)

- Maak het script executable met commando
code:
1
sudo chmod +x ginlong.py
terwijl je in de directory staat waar je 'm neer hebt gezet. Ik doe (vanwege gebrek aan kennis ook altijd nog [code][sudo chmod 777 ginlong.py/code] zodat alle users er iets mee kunnen. Hoeft allicht niet en is niet goed, maar ignorance is bliss zullen we maar zeggen ;)
- Draai het script even een keer op het apparaat en check dat je output krijgt te zien op de commandline
Ik start het script met dit commando:
code:
1
sudo /usr/bin/python /usr/local/bin/ginlong.py

Heb je output? Top! Dan heb je hoogstwaarschijlijk iig ook een beginwaarde in je Domoticz metertje, hiep hoi!
- Maak nu in Domoticz nóg een switch aan, gewoon Manual met willekeurige instellingen. Open de switch en maak er een "Push On" knoppie van. Neem in de aan en uit acties het script op, zie de bijgevoegde screenshot.Afbeeldingslocatie: https://tweakers.net/i/maOdOcvZqmtMLEvUWX1zoNw8QNM=/800x/filters:strip_exif()/f/image/BFrdX3byNxqRHTG4ooE5DIx6.png?f=fotoalbum_large
Als je deze configuratie gebruikt (dus "script://ginlong.sh") dan ga je er dus vanuit dat het script in de "scripts" map zich onder/in de "domoticz-installatiemap" bevindt. Is dat niet het geval, moet je het pad opnemen (even googlen hoe je het pad moet invullen)
- Druk de update-knop in en check dat de waardes geüpdate worden
- Nu komt de clou: Het script eens per X-tijd laten draaien. Ik ben geen Linux/Raspbian held en kreeg het met een crontab-job met geen mogelijkheid aan de praat. Ook het zetten van een timer op de virtuele switch waarbij ik het script onderwater start werkte niet (wazige foutmelding in de Domoticz-logs). Zal allicht aan mij liggen en heeft mogelijk iets van doen met rechten en onder welke user dingen draaien, maar afijn.
Ik heb het uiteindelijk aan de praat gekregen met een dzVents-script dat er zo uitziet:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
 return {
        
    on = { timer = {"every 5 minutes"} },
    
    execute = function(domoticz, _)
        local myDevice = domoticz.devices("Zonnepanelen Update")
        if myDevice.state == "On" then
            myDevice.switchOn()
        else
            myDevice.switchOn()
        end
    end     
}

Dus: Zet eens per 5 minuten dit apparaat aan. Again: Zal allicht beter kunnen, maar het ignorance ding, en if it ain't broken, don't fix it (en andere wijsheden ;))

Disclaimers en verdere info:
- Ik ben geen programmeur, developer of wat dan ook, puur hobbyist. Heb hier een beetje Python en meer JSON voor moeten "leren", maar ik ben gee export. Dus garantie tot aan de deur en ik zal het allicht niet ultiem efficiënt aangepakt hebben... ;)
- Ik lees alleen het huidige verbruik en de status uit. De status heeft meerdere waardes die kunnen (0 = uit, 1 = aan, 2 = ook iets?) maar het switch snapt alleen 0 en 1. Wat de andere statussen betekenen, schiet mij maar lek, enlighten me als je het weet :)
- In de JSON die wordt opgehaald zitten meer waardes waar je mogelijk iets mee kunt. Lukte mij niet vlot en leek me niet ultiem nuttig, dus dit is waar ik het bij houd. Voel je vrij "door te ontwikkelen"
- Ik heb geen aspiraties om hierop door te ontwikkelen oid, voor mij is het prima zo. Dus leef je uit, maar verwacht niks van mij ;)
-Credits voor het grootste deel van de scripting gaan naar de mensen die dit vóór mij al hadden gemaakt. Ik heb alleen een beetje copy/paste/aanpas werk gedaan

Hopelijk hebben mensen hier iets aan, ik ben er blij mee (en stiekem ook wel een beetje trots op, gotta be honest ;)). Het eindresultaat ziet er zo uit:
Afbeeldingslocatie: https://tweakers.net/i/tUu2Hlwh9uTIKOHbklREnzpvm-o=/800x/filters:strip_exif()/f/image/hfs5ksWjW7HOlITWtq8mNnhr.png?f=fotoalbum_large

En nu stop ik met typen, zere vingers. ;)

I see dead pixels...


Acties:
  • 0 Henk 'm!

  • The-Source
  • Registratie: Augustus 2001
  • Laatst online: 11:34
Ps ik heb zelf ook bestaande python2 omgezet naar python 3 inclusief push naar pvoutput (en in mijn geval ook nog naar homeseer)
Wil de data push naar pvoutput ook nog met mijn werkelijke verbruik gaan uitbreiden maar eerst weer tijd zin voor maken.

Taal fouten inbegrepen ;)
Mijn AI Art YouTube kanaal


Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 09:34

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

Remco45 schreef op vrijdag 4 september 2020 @ 10:53:
Met dank aan @SuperJoker en @Alphyraz heb ik o.a. hun info gebruikt voor het uitlezen van mijn Solis 3-fase omvormer. Reden is dat de website voor mij niet goed werkte en ik liever zo dicht mogelijk naar "de bron ga".
Deze omvormer hangt naast mijn Mitsubish warmtepomp binnenunit en daarvoor had ik al een Procon A1M die de WP uitleest en via een RS485 - USB converter de WP data naar een Raspberry stuurt.
Met deze kennis in het achterhoofd: is het niet eigenlijk best eenvoudig om een ESP8266 met ESPHome te flashen, en via de modbus-component de omvormer uit te lezen? Of zie ik iets over het hoofd?

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • 0 Henk 'm!

  • heintjeput
  • Registratie: Juni 2003
  • Laatst online: 21-10 14:41
Ik kick dit topic even omdat ik hetzelfde idee had als @Thijsmans, namelijk met een ESP8266 en een TTL-RS485 convertor dit te implementeren. Helaas tot nu to zonder resultaat.

Ik heb tot nu toe 2 TTL-RS485 convertors geprobeerd deze van M5 en deze met alleen een MAX485 chip.
Met de M5-unit krijg ik helemaal niets erdoor heen, de RS485 kant zou daarvan ook gevoed moeten worden met 12V en die heb ik zo niet beschikbaar, maar dat zou dus een issue kunnen zijn.
De MAX485 chip lijkt in ieder geval wel een commando door te sturen naar de RS485 kant, alleen het lukt met niet om iets te ontvangen. Deze chip vereist 5V Supply en geen 3.3V, dat is de MAX3485

Zie hier onder mijn ESPhome code, niet alle uitlezingen zijn geimplementeerd, maar dat zou een kwestie van uitbreiden moeten zijn.

Gedaan:
- Verschillende chips getest
- A/B en RX/TX verschillende keren om gewisseld
- ESPhome code geprobeerd (met VERY_VERBOSE logging om te zien of daar iets uit kwam)
- Directe SoftwareSerial code geprobeerd.

Mijn to do lijst momenteel:
- Nog chip proberen XY-K485
- Met een Arduino Nano, zodat alles in ieder geval op 5V af speelt

Hebben jullie nog tips / heb ik wat gemist?

code:
1
deze code werkte niet dus verwijderd.

[ Voor 26% gewijzigd door heintjeput op 11-04-2022 20:29 ]


Acties:
  • +3 Henk 'm!

  • heintjeput
  • Registratie: Juni 2003
  • Laatst online: 21-10 14:41
Even een reply op mezelf. Inmiddels heb ik de 'XY-K485' binnen, hier zit een SP385E chip op. Deze is wel bedoelt voor 3.3V in tegenstelling tot de MAX485 die het dus 5V nodig heeft.

Met de code en foto's hieronder zou het moeten kunnen. Wel lijken de decimals wat anders te zijn dan in de vorige scripts, dus dat moet je misschien zelf nog na kijken.

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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
## Hardware
# RS485 to TTL - XY-K485
# https://nl.aliexpress.com/item/32853794532.html Diymore Ttl Seriële Poort RS485 Converte
# SP3485E chip
# ESP8266 - nodemcuv22
# Solis 4G Datalogging stick for the right connector (maybe GX20-4 female)
# JST XH4 pinconnector to connect the datalogger connector to the XY-K485
#
# Solis 4G - Com port   ESP   XY-K485 (RS485 side)  XY-K485 (TTL side)
# pin 1 - 5V    ------  VIN
# pin 2 - GND   ------  GND
# pin 3 - A (+) ------------- A (+)    
# pin 4 - B (-) ------------- B (-)     
#                       GND - GND
#                       D1  ---------------------- RX    
#                       D2  ---------------------- TX
#                       3V  ---------------------- 3V
#                       GND ---------------------- GND

esphome:
  name: esphome-web-dc552c

esp8266:
  board: nodemcuv2

# Enable logging
logger:
  level: DEBUG
# Enable Home Assistant API
api:

ota:
  password: "5c4609c4823a1d59e4ef90e553da2402"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Pvinverter Fallback Hotspot"
    password: "2Vt78lfB0Wca"

captive_portal:


uart:
  baud_rate: 9600
  tx_pin: D1
  rx_pin: D2
  parity: NONE
  stop_bits: 1
  id: mod_uart

modbus:
  send_wait_time: 200ms
  uart_id: mod_uart
  id: mod_bus
  #flow_control_pin: D5

modbus_controller:
  - id: mbc
    #address: 0x01
    modbus_id: mod_bus
    #command_throttle: 100ms
    #setup_priority: -10
    #update_interval: 60s

sensor:
  - platform: modbus_controller # Read current AC power as Unsigned 32-Bit
    modbus_controller_id: mbc
    name: "InvAcWatt"
    address: 3004
    register_type: "read"
    value_type: U_DWORD
    unit_of_measurement: "W"
  - platform: modbus_controller # Read current DC Voltage as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvDcVolt"
    address: 3021
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "V"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
  - platform: modbus_controller # Read current DC Current as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvDcCurrent"
    address: 3022
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "A"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
  - platform: modbus_controller # Read current AC Voltage as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvAcVolt"
    address: 3035
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "V"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
  - platform: modbus_controller # Read current AC Current as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvAcCurrent"
    address: 3038
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "A"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
  - platform: modbus_controller # Read current AC Frequency as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvAcFreq"
    address: 3042
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "Hz"
    filters:
      - multiply: 0.01
    accuracy_decimals: 2
  - platform: modbus_controller # Read current Inverter Temperature as Signed 16-Bit
    modbus_controller_id: mbc
    name: "InvTemperature"
    address: 3041
    register_type: "read"
    value_type: S_WORD
    unit_of_measurement: "degC"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
  - platform: modbus_controller # Read All Time Energy Generated as Unsigned 32-Bit
    modbus_controller_id: mbc
    name: "InvAllTimeEnergy"
    address: 3008
    register_type: "read"
    value_type: U_DWORD
    unit_of_measurement: "kWh"
  - platform: modbus_controller # Read Today Energy Generated as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvTodayEnergy"
    address: 3014
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "kWh"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1


Afbeeldingslocatie: https://tweakers.net/i/dv2XHCDU0ln6ZbZrBv3RumZWLQA=/232x232/filters:strip_icc():strip_exif()/f/image/MwP4OjAE4e0JHOA1h0GqudXi.jpg?f=fotoalbum_tileAfbeeldingslocatie: https://tweakers.net/i/x73ya-6bkg8qc33Jg0JaOriXBeY=/232x232/filters:strip_icc():strip_exif()/f/image/G6gP7LTZX9PnVvHYs16eY8f8.jpg?f=fotoalbum_tile

[ Voor 15% gewijzigd door heintjeput op 09-06-2022 15:11 ]


Acties:
  • 0 Henk 'm!

  • BounceMeister
  • Registratie: Maart 2002
  • Niet online
@heintjeput Heb je het uiteindelijk werkend gekregen?

Acties:
  • 0 Henk 'm!

  • heintjeput
  • Registratie: Juni 2003
  • Laatst online: 21-10 14:41
BounceMeister schreef op donderdag 9 juni 2022 @ 14:24:
@heintjeput Heb je het uiteindelijk werkend gekregen?
Ja, het bovenstaande werkt. :) Dit zijn de stats voor vandaag. Mocht je nog een specifieke vraag hebben, dan mag je wel een DM sturen.

Afbeeldingslocatie: https://tweakers.net/i/m20yPBS__3EQHvVxSdPqO05mCxA=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/WlWvb9lRO2tGA7U8TCPC3hiJ.png?f=user_large

[ Voor 12% gewijzigd door heintjeput op 09-06-2022 15:16 ]


Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 09:34

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

/edit: never mind, vraag reeds beantwoord 8)7

[ Voor 93% gewijzigd door Thijsmans op 02-02-2023 09:56 ]

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • +3 Henk 'm!

  • heintjeput
  • Registratie: Juni 2003
  • Laatst online: 21-10 14:41
Even een korte update, ik heb voor de metingen de device en state class toegevoegd. Misschien moet ik het ook maar eens op git gaan zetten.

De total energy komt er in kWh uit, het dagtotaal gaat wel met een decimaal. Dit levert iets betere resolutie op in je energy dashboard, deze heb ik ook op total_increasing gezet, maar nog niet getest of dit goed gaat.
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
## Hardware
# RS485 to TTL - XY-K485
# https://nl.aliexpress.com/item/32853794532.html Diymore Ttl Seriële Poort RS485 Converte
# SP3485E chip
# ESP8266 - nodemcuv22
# Solis 4G Datalogging stick for the right connector (maybe GX20-4 female)
#
# Solis 4G - Com port   ESP   XY-K485 (RS485 side)  XY-K485 (TTL side)
# pin 1 - 5V    ------  VIN
# pin 2 - GND   ------  GND
# pin 3 - A (+) ------------- A (+)    
# pin 4 - B (-) ------------- B (-)     
#                       GND - GND
#                       D1  ---------------------- RX    
#                       D2  ---------------------- TX
#                       3V  ---------------------- 3V
#                       GND ---------------------- GND

esphome:
  name: "omvormer"

esp8266:
  board: nodemcuv2

# Enable logging
logger:
  level: DEBUG
# Enable Home Assistant API
api:

ota:
  password: "5c4609c4823a1d59e4ef90e553da2402"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Pvinverter Fallback Hotspot"
    password: "2Vt78lfB0Wca"

captive_portal:


uart:
  baud_rate: 9600
  tx_pin: D1
  rx_pin: D2
  parity: NONE
  stop_bits: 1
  id: mod_uart

modbus:
  send_wait_time: 200ms
  uart_id: mod_uart
  id: mod_bus
  #flow_control_pin: D5

modbus_controller:
  - id: mbc
    #address: 0x01
    modbus_id: mod_bus
    #command_throttle: 100ms
    #setup_priority: -10
    #update_interval: 60s

sensor:
  - platform: modbus_controller # Read current AC power as Unsigned 32-Bit
    modbus_controller_id: mbc
    name: "InvAcWatt"
    address: 3004
    register_type: "read"
    value_type: U_DWORD
    unit_of_measurement: "W"
    device_class: power
    state_class: measurement
  - platform: modbus_controller # Read current DC Voltage as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvDcVolt"
    address: 3021
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "V"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
    device_class: voltage
    state_class: measurement
  - platform: modbus_controller # Read current DC Current as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvDcCurrent"
    address: 3022
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "A"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
    device_class: current
    state_class: measurement
  - platform: modbus_controller # Read current AC Voltage as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvAcVolt"
    address: 3035
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "V"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
    device_class: voltage
    state_class: measurement
  - platform: modbus_controller # Read current AC Current as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvAcCurrent"
    address: 3038
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "A"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
    device_class: current
    state_class: measurement
  - platform: modbus_controller # Read current AC Frequency as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvAcFreq"
    address: 3042
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "Hz"
    filters:
      - multiply: 0.01
    accuracy_decimals: 2
    device_class: frequency
    state_class: measurement
  - platform: modbus_controller # Read current Inverter Temperature as Signed 16-Bit
    modbus_controller_id: mbc
    name: "InvTemperature"
    address: 3041
    register_type: "read"
    value_type: S_WORD
    unit_of_measurement: "°C"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
    device_class: temperature
    state_class: measurement
  - platform: modbus_controller # Read All Time Energy Generated as Unsigned 32-Bit
    modbus_controller_id: mbc
    name: "InvAllTimeEnergy"
    address: 3008
    register_type: "read"
    value_type: U_DWORD
    unit_of_measurement: "kWh"
    state_class: total_increasing
    device_class: energy
  - platform: modbus_controller # Read Today Energy Generated as Unsigned 16-Bit
    modbus_controller_id: mbc
    name: "InvTodayEnergy"
    address: 3014
    register_type: "read"
    value_type: U_WORD
    unit_of_measurement: "kWh"
    filters:
      - multiply: 0.1
    accuracy_decimals: 1
    device_class: energy
    state_class: total_increasing

Acties:
  • 0 Henk 'm!

  • Maarten69
  • Registratie: Augustus 2022
  • Niet online
Ik had de uitlezing via RS485 (usb CH341 dongle) op mijn raspberry pi 3b weken voor elkaar.
Na het aansluiten van de tweede string op de Solis S6 2,5kW stopt hij er plots de volgende dag mee.
De dag ervoor werkte het met 2 strings prima.
In Python draait het script zoals in 1ste post van @SuperJoker en geeft nu de volgende foutmelding:
code:
1
no communication with the instrument (no answer)

Iemand een idee wat hier is gebeurd?
Ik ben al dagen bezig, maar vind de fout niet.
Reeds gedaan;
  • Bekabeling nagekeken
  • Omvormer herstart
  • USB dongle erin/eruit
  • Op de pi alles geupdate, herstart etc.
  • Gezocht op deze foutmelding, maar geen opslossing gevonden die iets uithaalde.
Zie niet wat ik nog meer zou kunnen proberen.

8680 Wp, Panasonic Mono-bloc J-Generation WH-MDC07J3E5 1-fase 7kW. Heishamon v3.2.3 , NRflow *custom* , Home Assistant + " kamaradclimber / heishamon-homeassistant", Kaifa MA105 + Shelly PRo 3EM (120A), 3x Marstek 5,12kW v151, lilygo-modbus-485 HA


Acties:
  • +1 Henk 'm!

  • Oogje
  • Registratie: Oktober 2003
  • Niet online
Ik zou het toch zoeken in je bekabeling of de USB dongle. Of je deviceport in de Pi heet nu anders? (Dat is bij USB nog wel eens een probleem na een reboot van de Pi)
Feit is dat je PI gewoon geen antwoord krijgt van je omvormer als je naar de foutmelding kijkt.

Any errors in spelling, tact, or fact are transmission errors.


Acties:
  • 0 Henk 'm!

  • Maarten69
  • Registratie: Augustus 2022
  • Niet online
Meten aan de A+ en B- gaat niet werken zeker?
Anders ga ik maar een nieuwe proberen.
Erg vervelend weer dit. Mocht ik de oplossing vinden deel ik het hier.

8680 Wp, Panasonic Mono-bloc J-Generation WH-MDC07J3E5 1-fase 7kW. Heishamon v3.2.3 , NRflow *custom* , Home Assistant + " kamaradclimber / heishamon-homeassistant", Kaifa MA105 + Shelly PRo 3EM (120A), 3x Marstek 5,12kW v151, lilygo-modbus-485 HA


Acties:
  • 0 Henk 'm!

  • klump4u
  • Registratie: Februari 2008
  • Niet online

klump4u

Full electric in Zuid-Limburg

Heb je nog andere usb dingen ingestoken in de Pi?

18950Wp🌞, Atlantic 270V3💧, Pana 5J🔥. Zendure 2400AC 11,5kWh🔋,Hyundai Kona 64kWh 🚗, Peblar Home ⛽


Acties:
  • 0 Henk 'm!

  • Maarten69
  • Registratie: Augustus 2022
  • Niet online
klump4u schreef op woensdag 22 maart 2023 @ 16:28:
Heb je nog andere usb dingen ingestoken in de Pi?
Dat had ik, maar inmiddels ook verwijderd.
Wordt wel nog steeds onder ttyUSB0 herkend.
Denk dat de dongle defect is, was ook maar een euro of 5.
Ga denk ik maar een andere bestellen.
Spanning tussen A+ en B- is 2,2 V.

8680 Wp, Panasonic Mono-bloc J-Generation WH-MDC07J3E5 1-fase 7kW. Heishamon v3.2.3 , NRflow *custom* , Home Assistant + " kamaradclimber / heishamon-homeassistant", Kaifa MA105 + Shelly PRo 3EM (120A), 3x Marstek 5,12kW v151, lilygo-modbus-485 HA


Acties:
  • +2 Henk 'm!

  • Maarten69
  • Registratie: Augustus 2022
  • Niet online
Update:
Dongle was defect, met inpluggen nieuwe en duurdere versie werkte het direct weer.
Bedankt voor het meedenken @Oogje en @klump4u !

[ Voor 9% gewijzigd door Maarten69 op 23-03-2023 21:52 ]

8680 Wp, Panasonic Mono-bloc J-Generation WH-MDC07J3E5 1-fase 7kW. Heishamon v3.2.3 , NRflow *custom* , Home Assistant + " kamaradclimber / heishamon-homeassistant", Kaifa MA105 + Shelly PRo 3EM (120A), 3x Marstek 5,12kW v151, lilygo-modbus-485 HA


Acties:
  • +1 Henk 'm!

  • klump4u
  • Registratie: Februari 2008
  • Niet online

klump4u

Full electric in Zuid-Limburg

Maarten69 schreef op donderdag 23 maart 2023 @ 19:06:
Update:
Dongle was defect, met inpluggen nieuwe en duurdere versie werkte het direct weer.
Bedankt voor het meedenken @Oogje en @klump4u !
Heb je net een minder exemplaar gehad, hier draaien ze al bijna 10 jaar.(afkloppen), waren toentertijd de goedkoopste op Ebay.

18950Wp🌞, Atlantic 270V3💧, Pana 5J🔥. Zendure 2400AC 11,5kWh🔋,Hyundai Kona 64kWh 🚗, Peblar Home ⛽


Acties:
  • 0 Henk 'm!

  • Maarten69
  • Registratie: Augustus 2022
  • Niet online
Hier nog even mijn script wat draait op de Raspberry Pi met een USB to RS485 Converter
Python3, MQTT output --> Home Assistant.
Misschien dat iemand anders hier ooit nog wat aan heeft.
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
 #!/usr/bin/python3

import minimalmodbus
import socket
import serial
import paho.mqtt.client as paho
import time

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

broker = "192.168.2.5"
port = 1883
client_id = "Solis_S6"
topic = "homeassistant/Solis_S6"

client = paho.Client(client_id)

def on_connect(client, userdata, flags, rc):
    if rc == 0:
        print("Connected to MQTT Broker!")
    else:
        print("Failed to connect to MQTT Broker, return code", rc)
    return client

def publish(client):
    msg_count = 0
    while True:
        time.sleep(1)
        msg = f"messages: {msg_count}"
        status = result[0]
        if status == 0:
            print(f"Send `{msg}` to topic `{topic}`")
        else:
            print(f"Failed to send message to MQTT broker")
        msg_count += 1

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

def on_subscribed(client, userdata, mid, qos, tmp=None):
    if isinstance(qos, list):
        qos_msg = str(qos[0])
    else:
        qos_msg = f"and granted Qos {qos[0]}"
        print("Subsribed to " + qos_msg)


client.on_message = on_message
client.on_connect = on_connect
client.on_subscribed = on_subscribed

while True:
    try:
        client.username_pw_set("*****","******")
        client.connect(broker, port)
        client.loop_start()
        client.subscribe(topic)
        # get data from solis
        Realtime_ACW = instrument.read_long(3004, functioncode=4, signed=False)
        print(f"AC_Watts: {Realtime_ACW}W")
        Realtime_DCV = instrument.read_register(3021, functioncode=4, signed=False) / 10
        print(f"DC Volt: {Realtime_DCV:.1f}V")
        Realtime_DCI = instrument.read_register(3022, functioncode=4, signed=False) / 10
        print(f"DC Current: {Realtime_DCI}A")
        Realtime_ACV = instrument.read_register(3035, functioncode=4, signed=False) / 10
        print(f"AC Volt: {Realtime_ACV:.1f}V")
        Realtime_ACI = instrument.read_register(3038, functioncode=4, signed=False) / 10
        print(f"AC Current: {Realtime_ACI}A")
        Realtime_ACF = instrument.read_register(3042, functioncode=4, signed=False) / 100
        print(f"AC Frequency: {Realtime_ACF:.2f}Hz")
        Inverter_C = instrument.read_register(3041, functioncode=4, signed=True) / 10
        print(f"Inverter Temperature: {Inverter_C}C")
        AlltimeEnergy_KW = instrument.read_long(3008, functioncode=4, signed=False)
        print(f"Generated (All time): {AlltimeEnergy_KW}kW")
        Today_KW = instrument.read_register(3014, functioncode=4, signed=False) / 10
        print(f"Generated (Today): {Today_KW}kW")
        LastMonthEnergy_KW = instrument.read_register(3013, functioncode=4, signed=False)
        print(f"Generated (Last Month): {LastMonthEnergy_KW}kW")
        ThisMonthEnergy_KW = instrument.read_long(3010, functioncode=4, signed=False)
        print(f"Generated (This Month): {ThisMonthEnergy_KW}kW")
        client.publish(topic + "/Realtime_ACW", str(Realtime_ACW))
        client.publish(topic + "/Realtime_DCV", str(Realtime_DCV))
        client.publish(topic + "/Realtime_DCI", str(Realtime_DCI))
        client.publish(topic + "/AlltimeEnergy_KW", str(AlltimeEnergy_KW),0,retain=True)
        client.publish(topic + "/Realtime_ACV", str(Realtime_ACV))
        client.publish(topic + "/Realtime_ACF", str(Realtime_ACF))
        client.publish(topic + "/Inverter_C", str(Inverter_C))
        client.publish(topic + "/Realtime_ACI", str(Realtime_ACI))
        client.publish(topic + "/ThisMonthEnergy_KW", str(ThisMonthEnergy_KW))
        client.publish(topic + "/LastMonthEnergy_KW", str(LastMonthEnergy_KW))
        client.publish(topic + "/Today_KW", str(Today_KW))
        client.disconnect()
        client.loop_stop()
        time.sleep(10)

    except Exception as e:
        client.publish(topic + "/Realtime_ACW", str(0))
        client.disconnect()
        client.loop_stop()
        time.sleep(10)
        print(str(e));

8680 Wp, Panasonic Mono-bloc J-Generation WH-MDC07J3E5 1-fase 7kW. Heishamon v3.2.3 , NRflow *custom* , Home Assistant + " kamaradclimber / heishamon-homeassistant", Kaifa MA105 + Shelly PRo 3EM (120A), 3x Marstek 5,12kW v151, lilygo-modbus-485 HA


Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
De Python-scripts genoemd in dit forum voor uitlezen van de SolisMonitoringSite, zullen aangepast moeten worden, want MonitoringSite2.0 aka Solis Home/Pro gaat stoppen (per 30 April 2023), en wordt vervangen door SolisCloud.com
Handmatig inloggen op die nieuwe website kun je met dezelfde login-info als voor de website2.0, maar voor online uitlezen via script zul je hun nieuwe API moeten gebruiken, die trouwens gelijk lijkt te zijn als voor Trannergy, Omnik en SolarmanPV.
Vraagt wel een heel andere aanpak dan de scripts die hier in voorgaande berichten staan:
o.a. moet je vooraf per mail bij de Helpdesk van Solis/Solarman een AppID, een SecretID en APIUrl aanvragen.

[ Voor 1% gewijzigd door Toulon7559 op 27-04-2023 15:46 . Reden: Laatste regel iets aangepast ]


Acties:
  • +1 Henk 'm!

  • Maarten69
  • Registratie: Augustus 2022
  • Niet online
Daarom ook geen cloud voor mij, lokaal uitlezen via RS485 is stabieler, sneller, veiliger en totaal onafhankelijk van de cloud. :)

8680 Wp, Panasonic Mono-bloc J-Generation WH-MDC07J3E5 1-fase 7kW. Heishamon v3.2.3 , NRflow *custom* , Home Assistant + " kamaradclimber / heishamon-homeassistant", Kaifa MA105 + Shelly PRo 3EM (120A), 3x Marstek 5,12kW v151, lilygo-modbus-485 HA


Acties:
  • 0 Henk 'm!

  • BounceMeister
  • Registratie: Maart 2002
  • Niet online
Het lijkt me wel interessant, maar wanneer ik de API wil activeren op "https://www.soliscloud.com/#/apiManage", krijg ik de melding dat ik geen toegang heb. (No Authority).

Acties:
  • +1 Henk 'm!

  • ZuinigeRijder
  • Registratie: Oktober 2009
  • Niet online
BounceMeister schreef op donderdag 27 april 2023 @ 12:16:
[...]

Het lijkt me wel interessant, maar wanneer ik de API wil activeren op "https://www.soliscloud.com/#/apiManage", krijg ik de melding dat ik geen toegang heb. (No Authority).
Iemand anders had dit ook:

nhimf in "Solis omvormer data naar PVOutput"

Deze tweaker heeft daarna niet meer gereageerd.
Ik neem aan gewoon ingelogd en zo en je kunt je systeem gewoon bekijken in de browser?

Acties:
  • +2 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
Melding 'No Authority' misschien omdat je nog niet bent geregistreerd op een Solis-webportal?
Ze zijn wel een stuk strenger geworden met ingangscontrole.

@ZuinigeRijder Mooie voorzet.
In Domoticz ook 1 enkel Python-script dat voor Trannergy dezelfde klus klaart,
maar blijkbaar kun je dat niet 1-op-1 toepassen voor Solis, want krijg tenminste nu nog een aantal foutmeldingen. Zie deze weblink.

[ Voor 1% gewijzigd door Toulon7559 op 27-04-2023 15:48 . Reden: schrijffout gecorrigeerd ]


Acties:
  • +1 Henk 'm!

  • ZuinigeRijder
  • Registratie: Oktober 2009
  • Niet online
@Toulon7559 Ja, de SolisCloud API verwacht in de headers een authorisatie.

Zie hier in mijn script hoe dit te coderen:

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
# == get_solis_cloud_data ====================================================
def get_solis_cloud_data(url_part, data) -> str:
    """get solis cloud data"""
    md5 = base64.b64encode(
        hashlib.md5(data.encode('utf-8')).digest()).decode('utf-8')
    while True:
        now = datetime.now(timezone.utc).strftime("%a, %d %b %Y %H:%M:%S GMT")
        encrypt_str = (
            VERB + "\n" + md5 + "\n" + CONTENT_TYPE + "\n" +
            now + "\n" + url_part
        )
        hmac_obj = hmac.new(
            SOLISCLOUD_API_SECRET,
            msg=encrypt_str.encode('utf-8'),
            digestmod=hashlib.sha1
        )
        authorization = (
            'API ' + SOLISCLOUD_API_ID + ':' +
            base64.b64encode(hmac_obj.digest()).decode('utf-8')
        )
        headers = {
            'Content-MD5': md5,
            'Content-Type': CONTENT_TYPE,
            'Date': now,
            'Authorization': authorization
        }
        content = execute_request(SOLISCLOUD_API_URL+url_part, data, headers)
        # log(SOLISCLOUD_API_URL+url_part + "->" + content)
        if content != 'ERROR':
            return content

Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
Heb gelijk de scriptset van ZuinigeRijder uit Github ongewijzigd geprobeerd, uiteraard wel met mijn eigen 'geheime info' in de cfg-file.
Loop echter vast op een foutmelding die aangeeft dat de main-file blijkbaar inhoud van de cfg-file niet ziet.
Zal wel ergens een kleinigheid zijn, maar toch knap onhandig.
In onderstaande code is de 1e regel het CLI-command in Putty_SSH, en de rest het resultaat.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
sudo python3 /home/pi/solis/soliscloud_to_pvoutput.py
Traceback (most recent call last):
  File "/usr/lib/python3.7/configparser.py", line 845, in items
    d.update(self._sections[section])
KeyError: 'api_secrets'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/pi/solis/soliscloud_to_pvoutput.py", line 25, in <module>
    api_secrets = dict(parser.items('api_secrets'))
  File "/usr/lib/python3.7/configparser.py", line 848, in items
    raise NoSectionError(section)
configparser.NoSectionError: No section: 'api_secrets'


Hintje nodig om verder te komen.

[ Voor 0% gewijzigd door Toulon7559 op 27-04-2023 19:30 . Reden: Kleine correctie ]


Acties:
  • 0 Henk 'm!

  • ZuinigeRijder
  • Registratie: Oktober 2009
  • Niet online
@Toulon7559 je moet in de map staan waar de config file in staat.

Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
Dat is juist de reden van de vraag,
want dat zou in orde moeten zijn,
omdat cf. de aanwijzjngen de hele scriptset in folder /home/pi/solis staat:
  • solis.sh
  • soliscloud_to_pvoutput.cfg
  • soliscloud_to_pvoutput.py
en gemakzuchtig heb ik logging_config.ini meegenomen
en attributes op 775 gezet, dus rwx ruim vrijgegeven.
Bij oproepen vanaf Putty's CLI ga ik uit van de basis = /home/pi/, tenzij iets anders nodig is.
Uit ervaring voor Python3-scripts roept CLI-command de main-file bewust op in /home/pi/solis met voorvoegsel sudo python3.

Voordien heb ik ook getest met
code:
1
./solis/solis.sh

en dat ging foutloos.

[ Voor 7% gewijzigd door Toulon7559 op 27-04-2023 19:49 . Reden: Bijgewerkt ]


Acties:
  • 0 Henk 'm!

  • ZuinigeRijder
  • Registratie: Oktober 2009
  • Niet online
solis.sh doet eerst een cd waar het python script en config file staat en voert het daar uit.

Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
Crontab is ook al aangepast zoals aangegeven.
Als solis.sh foutloos wordt uitgevoerd, mag je toch verwachten dat in PVOutput de grafiek wordt gevuld?
Dat gebeurt niet, dus daarom stand_alone testen van het main-script, om te kijken of ergens in de aanloop naar PVOutput iets fout gaat.
Maar je hebt gelijk dat CLI-command vanuit /home/pi/solis/ de correctere methode is.
;-( Niet helemaal met succes, want daarna is de foutmelding
code:
1
2
3
4
5
6
7
8
9
10
 sudo python3 /home/pi/solis/soliscloud_to_pvoutput.py
20230427 20:01:18: INFO: body: {"id":"1308675217944549118","sn":"000940017228288"}
Traceback (most recent call last):
  File "/home/pi/solis/soliscloud_to_pvoutput.py", line 219, in <module>
    main_loop()
  File "/home/pi/solis/soliscloud_to_pvoutput.py", line 214, in main_loop
    send_pvoutput_data(pvoutput_string)
  File "/home/pi/solis/soliscloud_to_pvoutput.py", line 109, in send_pvoutput_data
    loggging.info(pvoutput_string)
NameError: name 'loggging' is not defined


Op zoek gegaan naar die regel 109, en na aanpassing van 'loggging' naar 'logging' zie ik nu heel nette loggingstrings, en begint de grafiek in PVOutput ook te lopen op de verwachte manier:
kleine oorzaken, grote gevolgen, en een hoop zoekwerk, .........

[ Voor 74% gewijzigd door Toulon7559 op 27-04-2023 20:11 . Reden: Uitgebreid ]


Acties:
  • 0 Henk 'm!

  • ZuinigeRijder
  • Registratie: Oktober 2009
  • Niet online
@Toulon7559 Ah, iemand anders heeft een Pull Request gedaan met deze fout erin en dat heb ik niet goed genoeg gecontroleerd. Inderdaad moet het met één g zijn. Ik zal morgen wel een update maken op github om deze fout te fixen.

EDIT: nieuwe release gemaakt

[ Voor 16% gewijzigd door ZuinigeRijder op 28-04-2023 07:34 ]


Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
SolisCloud is blijkbaar iets te populair, gezien deze foutmelding
code:
1
20230428 19:56:06: ERROR: https://www.soliscloud.com:13333/v1/api/inverterList -> 503: Service Temporarily Unavailable

Acties:
  • 0 Henk 'm!

  • ZuinigeRijder
  • Registratie: Oktober 2009
  • Niet online
@Toulon7559 ja, komt regelmatig voor, dan lukt het een van de volgende keren weer. Voor de totaalopbrengst (op een dag) maakt dat niet uit. Hoogstens zal de update dan iets later er zijn.

Acties:
  • 0 Henk 'm!

  • Toulon7559
  • Registratie: Oktober 2016
  • Laatst online: 19-04 14:42
Toch is zo'n foutmelding van de SolisCloud een reden om met enige interesse weer te kijken of de 2e interface vanuit de LAN/WiFi-stick naar Server_B niet bruikbaar gemaakt kan worden.
Teruglezen van de upload uit de SolisCloud is & blijft een omweg en een externe afhankelijkheid.
De interface met Server_B zou je binnen het eigen LAN moeten kunnen realiseren,
en het data-protocol op die interface wijzigt niet zolang je met de zelfde firmware in de LAN/Wifi-stick werkt.
Alleen zijn aanwijzingen voor simpel, robuust gebruik van die interface voor Server_B moeilijk te vinden.
Toen ik de Solis-Helpdesk aanwijzingen vroeg, kreeg ik een IP-instelling die me regelrecht naar het algemene en handmatige inlog-webportal van SolarmanPV bracht (maar ;-) zo'n verbinding had ik al).
Invullen voor Server_B van dat IP-adres met advies port = 10010, schakelde de primary upload uit naar SolisCloud, zonder respons op de interface voor Server_B:
dat is ook niet de bedoeling ..........

Direct op de RS485-inverter-connector lezen kan natuurlijk ook,
maar langzamerhand geef ik de voorkeur aan software-oplossingen.

[ Voor 13% gewijzigd door Toulon7559 op 29-04-2023 00:12 ]


Acties:
  • 0 Henk 'm!

  • Maarten69
  • Registratie: Augustus 2022
  • Niet online
https://github.com/planetmarshall/solis-service
This Python package implements a service that interprets messages from a Solis PV Inverter monitoring device and can persist them to various destinations
The Web UI for the Inverter offers the option to redirect its output to a secondary server, Server B. Unfortunately, this option appears to not work with the latest firmware. Instead it's possible to change the Default server entirely, from the remote Ginlong monitoring server, to a system on the local network.

[ Voor 97% gewijzigd door Maarten69 op 29-04-2023 09:09 ]

8680 Wp, Panasonic Mono-bloc J-Generation WH-MDC07J3E5 1-fase 7kW. Heishamon v3.2.3 , NRflow *custom* , Home Assistant + " kamaradclimber / heishamon-homeassistant", Kaifa MA105 + Shelly PRo 3EM (120A), 3x Marstek 5,12kW v151, lilygo-modbus-485 HA


Acties:
  • +1 Henk 'm!

  • ZuinigeRijder
  • Registratie: Oktober 2009
  • Niet online
@Maarten69 Dank. In de blog wordt er nog naar een pagina verwezen die er niet meer is. Dat moet deze zijn.

Acties:
  • 0 Henk 'm!

  • Maarten69
  • Registratie: Augustus 2022
  • Niet online
Weet iemand met zekerheid welke plug de juiste is?
Ik probeer het hier: Amazon te vinden, maar de keuze is weer reuze.

8680 Wp, Panasonic Mono-bloc J-Generation WH-MDC07J3E5 1-fase 7kW. Heishamon v3.2.3 , NRflow *custom* , Home Assistant + " kamaradclimber / heishamon-homeassistant", Kaifa MA105 + Shelly PRo 3EM (120A), 3x Marstek 5,12kW v151, lilygo-modbus-485 HA


Acties:
  • +1 Henk 'm!

  • Timmy
  • Registratie: September 1999
  • Laatst online: 11:52
Maarten69 schreef op maandag 25 december 2023 @ 14:34:
Weet iemand met zekerheid welke plug de juiste is?
Ik probeer het hier: Amazon te vinden, maar de keuze is weer reuze.
Ik heb destijds een paar verschillende op Ali besteld, helaas pasten ze allemaal niet. Uiteindelijk heb ik de monitoring plug open gehaald en daar een ESP bordje op aangesloten.

Acties:
  • +1 Henk 'm!

  • Oogje
  • Registratie: Oktober 2003
  • Niet online
Maarten69 schreef op maandag 25 december 2023 @ 14:34:
Weet iemand met zekerheid welke plug de juiste is?
Ik probeer het hier: Amazon te vinden, maar de keuze is weer reuze.
Ik heb een WiFi stick omgebouwd met een rs485-usb converter erin.

Any errors in spelling, tact, or fact are transmission errors.

Pagina: 1