PV Modul Growatt
-
- Beiträge: 39
- Registriert: Do Jan 13, 2022 9:42 pm
- Has thanked: 1 time
- Been thanked: 1 time
PV Modul Growatt
Hallo zusammen,
ich bin gerade am rumbasteln mit einem Growatt Wechselrichter MIC 600 TL-X.
Was habe ich schon geschafft... Der Growatt ist mit einem RS485 - Lan Adapter verbunden und er antwortet auf Anfragen mit einem Modbus Scanner.
Wie im Bild zu sehen, ist der Wert für die aktuelle Leistung im Registereintrag 30043 zu finden. Ich habe versucht ein bestehendes Modul (wr2_smamodbus) zu modifizieren, was aber nicht von Erfolg gekrönt war. Ich muss auch sagen, dass ich von der Python Programmierung keine Ahnung habe und ich deshalb aktuell auch nicht weiß, welche Werte da was wie bewirken.
Verändert habe ich den Wert in Zeile 17 der Datei sma.py von 30776 in 30043
resp= client.read_holding_registers(30775,2,unit=3) --> resp= client.read_holding_registers(30043,2,unit=3)
Auch ich habe eine OpenWB, teste aber auf einem 2 System mit SSH rechten.
Viele Grüße Jonas1611
ich bin gerade am rumbasteln mit einem Growatt Wechselrichter MIC 600 TL-X.
Was habe ich schon geschafft... Der Growatt ist mit einem RS485 - Lan Adapter verbunden und er antwortet auf Anfragen mit einem Modbus Scanner.
Wie im Bild zu sehen, ist der Wert für die aktuelle Leistung im Registereintrag 30043 zu finden. Ich habe versucht ein bestehendes Modul (wr2_smamodbus) zu modifizieren, was aber nicht von Erfolg gekrönt war. Ich muss auch sagen, dass ich von der Python Programmierung keine Ahnung habe und ich deshalb aktuell auch nicht weiß, welche Werte da was wie bewirken.
Verändert habe ich den Wert in Zeile 17 der Datei sma.py von 30776 in 30043
resp= client.read_holding_registers(30775,2,unit=3) --> resp= client.read_holding_registers(30043,2,unit=3)
Auch ich habe eine OpenWB, teste aber auf einem 2 System mit SSH rechten.
Viele Grüße Jonas1611
openWB Series2 (22 kW) SW 2
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
Re: PV Modul Growatt
Nimm nicht das Modul als Vorbild. Es ist alt und eher unintuitiv. Nimm zum Beispiel lieber das modules/wr_tripower9000/tripower.py als Vorbild.
Die Leistung müsstest du zum Beispiel so bekommen:
Code: Alles auswählen
with ModbusClient("DEINE WECHSELRICHTER-ADRESSE") as client:
power = client.read_holding_registers(30043, ModbusDataType.INT_16)
Und dann den Wert speichern mit:
Code: Alles auswählen
get_inverter_value_store(1).set(InverterState(power=-power))
-
- Beiträge: 39
- Registriert: Do Jan 13, 2022 9:42 pm
- Has thanked: 1 time
- Been thanked: 1 time
Re: PV Modul Growatt
Hallo yankee, danke für deine Mühe.
Bin aber nicht viel schlauer als gestern und gebe für heute erst mal auf.
Habe viel probiert bin aber zu keinem Ergebnis gekommen....
Habe jetzt eine py Datei die wie folgt aussieht, aber einen Syntaxerror erzeugt:
#!/usr/bin/env python3
import logging
import sys
from typing import Iterable
import requests
from helpermodules.log import setup_logging_stdout
from modules.common.component_state import InverterState
from modules.common.modbus import ModbusClient, ModbusDataType
from modules.common.store import get_inverter_value_store
power = ModbusClient(192.168.188.254:502).read_holding_registers(30043, ModbusDataType.INT_16, unit=3)
get_inverter_value_store(1).set(InverterState(power=-power))
Bin aber nicht viel schlauer als gestern und gebe für heute erst mal auf.
Habe viel probiert bin aber zu keinem Ergebnis gekommen....
Habe jetzt eine py Datei die wie folgt aussieht, aber einen Syntaxerror erzeugt:
#!/usr/bin/env python3
import logging
import sys
from typing import Iterable
import requests
from helpermodules.log import setup_logging_stdout
from modules.common.component_state import InverterState
from modules.common.modbus import ModbusClient, ModbusDataType
from modules.common.store import get_inverter_value_store
power = ModbusClient(192.168.188.254:502).read_holding_registers(30043, ModbusDataType.INT_16, unit=3)
get_inverter_value_store(1).set(InverterState(power=-power))
openWB Series2 (22 kW) SW 2
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
Re: PV Modul Growatt
Statt
Code: Alles auswählen
ModbusClient(192.168.188.254:502)
Code: Alles auswählen
ModbusClient("192.168.188.254")
Wenn nochmal ein Fehler kommt, verwende bitte [code][/code]-tags und schreib auch die Fehlermeldung dazu, die du bekommst.
-
- Beiträge: 39
- Registriert: Do Jan 13, 2022 9:42 pm
- Has thanked: 1 time
- Been thanked: 1 time
Re: PV Modul Growatt
Also ersmal, ich weiß gar nicht was ich hier mache...
Habe jetzt folgendes zusammengeschrieben:
Wie kann ich eigentlich überprüfen, was ich da mache.
Kann man auf der Konsole das einfach so aufrufen?
Habe jetzt folgendes zusammengeschrieben:
Code: Alles auswählen
#!/usr/bin/env python3
#import logging
#import sys
#from typing import Iterable
import requests
#from helpermodules.log import setup_logging_stdout
from modules.common.component_state import InverterState
from modules.common.modbus import ModbusClient, ModbusDataType
from modules.common.store import get_inverter_value_store
def test():
with ModbusClient("192.168.188.254:port=502") as client:
power = client.read_holding_registers(30043, ModbusDataType.INT_16, unit=3)
get_inverter_value_store(1).set(InverterState(power=-power))
f = open('/var/www/html/openWB/ramdisk/pv2watt', 'w')
f.write(str(power))
f.close()
Wie kann ich eigentlich überprüfen, was ich da mache.
Kann man auf der Konsole das einfach so aufrufen?
Code: Alles auswählen
pi@raspberrypi:~ $ sudo python /var/www/html/openWB/modules/wr2_smamodbus/sma.py
Traceback (most recent call last):
File "/var/www/html/openWB/modules/wr2_smamodbus/sma.py", line 9, in <module>
from modules.common.component_state import InverterState
ImportError: No module named modules.common.component_state
openWB Series2 (22 kW) SW 2
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
Re: PV Modul Growatt
Daraus diese 3 Zeilen ersatzlos streichen:
Code: Alles auswählen
f = open('/var/www/html/openWB/ramdisk/pv2watt', 'w')
f.write(str(power))
f.close()
Code: Alles auswählen
get_inverter_value_store(1).set(InverterState(power=-power))
Code: Alles auswählen
get_inverter_value_store(2).set(InverterState(power=-power))
Lass den Port weg! Die Syntax ist so falsch, es müsste wenn als zweites Argument dazu. Aber 502 ist ohnehin der Standardwert, wenn du den einfach weglässt nimmt es automatisch 502.jonas1611 hat geschrieben: ↑Mo Jan 17, 2022 12:52 amCode: Alles auswählen
with ModbusClient("192.168.188.254:port=502") as client:
Nicht ganz. So geht es:jonas1611 hat geschrieben: ↑Mo Jan 17, 2022 12:52 am Kann man auf der Konsole das einfach so aufrufen?
Code: Alles auswählen
pi@raspberrypi:~ $ sudo python /var/www/html/openWB/modules/wr2_smamodbus/sma.py
Code: Alles auswählen
PYTHONPATH=/var/www/html/openWB/packages python3 /var/www/html/openWB/modules/wr2_smamodbus/sma.py
-
- Beiträge: 39
- Registriert: Do Jan 13, 2022 9:42 pm
- Has thanked: 1 time
- Been thanked: 1 time
Re: PV Modul Growatt
Hallo yankee, danke dass du dich meiner annimmst....
Habe jetzt alles so geändert, wie du geschrieben hast.
hier die Ausgabe der Fehelermeldung auf der Konsole:
Ich hoffe du hast noch ein, zwei Tipps für mich.....
Habe jetzt alles so geändert, wie du geschrieben hast.
Code: Alles auswählen
#!/usr/bin/env python3
#import logging
#import sys
#from typing import Iterable
import requests
#from helpermodules.log import setup_logging_stdout
from modules.common.component_state import InverterState
from modules.common.modbus import ModbusClient, ModbusDataType
from modules.common.store import get_inverter_value_store
def test():
with ModbusClient("192.168.188.254") as client:
power = client.read_holding_registers(30043, ModbusDataType.INT_16, unit=3)
get_inverter_value_store(2).set(InverterState(power=-power))
Code: Alles auswählen
pi@raspberrypi:~ $ PYTHONPATH=/var/www/html/openWB/packages python3 /var/www/html/openWB/modules/wr2_smamodbus/sma.py
/usr/lib/python3/dist-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.8) or chardet (3.0.4) doesn't match a supported version!
RequestsDependencyWarning)
Traceback (most recent call last):
File "/var/www/html/openWB/modules/wr2_smamodbus/sma.py", line 16, in <module>
get_inverter_value_store(2).set(InverterState(power=-power))
NameError: name 'power' is not defined
openWB Series2 (22 kW) SW 2
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
Re: PV Modul Growatt
Die Einrückung stimmt nicht. Die Zeile "get_inverter_value_store(2).set(InverterState(power=-power))" musst du auf die gleiche Stufe wie das `with` zwei Zeilen drüber einrücken.
-
- Beiträge: 39
- Registriert: Do Jan 13, 2022 9:42 pm
- Has thanked: 1 time
- Been thanked: 1 time
Re: PV Modul Growatt
Ich habe das gleich mal geändert. Die Fehlermeldung mit dem NameError ist jetzt weg.
Die Warnung bleibt aber:
Auch werden keine Abfragen ausgelöst. Am LAN- RS485 Adapter haben die LEDs Tx und Rx mit dem original Modul "wr2_smamodbus/sma.py" ca. alle 10 sec geblinkt.
Hier passiert aktuell nichts....
Die Warnung bleibt aber:
Code: Alles auswählen
pi@raspberrypi:~ $ PYTHONPATH=/var/www/html/openWB/packages python3 /var/www/html/openWB/modules/wr2_smamodbus/sma.py
/usr/lib/python3/dist-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.8) or chardet (3.0.4) doesn't match a supported version!
RequestsDependencyWarning)
Hier passiert aktuell nichts....
openWB Series2 (22 kW) SW 2
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
PV: 10 kWp Ost-West, Kostal PLENTICORE plus 8.5 + KSEM
BEV: VW ID3 Pro
WP: Lambda EU08L
Re: PV Modul Growatt
Die Warnung die du da erhälst ist auch spannend, ich denke aber dass das für deinen Code kein Hindernis ist, da du das requests-paket nicht brauchst. Du bist auf original openWB Hardware?
Kein Fehler. Das ist eigentlich (tm) ein Zeichen dafür, dass alles geklappt hat. Ist denn eine Datei /var/www/html/openWB/ramdisk/pv2 entstanden und steht was sinnvolles drin?jonas1611 hat geschrieben: ↑Mo Jan 17, 2022 2:30 pmDie Warnung bleibt aber:Code: Alles auswählen
pi@raspberrypi:~ $ PYTHONPATH=/var/www/html/openWB/packages python3 /var/www/html/openWB/modules/wr2_smamodbus/sma.py /usr/lib/python3/dist-packages/requests/__init__.py:91: RequestsDependencyWarning: urllib3 (1.26.8) or chardet (3.0.4) doesn't match a supported version! RequestsDependencyWarning)
Du kannst sonst auch mal
Code: Alles auswählen
print(power)
Oder du könntest noch
Code: Alles auswählen
from helpermodules.log import setup_logging_stdout
setup_logging_stdout()
Das mag bedeuten, dass die Modbusanfrage nicht raus geht. Oder nicht ankommt. Was aber merkwürdig wäre, weil dann müsstest du eigentlich auch einen Fehler bekommen.