Hallo ihr Lieben,
ich bin gerade dabei meine Heizungssteuerung aus Vordermann zu bringen.
Folgendes DOIF möchte ich für jeden Raum einsetzen, nur habe ich meine Probleme mit dem PERL-Modus im "set" Teil
getestet habe ich alle drei Varianten
{fhem "set [$SELF:device] desiredTemperature [$SELF:tempTagWocheAnw]"}
{fhem_set("[$SELF:device] desiredTemperature [$SELF:tempTagWocheAnw]")}
{fhem_set"[$SELF:device] desiredTemperature [$SELF:tempTagWocheAnw]"}
{ if ([[$SELF:timeTagWoche]|AT] and [$SELF:btnTagWoche] eq "ein")
{
if ([Haus:presence] eq "present") {fhem "set [$SELF:device] desiredTemperature [$SELF:tempTagWocheAnw]"}
if ([Haus:presence] eq "absent") {fhem "set [$SELF:device] desiredTemperature [$SELF:tempTagWocheAbw]"}
}
}
{ if ([[$SELF:timeTagWochenende]|WE] and [$SELF:btnTagWochenende] eq "ein")
{
if ([Haus:presence] eq "present") {fhem "set [$SELF:device] desiredTemperature Auto [$SELF:tempTagWochenendeAnw]"}
if ([Haus:presence] eq "absent") {fhem "set [$SELF:device] desiredTemperature [$SELF:tempTagWochenendeAbw]"}
}
}
{ if ([[$SELF:timeNachtWoche]|AT] and [$SELF:btnNachtWoche] eq "ein")
{fhem_set("[$SELF:device] desiredTemperature [$SELF:tempNachtgWochenende]")}
}
{ if ([[$SELF:timeNachtWochenende]|WE] and [$SELF:btnNachtWochenende] eq "ein")
{fhem "[$SELF:device] desiredTemperature [$SELF:tempNachtWochenende]"}
}
{ if ([[$SELF:timeAufheizen]|AT] and [$SELF:btnAufheizen] eq "ein")
{fhem "[$SELF:device] desiredTemperature [$SELF:tempAufheizen]"}
}
{ if ([[$SELF:timeLueften]|AT] and [$SELF:btnLueften] eq "ein")
{fhem "[$SELF:device] desiredTemperature [$SELF:tempLueften]"}
}
{ if ([[$SELF:timeVorheizen]|AT] and [$SELF:btnVorheizen] eq "ein")
{fhem "[$SELF:device] desiredTemperature [$SELF:tempVorheizen]"}
}
LIST:
Internals:
DEF { if ([[$SELF:timeTagWoche]|AT] and [$SELF:btnTagWoche] eq "ein")
{
if ([Haus:presence] eq "present") {fhem "set [$SELF:device] desiredTemperature [$SELF:tempTagWocheAnw]"}
if ([Haus:presence] eq "absent") {fhem "set [$SELF:device] desiredTemperature [$SELF:tempTagWocheAbw]"}
}
}
{ if ([[$SELF:timeTagWochenende]|WE] and [$SELF:btnTagWochenende] eq "ein")
{
if ([Haus:presence] eq "present") {fhem "set [$SELF:device] desiredTemperature Auto [$SELF:tempTagWochenendeAnw]"}
if ([Haus:presence] eq "absent") {fhem "set [$SELF:device] desiredTemperature [$SELF:tempTagWochenendeAbw]"}
}
}
{ if ([[$SELF:timeNachtWoche]|AT] and [$SELF:btnNachtWoche] eq "ein")
{fhem_set("[$SELF:device] desiredTemperature [$SELF:tempNachtgWochenende]")}
}
{ if ([[$SELF:timeNachtWochenende]|WE] and [$SELF:btnNachtWochenende] eq "ein")
{fhem "[$SELF:device] desiredTemperature [$SELF:tempNachtWochenende]"}
}
{ if ([[$SELF:timeAufheizen]|AT] and [$SELF:btnAufheizen] eq "ein")
{fhem "[$SELF:device] desiredTemperature [$SELF:tempAufheizen]"}
}
{ if ([[$SELF:timeLueften]|AT] and [$SELF:btnLueften] eq "ein")
{fhem "[$SELF:device] desiredTemperature [$SELF:tempLueften]"}
}
{ if ([[$SELF:timeVorheizen]|AT] and [$SELF:btnVorheizen] eq "ein")
{fhem "[$SELF:device] desiredTemperature [$SELF:tempVorheizen]"}
}
MODEL Perl
NAME di_Logik_Heizung_Badezimmer
NR 61
NTFY_ORDER 50-di_Logik_Heizung_Badezimmer
STATE initialized
TYPE DOIF
READINGS:
2018-12-31 08:20:41 Device Haus
2018-12-31 08:20:26 block_01 executed
2018-12-31 08:20:27 block_02 executed
2018-12-30 08:34:50 btnAufheizen ein
2018-12-30 08:39:47 btnLueften ein
2018-12-30 08:44:05 btnNachtWoche ein
2018-12-30 08:44:06 btnNachtWochenende ein
2018-12-30 08:44:03 btnTagWoche ein
2018-12-30 08:44:04 btnTagWochenende ein
2018-12-30 08:44:30 btnVorheizen aus
2018-12-30 09:50:41 device WT_Badezimmer
2018-12-31 08:20:26 e_di_Logik_Heizung_Badezimmer_tempTagWocheAnw 22.0
2018-12-31 08:20:27 e_di_Logik_Heizung_Badezimmer_tempTagWochenendeAnw 22.0
2018-12-31 07:18:00 mode enabled
2018-12-30 09:08:54 state initialized
2018-12-30 08:34:49 tempAufheizen 22.0
2018-12-30 08:35:19 tempLueften 15.0
2018-12-30 08:43:22 tempNachtWoche 18.0
2018-12-30 08:43:24 tempNachtWochenende 18.0
2018-12-30 08:44:16 tempTagWoche 20.0
2018-12-30 08:56:14 tempTagWocheAbw 18.0
2018-12-31 08:20:26 tempTagWocheAnw 22.0
2018-12-30 08:44:19 tempTagWochenende 20.0
2018-12-30 08:56:33 tempTagWochenendeAbw 18.0
2018-12-31 08:20:27 tempTagWochenendeAnw 22.0
2018-12-30 09:57:23 tempVorheizen 19.0
2018-12-30 10:03:16 timeAufheizen 04:00
2018-12-30 10:03:17 timeLueften 06:45
2018-12-30 10:03:12 timeNachtWoche 21:30
2018-12-30 10:03:14 timeNachtWochenende 22:00
2018-12-31 07:13:13 timeTagWoche 07:20
2018-12-31 07:13:09 timeTagWochenende 07:15
2018-12-30 10:03:19 timeVorheizen 15:00
2018-12-31 07:20:00 timer_01_c01 01.01.2019 07:20:00|AT
2018-12-31 07:15:00 timer_02_c02 01.01.2019 07:15:00|WE
2018-12-31 07:13:01 timer_03_c03 31.12.2018 21:30:00|AT
2018-12-31 07:13:01 timer_04_c04 31.12.2018 22:00:00|WE
2018-12-31 07:13:01 timer_05_c05 01.01.2019 04:00:00|AT
2018-12-31 07:13:01 timer_06_c06 01.01.2019 06:45:00|AT
2018-12-31 07:13:01 timer_07_c07 31.12.2018 15:00:00|AT
Regex:
condition:
0 if (::DOIF_time_once($hash,0,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','btnTagWoche') eq "ein")
{
if (::ReadingValDoIf($hash,'Haus','presence') eq "present") {fhem "set ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','device') desiredTemperature ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','tempTagWocheAnw')"}
if (::ReadingValDoIf($hash,'Haus','presence') eq "absent") {fhem "set ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','device') desiredTemperature ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','tempTagWocheAbw')"}
}
1 if (::DOIF_time_once($hash,1,$wday,"WE") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','btnTagWochenende') eq "ein")
{
if (::ReadingValDoIf($hash,'Haus','presence') eq "present") {fhem "set ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','device') desiredTemperature Auto ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','tempTagWochenendeAnw')"}
if (::ReadingValDoIf($hash,'Haus','presence') eq "absent") {fhem "set ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','device') desiredTemperature ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','tempTagWochenendeAbw')"}
}
2 if (::DOIF_time_once($hash,2,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','btnNachtWoche') eq "ein")
{fhem_set("::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','device') desiredTemperature ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','tempNachtgWochenende')")}
3 if (::DOIF_time_once($hash,3,$wday,"WE") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','btnNachtWochenende') eq "ein")
{fhem "::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','device') desiredTemperature ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','tempNachtWochenende')"}
4 if (::DOIF_time_once($hash,4,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','btnAufheizen') eq "ein")
{fhem "::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','device') desiredTemperature ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','tempAufheizen')"}
5 if (::DOIF_time_once($hash,5,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','btnLueften') eq "ein")
{fhem "::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','device') desiredTemperature ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','tempLueften')"}
6 if (::DOIF_time_once($hash,6,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','btnVorheizen') eq "ein")
{fhem "::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','device') desiredTemperature ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer','tempVorheizen')"}
days:
0 AT
1 WE
2 AT
3 WE
4 AT
5 AT
6 AT
devices:
0 di_Logik_Heizung_Badezimmer Haus
1 di_Logik_Heizung_Badezimmer Haus
2 di_Logik_Heizung_Badezimmer
3 di_Logik_Heizung_Badezimmer
4 di_Logik_Heizung_Badezimmer
5 di_Logik_Heizung_Badezimmer
6 di_Logik_Heizung_Badezimmer
all di_Logik_Heizung_Badezimmer Haus
helper:
event durTimerPresence_cr: 675,durTimerPresence: 11:15:16
globalinit 1
last_timer 7
sleeptimer -1
triggerDev Haus
triggerEvents:
durTimerPresence_cr: 675
durTimerPresence: 11:15:16
triggerEventsState:
durTimerPresence_cr: 675
durTimerPresence: 11:15:16
internals:
interval:
intervalfunc:
intervaltimer:
itimer:
all di_Logik_Heizung_Badezimmer
localtime:
0 1546323600
1 1546323300
2 1546288200
3 1546290000
4 1546311600
5 1546321500
6 1546264800
perlblock:
0
1
2
3
4
5
6
readings:
0 di_Logik_Heizung_Badezimmer:btnTagWoche Haus:presence di_Logik_Heizung_Badezimmer:device di_Logik_Heizung_Badezimmer:tempTagWocheAnw di_Logik_Heizung_Badezimmer:tempTagWocheAbw
1 di_Logik_Heizung_Badezimmer:btnTagWochenende Haus:presence di_Logik_Heizung_Badezimmer:device di_Logik_Heizung_Badezimmer:tempTagWochenendeAnw di_Logik_Heizung_Badezimmer:tempTagWochenendeAbw
2 di_Logik_Heizung_Badezimmer:btnNachtWoche di_Logik_Heizung_Badezimmer:device di_Logik_Heizung_Badezimmer:tempNachtgWochenende
3 di_Logik_Heizung_Badezimmer:btnNachtWochenende di_Logik_Heizung_Badezimmer:device di_Logik_Heizung_Badezimmer:tempNachtWochenende
4 di_Logik_Heizung_Badezimmer:btnAufheizen di_Logik_Heizung_Badezimmer:device di_Logik_Heizung_Badezimmer:tempAufheizen
5 di_Logik_Heizung_Badezimmer:btnLueften di_Logik_Heizung_Badezimmer:device di_Logik_Heizung_Badezimmer:tempLueften
6 di_Logik_Heizung_Badezimmer:btnVorheizen di_Logik_Heizung_Badezimmer:device di_Logik_Heizung_Badezimmer:tempVorheizen
all di_Logik_Heizung_Badezimmer:btnTagWoche Haus:presence di_Logik_Heizung_Badezimmer:device di_Logik_Heizung_Badezimmer:tempTagWocheAnw di_Logik_Heizung_Badezimmer:tempTagWocheAbw di_Logik_Heizung_Badezimmer:btnTagWochenende di_Logik_Heizung_Badezimmer:tempTagWochenendeAnw di_Logik_Heizung_Badezimmer:tempTagWochenendeAbw di_Logik_Heizung_Badezimmer:btnNachtWoche di_Logik_Heizung_Badezimmer:tempNachtgWochenende di_Logik_Heizung_Badezimmer:btnNachtWochenende di_Logik_Heizung_Badezimmer:tempNachtWochenende di_Logik_Heizung_Badezimmer:btnAufheizen di_Logik_Heizung_Badezimmer:tempAufheizen di_Logik_Heizung_Badezimmer:btnLueften di_Logik_Heizung_Badezimmer:tempLueften di_Logik_Heizung_Badezimmer:btnVorheizen di_Logik_Heizung_Badezimmer:tempVorheizen
realtime:
0 07:20:00
1 07:15:00
2 21:30:00
3 22:00:00
4 04:00:00
5 06:45:00
6 15:00:00
time:
0 [di_Logik_Heizung_Badezimmer:timeTagWoche]
1 [di_Logik_Heizung_Badezimmer:timeTagWochenende]
2 [di_Logik_Heizung_Badezimmer:timeNachtWoche]
3 [di_Logik_Heizung_Badezimmer:timeNachtWochenende]
4 [di_Logik_Heizung_Badezimmer:timeAufheizen]
5 [di_Logik_Heizung_Badezimmer:timeLueften]
6 [di_Logik_Heizung_Badezimmer:timeVorheizen]
timeCond:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
timers:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
trigger:
triggertime:
1546264800:
localtime 1546264800
hash:
1546288200:
localtime 1546288200
hash:
1546290000:
localtime 1546290000
hash:
1546311600:
localtime 1546311600
hash:
1546321500:
localtime 1546321500
hash:
1546323300:
localtime 1546323300
hash:
1546323600:
localtime 1546323600
hash:
uiState:
uiTable:
Attributes:
alias Badezimmer
checkReadingEvent 1
icon scene_bath
readingList device timeAufheizen tempAufheizen btnAufheizen timeLueften tempLueften btnLueften timeTagWoche tempTagWocheAnw tempTagWocheAbw btnTagWoche timeTagWochenende tempTagWochenendeAnw tempTagWochenendeAbw btnTagWochenende timeVorheizen tempVorheizen btnVorheizen timeNachtWoche tempNachtWoche btnNachtWoche timeNachtWochenende tempNachtWochenende btnNachtWochenende
room System->LogikHeizung
setList device
timeAufheizen:time tempAufheizen:slider,5,0.5,30,1 btnAufheizen:ein,aus
timeLueften:time tempLueften:slider,5,0.5,30,1 btnLueften:ein,aus
timeTagWoche:time tempTagWocheAnw:slider,5,0.5,30,1 tempTagWocheAbw:slider,5,0.5,30,1 btnTagWoche:ein,aus
timeTagWochenende:time tempTagWochenendeAnw:slider,5,0.5,30,1 tempTagWochenendeAbw:slider,5,0.5,30,1 btnTagWochenende:ein,aus
timeVorheizen:time tempVorheizen:slider,5,0.5,30,1 btnVorheizen:ein,aus
timeNachtWoche:time tempNachtWoche:slider,5,0.5,30,1 btnNachtWoche:ein,aus
timeNachtWochenende:time tempNachtWochenende:slider,5,0.5,30,1 btnNachtWochenende:ein,aus
webCmd timeTagWoche:tempTagWocheAnw:tempTagWocheAbw:btnTagWoche:timeTagWochenende:tempTagWochenendeAnw:tempTagWochenendeAbw:btnTagWochenende:timeNachtWoche:tempNachtWoche:btnNachtWoche:timeNachtWochenende:tempNachtWochenende:btnNachtWochenende:timeAufheizen:tempAufheizen:btnAufheizen:timeLueften:tempLueften:btnLueften:timeVorheizen:tempVorheizen:btnVorheizen
webCmdLabel TagWoche:TemperaturAnw:TemperaturAbw:Anforderung
:TagWochenende:TemperaturAnw:TemperaturAbw:Anforderung
:NachtWoche:Temperatur:Anforderung
:NachtWochenende:Temperatur:Anforderung
:Aufheizen:Temperatur:Anforderung
:Lueften:Temperatur:Anforderung
:Vorheizen:Temperatur:Anforderung
was mache ich falsch?
die DOIF Version funktioniert:
Internals:
CFGFN
DEF ([[$SELF:timeTagWoche]|AT] and [$SELF:btnTagWoche] eq "ein" and ([Haus:presence] eq "present"))
(set [$SELF:device] desiredTemperature [$SELF:tempTagWocheAnw])
DOELSEIF
([[$SELF:timeTagWoche]|AT] and [$SELF:btnTagWoche] eq "ein" and ([Haus:presence] eq "absent"))
(set [$SELF:device] desiredTemperature [$SELF:tempTagWocheAnw])
DOELSEIF
([[$SELF:timeTagWochenende]|WE] and [$SELF:btnTagWochenende] eq "ein" and [Haus:presence] eq "present")
(set [$SELF:device] desiredTemperature Auto [$SELF:tempTagWochenendeAnw])
DOELSEIF
([[$SELF:timeTagWochenende]|WE] and [$SELF:btnTagWochenende] eq "ein" and [Haus:presence] eq "absent")
(set [$SELF:device] desiredTemperature [$SELF:tempTagWochenendeAbw])
DOELSEIF
([[$SELF:timeNachtWoche]|AT] and [$SELF:btnNachtWoche] eq "ein")
(set [$SELF:device] desiredTemperature [$SELF:tempNachtWochenende])
DOELSEIF
([[$SELF:timeAufheizen]|AT] and [$SELF:btnAufheizen] eq "ein")
(set [$SELF:device] desiredTemperature [$SELF:tempAufheizen])
DOELSEIF
([[$SELF:timeLueften]|AT] and [$SELF:btnLueften] eq "ein")
(set [$SELF:device] desiredTemperature [$SELF:tempLueften])
DOELSEIF
([[$SELF:timeVorheizen]|AT] and [$SELF:btnVorheizen] eq "ein")
(set [$SELF:device] desiredTemperature [$SELF:tempVorheizen])
MODEL FHEM
NAME di_Logik_Heizung_Badezimmer_doif
NR 3236
NTFY_ORDER 50-di_Logik_Heizung_Badezimmer_doif
STATE cmd_1
TYPE DOIF
READINGS:
2018-12-31 09:41:42 Device Haus
2018-12-31 09:00:58 btnAufheizen ein
2018-12-31 09:00:59 btnLueften ein
2018-12-31 09:00:57 btnNachtWoche ein
2018-12-31 09:00:57 btnNachtWochenende ein
2018-12-31 09:00:53 btnTagWoche ein
2018-12-31 09:00:54 btnTagWochenende ein
2018-12-31 09:01:00 btnVorheizen aus
2018-12-31 09:40:00 cmd 1
2018-12-31 09:40:00 cmd_event timer_1
2018-12-31 09:40:00 cmd_nr 1
2018-12-31 09:21:42 device WT_Badezimmer
2018-12-31 09:00:58 e_di_Logik_Heizung_Badezimmer_doif_btnAufheizen ein
2018-12-31 09:00:59 e_di_Logik_Heizung_Badezimmer_doif_btnLueften ein
2018-12-31 09:00:57 e_di_Logik_Heizung_Badezimmer_doif_btnNachtWoche ein
2018-12-31 09:00:54 e_di_Logik_Heizung_Badezimmer_doif_btnTagWoche ein
2018-12-31 09:00:54 e_di_Logik_Heizung_Badezimmer_doif_btnTagWochenende ein
2018-12-31 09:01:00 e_di_Logik_Heizung_Badezimmer_doif_btnVorheizen aus
2018-12-31 08:59:08 mode enabled
2018-12-31 09:40:00 state cmd_1
2018-12-31 09:00:39 tempAufheizen 22.0
2018-12-31 09:00:42 tempLueften 15.0
2018-12-31 09:00:35 tempNachtWoche 18.0
2018-12-31 09:00:37 tempNachtWochenende 18.0
2018-12-31 09:00:50 tempTagWocheAbw 18.0
2018-12-31 09:36:52 tempTagWocheAnw 23.0
2018-12-31 09:00:52 tempTagWochenendeAbw 18.0
2018-12-31 09:11:36 tempTagWochenendeAnw 23.5
2018-12-31 09:00:46 tempVorheizen 19.0
2018-12-31 09:00:16 timeAufheizen 04:00
2018-12-31 09:00:22 timeLueften 06:45
2018-12-31 09:00:05 timeNachtWoche 21:30
2018-12-31 09:00:11 timeNachtWochenende 22:00
2018-12-31 09:41:33 timeTagWoche 08:15
2018-12-31 09:41:42 timeTagWochenende 09:00
2018-12-31 09:00:25 timeVorheizen 15:00
2018-12-31 09:41:33 timer_01_c01 01.01.2019 08:15:00|AT
2018-12-31 09:41:33 timer_02_c02 01.01.2019 08:15:00|AT
2018-12-31 09:41:42 timer_03_c03 01.01.2019 09:00:00|WE
2018-12-31 09:41:42 timer_04_c04 01.01.2019 09:00:00|WE
2018-12-31 09:00:05 timer_05_c05 31.12.2018 21:30:00|AT
2018-12-31 09:00:16 timer_06_c06 01.01.2019 04:00:00|AT
2018-12-31 09:00:22 timer_07_c07 01.01.2019 06:45:00|AT
2018-12-31 09:00:25 timer_08_c08 31.12.2018 15:00:00|AT
Regex:
attr:
cmdState:
waitdel:
condition:
0 ::DOIF_time_once($hash,0,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer_doif','btnTagWoche') eq "ein" and (::ReadingValDoIf($hash,'Haus','presence') eq "present")
1 ::DOIF_time_once($hash,1,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer_doif','btnTagWoche') eq "ein" and (::ReadingValDoIf($hash,'Haus','presence') eq "absent")
2 ::DOIF_time_once($hash,2,$wday,"WE") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer_doif','btnTagWochenende') eq "ein" and ::ReadingValDoIf($hash,'Haus','presence') eq "present"
3 ::DOIF_time_once($hash,3,$wday,"WE") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer_doif','btnTagWochenende') eq "ein" and ::ReadingValDoIf($hash,'Haus','presence') eq "absent"
4 ::DOIF_time_once($hash,4,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer_doif','btnNachtWoche') eq "ein"
5 ::DOIF_time_once($hash,5,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer_doif','btnAufheizen') eq "ein"
6 ::DOIF_time_once($hash,6,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer_doif','btnLueften') eq "ein"
7 ::DOIF_time_once($hash,7,$wday,"AT") and ::ReadingValDoIf($hash,'di_Logik_Heizung_Badezimmer_doif','btnVorheizen') eq "ein"
days:
0 AT
1 AT
2 WE
3 WE
4 AT
5 AT
6 AT
7 AT
devices:
0 di_Logik_Heizung_Badezimmer_doif Haus
1 di_Logik_Heizung_Badezimmer_doif Haus
2 di_Logik_Heizung_Badezimmer_doif Haus
3 di_Logik_Heizung_Badezimmer_doif Haus
4 di_Logik_Heizung_Badezimmer_doif
5 di_Logik_Heizung_Badezimmer_doif
6 di_Logik_Heizung_Badezimmer_doif
7 di_Logik_Heizung_Badezimmer_doif
all di_Logik_Heizung_Badezimmer_doif Haus
do:
0:
0 set [di_Logik_Heizung_Badezimmer_doif:device] desiredTemperature [di_Logik_Heizung_Badezimmer_doif:tempTagWocheAnw]
1:
0 set [di_Logik_Heizung_Badezimmer_doif:device] desiredTemperature [di_Logik_Heizung_Badezimmer_doif:tempTagWocheAnw]
2:
0 set [di_Logik_Heizung_Badezimmer_doif:device] desiredTemperature Auto [di_Logik_Heizung_Badezimmer_doif:tempTagWochenendeAnw]
3:
0 set [di_Logik_Heizung_Badezimmer_doif:device] desiredTemperature [di_Logik_Heizung_Badezimmer_doif:tempTagWochenendeAbw]
4:
0 set [di_Logik_Heizung_Badezimmer_doif:device] desiredTemperature [di_Logik_Heizung_Badezimmer_doif:tempNachtWochenende]
5:
0 set [di_Logik_Heizung_Badezimmer_doif:device] desiredTemperature [di_Logik_Heizung_Badezimmer_doif:tempAufheizen]
6:
0 set [di_Logik_Heizung_Badezimmer_doif:device] desiredTemperature [di_Logik_Heizung_Badezimmer_doif:tempLueften]
7:
0 set [di_Logik_Heizung_Badezimmer_doif:device] desiredTemperature [di_Logik_Heizung_Badezimmer_doif:tempVorheizen]
8:
helper:
event durTimerPresence_cr: 756,durTimerPresence: 12:36:17
globalinit 1
last_timer 8
sleeptimer -1
timerdev
timerevent timer_1
triggerDev Haus
DOIF_eventas:
cmd_nr: 1
cmd: 1
cmd_event: timer_1
state: cmd_1
timerevents:
timer_1
timereventsState:
durTimerPresence_cr: 754
durTimerPresence: 12:34:17
triggerEvents:
durTimerPresence_cr: 756
durTimerPresence: 12:36:17
triggerEventsState:
durTimerPresence_cr: 756
durTimerPresence: 12:36:17
internals:
interval:
intervalfunc:
intervaltimer:
itimer:
all di_Logik_Heizung_Badezimmer_doif
localtime:
0 1546326900
1 1546326900
2 1546329600
3 1546329600
4 1546288200
5 1546311600
6 1546321500
7 1546264800
readings:
0 di_Logik_Heizung_Badezimmer_doif:btnTagWoche Haus:presence
1 di_Logik_Heizung_Badezimmer_doif:btnTagWoche Haus:presence
2 di_Logik_Heizung_Badezimmer_doif:btnTagWochenende Haus:presence
3 di_Logik_Heizung_Badezimmer_doif:btnTagWochenende Haus:presence
4 di_Logik_Heizung_Badezimmer_doif:btnNachtWoche
5 di_Logik_Heizung_Badezimmer_doif:btnAufheizen
6 di_Logik_Heizung_Badezimmer_doif:btnLueften
7 di_Logik_Heizung_Badezimmer_doif:btnVorheizen
all di_Logik_Heizung_Badezimmer_doif:btnTagWoche Haus:presence di_Logik_Heizung_Badezimmer_doif:btnTagWochenende di_Logik_Heizung_Badezimmer_doif:btnNachtWoche di_Logik_Heizung_Badezimmer_doif:btnAufheizen di_Logik_Heizung_Badezimmer_doif:btnLueften di_Logik_Heizung_Badezimmer_doif:btnVorheizen
realtime:
0 08:15:00
1 08:15:00
2 09:00:00
3 09:00:00
4 21:30:00
5 04:00:00
6 06:45:00
7 15:00:00
time:
0 [di_Logik_Heizung_Badezimmer_doif:timeTagWoche]
1 [di_Logik_Heizung_Badezimmer_doif:timeTagWoche]
2 [di_Logik_Heizung_Badezimmer_doif:timeTagWochenende]
3 [di_Logik_Heizung_Badezimmer_doif:timeTagWochenende]
4 [di_Logik_Heizung_Badezimmer_doif:timeNachtWoche]
5 [di_Logik_Heizung_Badezimmer_doif:timeAufheizen]
6 [di_Logik_Heizung_Badezimmer_doif:timeLueften]
7 [di_Logik_Heizung_Badezimmer_doif:timeVorheizen]
timeCond:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
timers:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
trigger:
triggertime:
1546264800:
localtime 1546264800
hash:
1546288200:
localtime 1546288200
hash:
1546311600:
localtime 1546311600
hash:
1546321500:
localtime 1546321500
hash:
1546326900:
localtime 1546326900
hash:
1546329600:
localtime 1546329600
hash:
uiState:
uiTable:
Attributes:
alias Badezimmerdoif
checkReadingEvent 1
do always
icon scene_bath
readingList device timeAufheizen tempAufheizen btnAufheizen timeLueften tempLueften btnLueften timeTagWoche tempTagWocheAnw tempTagWocheAbw btnTagWoche timeTagWochenende tempTagWochenendeAnw tempTagWochenendeAbw btnTagWochenende timeVorheizen tempVorheizen btnVorheizen timeNachtWoche tempNachtWoche btnNachtWoche timeNachtWochenende tempNachtWochenende btnNachtWochenende
room System->LogikHeizung
setList device
timeAufheizen:time tempAufheizen:slider,5,0.5,30,1 btnAufheizen:ein,aus
timeLueften:time tempLueften:slider,5,0.5,30,1 btnLueften:ein,aus
timeTagWoche:time tempTagWocheAnw:slider,5,0.5,30,1 tempTagWocheAbw:slider,5,0.5,30,1 btnTagWoche:ein,aus
timeTagWochenende:time tempTagWochenendeAnw:slider,5,0.5,30,1 tempTagWochenendeAbw:slider,5,0.5,30,1 btnTagWochenende:ein,aus
timeVorheizen:time tempVorheizen:slider,5,0.5,30,1 btnVorheizen:ein,aus
timeNachtWoche:time tempNachtWoche:slider,5,0.5,30,1 btnNachtWoche:ein,aus
timeNachtWochenende:time tempNachtWochenende:slider,5,0.5,30,1 btnNachtWochenende:ein,aus
webCmd timeTagWoche:tempTagWocheAnw:tempTagWocheAbw:btnTagWoche:timeTagWochenende:tempTagWochenendeAnw:tempTagWochenendeAbw:btnTagWochenende:timeNachtWoche:tempNachtWoche:btnNachtWoche:timeNachtWochenende:tempNachtWochenende:btnNachtWochenende:timeAufheizen:tempAufheizen:btnAufheizen:timeLueften:tempLueften:btnLueften:timeVorheizen:tempVorheizen:btnVorheizen
webCmdLabel TagWoche:TemperaturAnw:TemperaturAbw:Anforderung
:TagWochenende:TemperaturAnw:TemperaturAbw:Anforderung
:NachtWoche:Temperatur:Anforderung
:NachtWochenende:Temperatur:Anforderung
:Aufheizen:Temperatur:Anforderung
:Lueften:Temperatur:Anforderung
:Vorheizen:Temperatur:Anforderung
Die Perl-Version arbeitet effizienter.
Im FHEM-Modus wird [$SELF:device] jedes Mal gegen den aktuellen Wert getauscht, das funktioniert insb. auch auf der FHEM-Ebene, ist aber nicht so effizient.
Im Perl-Modus ist es eine Funktion, die einfach nur ausgeführt wird, es finden hier keine aufgesetzten Ersetzungsmechanismen statt, daher muss man, wie in Perl üblich, die Zeichenkette mit Punkt zusammenhängen, bevor man sie an fhem_set übergibt:
{fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempNachtgWochenende])}
Der Punkt verbindet die einzelnen Angaben miteinander.
Hat funktioniert, vielen Dank.
Ich habe die Funktion noch ein wenig umgestellt damit die Steuerung reagiert wenn ich nach Hause komme/das Haus verlasse.
defmod di_Logik_Heizung_Badezimmer DOIF { if ([Haus:presence] eq "present" or [[$SELF:timeTagWoche]|AT] or [[$SELF:timeTagWochenende]|WE])\
{\
if ([[$SELF:timeTagWoche]-[$SELF:timeNachtWoche]|AT] and [$SELF:btnTagWoche] eq "ein") {fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempTagWocheAnw])}\
if ([[$SELF:timeTagWochenende]-[$SELF:timeNachtWochenende]|WE] and [$SELF:btnTagWochenende] eq "ein") {fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempTagWochenendeAnw])}\
}\
}\
{ if ([Haus:presence] eq "absent")\
{\
if ([[$SELF:timeTagWoche]-[$SELF:timeNachtWoche]|AT] and [$SELF:btnTagWoche] eq "ein") {fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempTagWocheAbw])}\
if ([[$SELF:timeTagWochenende]-[$SELF:timeNachtWochenende]|WE] and [$SELF:btnTagWochenende] eq "ein") {fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempTagWochenendeAbw])}\
}\
}\
{ if ([[$SELF:timeNachtWoche]|AT] and [$SELF:btnNachtWoche] eq "ein")\
{fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempNachtWoche])}\
}\
{ if ([[$SELF:timeNachtWochenende]|WE] and [$SELF:btnNachtWochenende] eq "ein")\
{fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempNachtWochenende])}\
}\
{ if ([[$SELF:timeAufheizen]|AT] and [$SELF:btnAufheizen] eq "ein")\
{fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempAufheizen])}\
}\
{ if ([[$SELF:timeLueften]|AT] and [$SELF:btnLueften] eq "ein")\
{fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempLueften])}\
}\
{ if ([[$SELF:timeVorheizen]|AT] and [$SELF:btnVorheizen] eq "ein")\
{fhem_set([$SELF:device]." desiredTemperature ".[$SELF:tempVorheizen])}\
}
attr di_Logik_Heizung_Badezimmer alias Badezimmer
attr di_Logik_Heizung_Badezimmer checkReadingEvent 1
attr di_Logik_Heizung_Badezimmer icon scene_bath
attr di_Logik_Heizung_Badezimmer readingList device timeAufheizen tempAufheizen btnAufheizen timeLueften tempLueften btnLueften timeTagWoche tempTagWocheAnw tempTagWocheAbw btnTagWoche timeTagWochenende tempTagWochenendeAnw tempTagWochenendeAbw btnTagWochenende timeVorheizen tempVorheizen btnVorheizen timeNachtWoche tempNachtWoche btnNachtWoche timeNachtWochenende tempNachtWochenende btnNachtWochenende
attr di_Logik_Heizung_Badezimmer room System->LogikHeizung
attr di_Logik_Heizung_Badezimmer setList device\
timeAufheizen:time tempAufheizen:slider,5,0.5,30,1 btnAufheizen:ein,aus\
timeLueften:time tempLueften:slider,5,0.5,30,1 btnLueften:ein,aus\
timeTagWoche:time tempTagWocheAnw:slider,5,0.5,30,1 tempTagWocheAbw:slider,5,0.5,30,1 btnTagWoche:ein,aus\
timeTagWochenende:time tempTagWochenendeAnw:slider,5,0.5,30,1 tempTagWochenendeAbw:slider,5,0.5,30,1 btnTagWochenende:ein,aus\
timeVorheizen:time tempVorheizen:slider,5,0.5,30,1 btnVorheizen:ein,aus\
timeNachtWoche:time tempNachtWoche:slider,5,0.5,30,1 btnNachtWoche:ein,aus\
timeNachtWochenende:time tempNachtWochenende:slider,5,0.5,30,1 btnNachtWochenende:ein,aus
attr di_Logik_Heizung_Badezimmer webCmd timeTagWoche:tempTagWocheAnw:tempTagWocheAbw:btnTagWoche:timeTagWochenende:tempTagWochenendeAnw:tempTagWochenendeAbw:btnTagWochenende:timeNachtWoche:tempNachtWoche:btnNachtWoche:timeNachtWochenende:tempNachtWochenende:btnNachtWochenende:timeAufheizen:tempAufheizen:btnAufheizen:timeLueften:tempLueften:btnLueften:timeVorheizen:tempVorheizen:btnVorheizen
attr di_Logik_Heizung_Badezimmer webCmdLabel TagWoche:TemperaturAnw:TemperaturAbw:Anforderung\
:TagWochenende:TemperaturAnw:TemperaturAbw:Anforderung\
:NachtWoche:Temperatur:Anforderung\
:NachtWochenende:Temperatur:Anforderung\
:Aufheizen:Temperatur:Anforderung\
:Lueften:Temperatur:Anforderung\
:Vorheizen:Temperatur:Anforderung