SolarviewAnbindung funktioniert nicht

Fragen zur Nutzung, Features, usw..
derNeueDet
Beiträge: 4229
Registriert: Mi Nov 11, 2020 7:16 pm

Re: SolarviewAnbindung funktioniert nicht

Beitrag von derNeueDet »

@ 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
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 250 (07/2023)
yankee
Beiträge: 481
Registriert: Sa Mai 16, 2020 11:34 am

Re: SolarviewAnbindung funktioniert nicht

Beitrag von yankee »

LutzB hat geschrieben: Di Feb 22, 2022 8:38 pm Gibt es irgendwelche Infos, welcher Zeichensatz verwendet wird?
In der Dokumentation steht:
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 „}“.
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.

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")
LutzB
Beiträge: 3513
Registriert: Di Feb 25, 2020 9:23 am

Re: SolarviewAnbindung funktioniert nicht

Beitrag von LutzB »

@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.
LutzB
Beiträge: 3513
Registriert: Di Feb 25, 2020 9:23 am

Re: SolarviewAnbindung funktioniert nicht

Beitrag von LutzB »

So hat es hier mit den Beispieldaten aus dem Quellcode funktioniert:

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(",")
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!
derNeueDet
Beiträge: 4229
Registriert: Mi Nov 11, 2020 7:16 pm

Re: SolarviewAnbindung funktioniert nicht

Beitrag von derNeueDet »

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
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 250 (07/2023)
derNeueDet
Beiträge: 4229
Registriert: Mi Nov 11, 2020 7:16 pm

Re: SolarviewAnbindung funktioniert nicht

Beitrag von derNeueDet »

Evtl. Mal mit den Benutzern hier abgleichen.

viewtopic.php?t=497&start=10#p56025

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 250 (07/2023)
openwb-user
Beiträge: 46
Registriert: Di Sep 03, 2019 6:03 am

Re: SolarviewAnbindung funktioniert nicht

Beitrag von openwb-user »

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
Antworten