vzlogger Modul

Anfragen zum Erstellen von Modulen, Fragen zu Modulen
Antworten
Faceted8435
Beiträge: 3
Registriert: So Sep 07, 2025 9:39 pm
Has thanked: 1 time

vzlogger Modul

Beitrag von Faceted8435 »

Hallo,

ich bin etwas unzufrieden mit dem vzlogger Modul, da bei mir die Werte nicht in einer festen Zeile stehen. Keine Ahnung warum man nicht die Daten aus der wunderbare JSON Struktur geholt hat, sondern die einfach nach einer Zeile parst...

Ich würde gerne das Ändern und anpassen.
Gibt es dazu eine Möglichkeit, dass ich das Modul direkt auf meiner OpenWB Pro+ anpasse?
Oder muss ich mir eine VM mit openWB installieren?

Viele Grüße
Maik
aiole
Beiträge: 8424
Registriert: Mo Okt 08, 2018 4:51 pm
Has thanked: 128 times
Been thanked: 142 times

Re: vzlogger Modul

Beitrag von aiole »

Dazu braucht es SSH-Zugriff, den du bei originaler Kaufbox bzw. Foren-Image nicht hast. Du kannst die sw2 aber direkt aus Github bauen.
Das ist allerdings nicht sonderlich praktikabel, da deine lokale Änderung mit jedem Update hops geht.

Besser auf Github einen Fork ziehen, diesen nach deinen Ideen anpassen und einen PR stellen. Das Team prüft diesen und hilft, wenn's klemmt. Wenn ok, kommt er für ALLE ins offizielle update.
LutzB
Beiträge: 4150
Registriert: Di Feb 25, 2020 9:23 am
Has thanked: 17 times
Been thanked: 123 times

Re: vzlogger Modul

Beitrag von LutzB »

Faceted8435 hat geschrieben: Mo Sep 08, 2025 9:43 pm Hallo,

ich bin etwas unzufrieden mit dem vzlogger Modul, da bei mir die Werte nicht in einer festen Zeile stehen. Keine Ahnung warum man nicht die Daten aus der wunderbare JSON Struktur geholt hat, sondern die einfach nach einer Zeile parst...
Kann ich nachvollziehen. Das Modul wurde anscheinend damals einfach so aus der 1.9 portiert, ohne große Anpassungen machen zu müssen. Ist definitiv nicht robust gegenüber sich verändernder Strukturen im JSON.
Faceted8435 hat geschrieben: Mo Sep 08, 2025 9:43 pm Ich würde gerne das Ändern und anpassen.
Gibt es dazu eine Möglichkeit, dass ich das Modul direkt auf meiner OpenWB Pro+ anpasse?
Oder muss ich mir eine VM mit openWB installieren?
Wie aiole schon geschrieben hat, kannst Du das so auf der Pro+ nicht einfach machen, da Du keinen SSH-Zugang hast. Du müsstest entweder einen eigenen Raspi oder VM für die Entwicklung verwenden. Es ginge auch noch, dass Du eine eigene SD-Karte mit SSH-Zugang erstellst und die dann in der Pro+ laufen lässt.

Ich habe mir das Modul gerade mal angesehen. So aufwändig dürften die notwendigen Anpassungen gar nicht sein. Das sollten wir auch ohne eigenen vzlogger hinbekommen. Etwas tricky wird nur das Upgrade einer bestehenden Konfiguration. Wenn jetzt eine Zeilennummer hinterlegt ist, muss daraus eine UUID ermittelt werden, die dann zum Parsen verwendet wird. Das Problem dabei ist, dass zu dem Zeitpunkt, wo die Upgrade-Methode aufgerufen wird, noch kein JSON vorliegt. Die Zeilen müssten also während der ersten Ausführung in UUIDs umgewandelt und dann die Konfiguration aktualisiert werden.

Wie sieht denn ein allgemeindes JSON von vzlogger aktuell aus? Ist die Reihenfolge der Daten in den Tupel immer gleich? Nach dem aktuell im Test vorhandenen Beispiel müsste das Parsen dann über den Pfad "data[x]tuples[1]" erfolgen, wobei "x" anhand der UUID zu bestimmen wäre.
Faceted8435
Beiträge: 3
Registriert: So Sep 07, 2025 9:39 pm
Has thanked: 1 time

Re: vzlogger Modul

Beitrag von Faceted8435 »

Hi Lutz,

danke für deine Antwort.

Ja, die Änderung sind überschaubar. Die Migration des schwierigere. Ich weiß gerade nicht, wie sicher man von der Zeilennummer auf die UUID bzw. denn Index des Elementes schließen kann.

Meine JSON sieht so aus:

Code: Alles auswählen

