LogProxy: Fehlerhafte Darstellung des Max-Wochenprofils

Begonnen von Reinerlein, 17 April 2015, 22:48:41

Vorheriges Thema - Nächstes Thema

Reinerlein

Hallo Andre,

ich habe mir letzte Woche meine Heizkörper mit Max-Komponenten ausgestattet, für die ich mir natürlich die üblichen Informationen als Plot anzeigen lasse. Unter anderem auch das geplante Wochenprofil über die logProxy-Funktion "WeekProfile2Plot".
Nun habe ich das Problem, dass dieses Wochenprofil zeitversetzt dargestellt wird.

Im Screenshot des Anhangs kann man das sehr gut erkennen. Die rote Linie ist die "desiredTemperature", die ja vom Wochenprofil gesteuert wird. Die graue/schwarze Linie/Fläche ist die Ausgabe des Wochenprofils.
Wenn ich nichts manuell verändere müsste diese rote Linie also auf der schwarzen entlangwandern.

Des Weiteren scheint es so zu sein, dass dieser Zeitversatz nicht konstant ist, sondern über den Tag hinweg größer wird. Es ist also nicht einfach ein Winter-/Sommerzeit oder Zeitzonenproblem....
Leider hat mich meine Suche im Code nicht erhellt :(

Was mir im Code aber aufgefallen ist:
Die Funktion setzt konstante Werte für diese Sonderangaben wie "eco" oder "comfort" ein. Könnte man diese Informationen nicht auch aus den Readings des zugrundeliegenden Devices auslesen?

Hier das Listing des Max-Wandthermostats:

Internals:
   CULMAX0_MSGCNT 1570
   CULMAX0_TIME 2015-04-17 22:41:26
   DEF        WallMountedThermostat 0dba79
   IODev      CULMAX0
   LASTInputDev CULMAX0
   MSGCNT     1570
   NAME       heizung_Bad_WT
   NR         1533
   RSSI       -62
   STATE      21.0 °C
   TYPE       MAX
   addr       0dba79
   backend    CULMAX0
   rferror    0
   type       WallMountedThermostat
   Readings:
     2015-04-12 20:23:19   TimeInformationHour 0
     2015-04-17 20:52:03   battery         ok
     2015-04-14 22:06:41   boostDuration   20
     2015-04-12 19:51:47   boostValveposition 80
     2015-04-12 19:51:47   comfortTemperature 21.0
     2015-04-14 15:20:59   decalcification Wed 12:00
     2015-04-17 22:41:26   desiredTemperature 21.0
     2015-04-17 20:52:03   displayActualTemperature 1
     2015-04-12 19:51:47   ecoTemperature  17.0
     2015-04-12 19:51:46   firmware        1.0
     2015-04-12 19:51:52   groupid         0
     2015-04-14 14:48:59   maxValveSetting 100
     2015-04-12 19:51:47   maximumTemperature on
     2015-04-12 19:51:47   measurementOffset 0.0
     2015-04-12 19:51:47   minimumTemperature off
     2015-04-17 20:52:03   mode            auto
     2015-04-17 20:52:02   msgcnt          33
     2015-04-17 22:41:26   state           21.0 °C
     2015-04-17 22:41:26   temperature     23.2
     2015-04-12 19:51:46   testresult      255
     2015-04-14 14:48:59   valveOffset     0
     2015-04-12 19:51:47   weekprofile-0-Sat-temp 17.0 °C  /  21.0 °C  /  17.0 °C
     2015-04-12 19:51:47   weekprofile-0-Sat-time 00:00-06:00  /  06:00-22:00  /  22:00-00:00
     2015-04-12 19:51:47   weekprofile-1-Sun-temp 17.0 °C  /  21.0 °C  /  17.0 °C
     2015-04-12 19:51:47   weekprofile-1-Sun-time 00:00-06:00  /  06:00-22:00  /  22:00-00:00
     2015-04-12 19:51:47   weekprofile-2-Mon-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2015-04-12 19:51:47   weekprofile-2-Mon-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2015-04-12 19:51:47   weekprofile-3-Tue-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2015-04-12 19:51:47   weekprofile-3-Tue-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2015-04-12 19:51:47   weekprofile-4-Wed-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2015-04-12 19:51:47   weekprofile-4-Wed-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2015-04-12 19:51:47   weekprofile-5-Thu-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2015-04-12 19:51:47   weekprofile-5-Thu-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2015-04-12 19:51:47   weekprofile-6-Fri-temp 17.0 °C  /  21.0 °C  /  17.0 °C  /  21.0 °C  /  17.0 °C
     2015-04-12 19:51:47   weekprofile-6-Fri-time 00:00-06:00  /  06:00-09:00  /  09:00-17:00  /  17:00-23:00  /  23:00-00:00
     2015-04-13 14:47:06   windowOpenDuration 15
     2015-04-13 17:33:04   windowOpenTemperature 5.0
   Internals:
     interfaces thermostat;temperature;battery
Attributes:
   IODev      CULMAX0
   alias      Bad WT
   group      Heizung
   icon       max_wandthermostat
   keepAuto   1
   room       Heizung


Hier der Inhalt der GPlot-Datei:

# Created by FHEM/98_SVG.pm, 2015-04-16 23:19:37
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>'
set ytics
set y2tics
set grid y2tics
set ylabel "%"
set y2label "Temperatur in °C"
set yrange [0:100]

#FileLog_heizung_Bad_WT 4:heizung_Bad_WT.desiredTemperature\x3a::
#FileLog_heizung_Bad_WT 4:heizung_Bad_WT.temperature\x3a::
#FileLog_heizung_Bad 4:heizung_Bad.valveposition\x3a::
#logProxy Func:logProxy_WeekProfile2Plot("heizung_Bad_WT",$from,$to)

plot "<IN>" using 1:2 axes x1y2 title 'Wunsch-Temperatur' ls l0 lw 1 with histeps,\
     "<IN>" using 1:2 axes x1y2 title 'Ist-Temperatur' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Ventil (%)' ls l2 lw 1 with histeps,\
     "<IN>" using 1:2 axes x1y2 title 'Plan' ls l6fill lw 1 with histeps


Wenn du noch weitere Informationen brauchst, sag bescheid.
Vielen Dank schon mal für deine Unterstützung...

Grüße
Reiner

justme1968

hallo reiner,

ich habe dein posting eben erste gesehen. ich schaue mir an was hier schief läuft.

die idee die eco und comfort Temperaturen aus dem device zu lesen ist sehr gut. wird eingebaut.

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

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

justme1968

hallo reiner,

die ursache ist der type histeps den du für die kurve des wochenprofils angegeben hast. du musst hier steps verwenden. für die temperatur eigentlich auch. hier fällt es aber nicht so auf weil vermutlich sehr viel mehr werte im log stehen und die verschiebung dadurch sehr klein ist.

auf der seite hier: http://lowrank.net/gnuplot/intro/style-e.html sieht man schön die unterschiede zwischen steps und histeps.

das auslesen der eco und comfort temperaturen kommt demnächst in einem update.

gruss
  andre

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

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

justme1968

wie erscheinen eco und comfort in den internals wenn sie im wochenprofil verwendet werden ?

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

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

Reinerlein

Hi Andre,

den Code kannst du einfach entfernen. Ich hatte das ja nur bei dir im Code gefunden, und bislang gar nicht selber eingesetzt.
Nun habe ich das gerade versucht, und man kann nur "off" und "on" im Setter des Profils einsetzen, welches im Profil-Reading dann aber auch gleich als Temperatur ausgegeben wird. "eco" und "comfort" kann man gar nicht verwenden.

Und Danke für den Hinweis mit den "histeps", das war mir echt noch nie aufgefallen. Aber wie du schon geschrieben hast, je mehr Werte man hat, desto weniger fällt das ja auf...

Man, da habe ich ja ohne Grund Pferde scheu gemacht... Sorry dafür... Ich hoffe, dass du jetzt nicht soviel Aufwand damit hattest...

Grüße
Reiner

justme1968

raus kann es nicht weil man z.b. auch das wochenprofil von Wekday_Timer oder HeatingControl plotten kann. und hier können die werte vorkommen.

war halb so schlimm mit etwas kaffe dabei in der sonne zu sitzen :)

