Widget Chart - Werte vom Vortag aus Log

Begonnen von darkon, 15 März 2021, 23:39:49

Vorheriges Thema - Nächstes Thema

darkon

Hi,

ich stelle meinen Gasverbrauch in Form von Bars (Balken) in einem Chart dar. Die Werte hole ich aus meinem FileLog.

Jetzt speichert mir das device "GasCalculator" den Gasverbrauch vom Vortag beim ersten Verbrauch am nächsten Tag.

Somit bekommt der Gasverbrauch vom Vortag den Zeitstempel vom aktuellen Tag. Dieses wird dann natürlich auch so im Chart dargestellt.

Ist es irgendwie möglich im Chart den Zeitstempel eines Wertes um einen Tag nach hinten zu setzen?

(Also Wert vom 14.03. ist der Wert vom 13.03.)

Viele Grüße

eki

Kannst Du mal Deine Definition des Charts hier posten. Sonst ist es schwierig da etwas zu sagen. Grundsätzlich ist mein Ansatz für das Chart Widget nur Daten darzustellen und nicht zu verändern (ist nicht 100% tig durchgehalten aber ich versuche nicht zu viele Tweaks einzubauen).
Was Dein Problem möglicherweise lösen könnte, ist ein recht neues Feature, mit dem man festlegen kann, ob Balken mit dem Messpunkt in der Mitte, am Anfang oder am Ende gezeichnet werden (siehe https://forum.fhem.de/index.php/topic,48450.msg1131031.html#msg1131031). Soweit ich Dich verstanden habe, wäre ein Balken, der mit dem neuen Messpunkt endet ja eine mögliche Lösung.

darkon

#2
So,

also hier mein Eintrag aus dem FileLog und die Programmierung des Charts. Ich habe dir mal einen Wert aus dem Filelog kopiert. Der Gasverbrauch ist hier auf 09.03. datiert und zeigt aber den Verbrauch vom Vortag. Jetzt zeigt er mir somit den Verbrauch vom 08.03. am 09.03., vom 09.03. am 10.03. etc. Also müssten die Werte um einen Tag nach hinten verschoben werden.

2021-03-09_05:24:18 myGasCalculator DU_Counter_Gas_state_EnergyDayLast: 58.535


<div data-type="chart"
   data-logdevice='["FileLog_Gaszaehler","FileLog_Wetter"]'
   data-columnspec='["4:DU_Counter_Gas_state_EnergyDayLast","4:temperature"]'
   data-uaxis='["primary","secondary"]'
   data-minvalue="0"
   data-minvalue_sec="-20"
   data-maxvalue="80"
   data-maxvalue_sec="40"
   data-nofulldays="true"
   data-daysago_start="7d"
   data-daysago_end="now"
   data-style='["ftui l1fill","ftui l2"]'
   data-timeformat="ee\LF\dd.MM"
   data-xticks="1440"
   data-ptype='["bars","cubic"]'>
</div>



OdfFhem

Ich habe einen ähnlichen Fall, wo der gegen Mitternacht ermittelte Wert für den ganzen Tag gelten soll.

Um dies zu erreichen, wird beim Abruf via SVG-Plot die im FileLog gespeicherte Uhrzeit verändert und anschließend $fld[3] als eigentlicher Rückgabewert hinterlegt.

Dazu braucht man allerdings die geschweiften Klammern in data-columnspec. Wäre das (vermutlich escaped) möglich?

eki

Es gibt immer viele Möglichkeiten das zu bewerkstelligen, wie oben gesagt, sollte aus meiner Sicht aber alles beim Abholen der Daten in FHEM passieren, dazu passt der Vorschlag von OldFhem ja grundsätzlich. Man könnte auch über Logproxy und eine eintsprechende Funktion gehen.
@OldFhem: Poste mal Deine columnspec. Eigentlich sollte alles, was im SVG Plot geht, was das Abholen der Daten betrifft auch im Chart Widget gehen.

OdfFhem

Dies ist beim SVG-Device unter Function hinterlegt:

{$dte=substr($fld[0],0,10)."_00:00:00";$fld[3]}