(gelöst)eine plot-Grafik aus mehreren Logfiles?

Begonnen von MarcoE, 16 Juni 2015, 10:05:30

Vorheriges Thema - Nächstes Thema

MarcoE

Hallo,
ich habe für meine Heizkörper mehrere FHT80b und bekomme für jeden einzelnen auch prima Grafiken daraus erstellt (habe minimale Änderungen gemacht um soll, ist und Actuator anzuzeigen).

Nun hätte ich gerne eine Übersichtsgrafik, die die Solltemperaturen von allen Räumen in einer Grafik anzeigt (jeder Raum eine andere Farbe oder so), obwohl die FHT80b natürlich in verschiedene logfiles (für jeden Raum eines) schreiben.

Wie kann ich das lösen?

Vielen Dank und viele Grüße,
Marco

DerFrickler

http://fhem.de/commandref_DE.html#SVG

◦plotfunction
Eine Liste, deren Werte durch Leerzeichen voneinander getrennt sind. Diese Liste wird verwendet um die <SPEC#> Zeichenfolgen in der .gplot-Datei zu ersetzen. Dabei steht das # für eine laufende Ziffer beginnend mit 1 (<SPEC1>, <SPEC2>, usw.) in der #FileLog oder #DBLog Anweisung. Mit diesem Attrbute ist es möglich eine .gplot-Datei für mehrere Geräte mit einem einzigen logdevice zu verwenden.

Beispiel:
◾#FileLog <SPEC1>
mit:
attr <SVGdevice> plotfunction "4:IR\x3a:0:"
anstelle von:
#FileLog 4:IR\x3a:0:
◾#DbLog <SPEC1>
mit:
attr <SVGdevice> plotfunction "Garage_Raumtemp:temperature::"
anstelle von:
#DbLog Garage_Raumtemp:temperature::

MarcoE

Hi,
hm vielleicht bin ich schwer von Begriff, aber wenn ich mir die Doku zu den Plots durchlese geht es doch los mit der Definition:
define <name> SVG <logDevice>:<gplotfile>:<logfile>

Nun habe ich aber nicht ein logDevice (bzw. ein logfile) sondern mehrere. Was muß dann dort hin? Und ich muß zugeben mit dem Unterkapitel "plotfunction" nicht wirklich was anfangen zu können.

Beim Stöbern bin ich nun noch über http://www.fhemwiki.de/wiki/Creating_Plots gestolpert. Dort wird erwähnt, alle Daten in einem Plot müssen aus einem File kommen (All data used in a plot come from one (!) file. It is currently not possible to mix data from several files. So make sure that the regular expression of the FileLog object catches everything which you need in one plot). Damit scheint wohl das was ich wollte nicht machbar zu sein, oder?

Vielen Dank und viele Grüße,
Marco

justme1968

statt FileLog kannst du den namen des logDevice im plot file verwenden.

oder du schaut dir logProxy an.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

franky08

Oder du stellst auf DbLog um, dann hast du ALLE! Readings in einem File (ausschließen kanst du mit dem Attribut exclude).

VG
Frank
Debian Bookworm auf HUNSN / Debian Bullseye auf 2.ter HUNSN F2F an 2x RaspiB
mit FHEM aktuell
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu, raspmatic_rpi3, HMIP-HCU1

Hollo

Zitat von: MarcoE am 16 Juni 2015, 11:02:59
...Nun habe ich aber nicht ein logDevice (bzw. ein logfile) sondern mehrere. Was muß dann dort hin? ...

Generell hast Du 2 Möglichkeiten:

1. in einer Grafik Werte aus mehreren Logdateien benutzen.

Dazu musst Du eigentlich nur im Plot Editor das passende FileLog auswählen (siehe angehängte Grafik).
Anschliessend 1x write .gplot File machen, sonst bekommst Du nämlich die Werte des FileLogs nicht zur Auswahl angezeigt.
Anschliessend wieder in den Editor und den passenden Parameter auswählen und Darstellungsart konfigurieren.
So könntest Du Dir 1 Grafik mit den Solltemperaturen aller Heizkörper definieren.

2. Werte eines anderen Devices in eine bestehende Logdatei speichern

Mittlerweile speicher ich z.B. die Luftfeuchtigkeits-Werte meines HM-Wandthermostaten direkt mit im Log des HM-Heizkörperthermostaten.
Die IST-Temperatur ist ja schon direkt durch das Peering als IST-Temp des Thermostaten vorhanden.
So spare ich mir eine zusätzliche Logdatei und habe alle Parameter direkt im Plot des Thermostaten zur Verfügung.
FHEM 6.x auf RPi 3B Buster
Protokolle: Homematic, Z-Wave, MQTT, Modbus
Temp/Feuchte: JeeLink-Clone und LGW mit LaCrosse/IT
sonstiges: Linux-Server, Dreambox, "RSS-Tablet"

MarcoE

Vielen Dank für die schnelle und kompetente Hilfe!
Ich habe es jetzt mit dem logproxy gelöst (fand ich die einfachste Variante).

Viele Grüße,
Marco

x-sven

"mit logproxy gelöst"

? und wie genau ?   :o

MarcoE

Hi,
ich habe ein logproxy definiert:
define lp logProxy
Dann im weblink diesen verwendet:
define weblink_Temps SVG lp:fht_temp:CURRENT

und im plot-file dann die entsprechenden Filelogs angesprochen:
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<L1>'
set ytics nomirror
set y2tics
set grid ytics

set y2label "Temperature in C"


#logProxy FileLog:FileLog_Kueche:4:Kueche.measured-temp
#logProxy FileLog:FileLog_Wohnzimmer:4:Wohnzimmer.measured-temp
#logProxy FileLog:FileLog_Schlafzimmer:4:Schlafzimmer.measured-temp
#logProxy FileLog:FileLog_Badezimmer:4:Badezimmer.measured-temp
#logProxy FileLog:FileLog_ArbeitsZi:4:ArbeitsZi.measured-temp
#logProxy FileLog:FileLog_Wetter_Bruchsal:4:Wetter_Bruchsal.temperature

plot "<IN>" using 1:2 axes x1y2 title 'Küche' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Wohnzimmer' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Schlafzimmer' ls l3 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Badezimmer' ls l4 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'ArbeitsZi' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'außen' ls l5 lw 1 with lines


Viele Grüsse,
Marco

x-sven

Hallo Marco,

danke für die Antwort (die habe ich heute erst gesehen). Das Beispiel zeigt gut wie Du es gelöst hast.

Ich würde gern die Logs (text) von mehreren Monaten zusammenfassen. Irgendwie hatte ich den Eindruck das könnte mit dem logproxy auch gehen. Dazu habe ich aber noch nichts konkretes gefunden. Ich müsste dem logproxy irgendwas anderes übergeben, als das aktuelle FileLog-device. Oder ich müsste devices für aktuelle und historische Daten erzeugen?
...Oder einfach auf dblog umstellen, aber den Schritt wollte ich erst machen, wenn ich weiß, das ich mit text-Dateien nicht weiter komme.

Vielleicht fällt noch jemandem was ein?

Viele Grüße
Sven