Optimalste Lösung für grafische Darstellung von MAX! Komponenten

Begonnen von sTaN, 04 Januar 2023, 16:31:47

Vorheriges Thema - Nächstes Thema

sTaN

Hallo liebe Community,

nachdem ich nun schon ein paar Jahre die MAX! WT, HT und FK nutze, wollte ich mich nun endlich an die grafische Darstellung und Auswertung der Heizungssteuerung machen.

Ich habe bereits das Wiki und zahlreiche Threads durchforstet und wollte diesen Thread gern dazu nutzen die aktuellsten Empfehlungen/Anleitungen zu sammeln, wie man am besten die grafische Darstellung der MAX! Komponenten realisiert, mit dem Ziel dies möglichst genau und ressourcenschonend zu gestalten.

Bei mir läuft ein separater CUL_MAX und ich verwende für 5 Räume: 5 Wandthermostate, 6 Heizthermostate und 8 Fensterkontakte.

Ich habe mich heute an einer Lösung versucht und folgende Anleitung dazu erstellt. Darstellung siehe Screenshots:


  • Eine max_temp.gplot Datei anlegen (x-belibige .gplot Datei aufrufen, Inhalt löschen und mittels Save as als max_temp.gplot abspeichern)
  • Inhalt der max_temp.gplot
# Created by FHEM/98_SVG.pm, 2023-01-04 14:22:55
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
set y2tics
set grid y2tics
set ylabel "Ventil in %"
set y2label "Temperatur in °C"

#FileLog_WT_%DataDevice% 4:desiredTemperature:0:
#FileLog_WT_%DataDevice% 4:temperature:0:
#FileLog_HT_%DataDevice% 4:valveposition:0:

plot \
"<IN>" using 1:2 axes x1y2 title 'Soll-Temperatur (°C)' ls l0 lw 2 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Ist-Temperatur(°C)' ls l1fill_stripe lw 2 with lines,\
"<IN>" using 1:2 axes x1y1 title 'Ventil (%)' ls l2 lw 2 with steps

  • Pro Raum muss ein SVG Graph erstellt werden, damit die Werte geplottet werden z.B.: für Büro:
define SVG_WT_Buero weblink fileplot FileLog_WT_Buero:max_temp:CURRENT
attr SVG_WT_Buero label "Büro Soll-Temperatur Min $data{min1}, Max $data{max1}, Last $data{currval1}"
attr SVG_WT_Buero DataDevice="Buero" attr SVG_WT_Buero room Klima


Nun habe ich allerdings zahlreiche zusätzliche Themen und Punkte wie MAX Temperatur Scanner für eine detailliertere Darstellung, aber großer credit Verbrauch, dbLog statt FileLog , etc. gelesen. Auch bin ich dann darauf gestoßen, dass man die credit10ms im CUL_MAX von 900 auf 3600 erhöhen könnte. Ich habe zwar die aktuellste culFW 1.67, aber auch dort sind es maximal 900 credits.

Deshalb frage ich mich, was ist die aktuelle Empfehlung und beste Anleitung für die Darstellung von Temperaturverläufen etc.
Hat hier eventuell noch jemand die Darstellung der Fensterkontakte sinnvoll mit eingebaut?
Gibt es weitere Aspekte, die man berücksichtigen sollte?

Über eure Lösungen bin ich gespannt und freue mich auf zahlreiche Beteiligungen!   :)

Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

thburkhart

da bist du doch schon recht weit ..

mir ist nur nicht klar, woher das reading valve_position bei einem Wandthermostaten kommt ;-)

Meines Wissens haben GPLOTs keine Auswirkung auf Credits.
Sie werten ja "nur" filelog und dblog-Datenzeilen aus.
Wie oft die geschrieben werden hängt von den erzeugten EVENTS ab.
Damit dies nicht zu oft geschieht, setze ich ein Attribut

attr MAX12345 event-min-interval
desiredTemperature:3600


die Fensterkontakte sehen bei mir so aus:

define ASTR_F1 MAX ShutterContact 159d41
setuuid ASTR_F1 5f986210-f33f-21fb-355d-901a3b3db96819de
attr ASTR_F1 IODev MaxSystem
attr ASTR_F1 alexaName Kontakt Abstellraum Zimmertüre
attr ASTR_F1 alias Abstellraum Zimmertüre
attr ASTR_F1 event-on-change-reading state,onoff,battery
attr ASTR_F1 event-on-update-reading state,onoff,battery
attr ASTR_F1 genericDeviceType contact
attr ASTR_F1 group Türkontakt
attr ASTR_F1 model ShutterContact
attr ASTR_F1 room Abstellraum,MAXTK


