Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Ginlong Solis omvormer uitlezen voor Home Assistant

Pagina: 1
Acties:

Acties:
  • +1Henk 'm!

  • Jur
  • Registratie: januari 2000
  • Niet online
Ok ik ben weer wat verder, Eastron SDM120 in de meterkast geplaatst, ik kreeg met geen mogelijkheid de data uitgelezen in Home Assistant met Node-red en of andere scripts daarom maar plan B in werking gezet.

Simpele RS485 naar TTL converter :


en dat naar een nodemcu:


Alles in een klein doosje:


, de nodemcu geflasht naar Tasmota (had ik al goede ervaringen mee) en voila de data is beschikbaar zelfs draadloos :):, geen gedoe met de USB poorten van de Pi


dmv de mqtt broker beschikbaar in Home Assitant, nu nog uploaden naar PV output....

  • _Razor_
  • Registratie: augustus 2012
  • Laatst online: 22-06-2020
Ik zat met hetzelfde euvel en heb voor een andere oplossing gekozen. Misschien niet de mooiste maar het werkt inmiddels.

Hiervoor lees ik de interne webinterface van de Solis convertor uit via Node-RED en deze scraped de juiste values eruit (helaas alleen current power, day en total, genoeg voor nu) en stuurt deze via MQTT naar HA.



Mocht er interesse zijn kan ik de details wel posten. Het heeft me (als HA, Node-RED en MQTT noob) wel wat moeite gekost dus ik kan me voorstellen dat andere dit ook ervaren.

  • _Razor_
  • Registratie: augustus 2012
  • Laatst online: 22-06-2020
ehm...nee gewoon via http:....

http://ip:pass@ipaddress-van-wifi-stick


The scrape web node does exacly the same
curl 'http://username:pass@ipaddress/status.html'

then the "grab" nodes uses a regex to filter out the proper value;
For example:

var parts = msg.payload.match(/webdata_now_p\s=\s"(\d+)"/);
msg.payload = {
value: parts[1],
};
return msg;

  • Remco45
  • Registratie: januari 2013
  • Laatst online: 18:49
In een ander topic voor het uitlezen van een Ginlong Solis 1-fase omvormer wordt rechtstreeks uitlezen van de omvormer toegepast middels de COMM aansluiting (RS485).
Daar heb ik een posting geplaatst met mijn ervaring voor het uitlezen van een 3-fase omvormer.
Hieronder een afbeelding van twee Pollers die registers uitlezen.



Zie verder https://gathering.tweaker...message/63646858#63646858

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


  • jotheman
  • Registratie: september 2000
  • Laatst online: 25-07 22:54

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. Het zal voor HomeAssistant allicht anders zijn, de knappe koppen op dit forum kunnen dat vast omfietsen naar iets bruikbaars als ze willen.
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:

- 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.
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:


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

I see dead pixels...

Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

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