( Geloest ) Readings plotten

Begonnen von Wolfgang Hochweller, 30 September 2021, 22:38:19

Vorheriges Thema - Nächstes Thema

Wolfgang Hochweller

Ich moechte gerne folgende Readings graphisch darstellen :



   READINGS:
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_01_startsAt 2021-10-01T00:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_01_total 1.1612
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_02_startsAt 2021-10-01T01:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_02_total 0.9307
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_03_startsAt 2021-10-01T02:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_03_total 0.7909
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_04_startsAt 2021-10-01T03:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_04_total 0.642
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_05_startsAt 2021-10-01T04:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_05_total 0.7672
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_06_startsAt 2021-10-01T05:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_06_total 0.902
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_07_startsAt 2021-10-01T06:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_07_total 1.1701
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_08_startsAt 2021-10-01T07:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_08_total 1.2068
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_09_startsAt 2021-10-01T08:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_09_total 1.2403
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_10_startsAt 2021-10-01T09:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_10_total 1.2316
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_11_startsAt 2021-10-01T10:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_11_total 1.1669
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_12_startsAt 2021-10-01T11:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_12_total 1.1027
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_13_startsAt 2021-10-01T12:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_13_total 0.91
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_14_startsAt 2021-10-01T13:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_14_total 0.7575
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_15_startsAt 2021-10-01T14:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_15_total 1.1381
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_16_startsAt 2021-10-01T15:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_16_total 1.1637
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_17_startsAt 2021-10-01T16:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_17_total 1.1701
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_18_startsAt 2021-10-01T17:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_18_total 1.1788
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_19_startsAt 2021-10-01T18:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_19_total 1.1982
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_20_startsAt 2021-10-01T19:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_20_total 1.1959
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_21_startsAt 2021-10-01T20:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_21_total 1.1815
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_22_startsAt 2021-10-01T21:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_22_total 1.1714
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_23_startsAt 2021-10-01T22:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_23_total 1.188
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_24_startsAt 2021-10-01T23:00:00.000+02:00
     2021-09-30 22:29:20   data_viewer_homes_01_currentSubscription_priceInfo_tomorrow_24_total 1.19



Dabei aber fuer die Zeitachse nicht den Timestamp, sondern das entsprechend 'startsAt'  Reading verwenden.

Ich glaube, ich brauche einen Tip.

rudolfkoenig

Ich vermute, dass es notwendig ist, die zu einem Punkt gehoerende Koordinaten auf einer Zeile zu unterbringen, fuer sowas gibts es userReadings oder stateFormat.
Dann koennte man einen weiteren, Read-Only FileLog anlegen, dessen reformatFn Attribut die Zeile "passend" umbaut.
Ich gehe davon aus, dass logProxy das auch kann, obwohl ich mich damit nicht auskenne.

Wolfgang Hochweller

Ja, muss ich mich mal an die Arbeit machen.

Wolfgang Hochweller

Jetzt habe ich solche Readings :


TibberStrompreisStunde1 2021-10-16T00:00:00.000+02:00 1.1976       2021-10-16 12:23:02


Wie kriege ich jetzt 2021-10-16T00:00:00.000+02:00   als Timestamp gesetzt ?

rudolfkoenig

Man braucht eine Funktion zum Umbauen, z.Bsp. so:
sub
myFormatFn($)
{
  my $cols = split(/[ \r\n]/, $_[0]);
  return "$cols[4]_$cols[5] $cols[1] $cols[3]";
}
und man muss sie aktivieren mit
attr myFileLog reformatFn myFormatFn

Das ist als Inspiration gedacht, da ich es mangels Details nicht testen konnte.

Wolfgang Hochweller


Wolfgang Hochweller

Ausprobiert.

Syntaktisch musste ich ich

my $cols = split(/[ \r\n]/, $_[0]);


durch

my @cols = split(/[ \r\n]/, $_[0]);


sonst beschwert sich FHEM beim Start.

Hilft aber nichts, ich habe den Eindruck, die Funktion wird nie aufgerufen.

Muss ich neben der Definition des Attributs noch etwas tun, damit reformatFn etwas tut ?
Ich habe auch testweise mal Log-Befehle in der Routine plaziert - kein Resultat.

rudolfkoenig

Kannst Du bitte eine sinnvolle Menge an aktuellen Daten aus dem FileLog hier anhaengen?

Wolfgang Hochweller

Ja, hier ist das originale Log :