und die SVG dazu:

define SVG_MAX_ASTR_F1 SVG dblog_THB:THB_MAX_FTK:HISTORY
setuuid SVG_MAX_ASTR_F1 608d14d0-f33f-21fb-0398-002431da759cef22
attr SVG_MAX_ASTR_F1 alias SVG_MAX_ASTR_F1 Kontakt Abstellraum heute
attr SVG_MAX_ASTR_F1 fixedrange day
attr SVG_MAX_ASTR_F1 plotfunction ASTR_F1
attr SVG_MAX_ASTR_F1 room Abstellraum,MAXTK
attr SVG_MAX_ASTR_F1 title "Abstellraum"





ich erzeugte im Editor per copy/paste/replace aus ASTR_F1 alle weiteren ASTR_Fx (sind bei mir 20).
Ob es einen legaleren oder effizenteren Weg gibt weiß ich nicht ;-)

ich habe je Funktionsgruppen HT,WT,FT  separate,    SV:conf Dateien; aber eben nur eine und verwende dabei <SPEC>

# THB 2020-12-08
# THB_MAX_FTK.gplot für Fensterkontakte
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 '<TL> Status offen/zu'
set ytics ("open" 1, "closed" 0)
set y2tics ("open" 1, "closed" 0)
set grid
set ylabel ""
set y2label "Status"
set yrange [0:1.1]
set y2range [0:1.1]



#FileLog 4:onoff:0:

#DbLog <SPEC1>:onoff:0:

plot "<IN>" using 1:2 axes x1y2 title 'Status' ls l0fill lw 0.2 with steps


Durch <SPEC1> reicht diese für alle meine Fensterkontakte.

Inzwischen habe ich ca 65 TUYA Devices wo ich ähnliche Arbeit vor mir habe. Ich weiß nicht, wie man og. attribute global  z.B. für alle Fensterkontakte ASTR_Fx (x = 1 bis n) mit sowas wie

globalattr ASTR_F* xxxxxxxxxxxxxxxxxxxxxxx setzen kann.

Gruß

Thomas










1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

sTaN

Zitat von: thburkhart am 04 Januar 2023, 18:11:40
da bist du doch schon recht weit ..

mir ist nur nicht klar, woher das reading valve_position bei einem Wandthermostaten kommt ;-)

Hi Thomas,

danke für deine config!

Ich ziehe die valveposition nicht aus den WT's, sondern HT's :-)
Im Template habe ich
#FileLog_HT_%DataDevice% 4:valveposition:0:

Ich nutze das Attribut event-on-change-reading = .* bei den MAX Geräten, sodass nur bei Änderungen geloggt wird. Das erschien mir am sinnvollsten.

Ich habe soeben auch noch die MAX Beta .pm Dateien installiert und beobachte das Ganze mal.
Die Fensterkontakte schau ich mir mal dir mal ab.

Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

thburkhart

Zitat von: sTaN am 04 Januar 2023, 18:47:03


Ich nutze das Attribut event-on-change-reading = .* bei den MAX Geräten, sodass nur bei Änderungen geloggt wird. Das erschien mir am sinnvollsten.


das ist wohl das, wonach ich suchte :-)

wie genau sieht die zugehörige DEV bei dir genau aus?
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

Wzut

Zitat von: sTaN am 04 Januar 2023, 16:31:47
MAX Temperatur Scanner für eine detailliertere Darstellung, aber großer credit Verbrauch, dbLog statt FileLog , etc. gelesen.
vergiss den Scanner, du hast doch etliche WTs , da hast du es doch gar nicht nötig sinnlos deine Credits zu verballern nur um keine eckigen Kurven zu bekommen
(vgl. in meinem SVG die rote mit der blauen Linie - rot eckig vom HT , blau vom WT)
Ob du deine Werte in einzelene Files loggst oder lieber am Stück mit einer Datenbank arbeitest ist IMHO auch eine Frage des persönlichen Geschmacks, ich z.B. verwende schon ewig dbLog.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

sTaN

