Virtuelle Variable für dynamische/mathematische Operation

Ich bin auf der Suche nach einer Möglichkeit Variablen dynamisch zu berechnen. Aktuell habe ich 2 Variablen (A und B), die ich voneinander subtrahieren muss, um den Wert C zu erlangen, den ich wiederum in einem Diagramm visualisieren möchte. Im Moment nutze ich ein Skript, dass kontinuierlich sobald sich Variable A und Variable B ändert die mathematische Operation durchführt und dann in einer neuen Variable C speichert. Der Vorgang ist allerdings nicht sonderlich sinnvoll, da die zusätzliche Variable unnötig Speicher verwendet obwohl der Wert ja sozusagen schon gespeichert ist. Zudem ist die Lösung etwas fehleranfällig, da ich manchmal Messfehler manuell in den Urspungsvariablen (A und B) korrigieren muss, die sich zwar über erneutes Aggregieren der Variable korrigieren lässt aber dann ist der dazugehörige berechnete Wert in Variable C immer noch flasch und lässt sich auch nicht so einfach korrigieren.

Der Use-Case ist ein „komplexes“ Messverfahren bei einer PV-Anlage mit 2 Stromzählern in Reihe. Der Bezug der Wärmepumpe aus dem Netz berechnet sich aus „Bezug Zähler 1“ minus „Bezug Zähler 2“.

Letztendlich habe ich meine Grafik mit Grafana „Transformation“ umgesetzt: Add a transformation to data | Grafana documentation You should know about... transformations in Grafana | Grafana Labs

Prinzipiell geht es mir aber auch nicht nur um Diagramme sondern allg. um die Möglichkeit „virtuelle“ Variablen zu haben die ich „adhoc“ aus bereits vorhandenen Variablen berechnen kann.

Was haltet ihr davon, könntet ihr eine solche Funktion ebenfalls gebrauchen, oder habt ihr ggf. eine Möglichkeit gefunden meinen Use-Case intelligenter abzubilden.

Ich hoffe ich habe mich verständlich ausgedrückt und der Link zu den Grafana Transformations stellt den Use-Case und die Funktion nochmal besser dar.

In deinem Use Case könntest du das Modul „Virtuelle Messstelle“. Das erstellt zwar keine „virtuelle“ Variable, die erstellte „echte“ Variable kannst du aber als Summe bzw. Differenz von Zählern definieren und auch im nachhinein mit Archivdaten füttern. In deinem Fall müsstest du bei Anpassung der Archivdaten der Quellen einfach nur auf einen Button klicken und auch die Differenz ist korrekt geloggt.

Vielen dank @Dr.Niels. Ich habe gleich mal eine solche virtuelle Messtelle konfiguriert. Letztendlich macht diese in einer benutzerfreundlichen Variante genau das, was ich bisher selbst in einem PHP Skript mache und ist auf jeden Fall ein Verbesserung!!!
Ganz klar ist mir noch nicht wie die Berechnung getriggert wird. Die Variable zeichnet (logischerweise und bedauerlicherweise ja auch in meinem Skript) erst ab dem Zeitpunkt des Erstellen auf, sprich meine historischen Daten bekomme ich nicht „rein“ bzw. wird die Berechnung neu getriggert, wenn die Quelle re-aggregiert wird, oder was meinst du mit „auf einen Button klicken“?
Würde ein Export der Quelle, löschen der Quelle und danach Import der alten (evtl. korrigierten) Daten auch eine neue Kalkulation der virtuellen Messstelle lostreten? Könnte ich dadurch auch eine Neuberechnung triggern, wenn ich in der/den Quellen historische Daten manuelle korrigiert habe?

Meine ursprüngliche Diskussion mit der virtuellen Variable (unabhängig vom beschriebenen use-Case) würde ich gern weiterhin zur Diskussion stellen. Es bleiben ja weitere valide Argumente, wie z.B. doppelte Datenhaltung und weitere Use-Cases.

Unten sollte ein Button „Historische Daten nachziehen“ oder dergleichen sein. Möglicherweise ist der aktuell aber noch in Beta, ich habe das gerade nicht genau im Kopf.

Der Wert aktualisiert sich übrigens immer gemeinsam mit dem Hauptzähler.

Da ich eineähnlichen use case hatte, habe ich die Diskuusion sehr aufmerksam verfolgt.
Ich sehe es sehr ähnlich wie BeK es in seinem Post oben beschrieben hat.

Den Knopf gibt es zumindest bei mir in der 6.2 nicht.

Grüße Thomas

Servus
Aber das kann ja nur richtig funktionieren wenn die Daten der Summanden identische Timestamps haben, oder wenn man aggregierte Daten benützt. Sonst kommt doch Blödsinn raus.

wundert sich
bb

Tatsächlich arbeitet das Hinzufügen der Daten auf der Stundenaggregation. Theoretisch wären aber auch Daten mit unterschiedlichen Timestamps möglich. Das wird nur von der Mathematik her etwas komplizierter…

@jossel Dann ist der Schalter wohl tatsächlich noch auf dem Beta-Kanal des Moduls. Also einfach passend über den Module Store aktualisieren, dann sollte der kommen.

Hallo,

ich habe leider einen anderen Usecase. Ich benötige für die Heizungssteuerung die Differenz zwischen der Temperatur meiner Wetterstation (A) und der in der EMS-ESP Heizungssteuerung (B) um dieses Delta in der Offset-Variablen in der Heizung anpassen zu können (der Temperaturfühler der Heizung liegt zu geschützt für realistische Werte und ich kann ihn nicht an eine andere Stelle legen). Dieser Wert(diese Differenz kann natürlich sowohl positiv wie negativ sein.
z.B ( A= 12 und B = 10 Diff 2; A = -2 B= 3 Diff -5; A=12 B=15 Diff -3 etc. etc.).
Wenn ich das richtig verstehe kann das Modul nicht mit negativen Zahlen umgehen.
Richtig?

VG Stefan

Korrekt, das Modul ist auf Zähler ausgelegt und unterstützt somit keine negativen Werten.

Hallo,

ich habe gerade bemerkt, dass mein virtueller Zähler seit geraumer Zeit gar nicht mehr zählt. Wir hatten vor kurzem einen Stromausfall und mein Shelly startet dann immer wieder mit dem Verbrauchswerten bei 0.
Kann das ein Grund sein warum er jetzt gar nicht mehr zählt?

Da gab es einen Fehler im Modul, der mittlerweile aber behoben ist. Der Fix ist aktuell auf dem Beta-Kanal im Module Store zu finden. Du müsstest die Messstelle aber wahrscheinlich einmal neu erstellen, da sonst erst einmal die negative „Rücklast“ abgearbeitet werden würde.