[gelöst] aktueller Wert $data{currval1} falsch!

Begonnen von GaiusMarius, 28 Juli 2022, 11:58:22

Vorheriges Thema - Nächstes Thema

GaiusMarius

Anscheinend wird unter bestimmten Voraussetzungen der aktuelle Wert in $data{currval#} falsch ermittelt. Ich1) habe dabei die Funktion logProxy_Func2Plot() im Verdacht.

Leider weiß ich nicht, wie ich den Sachverhalt kurz darstellen kann; daher bitte ich um Entschuldigung, wenn ihr euch durch den Text quälen müsst.

In einem mit #logProxy Func:logProxy_Func2Plot($from,$to,'{logProxy_hms2dec(sunrise_abs_dat($sec,"REAL"))}') (aus dem Wiki) gezeichneten SVG wird der Wert von $data{currval1} als 5.68055555555556 angegeben, während er tatsächlich 5.60555555555556 beträgt.

Zur Übersicht trägt hoffentlich der anhängende Screenshot bei. Dort sieht man, dass der Minimalwert mit 5.09... und der Maximalwert mit 5.68... richtig zu sein scheinen. Der Wert für den aktuellen Zeitpunt ist aber identisch mit dem Maximalwert. Das kann nicht sein, denn der "Mess"wert im Diagramm liegt zum aktuellen Zeitpunkt (28. Juli) unter dem Maximalwert (31. Juli)! Da ich den aktuellen Wert mit logProxy_hms2dec(sunrise_abs_dat(time(),"REAL")); explizit ausrechne und anzeigen lasse, wird dies mMn. bestätigt.

Nun die FHEM-Auszüge:

  • SVG-Definition
defmod SVG_XX_XX_XX_Sonnenstand SVG logProxy:Test:
attr SVG_XX_XX_XX_Sonnenstand plotReplace TITLE={\
  my $TimeNow_org         = TimeNow();;\
  my $TimeNow_dec         = logProxy_hms2dec($TimeNow_org);;\
  my $time                = time();;\
  my $sunrise_abs_dat_org = sunrise_abs_dat($time,"REAL");;\
  my $sunrise_abs_dat_dec = logProxy_hms2dec($sunrise_abs_dat_org);;\
\
  "min:$data{min1} cur?:$data{currval1} max:$data{max1} TN:$TimeNow_dec t:$time cur!:$sunrise_abs_dat_dec"}\
\
INPUT1=Func:logProxy_Func2Plot($from,$to,'{logProxy_hms2dec(sunrise_abs_dat($sec,"REAL"))}')\
INPUT2=ConstX:TimeNow(),0,1\
\
PLOT1="axes x1y1 title 'Sonnenaufgang' with steps  ls l3"\
PLOT2="axes x1y2 title 'jetzt'         with lines  ls l4"

setstate SVG_XX_XX_XX_Sonnenstand initialized

  • gplot-Definition ("Test.gplot")
set terminal size <SIZE>

set title <TITLE>

#logProxy %INPUT1%
#logProxy %INPUT2%

plot %PLOT1%, %PLOT2%



Liegt's an mir?  :o
Gibt's Abhilfe?  8)
1) = Niveau "interessierter Laie"  :)

frank

#1
ZitatAnscheinend wird unter bestimmten Voraussetzungen der aktuelle Wert in $data{currval#} falsch ermittelt.
ich vermute, dass "currval" immer der letzte wert eines plots ist.

edit:
wenn man es mit einem "aktuellen wert" ganz genau nehmen würde, gäbe es diesen wert ja (fast) nie.
sobald ein wert im logfile landet, ist er ja bereits "veraltet" und nicht mehr aktuell.  ;)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

GaiusMarius

Zitat von: frank am 28 Juli 2022, 12:22:31ich vermute, dass "currval" immer der letzte wert eines plots ist.
Das macht ja auch (eigentlich immer) Sinn, denn zukünftige Werte gibt es (eigentlich) nie; außer wie hier bei der logProxy-Funktion, die ja nicht auf gemessenen Werten beruht.

Danke für die Erleuchtung!  ;D

Ich lasse die aktuellen Werte nun separat ausrechnen:TITLE={
  my $Sonnenaufgang_min   = $data{min1};
  my $Sonnenaufgang_cur   = logProxy_hms2dec(sunrise_abs_dat(time(),"REAL"));
  my $Sonnenaufgang_max   = $data{max1};