Zitat von: Wzut am 04 Januar 2023, 19:06:01
(vgl. in meinem SVG die rote mit der blauen Linie - rot eckig vom HT , blau vom WT)

Danke Wzut!

Das gefällt mir äußerst gut und habe ich mal so oder so ähnlich übernommen:

# Created by FHEM/98_SVG.pm, 2023-01-04 14:22:55
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
set y2tics
set grid y2tics
set ylabel "Ventil in %"
set y2label "Temperatur in °C"

#FileLog_WT_%DataDevice% 4:desiredTemperature:0:
#FileLog_WT_%DataDevice% 4:temperature:0:
#FileLog_HT_%DataDevice% 4:temperature:0:
#FileLog_HT_%DataDevice% 4:valveposition:0:

plot
"<IN>" using 1:2 axes x1y2 title 'Soll-Temperatur (°C)' ls l1fill lw 2 with steps,\
"<IN>" using 1:2 axes x1y2 title 'Ist-Temperatur WT (°C)' ls l0 lw 2 with lines,\
"<IN>" using 1:2 axes x1y2 title 'Ist-Temperatur HT (°C)' ls l2 lw 2 with steps,\
"<IN>" using 1:2 axes x1y1 title 'Ventil (%)' ls l5fill_gyr lw 2 with steps


Könntest du vielleicht noch deinen Inhalt der .gplot Datei und ein Screenshot eines SVG devices posten, wo man die Plot Editor settings etc. sehen kann?

Bei dir scheint mir das sehr perfektioniert zu sein! Aber was will man vom Modulautor anderes erwarten.  ;D

Ich finde auch die Ventil Darstellung im Titel sehr schön, weil aktuell bei Min, Max und Last mittels label = "Min: $data{min1}, Max: $data{max1}, Last: $data{currval1}" ist bei Min immer 12 Grad zu sehen (wenn man mal das Fenster öffnet ist das die SOLL Min) und bei Max und Last stehen die scheinbar immer die Soll Temperaturen drin. Da wären die Ist Werte sicher schöner.

Warum bei mir die grüne SOLL Temperatur nicht über den ganzen Graphen wie bei dir geht, ist mir noch schleierhaft.  :o
Auch stimmt es im Wohnzimmer eigentlich nicht, da ich Abends die Heizung immer automatisch auf aus also 16.5 Grad stelle und er mir über den gesamten Graphen 21 Grad anzeigt.

Ich habe vorhin auch mal deine Beta Versionen installiert. Einen Unterschied bemerke ich noch nicht. Vielleicht bringt das ja schon Besserungen?!

Gruß
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

sTaN

Zitat von: thburkhart am 04 Januar 2023, 18:53:06
das ist wohl das, wonach ich suchte :-)

wie genau sieht die zugehörige DEV bei dir genau aus?

Anbei meine Attribute am Beispiel Büro (WT, HT, FK):

Attribute WT_Buero:


Attributes:
   IODev      cm
   alexaName  Heizung Büro
   event-on-change-reading .*
   genericDeviceType thermostat
   group      Heizung
   homebridgeMapping TargetHeatingCoolingState=heatingState,values=OFF:0;HEAT:1;COOL:2;AUTO:3,cmds=OFF:desiredTemperature+off;HEAT:desiredTemperature+comfort;AUTO:desiredTemperature+auto;COOL:desiredTemperature+eco
CurrentHeatingCoolingState=heatingState,values=OFF:0;HEAT:1;COOL:2;AUTO:0,valud=OFF
StatusLowBattery=battery,values=ok:BATTERY_LEVEL_NORMAL;;;;/^.*/:BATTERY_LEVEL_LOW
   icon       max_wandthermostat
   model      WallMountedThermostat
   room       Büro,Homekit,MAX
   siriName   Heizung Büro
   userReadings heatingState {(ReadingsVal($NAME,"valveposition",0) > 0 || ReadingsVal($NAME,"desiredTemperature","-") eq "on") ? "HEAT" : ReadingsVal($NAME,"desiredTemperature","-") eq "off" ? "OFF" : ReadingsVal($NAME,"mode","auto") eq "auto" ? "AUTO" : (ReadingsVal($NAME,"temperature",20) > ReadingsVal($NAME,"desiredTemperature",20)) ? "COOL" : "AUTO"}


Attribute HT_Buero:


Attributes:
   IODev      cm
   event-on-change-reading .*
   group      Heizung
   icon       hc_wht_regler
   model      HeatingThermostat
   room       Büro,MAX


