FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: kleineslichtHH am 31 Dezember 2018, 08:31:45

Titel: DOIF-PERL Modus Probleme beim set Pfad
Beitrag von: kleineslichtHH am 31 Dezember 2018, 08:31:45
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?
Titel: Antw:DOIF-PERL Modus Probleme beim set Pfad
Beitrag von: kleineslichtHH am 31 Dezember 2018, 09:43:08
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
Titel: Antw:DOIF-PERL Modus Probleme beim set Pfad
Beitrag von: Damian am 31 Dezember 2018, 12:16:43
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.


Titel: Antw:DOIF-PERL Modus Probleme beim set Pfad
Beitrag von: kleineslichtHH am 01 Januar 2019, 08:59:22
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