gruß
  andre 
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Reinerlein

Hi Andre,

ich bin es mal wieder, und hoffentlich nicht wieder mit einem falschen Alarm :)

Ich habe das Problem, dass bei der graphischen Darstellung eines WeekdayTimer der Beginn des Tages nicht korrekt dargestellt/ausgefüllt wird.
Im Anhang sieht man (gelbe Linie), dass er beim ersten Schaltpunkt des Tages anfängt, und nicht den Grundwert vom Vortag überträgt, um (in diesem Fall) von der 0-Linie aus anzufangen.

Ist das vielleicht noch eine Nachwehe von der notwendigen Anpassung bzgl. der neuen internen Darstellung beim WeekdayTimer?

Hier der WeekdayTimer:

Internals:
   DEF        hwr_Lueftung Mo-Fr|07:00|2 Mo-Fr|08:30|1 Mo-So|17:00|2 Mo-So|19:30|1 Mo-So|21:30|0 Sa-So|09:00|1 Sa-So|12:00|2 Sa-So|14:00|1
   DEVICE     hwr_Lueftung
   GlobalDaylistSpec
   LANGUAGE   de
   NAME       hwr_Lueftung_WeekdayTimer
   NR         1399
   Profil 0: Sonntag 09:00:00 1, 12:00:00 2, 14:00:00 1, 17:00:00 2, 19:30:00 1, 21:30:00 0
   Profil 1: Montag 07:00:00 2, 08:30:00 1, 17:00:00 2, 19:30:00 1, 21:30:00 0
   Profil 2: Dienstag 07:00:00 2, 08:30:00 1, 17:00:00 2, 19:30:00 1, 21:30:00 0
   Profil 3: Mittwoch 07:00:00 2, 08:30:00 1, 17:00:00 2, 19:30:00 1, 21:30:00 0
   Profil 4: Donnerstag 07:00:00 2, 08:30:00 1, 17:00:00 2, 19:30:00 1, 21:30:00 0
   Profil 5: Freitag 07:00:00 2, 08:30:00 1, 17:00:00 2, 19:30:00 1, 21:30:00 0
   Profil 6: Samstag 09:00:00 1, 12:00:00 2, 14:00:00 1, 17:00:00 2, 19:30:00 1, 21:30:00 0
   STATE      Level 2 um 07:00:00 (Inaktiv: 0)
   TYPE       WeekdayTimer
   Readings:
     2015-04-20 23:46:08   disabled        0
     2015-04-20 21:30:00   nextUpdate      07:00:00
     2015-04-20 21:30:00   nextValue       2
     2015-04-20 21:30:00   state           0
   SWITCHINGTIMES:
     Mo-Fr|07:00|2
     Mo-Fr|08:30|1
     Mo-So|17:00|2
     Mo-So|19:30|1
     Mo-So|21:30|0
     Sa-So|09:00|1
     Sa-So|12:00|2
     Sa-So|14:00|1
   Timer:
     Hwr_lueftung_weekdaytimer_07:00:00:
       HASH       hwr_Lueftung_WeekdayTimer
       MODIFIER   07:00:00
       NAME       hwr_Lueftung_WeekdayTimer_07:00:00
     Hwr_lueftung_weekdaytimer_08:30:00:
       HASH       hwr_Lueftung_WeekdayTimer
       MODIFIER   08:30:00
       NAME       hwr_Lueftung_WeekdayTimer_08:30:00
     Hwr_lueftung_weekdaytimer_09:00:00:
       HASH       hwr_Lueftung_WeekdayTimer
       MODIFIER   09:00:00
       NAME       hwr_Lueftung_WeekdayTimer_09:00:00
     Hwr_lueftung_weekdaytimer_12:00:00:
       HASH       hwr_Lueftung_WeekdayTimer
       MODIFIER   12:00:00
       NAME       hwr_Lueftung_WeekdayTimer_12:00:00
     Hwr_lueftung_weekdaytimer_14:00:00:
       HASH       hwr_Lueftung_WeekdayTimer
       MODIFIER   14:00:00
       NAME       hwr_Lueftung_WeekdayTimer_14:00:00
     Hwr_lueftung_weekdaytimer_17:00:00:
       HASH       hwr_Lueftung_WeekdayTimer
       MODIFIER   17:00:00
       NAME       hwr_Lueftung_WeekdayTimer_17:00:00
     Hwr_lueftung_weekdaytimer_19:30:00:
       HASH       hwr_Lueftung_WeekdayTimer
       MODIFIER   19:30:00
       NAME       hwr_Lueftung_WeekdayTimer_19:30:00
     Hwr_lueftung_weekdaytimer_21:30:00:
       HASH       hwr_Lueftung_WeekdayTimer
       MODIFIER   21:30:00
       NAME       hwr_Lueftung_WeekdayTimer_21:30:00
     Hwr_lueftung_weekdaytimer_settimerofday:
       HASH       hwr_Lueftung_WeekdayTimer
       MODIFIER   SetTimerOfDay
       NAME       hwr_Lueftung_WeekdayTimer_SetTimerOfDay
   Daynumber:
     !$we       8
     $we        7
     di         2
     do         4
     fr         5
     mi         3
     mo         1
     sa         6
     so         0
   Helper:
     daysRegExp (so|mo|di|mi|do|fr|sa|\$we|\!\$we)
     daysRegExpMessage (so|mo|di|mi|do|fr|sa|$we|!$we)
     Switchingtime:
       0:
         09:00:00   1
         12:00:00   2
         14:00:00   1
         17:00:00   2
         19:30:00   1
         21:30:00   0
       1:
         07:00:00   2
         08:30:00   1
         17:00:00   2
         19:30:00   1
         21:30:00   0
       2:
         07:00:00   2
         08:30:00   1
         17:00:00   2
         19:30:00   1
         21:30:00   0
       3:
         07:00:00   2
         08:30:00   1
         17:00:00   2
         19:30:00   1
         21:30:00   0
       4:
         07:00:00   2
         08:30:00   1
         17:00:00   2
         19:30:00   1
         21:30:00   0
       5:
         07:00:00   2
         08:30:00   1
         17:00:00   2
         19:30:00   1
         21:30:00   0
       6:
         09:00:00   1
         12:00:00   2
         14:00:00   1
         17:00:00   2
         19:30:00   1
         21:30:00   0
   Longdays:
     de:
       Sonntag
       Montag
       Dienstag
       Mittwoch
       Donnerstag
       Freitag
       Samstag
       Wochenende
       Werktags
     en:
       Sunday
       Monday
       Tuesday
       Wednesday
       Thursday
       Friday
       Saturday
       weekend
       weekdays
     fr:
       Dimanche
       Lundi
       Mardi
       Mercredi
       Jeudi
       Vendredi
       Samedi
       weekend
       jours de la semaine
   Profil:
     07:00:00:
       NEXTPARA   1
       NEXTSWITCH 08:30:00
       PARA       2
       TIM        1429592400
       TAGE:
         1
         2
         3
         4
         5
     08:30:00:
       NEXTPARA   1
       NEXTSWITCH 09:00:00
       PARA       1
       TIM        1429597800
       TAGE:
         1
         2
         3
         4
         5
     09:00:00:
       NEXTPARA   2
       NEXTSWITCH 12:00:00
       PARA       1
       TIM        1429599600
       TAGE:
         0
         6
     12:00:00:
       NEXTPARA   1
       NEXTSWITCH 14:00:00
       PARA       2
       TIM        1429610400
       TAGE:
         0
         6
     14:00:00:
       NEXTPARA   2
       NEXTSWITCH 17:00:00
       PARA       1
       TIM        1429617600
       TAGE:
         0
         6
     17:00:00:
       NEXTPARA   1
       NEXTSWITCH 19:30:00
       PARA       2
       TIM        1429628400
       TAGE:
         0
         1
         2
         3
         4
         5
         6
     19:30:00:
       NEXTPARA   0
       NEXTSWITCH 21:30:00
       PARA       1
       TIM        1429637400
       TAGE:
         0
         1
         2
         3
         4
         5
         6
     21:30:00:
       NEXTPARA   2
       NEXTSWITCH 07:00:00
       PARA       0
       TIM        1429644600
       TAGE:
         0
         1
         2
         3
         4
         5
         6
   Shortdays:
     de:
       so
       mo
       di
       mi
       do
       fr
       sa
       $we
       !$we
     en:
       su
       mo
       tu
       we
       th
       fr
       sa
       $we
       !$we
     fr:
       di
       lu
       ma
       me
       je
       ve
       sa
       $we
       !$we