Attribute FK_Buero_Desk:


Attributes:
   HomeContactType window
   HomeModeAlarmActive armaway
   HomeOpenMaxTrigger 3
   IODev      cm
   alias      Fenster Büro Schreibtisch
   devStateIcon closed:fts_window_1w@lightgreen opened:fts_window_1w_tilt@red
   event-on-change-reading .*
   genericDeviceType contact
   group      Sensoren
   homebridgeMapping ContactSensorState=state,values=closed:CONTACT_DETECTED;opened:CONTACT_NOT_DETECTED CurrentDoorState=state,values=closed:CLOSED;opened:OPEN
   icon       fts_window_1w
   model      ShutterContact
   room       Büro,Homekit,MAX
   userattr   HomeModeAlarmActive HomeReadings HomeValues HomeContactType:doorinside,dooroutside,doormain,window HomeOpenMaxTrigger HomeOpenDontTriggerModes HomeOpenDontTriggerModesResidents HomeOpenTimeDividers HomeOpenTimes winOpenMaxTrigger


Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

thburkhart

@sTaN oh danke

ich hatte jedoch was verwechselt

event-on-change-reading .* maskiert ja alle readings in einem dedizierten Device

Kann man das auch für alle Device maskieren?
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

Wzut

Zitat von: sTaN am 04 Januar 2023, 19:40:07
Könntest du vielleicht noch deinen Inhalt der .gplot Datei und ein Screenshot eines SVG devices posten, wo man die Plot Editor settings etc. sehen kann?
np
Zitat von: sTaN am 04 Januar 2023, 19:40:07
Bei dir scheint mir das sehr perfektioniert zu sein! Aber was will man vom Modulautor anderes erwarten.  ;D
Das hat nichts mit Autor zu tun, reine Anwendung von FHEM Bordmitteln.
Zitat von: sTaN am 04 Januar 2023, 19:40:07
Warum bei mir die grüne SOLL Temperatur nicht über den ganzen Graphen wie bei dir geht, ist mir noch schleierhaft.  :o
Range as [min:max] ist hier dein Freund wenn du mit ganzen oben unten meinst. Falls es um links nach rechts geht dann solltest du dir die beiden Attribute endPlotNow und endPlotToday mal etwas genauer anschauen.
# Created by FHEM/98_SVG.pm, 2023-01-04 18:55:54
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
set y2tics
set grid y2tics
set ylabel "Ventil %"
set y2label "Temperature"
set yrange [0:100]
set y2range [17:27]

#Log_db 2_HT_Bad:valveposition
#Log_db 2_HT_Bad:desiredTemperature
#Log_db 2_HT_Bad:temperature
#Log_db 2_WT_Bad:temperature

plot "<IN>" using 1:2 axes x1y1 title 'Ventil' ls l6fill lw 2 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Soll' ls l1fill lw 2 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'IstHT' ls l0 lw 2 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'IstWT' ls l2 lw 2 with steps

Internals:
   .FhemMetaInternals 1
   DEF        Log_db:SVG_2_HT_Bad:HISTORY
   FUUID      5e565c25-f33f-bcbb-e9ba-cf0dc5795bcbdbff
   FVERSION   98_SVG.pm:0.223850/2020-07-11
   GPLOTFILE  SVG_2_HT_Bad
   LOGDEVICE  Log_db
   LOGFILE    HISTORY
   NAME       SVG_2_HT_Bad
   NOTIFYDEV  global
   NR         348
   STATE      initialized
   TYPE       SVG
Attributes:
   DbLogExclude .*
   label      "Ventil : $data{max1} / $data{min1} % || Temp : $data{min3} / $data{max3} °C"
   room       2_Bad

Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

thburkhart

hallo
das ist für mich eine gute Idee, mehrere Devices eines Raumes in einen Plot zu bringen :-); danke Wzut

#Log_db 2_HT_Bad:valveposition
#Log_db 2_HT_Bad:desiredTemperature
#Log_db 2_HT_Bad:temperature
#Log_db 2_WT_Bad:temperature


zum DBLog: ich habe immer noch nicht verstanden, was dein
DbLogExclude .*
macht.
"exclude" schließt doch eigentlich aus.

lg

Thomas
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

Wzut

