Autor Thema: SVG Plot aus Komma getrennten Werten erstellen  (Gelesen 4031 mal)

Offline Udomatic

  • Full Member
  • ***
  • Beiträge: 332
SVG Plot aus Komma getrennten Werten erstellen
« am: 10 Oktober 2021, 17:08:59 »
Hallo,

ich möchte ein SVG meiner Solarerträge pro Tag erstellen. Leider scheitere ich daran den Logeintrag im Plot auszuwerten. Die Werte werden Komma getrennt in einer 7-Tages Zeitscheibe fortgeschrieben. Kommt also ein neuer Wert dazu wird dieser vorne angestellt. Hier der Log Auszug.

7.2 ist in diesem Beispiel der neueste Wert

2021-10-01_10:33:04 Vitodens Solarproduktion/Tag: 7.2,39.5,25.7,35.9,29.4,21.3,39.3,38.9

Wie muss ich das im SVG einstellen, dass immer der vordere Wert pro Tag genommen wird aus der entsprechenden Log Zeile, um einen Trend erstellen zu könne?

Danke vorab für den Support!

Gruß
Udo
« Letzte Änderung: 10 Oktober 2021, 17:55:31 von Udomatic »
2x Raspberry 3B+, 1x Raspberry 4, Signalduino 433 (Somfy), CUL_HM (HM-MOD-RPI-PCB), MQTT, Hue, ConBee 2, Sonos, AVM DECT, Netatmo, eufy, Nuki,

Online frank

  • Hero Member
  • *****
  • Beiträge: 11046
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #1 am: 10 Oktober 2021, 17:29:27 »
baust du den string selbst zusammen?
weil ein einzeln geloggter aktueller wert am richtigen tag wäre ja ziehmlich einfach.
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

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25622
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #2 am: 10 Oktober 2021, 17:43:03 »
Wie der Vorposter schreibt, am besten erzeugt man die Daten passend, z.Bsp. mit userReadings.

Wenn das zu umstaendlich sein sollte, dann koennte Folgendes in der Funktionsspalte helfen:
my@x=split(",",$fld[3]);$x[0]Alternativ:
$fld[3]=~m/^([^,]*),/?$1:0Achtung:
- ungestet
- Leerzeichen sind nicht erlaubt.

Man kann auch eine Funktion in 99_myUtils.pm definieren, und sie aus der Funktionsspalte mit $fld[3] aufrufen.
Das kann man sinnvoll kommentieren, oder mit Leerzeichen versehen.

<off-topic>Kriegt jemand den ersten Ausdruck auch ohne eine temporaere Variable hin?</off-topic>

Offline Udomatic

  • Full Member
  • ***
  • Beiträge: 332
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #3 am: 10 Oktober 2021, 17:46:27 »
baust du den string selbst zusammen?
weil ein einzeln geloggter aktueller wert am richtigen tag wäre ja ziehmlich einfach.

Nein, die Werte werden so in das Reading des Device geschrieben.
2x Raspberry 3B+, 1x Raspberry 4, Signalduino 433 (Somfy), CUL_HM (HM-MOD-RPI-PCB), MQTT, Hue, ConBee 2, Sonos, AVM DECT, Netatmo, eufy, Nuki,

Online frank

  • Hero Member
  • *****
  • Beiträge: 11046
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #4 am: 10 Oktober 2021, 18:13:16 »
Zitat
<off-topic>Kriegt jemand den ersten Ausdruck auch ohne eine temporaere Variable hin?</off-topic>

ebenfalls ungetestet hätte ich probiert:
(split(",",$fld[3],1))[0]
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

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25622
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #5 am: 10 Oktober 2021, 20:24:26 »
Zitat
(split(",",$fld[3],1))[0]
Danke, funktioniert. Auf die Idee mit dem  Klammer bin ich nicht gekommen. Ich habe es ohne, mit -> und mit @{} probiert...

Offline Udomatic

  • Full Member
  • ***
  • Beiträge: 332
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #6 am: 10 Oktober 2021, 21:09:02 »
ebenfalls ungetestet hätte ich probiert:
(split(",",$fld[3],1))[0]