2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde01: 2021-10-19T00:00:00.000+02:00 1.3359
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde02: 2021-10-19T01:00:00.000+02:00 1.3046
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde03: 2021-10-19T02:00:00.000+02:00 1.2545
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde04: 2021-10-19T03:00:00.000+02:00 1.1934
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde05: 2021-10-19T04:00:00.000+02:00 1.2273
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde06: 2021-10-19T05:00:00.000+02:00 1.3342
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde07: 2021-10-19T06:00:00.000+02:00 1.669
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde08: 2021-10-19T07:00:00.000+02:00 2.4185
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde09: 2021-10-19T08:00:00.000+02:00 2.8363
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde10: 2021-10-19T09:00:00.000+02:00 2.7118
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde11: 2021-10-19T10:00:00.000+02:00 2.5864
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde12: 2021-10-19T11:00:00.000+02:00 2.4074
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde13: 2021-10-19T12:00:00.000+02:00 2.4075
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde14: 2021-10-19T13:00:00.000+02:00 2.2805
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde15: 2021-10-19T14:00:00.000+02:00 2.1992
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde16: 2021-10-19T15:00:00.000+02:00 2.0337
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde17: 2021-10-19T16:00:00.000+02:00 2.0394
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde18: 2021-10-19T17:00:00.000+02:00 2.1715
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde19: 2021-10-19T18:00:00.000+02:00 2.1754
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde20: 2021-10-19T19:00:00.000+02:00 1.666
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde21: 2021-10-19T20:00:00.000+02:00 1.4061
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde22: 2021-10-19T21:00:00.000+02:00 1.2081
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde23: 2021-10-19T22:00:00.000+02:00 1.15
2021-10-18_15:35:06 TibberStrompreis TibberStrompreisStunde24: 2021-10-19T23:00:00.000+02:00 0.9999


Die aufgerufene Routine :


sub myPreisFormatFn($)
{
  my @cols = split(/[ \r\n]/, $_[0]);
  return "$cols[4]_$cols[5] $cols[1] $cols[3]";
}



Vielleicht noch zum Info :

Ich habe obiges mal auf einen Regex-Checker angewandt,

Bei Perl wird nur der erste Blank als Match angezeigt.
Bei php etwa waere jeder Blank in obigen Zeilen ein Match.

Was auch immer das bedeutet, es sollte jedenfalls etwas passieren.



rudolfkoenig

Diese Zeilen sind aber deutlich anders, als die aus Beitrag #3. Fuer diese Zeilen habe ich Folgendes gebaut:
fhem.svg zum testen:
define w FHEMWEB 8083
define fl FileLog log/log.123187 FakeLog
attr fl reformatFn myFormatFn
define SVG_fl_1 SVG fl:SVG_fl_1:CURRENT

Eintrag in 99_myUtils.pm:
sub
myFormatFn($)
{
  my @cols = split(/[ \r\n]/, $_[0]);
  return "" if(@cols < 5);
  $cols[3] =~ s/^(..........)T(........).*$/${1}_$2/;
  return "$cols[3] $cols[1] $cols[2] $cols[4]";
}

Die Daten sind von morgen, und das SVG Modul hat normalerweise keine Moeglichkeit, dahin zu navigieren.
Ich habe das erreicht, indem ich &pos=zoom=0;off=1 zum URL hinzugefuegt habe bzw. einmal nach links navigiert habe, und das -1 gegen 1 getauscht habe.

Ergebnis im Anhang.

Wg. Regexp-Checker: ich fuerchte das gehoert im split so.
Habe keine Ahnung, warum hier kein g benoetigt wird, ich finde es aber so "natuerlicher".

Wolfgang Hochweller

Danke, prima.
Das mit den Daten tut mir leid, sollte nicht passieren.

Wolfgang Hochweller

Alles prima.
Jetzt weiss ich aber auch, warum ich dabei so Probleme hatte.

Ich hatte das reformat so verstanden, dass jede Zeile des Logfiles vor dem Wegschreiben neu formatiert wird,
der Inhalt des Logfiles also permanent die neue Form annimmt.

Grosses Missverstaendnis !

rudolfkoenig

reformatFn ist entstanden, damit man fremde Logs (in meinem Fall die NTP-Logs) in FHEM plotten kann.

Wolfgang Hochweller

Letzte Frage :

Gilt das Formatieren fuer jeden Zugriff auf das Log oder nur fuer SVG ?

Wolfgang Hochweller