Zitat von: thburkhart am 05 Januar 2023, 11:22:57
"exclude" schließt doch eigentlich aus.
richtig und wird bei mir immer sofort bei jedem neu definierten Device automatisch gesetzt. Ich will verhindern das ersteinmal alles direkt in die DB geht.
Später bearbeite ich es oder füge mit DbLogInclude genau das hinzu was ich brauche. Bei SVGs soll ja direkt nichts gelogt werden, könnte daher auch entfallen, ist aber wie geschrieben durch das anlegen entstanden.
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

thburkhart

Zitat von: Wzut am 05 Januar 2023, 11:46:44
richtig und wird bei mir immer sofort bei jedem neu definierten Device automatisch gesetzt. Ich will verhindern das ersteinmal alles direkt in die DB geht.
Später bearbeite ich es oder füge mit DbLogInclude genau das hinzu was ich brauche. Bei SVGs soll ja direkt nichts gelogt werden, könnte daher auch entfallen, ist aber wie geschrieben durch das anlegen entstanden.

ok ; das ist schlau

a) wie machst du das "automatisch"
b) wo includest den HT /WT, damit er auch gelogt und ausgewertet werden kann.
1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

sTaN

Zitat von: Wzut am 05 Januar 2023, 09:37:53
np Das hat nichts mit Autor zu tun, reine Anwendung von FHEM Bordmitteln.Range as [min:max] ist hier dein Freund wenn du mit ganzen oben unten meinst.

Danke fürs Teilen! Ja alles mit FHEM Boardmitteln, aber das was und wie du es darstellst macht schon sehr viel Sinn und ist gut durchdacht. Zum Beispiel macht es total Sinn die Soll-Temperatur vom HT und nicht wie bei mir vom WT zu nehmen! :-)

Zitat von: Wzut am 05 Januar 2023, 09:37:53
Falls es um links nach rechts geht dann solltest du dir die beiden Attribute endPlotNow und endPlotToday mal etwas genauer anschauen.

Immer wieder überrascht, was es alles noch für Attribute gibt und wo Sie sich verstecken. Fluch und Segen zu gleich, aber auch da kommt man ohne entscheidenen Tipp nicht unbedingt von allein drauf. Klar im Nachhinein macht es bei FHEMWEB Sinn. Wobei dies scheinbar nicht das Problem bei mir löst.

Ich hatte erwartet, dass ich immer von ganz links nach rechts den grünen Balken für die Soll-Temperatur bei allen Graphen sehe, da die Wandthermostate immer Abends um 22:00 Uhr über ein AT auf 16.5 Grad "ausgeschaltet" werden. Am nächsten Tag wird die Heizung manuell geschaltet und der grüne Balken sollte auf 21 Grad hoch gehen.

Siehe auch im Schlafzimmer, wo die Heizung immer aus und auf 16.5 Grad steht. Ab und an fällt es mal auf 12 Grad ab, wenn ein Fenster geöffnet wird.

Im Wohnzimmer habe ich heute zum Beispiel einen kompletten grünen Balken bei 21 Grad, obwohl die Heizung ja bis heute morgen kurz vor 9:00 Uhr aus war. Hier hätte ich erwartet das der grüne Balken auf Höhe der 16.5 Grad ist.

Im Bad, Büro und Küche sieht man zum Beispiel nur den grünen Balken zum Zeitpunkt, wo die Heizung angeschaltet wurde. Auch im zweiten Screenshot von gestern, gibt es beim grünen Balken einen festen Start- und Endzeitpunkt und keinen Ganztagsverlauf. Sollte doch aber eigentlich immer auf der Höhe von 16.5 Grad liegen?!
Oder liegt das an zu wenigen Schaltzeitpunkten bzw. desiredTemperatur-Meldungen vom WT?

Gibt es eigentlich einen Grund, weshalb du min3 und max3 im Titel verwendest? Das dürften bei dir doch die Temperatur des HT sein, oder? Wäre hier nicht min4 und max4 die bessere Wahl, da die Temperatur vom WT genauer ist? Oder verstehe ich min1-minX und max1-maX auch noch falsch? Ich dachte die Zahlen definieren die Reihenfolge der #Log_db bzw. #FileLog Einträge im .gplot File. Und dürfte der Inhalt bei Ventil : $data{max1} / $data{min1} % nicht auch immer 100 / 0 sein?