Vielen Dank euch beiden. Ich traue mich gar nicht zu Fragen. Den Ausdruck setze ich jetzt im Attribut UserReading?

Wie muss man den Code im Übrigen lesen damit ich versuchen kann zu verstehen, was geschrieben wurde?
2x Raspberry 3B+, 1x Raspberry 4, Signalduino 433 (Somfy), CUL_HM (HM-MOD-RPI-PCB), MQTT, Hue, ConBee 2, Sonos, AVM DECT, Netatmo, eufy, Nuki,

Online frank

  • Hero Member
  • *****
  • Beiträge: 11046
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #7 am: 11 Oktober 2021, 09:23:53 »
die funktion ist für die Function-spalte im svg editor oder entsprechend im gplot file.
=> der wert aus der 4. spalte ($fld[3]) im logfile wird einmal am 1. komma gespalten und der erste dadurch erzeugte teilstring angezeigt.
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

Offline Udomatic

  • Full Member
  • ***
  • Beiträge: 332
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #8 am: 11 Oktober 2021, 19:35:56 »
die funktion ist für die Function-spalte im svg editor oder entsprechend im gplot file.
=> der wert aus der 4. spalte ($fld[3]) im logfile wird einmal am 1. komma gespalten und der erste dadurch erzeugte teilstring angezeigt.

Habe die Funktion in der function Spalte eingetragen. Leider bekomme ich keinen Trend angezeigt (Siehe Bild)

get FileLog_Vitodens CURRENT INT 2021-10-10_00:00:00 2021-10-16_23:59:59 3:Vitodens.Solarproduktion/Tag\x3a:(split(",",$fld[3],1))[0]:

2021-10-10_00:00:00 (split(",",$fld[3],1))[0]
#3:Vitodens.Solarproduktion/Tag\x3a:(split(",",$fld[3],1))[0]:

Woran könnte es liegen?
« Letzte Änderung: 11 Oktober 2021, 19:39:26 von Udomatic »
2x Raspberry 3B+, 1x Raspberry 4, Signalduino 433 (Somfy), CUL_HM (HM-MOD-RPI-PCB), MQTT, Hue, ConBee 2, Sonos, AVM DECT, Netatmo, eufy, Nuki,

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25622
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #9 am: 11 Oktober 2021, 21:02:29 »
Sehe ich richtig, dass es nur eine Zeile Vitodens.Solarproduktion/Tag gibt, und die Aufgabe ist die Werte in dieser Zeile anzuzeigen?
Wenn ja, dann ist das gewaehlte Verfahren falsch.
Wird diese Zeile jeden Tag einmal geschrieben, mit jeweils einen Wert mehr?

Offline Udomatic

  • Full Member
  • ***
  • Beiträge: 332
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #10 am: 11 Oktober 2021, 22:31:21 »
Sehe ich richtig, dass es nur eine Zeile Vitodens.Solarproduktion/Tag gibt, und die Aufgabe ist die Werte in dieser Zeile anzuzeigen?
Wenn ja, dann ist das gewaehlte Verfahren falsch.
Wird diese Zeile jeden Tag einmal geschrieben, mit jeweils einen Wert mehr?

Ja, In der Zeile stehen immer die letzten 8 Werte. Vorne links steht der aktuelle Wert von Heute. Gestern waren es 35.8.
Mein Ziel ist die Anzeige einer langfristigen Entwicklung von zum Beispiel 3, 6, 9 oder 12 Monaten
« Letzte Änderung: 11 Oktober 2021, 22:33:39 von Udomatic »
2x Raspberry 3B+, 1x Raspberry 4, Signalduino 433 (Somfy), CUL_HM (HM-MOD-RPI-PCB), MQTT, Hue, ConBee 2, Sonos, AVM DECT, Netatmo, eufy, Nuki,

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25622
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #11 am: 12 Oktober 2021, 09:41:52 »
Kannst Du bitte einen Auszug aus dem Log liefern, mit mindestens 10 unterschiedlichen Zeilen?