{
 "version": "0.8.7",
  "generator": "vzlogger",
  "data": [

        {
              "uuid": "38d3d680-91d4-11e8-0059-e70a9475f5fe",
              "last": 1757431965071,
              "interval": -1,
              "protocol": "sml",
              "tuples": [ .. ]
       },
{

          "uuid": "704e7da0-5a14-11ea-91d4-cf6274a250eb",
          "last": 1757431965071,
          "interval": -1,
          "protocol": "sml",
          "tuples": [ .. ]
	},
	{

          "uuid": "4ea85ee3-1f42-436e-866e-913cfe67c672",
          "last": 1757431965071,
          "interval": -1,
          "protocol": "sml",
          "tuples": [ .. ]
	}
]
}
Und die Elemente in "tuples" variieren.
Meine Idee wäre in der Konfiguration die UUID oder den Index anzugeben (if digit => Index sonst UUID)
Wenn man die pare_line Funktion durch diese fetch_last_value ersetzt sollte das alles sein.

Code: Alles auswählen

def fetch_last_value(response: dict, target_id: str):

    json_data = response.json()

    if "data" not in json_data:
        raise KeyError("Kein 'data'-Schlüssel in der Antwort gefunden")

    data = json_data["data"]

    # Prüfen, ob UUID eine Zahl ist
    if target_id.isdigit():
        index = int(target_id)
        if index < 0 or index >= len(data):
            raise IndexError(f"Index {index} liegt außerhalb des data-Arrays")
        obj = data[index]
    else:
        obj = next((o for o in data if o.get("uuid") == target_id), None)
        if obj is None:
            raise ValueError(f"Kein Objekt mit UUID {target_id} gefunden")

    tuples = obj.get("tuples", [])
    if not tuples:
        raise ValueError(f"Objekt ({target_id}) hat keine 'tuples'")

    return tuples[-1][1]
Vielleicht kann man auch statt die alten Usecase zu migrieren einfach ein neues Modul vzlogger2 machen?

Ich habe die Funktion gegen mein vzlogger getestet. Mit der Anpassung in der Konfig habe ich mich noch nicht beschäftigt.
Ich müsste mir auch erst noch eine Test-Umgebung aufbauen. Dann könnte ich auch einen PR machen.

Viele Grüße
Maik
LutzB
Beiträge: 4150
Registriert: Di Feb 25, 2020 9:23 am
Has thanked: 17 times
Been thanked: 123 times

Re: vzlogger Modul

Beitrag von LutzB »

Ist irgendwo dokumentiert, welche Daten in den "tuples" sind? In dem Modultest ist das ein eindimensionalen Array, Du verwendest jedoch "tuples[-1][1]" also zwei Ebenen.
derNeueDet
Beiträge: 4538
Registriert: Mi Nov 11, 2020 7:16 pm
Has thanked: 11 times
Been thanked: 43 times

Re: vzlogger Modul

Beitrag von derNeueDet »

Das hab ich vor langer Zeit mal hier im Forum dokumentiert, wie das bei Vzlogger in JSON aussieht. Suchen hilft. Das lässt sich alles mit jq Filter Einträgen im JSON Modul ohne Programmierung ermitteln.

PS: schau mal da: viewtopic.php?p=23808#p23808


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/2025)
Faceted8435
Beiträge: 3
Registriert: So Sep 07, 2025 9:39 pm
Has thanked: 1 time

Re: vzlogger Modul

Beitrag von Faceted8435 »

LutzB hat geschrieben: Di Sep 09, 2025 5:07 pm Ist irgendwo dokumentiert, welche Daten in den "tuples" sind? In dem Modultest ist das ein eindimensionalen Array, Du verwendest jedoch "tuples[-1][1]" also zwei Ebenen.
Beim vzlogger bin ich jetzt auf keine offizielle Doku gestoßen.
Ein tuples Element ist wieder ein Array mit einem Zeitstempel im Unixtimestamp-Format in Millisekunden und dem Messwert:

Code: Alles auswählen

tuples": [

            [
                  1757431666671,
                  -86
            ],
            [
                  1757431668313,
                  -84
            ],
            [
                  1757431669956,
                  -101
            ]
        ]
Entweder hat "tuples" mindestens ein Element oder ist nicht vorhanden.

Mit tuples[-1][1] möchte ich das letzte Element aus dem Array (den neuesten Messwert) haben und davon den zweiten Wert - den Messwert.

Viele Grüße
Maik
derNeueDet
Beiträge: 4538
Registriert: Mi Nov 11, 2020 7:16 pm
Has thanked: 11 times
Been thanked: 43 times

Re: vzlogger Modul

Beitrag von derNeueDet »

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/2025)
Antworten