Attributes:
   disable    0
   group      Lüftung
   icon       audio_playlist
   room       HWR,_Server
   sortby     2
   stateFormat Level nextValue um nextUpdate (Inaktiv: disabled)


Hier der Inhalt der GPlot-Datei:

# Created by FHEM/98_SVG.pm, 2015-01-24 00:39:38
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 ("off" 0, "1" 1, "2" 2, "3" 3)
set y2tics
set grid y2tics
set ylabel "Lüfterstufe"
set y2label "Temperatur in °C"
set yrange [0:3.1]
set y2range [0:30]

#logProxy FileLog:FileLog_hwr_Lueftung_Abluft_Temperatur:4:hwr_Lueftung_Abluft_Temperatur.temperature.*:0:
#logProxy FileLog:FileLog_hwr_Lueftung_Zuluft_Temperatur:4:hwr_Lueftung_Zuluft_Temperatur.temperature.*:0:
#logProxy FileLog:FileLog_hwr_Lueftung_Fortluft_Temperatur:4:hwr_Lueftung_Fortluft_Temperatur.temperature.*:0:
#logProxy FileLog:FileLog_hwr_Lueftung_Frischluft_Temperatur:4:hwr_Lueftung_Frischluft_Temperatur.temperature.*:0:
#logProxy Func:logProxy_WeekProfile2Plot("hwr_Lueftung_WeekdayTimer",$from,$to)
#logProxy FileLog:FileLog_hwr_Lueftung,extend=86400,predict:3:hwr_Lueftung::

plot "<IN>" using 1:2 axes x1y2 title 'Abluft' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Zuluft' ls l1 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Fortluft' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Frischluft' ls l3 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Planstufe' ls l8 lw 1 with steps,\
     "<IN>" using 1:2 axes x1y1 title 'Stufe' ls l6fill lw 1 with steps


Diesmal liegt es wohl nicht an der Steps-Definition :)
Habe ich da vielleicht etwas anderes fehlerhaft?

Danke schon mal im Vorraus...

Grüße
Reiner

justme1968

das ganze liegt daran das ich zur zeit bei Weekday_Timer und Heatingcontrol noch 1:1 die internals durchreiche und hier der tages anfangs wert nicht gesetzt ist.

ich bin gerade dabei das umzubauen und dann auch wochentags und wochenende einzubauen.

ist also schon in arbeit.

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

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

justme1968

hab den fehler eben behoben.

es war doch etwas anderes. ich hatte an einer stelle auf $old_value und nicht auf defined($old_value) geprüft. das hat dann bei 0 nicht funktioniert.

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

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

Reinerlein

Hi Andre,

habe gerade ein Update durchgeführt.
Der Fehler ist raus... Danke dafür :)

Grüße
Reiner