Offline Udomatic

  • Full Member
  • ***
  • Beiträge: 332
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #12 am: 13 Oktober 2021, 08:20:21 »
Kannst Du bitte einen Auszug aus dem Log liefern, mit mindestens 10 unterschiedlichen Zeilen?

Anbei die Logeinträge der letzten 12 Tage

2021-10-01_18:03:37 Vitodens Solarproduktion/Tag: 34.3,39.5,25.7,35.9,29.4,21.3,39.3,38.9
2021-10-02_17:37:10 Vitodens Solarproduktion/Tag: 46.1,34.3,39.5,25.7,35.9,29.4,21.3,39.3
2021-10-03_17:09:57 Vitodens Solarproduktion/Tag: 4.6,46.1,34.3,39.5,25.7,35.9,29.4,21.3
2021-10-04_17:41:25 Vitodens Solarproduktion/Tag: 8,4.6,46.1,34.3,39.5,25.7,35.9,29.4
2021-10-05_17:33:04 Vitodens Solarproduktion/Tag: 20.7,8,4.6,46.1,34.3,39.5,25.7,35.9
2021-10-06_17:35:18 Vitodens Solarproduktion/Tag: 22.9,20.7,8,4.6,46.1,34.3,39.5,25.7
2021-10-07_17:07:18 Vitodens Solarproduktion/Tag: 27.6,22.9,20.7,8,4.6,46.1,34.3,39.5
2021-10-08_17:09:23 Vitodens Solarproduktion/Tag: 32.8,27.6,22.9,20.7,8,4.6,46.1,34.3
2021-10-09_17:41:25 Vitodens Solarproduktion/Tag: 30.1,32.8,27.6,22.9,20.7,8,4.6,46.1
2021-10-10_17:58:42 Vitodens Solarproduktion/Tag: 35.8,30.1,32.8,27.6,22.9,20.7,8,4.6
2021-10-11_17:30:54 Vitodens Solarproduktion/Tag: 4.6,35.8,30.1,32.8,27.6,22.9,20.7,8
2021-10-12_16:32:55 Vitodens Solarproduktion/Tag: 6.1,4.6,35.8,30.1,32.8,27.6,22.9,20.7

Mir ist noch aufgefallen, dass mehrmals am Tag der Tageswert aktualisiert wird. Der letzte Log war in den Beispielen meistens zwischen 17 und 18 Uhr. Aber im ersten Beispiel auch nach 18 Uhr und im letzten Beispiel vor 17 Uhr.

Wahrscheinlich muss man dann auch Abfragen, wann der letzte Log am jeweiligen Tag erstellt wird?

Hoffe das hilft dir weiter?




2x Raspberry 3B+, 1x Raspberry 4, Signalduino 433 (Somfy), CUL_HM (HM-MOD-RPI-PCB), MQTT, Hue, ConBee 2, Sonos, AVM DECT, Netatmo, eufy, Nuki,

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25622
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #13 am: 13 Oktober 2021, 17:20:35 »
Komischerweise funktioniert die nette Variante von Frank nicht, und ich habe keine Erklaerung dafuer.
Meine zwei Varianten funktionieren, siehe Anhang.

Mini-Howto:
Daten nach log/123341.log kopieren, fhem.cfg erstellen:
define w FHEMWEB 8083
define fl FileLog log/123341.log Blubb
FHEM starten, in fl Details auf "Create SVG plot" klicken, hier die Funktion $fld[3]=~m/^([^,]*),/?$1:0 einfuegen, und fixedrange 10days setzen.

Online frank

  • Hero Member
  • *****
  • Beiträge: 11046
Antw:SVG Plot aus Komma getrennten Werten erstellen
« Antwort #14 am: 13 Oktober 2021, 18:02:02 »
Zitat
Komischerweise funktioniert die nette Variante von Frank nicht, und ich habe keine Erklaerung dafuer.
vielleicht so:
$fld[3]=(split(",",$fld[3],1))[0]
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