...
#Log_db 2_HT_Bad:valveposition
#Log_db 2_HT_Bad:desiredTemperature
#Log_db 2_HT_Bad:temperature
#Log_db 2_WT_Bad:temperature
...

...
Attributes:
   DbLogExclude .*
   label      "Ventil : $data{max1} / $data{min1} % || Temp : $data{min3} / $data{max3} °C"
   room       2_Bad
...
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover

thburkhart

#13
hmm --- ich babe Wzuts Anregung wie folgt aufgenommen:

.conf
# Created by FHEM/98_SVG.pm, 2015-02-01 21:56:26
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time




# Created by FHEM/98_SVG.pm, 2023-01-04 18:55:54  WZUT
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 '<TL> Bad Wand- Heizungs-Thermostat Soll/Ist-Temperatur Ventile <L1>'
set ytics
set y2tics
set grid y2tics
set ylabel "Ventil %"
set y2label "Temperature"
set yrange [0:100]
set y2range [0:40]

#Log_db BAD_HT:valveposition
#Log_db BAD_HT:desiredTemperature
#Log_db BAD_HT:temperature
#Log_db BAD_WT:temperature

plot "<IN>" using 1:2 axes x1y1 title 'Ventil' ls l6fill lw 2 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'Soll' ls l1fill lw 2 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'IstHT' ls l0 lw 2 with steps,\
     "<IN>" using 1:2 axes x1y2 title 'IstWT' ls l2 lw 2 with steps


DEF:
[code]define BAD_WT MAX WallMountedThermostat 07dcf6
attr BAD_WT userattr weekprofile
attr BAD_WT IODev MaxSystem
attr BAD_WT alexaName Heizung BAD
attr BAD_WT alias BAD
attr BAD_WT comment 07dcf6 KEQ0244397
attr BAD_WT event-min-interval temperature:3600
attr BAD_WT event-on-change-reading temperature
attr BAD_WT event-on-update-reading temperature
attr BAD_WT genericDeviceType thermostat
attr BAD_WT group Wandthermostat
attr BAD_WT model WallMountedThermostat
attr BAD_WT room MAX,Bad,MAXW
attr BAD_WT weekprofile BAD
#   DEF        WallMountedThermostat 07dcf6
#   FUUID      5e81c270-f33f-9b0e-db66-194bec27f70b1944
#   IODev      MaxSystem
#   LASTInputDev MaxSystem
#   MSGCNT     3
#   MaxSystem_MSGCNT 3
#   MaxSystem_TIME 2023-01-05 17:17:20
#   NAME       BAD_WT
#   NR         925
#   NTFY_ORDER 50-BAD_WT
#   STATE      21.5
#   SVN        23517
#   TYPE       MAX
#   TimeSlot   3
#   addr       07dcf6
#   devtype    3
#   eventCount 1
#   type       WallMountedThermostat
#   webCmd     desiredTemperature
#   Helper:
#     DBLOG:
#       temperature:
#         dblog_THB:
#           TIME       1672935112.36934
#           VALUE      21.5
#   READINGS:
#     2023-01-05 17:11:26   IODev           MaxSystem
#     2023-01-05 17:17:20   RSSI            -88
#     2023-01-05 12:00:06   battery         ok
#     2023-01-05 12:00:06   batteryState    ok
#     2023-01-05 17:17:20   desiredTemperature 21.5
#     2023-01-05 17:17:20   deviation       0.0
#     2023-01-05 12:00:06   displayActualTemperature 1
#     2023-01-05 12:00:06   gateway         1
#     2023-01-05 07:11:12   lastTimeSync    2023-01-05 07:11:12
#     2023-01-05 12:00:06   mode            manual
#     2023-01-05 07:11:12   msgcnt          76
#     2023-01-05 12:00:06   panel           unlocked
#     2023-01-05 17:17:20   peerIDs         000000,08a378
#     2023-01-05 17:17:20   peerList        BAD_HT,Broadcast
#     2023-01-05 12:00:06   rferror         0
#     2023-01-05 17:17:20   state           21.5
#     2023-01-05 17:17:20   temperature     21.5
#   helper:
#     io:
#       CUL_0:
#         raw        Z0C04044207DCF608A378002BD7
#         rssi       -88
#         time       1672935440.16516
#
setstate BAD_WT 21.5
setstate BAD_WT 2023-01-05 17:17:20 .lastact 1672935440.16621
setstate BAD_WT 2023-01-05 17:11:26 IODev MaxSystem
setstate BAD_WT 2023-01-05 17:17:20 RSSI -88
setstate BAD_WT 2023-01-05 12:00:06 battery ok
setstate BAD_WT 2023-01-05 12:00:06 batteryState ok
setstate BAD_WT 2023-01-05 17:17:20 desiredTemperature 21.5
setstate BAD_WT 2023-01-05 17:17:20 deviation 0.0
setstate BAD_WT 2023-01-05 12:00:06 displayActualTemperature 1
setstate BAD_WT 2023-01-05 12:00:06 gateway 1
setstate BAD_WT 2023-01-05 07:11:12 lastTimeSync 2023-01-05 07:11:12
setstate BAD_WT 2023-01-05 12:00:06 mode manual
setstate BAD_WT 2023-01-05 07:11:12 msgcnt 76
setstate BAD_WT 2023-01-05 12:00:06 panel unlocked
setstate BAD_WT 2023-01-05 17:17:20 peerIDs 000000,08a378
setstate BAD_WT 2023-01-05 17:17:20 peerList BAD_HT,Broadcast
setstate BAD_WT 2023-01-05 12:00:06 rferror 0
setstate BAD_WT 2023-01-05 17:17:20 state 21.5
setstate BAD_WT 2023-01-05 17:17:20 temperature 21.5

