@ LutzB: schau dir mal den Code an den Lena mal eingebaut hat vor allem das Command.
Das war mal anders als es jetzt drin ist. Das Vommand kann ja jetzt per Frontend eingegeben werden. 00*.
Realisiert war es mal als "-1:00*" wenn ich mich richtig erinnere. Wo ist das -1: geblieben?
Evtl. Hängt es damit zusammen.ich bin gerade am Handy und kann es nicht vergleichen.
VG
Det
SolarviewAnbindung funktioniert nicht
-
- Beiträge: 4447
- Registriert: Mi Nov 11, 2020 7:16 pm
- Has thanked: 4 times
- Been thanked: 27 times
Re: SolarviewAnbindung funktioniert nicht
10kWp PV mit SMA Tripower 10000TL-10 (PE11 mit SDM72V2); 2,4kWp mit Solis 2.5 G6 (EE11 mit SDM120). OpenWB Standard+. EVU EM540 an einem Raspi mit Venus OS. BEV Mercedes EQA 300 (06/2024)
Re: SolarviewAnbindung funktioniert nicht
In der Dokumentation steht:
Da die der Meinung sind, dass die checksumme ein einzelnes Byte ist und das einzelne Byte ein "ö" ist, ist es schonmal nicht Unicode. Das einzige was einigermaßen mittelmäßig sinnvollerweise noch bleibt ist iso-8859-15.Die Antwort sieht dann folgendermassen aus (feste Länge und zusätzlich durch
Komma getrennt):
{01,09,09,2019,10,43,0001.6,00146,004974,00067931,01835,382,005.8,000,000.0,000,000.0,000,000.0,238,008.8,0
00,000.0,000,000.0,38},ö
{ } sind Anfang und Endzeichen
ö ist die Checksumme, (ein Byte, unsigned, overflow) stellt die Summe dar aller Zeichen inklusive
„{„ und „}“.
Edit: Natürlich kann die Checksumme jede beliebige Zahl sein und die Idee das als Zeichen zu dekodieren finde ich unintuitiv, denn die Zahl repräsentiert nunmal nicht notwendigerweise ein Zeichen. Allerdings wenn man in Python `decode("iso-8859-15")` verwendet, dann dekodiert Python alles. Intuitiver wäre je nach Blickwinkel das letzte Byte schon vor dem Dekodieren abzuschneiden:
Code: Alles auswählen
s.recv(1024)[:-1].decode("iso-8859-15")
-
- Beiträge: 3781
- Registriert: Di Feb 25, 2020 9:23 am
- Has thanked: 4 times
- Been thanked: 24 times
Re: SolarviewAnbindung funktioniert nicht
@derNeueDet: Die Stable verwendet noch ein Shell Skript. Das lässt sich nur schwer vergleichen.
@yankee: Ja, wenn man das letzte Byte abschneidet, sollte es passen, war ja auch mein erster Gedanke dazu.
@yankee: Ja, wenn man das letzte Byte abschneidet, sollte es passen, war ja auch mein erster Gedanke dazu.
-
- Beiträge: 3781
- Registriert: Di Feb 25, 2020 9:23 am
- Has thanked: 4 times
- Been thanked: 24 times
Re: SolarviewAnbindung funktioniert nicht
So hat es hier mit den Beispieldaten aus dem Quellcode funktioniert:
Achtung: die Zeile nach den Beispieldaten wurde auch angepasst, da jetzt die Antwort in der Variable "message" gespeichert wurde!
Zusätzlich wird jetzt auch die Prüfsumme berechnet, jedoch noch nicht ausgewertet. Wenn das so passt, könnte dort eine Prüfung mit rein.
Bitte testen!
Code: Alles auswählen
def request(command: str):
try:
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.settimeout(solarview_timeout)
s.connect((solarview_hostname, solarview_port))
s.sendall(command.encode("ascii"))
response = s.recv(1024)
if Debug != 0:
DebugLog("Raw response: "+str(response))
message = response[:-2]
checksum = int.from_bytes(response[-1:], "big", signed=False)
calculated_checksum = int(sum(message)) % 256
DebugLog("message: " + str(message))
DebugLog("checksum: " + str(checksum) + " calculated: " + str(calculated_checksum))
except Exception as e:
DebugLog("Error: request to SolarView failed. return-code: %s, host: %s, port: %s, timeout: %s, command: %s"
% (str(e), str(solarview_hostname), str(solarview_port), str(solarview_timeout), str(command)))
traceback.print_exc()
exit(1)
#
# Format: {WR,Tag,Monat,Jahr,Stunde,Minute,KDY,KMT,KYR,KT0,PAC,UDC,IDC,UDCB,IDCB,UDCC,IDCC,UDCD,IDCD,UL1,IL1,UL2,IL2,UL3,IL3,TKK},Checksum
# Beispiel: {01,09,09,2019,08,18,0000.0,00082,002617,00018691,00104,451,000.2,000,000.0,000,000.0,000,000.0,226,000.4,000,000.0,000,000.0,00},▒
#
# Bedeutung (siehe SolarView-Dokumentation):
# KDY= Tagesertrag (kWh)
# KMT= Monatsertrag (kWh)
# KYR= Jahresertrag (kWh)
# KT0= Gesamtertrag (kWh)
# PAC= Generatorleistung in W
# UDC, UDCB, UDCC, UDCD= Generator-Spannungen in Volt pro MPP-Tracker
# IDC, IDCB, IDCC, IDCD= Generator-Ströme in Ampere pro MPP-Tracker
# UL1, IL1= Netzspannung, Netzstrom Phase 1
# UL2, IL2= Netzspannung, Netzstrom Phase 2
# UL3, IL3= Netzspannung, Netzstrom Phase 3
# TKK= Temperatur Wechselrichter
# Geschweifte Klammern entfernen
values = message.decode("ascii")[1:-1].split(",")
Zusätzlich wird jetzt auch die Prüfsumme berechnet, jedoch noch nicht ausgewertet. Wenn das so passt, könnte dort eine Prüfung mit rein.
Bitte testen!
-
- Beiträge: 4447
- Registriert: Mi Nov 11, 2020 7:16 pm
- Has thanked: 4 times
- Been thanked: 27 times
Re: SolarviewAnbindung funktioniert nicht
Ah, so weit hab ich gar nicht zurück geschaut. Jetzt hab ich auch kapiert, wo das mit dem veränderten Command her kommt.
Das war mal ein Shell Ausdruck, der mehr oder weniger 1:1 in den Python Code übernommen wurde.
Dann hat die Python Implementierung vermutlich noch nie funktioniert.
VG
Det
Das war mal ein Shell Ausdruck, der mehr oder weniger 1:1 in den Python Code übernommen wurde.
Dann hat die Python Implementierung vermutlich noch nie funktioniert.
VG
Det
10kWp PV mit SMA Tripower 10000TL-10 (PE11 mit SDM72V2); 2,4kWp mit Solis 2.5 G6 (EE11 mit SDM120). OpenWB Standard+. EVU EM540 an einem Raspi mit Venus OS. BEV Mercedes EQA 300 (06/2024)
-
- Beiträge: 4447
- Registriert: Mi Nov 11, 2020 7:16 pm
- Has thanked: 4 times
- Been thanked: 27 times
Re: SolarviewAnbindung funktioniert nicht
10kWp PV mit SMA Tripower 10000TL-10 (PE11 mit SDM72V2); 2,4kWp mit Solis 2.5 G6 (EE11 mit SDM120). OpenWB Standard+. EVU EM540 an einem Raspi mit Venus OS. BEV Mercedes EQA 300 (06/2024)
-
- Beiträge: 46
- Registriert: Di Sep 03, 2019 6:03 am
Re: SolarviewAnbindung funktioniert nicht
Ich bin der Autor der ursprünglichen Implementierung der SolarView-Anbindung (Shell-Skript) und stolpere gerade zufällig über diesen Thread. An der Python-Implementierung war ich nicht beteiligt. Gibt es Fortschritte? Besteht das Problem noch?
Als Alternative steht übrigens inzwischen auch die Anbindung von SolarView über MQTT zur Verfügung.
- Christian
Als Alternative steht übrigens inzwischen auch die Anbindung von SolarView über MQTT zur Verfügung.
- Christian