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
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
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 (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
wie erscheinen eco und comfort in den internals wenn sie im wochenprofil verwendet werden ?
gruss
andre
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
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
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
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
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
Hi Andre,
habe gerade ein Update durchgeführt.
Der Fehler ist raus... Danke dafür :)
Grüße
Reiner