[/code]

SVG:
[code]define SVG_MAX_BAD SVG dblog_THB:THB_MAX_BAD_WTHT:HISTORY
attr SVG_MAX_BAD alias MAX Bad 10 Tage
attr SVG_MAX_BAD fixedrange 10days
attr SVG_MAX_BAD label "Min $data{min1}, Max $data{max1}, L-Soll $data{currval1}, L-Öffnung $data{currval12}"
attr SVG_MAX_BAD plotfunction BAD_HT
attr SVG_MAX_BAD room Bad,MAXW
attr SVG_MAX_BAD title "Bad kombi"
#   DEF        dblog_THB:THB_MAX_BAD_WTHT:HISTORY
#   FUUID      63b6ee96-f33f-fd5f-edb1-be94ba5874b34bf1
#   GPLOTFILE  THB_MAX_BAD_WTHT
#   LOGDEVICE  dblog_THB
#   LOGFILE    HISTORY
#   NAME       SVG_MAX_BAD
#   NR         936
#   STATE      initialized
#   TYPE       SVG
#
setstate SVG_MAX_BAD initialized

[/code]

im Graphen finden sich jedoch keine Daten
wobei mein "alter Plot" (nur WT) klappt
# Created by FHEM/98_SVG.pm, 2015-02-01 21:56:26
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " x"
set title '<TL> Wandthermostat Soll/Ist-Temperatur <L1>'
set ytics
set y2tics
set grid ytics y2tics
set ylabel "Temperatur Ist"
set y2label "Temperatur Soll"

# set yrange [0:35]
# set y2range [0:35]


#DbLog <SPEC1>:temperature:0:
#DbLog <SPEC1>:desiredTemperature:0:

plot "<IN>" using 1:2 axes x1y1 title 'Temperatur Ist' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Temperatur Soll' ls l0 lw 1 with lines,\



genauer die desiredTemperature kommt da auch nicht

wo habe ich den Knoten ;-)


1 RASPI4B, 1 RASPI3B, 2 CUL, 2 Jeelink, 60 Tuya-Devices (Schalter, Dimmer, Sensoren, Cameras), 30 HUE-Lampen, 5 MAX! WTs, 16 MAX! HTs, 12 MAX! FKs, 1 Bresser 5in1, 1 OilFox, 8 ALEXA Echos und Dots, FHEM, 5 Tasmota-Devices, SonOff -Bridge, PowerFox, Buderus KM200

sTaN

Nimm mal die ersten 4 Zeilen aus deiner .gplot raus:

# Created by FHEM/98_SVG.pm, 2015-02-01 21:56:26
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time


Die hast du doppelt.

Gru0
sTaN
Raspberry Pi 3
2 x CUL CC1101-USB-Lite 868MHz
FS20 Komponenten, Philips HUE, Alexa-Fhem, MAX! Geräte, homebridge, harmony, Unifi, FirtzBox, MQTT, Aurora, Denon, Sonos, TabletUI, CALENDAR, EGPM2LAN, Pushover