FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: blane am 06 September 2018, 16:10:13

Titel: Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: blane am 06 September 2018, 16:10:13
Hallo zusammen,

ich wollte mal nachfragen ob folgendes möglich ist:
Das Badlicht soll je nur bei Präsenz für 2 Minuten angeschaltet werden.
Dies mit unterschiedlichem Dimmverhalten je nach Helligkeit und Tag/Abend/Nacht-Status.
Diese Automatik soll ausgesetzt werden, sobald eine Taste gedrückt wird, welche eine Badezimmer-Szene auslöst.
Daher in dieser Zeit soll das Licht durch den Bewegungsmelder nicht geschaltet werden. Nach der entsprechenden Szene soll das Licht wieder ausgehen und auf den Bewegungsmelder reagieren.

Anbei meine Idee:
define Badlicht DOIF ([Praesenzmelder_OG_BAD_KNX_Helligkeit] < 130 and [Badeszene_gedrueckt] eq "off" and [Licht_OG_BAD_KNX_Deckenspots_Schalten] eq "off" and [Praesenzmelder_OG_BAD_KNX_Praesenz] eq "on" and [TagAbendNacht] = 1)
(set Licht_OG_BAD_KNX_Deckenspots_ABSOLUT 100)
DOELSEIF ([Praesenzmelder_OG_BAD_KNX_Helligkeit] < 130 and [Badeszene_gedrueckt] eq "off" and [Licht_OG_BAD_KNX_Deckenspots_Schalten] eq "on" and [Praesenzmelder_OG_BAD_KNX_Praesenz] eq "on" and [TagAbendNacht] = 0)
(set Licht_OG_BAD_KNX_Deckenspots_ABSOLUT 75)
DOELSEIF ([Praesenzmelder_OG_BAD_KNX_Helligkeit] < 130 and [Badeszene_gedrueckt] eq "off" and [Licht_OG_BAD_KNX_Deckenspots_Schalten] eq "off" and [Praesenzmelder_OG_BAD_KNX_Praesenz] eq "on" and [TagAbendNacht] = 0)
(set Licht_OG_BAD_KNX_Deckenspots_ABSOLUT 75)
DOELSEIF ([Praesenzmelder_OG_BAD_KNX_Helligkeit] < 130 and [Badeszene_gedrueckt] eq "off" and [Licht_OG_BAD_KNX_Deckenspots_Schalten] eq "on" and [Praesenzmelder_OG_BAD_KNX_Praesenz] eq "on" and [TagAbendNacht] = 2)
(set Licht_OG_BAD_KNX_Deckenspots_ABSOLUT 15)
DOELSEIF ([Praesenzmelder_OG_BAD_KNX_Helligkeit] < 130 and [Badeszene_gedrueckt] eq "off" and [Licht_OG_BAD_KNX_Deckenspots_Schalten] eq "off" and [Praesenzmelder_OG_BAD_KNX_Praesenz] eq "on" and [TagAbendNacht] = 2)
(set Licht_OG_BAD_KNX_Deckenspots_ABSOLUT 15)
DOELSEIF ([Badeszene_gedrueckt] eq "on")
(set Licht_OG_BAD_KNX_Deckenspots_ABSOLUT 15) (set Badeszene_gedrueckt off) (set Licht_OG_BAD_KNX_Deckenspots_Schalten off)
DOELSE (set Licht_OG_BAD_KNX_Deckenspots_Schalten off)

attr Badlicht do resetwait
attr Badlicht wait 0:0:0:0:0:0:1800:0:180


Ist dies generell so möglich oder mache ich es mir zu kompliziert?

Grüße
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: binford6000 am 06 September 2018, 20:48:48
Hallo Blane,
ich habe sowas am Start. Allerdings für alle Räume und über das HOMEMODE Modul. Allerdings kannst Du dir das auch als
einfaches notify nachbauen.

Hier ist der Code zu finden:
https://wiki.fhem.de/wiki/Modul_HOMEMODE#HomeCMDmotion (https://wiki.fhem.de/wiki/Modul_HOMEMODE#HomeCMDmotion)

Ist eigentlich alles gut dokumentiert. Die HOMEMODE-spezifischen %VARIABLEN% lässt du weg und/oder ersetzt sie durch deinen BWM.
VG Sebastian
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: blane am 11 September 2018, 09:40:23
Zitat von: binford6000 am 06 September 2018, 20:48:48
Hallo Blane,
ich habe sowas am Start. Allerdings für alle Räume und über das HOMEMODE Modul. Allerdings kannst Du dir das auch als
einfaches notify nachbauen.

Hier ist der Code zu finden:
https://wiki.fhem.de/wiki/Modul_HOMEMODE#HomeCMDmotion (https://wiki.fhem.de/wiki/Modul_HOMEMODE#HomeCMDmotion)

Ist eigentlich alles gut dokumentiert. Die HOMEMODE-spezifischen %VARIABLEN% lässt du weg und/oder ersetzt sie durch deinen BWM.
VG Sebastian

Hi Sebastian,

habe mir das Modul mal angeschaut - und es ist ja wirklich sehr mächtig.

Habe meine Steuerung zunächst über folgenden Code zum laufen bekommen:
define EG_Flurlicht DOIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit] <= 130 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "off" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and [TagAbendNacht] == 1)
(set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 100)
DOELSEIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit] <= 130 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "on" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and [TagAbendNacht] == 0)
(set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 75)
DOELSEIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit] <= 130 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "off" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and [TagAbendNacht] == 0)
(set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 75)
DOELSEIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit] <= 130 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "on" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and [TagAbendNacht] == 2)
(set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 15)
DOELSEIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit] <= 130 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "off" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and [TagAbendNacht] == 2)
(set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 15)
DOELSE (set Licht_EG_FLU_KNX_Deckenspots_Schalten off)


Nun wollte ich dein Modul mit einbinden und habe folgendes versucht, allerdings ohne Ergebnisse.
define EG_Flurlicht
DOIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit:d] <=100 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "off" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and ([Home:daytime] eq "Morgen" or [Home:daytime] eq "Vormittag" or [Home:daytime] eq "Mittag" or [Home:daytime] eq "Nachmittag" or [Home:daytime] eq "Abend")) (set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 100)

DOELSEIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit:state:d] <=100 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "on" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and ([Home:daytime] eq "Morgen" or [Home:daytime] eq "Vormittag" or [Home:daytime] eq "Mittag" or [Home:daytime] eq "Nachmittag" or [Home:daytime] eq "Abend")) (set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 75)

DOELSEIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit:state:d] <=100 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "off" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and ([Home:daytime] eq "Morgen" or [Home:daytime] eq "Vormittag" or [Home:daytime] eq "Mittag" or [Home:daytime] eq "Nachmittag" or [Home:daytime] eq "Abend")) (set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 75)

DOELSEIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit:state:d] <=100 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "on" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and ([Home:daytime] eq "Morgen" or [Home:daytime] eq "Vormittag" or [Home:daytime] eq "Mittag" or [Home:daytime] eq "Nachmittag" or [Home:daytime] eq "Abend")) (set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 15)

DOELSEIF ([Praesenzmelder_EG_FLU_KNX_Helligkeit:state:d] <=100 and [Licht_EG_FLU_KNX_Deckenspots_Schalten] eq "off" and [Praesenzmelder_EG_FLU_KNX_Praesenz] eq "on" and ([Home:daytime] eq "Morgen" or [Home:daytime] eq "Vormittag" or [Home:daytime] eq "Mittag" or [Home:daytime] eq "Nachmittag" or [Home:daytime] eq "Abend")) (set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 15)

DOELSE (set Licht_EG_FLU_KNX_Deckenspots_Schalten off) (set Licht_EG_FLU_KNX_Deckenspots_ABSOLUT 0)


Wo liegt hier mein Fehler?

Grüße
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: binford6000 am 11 September 2018, 10:05:40
Moin,
also erstmal dient ja HOMEMODE dazu, grundlegende Dinge im Smarthome zu automatisieren. So auch die Lichtsteuerung.
Damit ist es möglich sämtliche (evtl. auf ein einziges Device) gebaute DOIFs oder notifies zu eliminieren bzw. zu generalisieren...
Lies dir das Wiki mal durch. Ich (und viele andere User) habe(n) mit HOMEMODE dutzende DOIFs abschaffen können  8)

Konkret zu deiner Frage: Was geht denn nicht?
Das DOIF sieht soweit gut aus.

Meine Frage: Was passiert an den restlichen HOMEMODE-daytimes?
00:00|Mitternacht
00:05|Nacht
06:30|Morgen
10:00|Vormittag
13:00|Mittag
14:30|Nachmittag
17:30|Vorabend
19:00|Abend
23:00|Spätabend


Ich denke mal: Nichts! Es sei denn du hast das Attribut "HomeDaytimes" geändert...
Nur als Tipp: HOMEMODE-Readings in DOIFs verwenden ist genau der falsche Weg. BWMs in HOMEMODE aufnehmen und
dann via attr MOTION oder MOITION-ON deinen DOIF-Code verwenden!  ;)

VG Sebastian
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: blane am 11 September 2018, 10:49:26
Ok, habe nun mal die BWMs in HOMEMODE aufgenommen.
Muss ich nun als nächstes den Code (https://wiki.fhem.de/wiki/Modul_HOMEMODE#HomeCMDmotion) auf meine Bedüfnisse anpassen und in 99_myUtils packen?
{
  # Raum aus Sensornamen ermitteln, z.B. bz_Sensor
  my $room = (split /_/,"%SENSOR%")[0];

  # Status des structure aller Lichter dieses Raums
  my $lichter = Value($room."_Lichter");

  # Status des dummy Tageslicht
  my $tl = Value("Tageslicht");

  if ("%STATE%" eq "geöffnet")
  {
    # Lichtwert des Sensors
    my $lum = ReadingsNum("%SENSOR%","luminance",100);

    # Löschen des evtl. schon vorhandenen "at"
    fhem "delete atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%" if (IsDevice("atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%"));

    # Licht nur wenn kein Tageslicht oder Lichtwert des Sensors kleiner als 10 und AutoLight eingeschaltet und modeAlarm nicht armaway
    if (($tl eq "off" || $lum < 10) && $lichter eq "off" && Value($room."_AutoLight") eq "on" && "%AMODE%" ne "armaway")
    {
      my $scene;

      # verschiedene Szenen für verschiedene Modus bzw. Aussenlichtstärken
      if ("%MODE%" eq "gotosleep")
      {
        $scene = "Abend";
      }
      elsif ("%MODE%" eq "asleep")
      {
        $scene = "Nacht";
      }
      elsif (%LIGHT% > 3)
      {
        $scene = "viel";
      }
      elsif (%LIGHT% < 4)
      {
        $scene = "mittel";
      }

      # Schalten der entsprechenden Szene (Modul LightScene)
      fhem "set ".$room."_LS scene $scene" if ($scene);
    }
  }
  else
  {
    # unterschiedliche Ausschaltzeiten für unterschiedliche Räume
    my $t = 3;
    $t = 15 if ($room eq "wz");
    $t = 2 if ($room eq "bz" || ($room =~ /wz|ku/ && "%MODE%" =~ /sleep/));
    $t = 1 if ($room eq "fl");

    # Zahl in Minuten umrechnen in einen Zeitpunkt für das "at"
    my $d = HOMEMODE_hourMaker($t);

    # Anlegen des "at" zum Ausschalten des Lichts wenn die Lichter angeschaltet sind und auch AutoLight eingeschaltet ist
    if ($lichter ne "off" && Value($room."_AutoLight") eq "on")
    {
      my $cmd = "set ".$room."_LS scene aus";
      fhem "defmod atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF% at +$d $cmd";
    }
  }
}
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: binford6000 am 11 September 2018, 10:55:19
Nein, der Code gehört in HomeCmd-motion [emoji6]

Kurz weil mobil


Gesendet von iPad mit Tapatalk
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: blane am 13 September 2018, 14:43:59
Zitat von: binford6000 am 11 September 2018, 10:55:19
Nein, der Code gehört in HomeCmd-motion [emoji6]

Kurz weil mobil


Gesendet von iPad mit Tapatalk

Hi Sebastian,

bin nun dabei es mit deinem Modul umzusetzen.

Die Elsifs kommen allerdings nicht bis zu den Szenen:

{
  # Raum aus Sensornamen ermitteln, z.B. bz_Sensor
  my $room = (split /_/,"%SENSOR%")[2];
  fhem "setreading Homedummy room ".$room;
 
  my $autolight = Value($room."_AutoLight");
  fhem "setreading Homedummy autolight ".$autolight;
 
  # Status des Lichtes dieses Raums
  my $licht = Value("Licht_EG_".$room."_KNX_Deckenspots_Schalten");
  fhem "setreading Homedummy licht ".$licht;
 
  # Absolutes Dimmen
  my $absolut = Value("Licht_EG_".$room."_KNX_Deckenspots_ABSOLUT");
  fhem "setreading Homedummy absolut ".$absolut;
 
  # Status des dummy Tageslicht
  my $tl = Value("Tageslicht");
  fhem "setreading Homedummy tl ".$tl;
 
  # Status ob jemand anwesend ist
  #my $anwesend = Value("presence");
  my $anwesend = ReadingsVal('Home','presence','');
  #"{ReadingsVal('Kuechentuer','state','')}"
  fhem "setreading Homedummy anwesend ".$anwesend;
 
  # nur wenn jemand anwesend ist Lichtsteuerung ausführen
  if ($anwesend eq "absent")
  {
  #TEST
my $abwesendschleife = "abwesendschleife";
fhem "setreading Homedummy abwesendschleife ".$abwesendschleife;
# Lichtwert des Sensors
my $lux = (split / /,Value("Praesenzmelder_EG_".$room."_KNX_Helligkeit"))[0];
 
fhem "set Homedummy ".$lux;
fhem "setreading Homedummy lux ".$lux;

# Löschen des evtl. schon vorhandenen "at"
    fhem "delete atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%" if (IsDevice("atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%"));

# Licht nur wenn kein Tageslicht oder Lichtwert des Sensors kleiner als 100 und Lichtschalter nicht gedrückt und AutoLight eingeschaltet und modeAlarm nicht armaway
if (($tl = 0 || $lux < 100) && $licht eq "off" && Value($room."_AutoLight") eq "on" && "%AMODE%" ne "armaway")
   {
     my $scene;
#TEST
my $scenenschleife = "scenenschleife";
fhem "setreading Homedummy scenenschleife ".$scenenschleife;
       # verschiedene Szenen für verschiedene Modus bzw. Aussenlichtstärken
   #00:00|Mitternacht 00:05|Nacht 05:00|Morgen 10:00|Vormittag 12:00|Mittag 14:30|Nachmittag 18:00|Abend 22:00|Spaetabend
       if ("%MODE%" eq "gotosleep")
      {
        $scene = "gotosleep";
      }
      elsif ("%MODE%" eq "asleep")
{
$scene = "asleep";
}
elsif ("%MODE%" eq "away")
{
$scene = "awy";
}
elsif ("%MODE%" eq "travel")
{
$scene = "travel";
}
elsif (Value("daytime") eq "Mitternacht")
      {
         $scene = "Mitternacht";
}
elsif (Value("daytime") eq "Nacht")
      {
         $scene = "Nacht";
}
elsif (Value("daytime") eq "Morgen")
      {
         $scene = "Morgen";
#TEST
my $morgenschleife = "morgenschleife";
fhem "setreading Homedummy morgenschleife ".$morgenschleife;
}
elsif (Value("daytime") eq "Vormittag")
      {
         $scene = "Vormittag";
}
elsif (Value("daytime") eq "Mittag")
      {
         $scene = "Mittag";
}
elsif (Value("daytime") eq "Nachmittag")
      {
         $scene = "Nachmittag";
}
elsif (Value("daytime") eq "Abend")
      {
         $scene = "Abend";
}
elsif (Value("daytime") eq "Spaetabend")
      {
         $scene = "Spaetabend";
}
     
       # Schalten der entsprechenden Szene (Modul LightScene)
       # TEST: fhem "set Homedummy ".$room."_LS scene $scene" if ($scene);
   fhem "set ".$room."_LS scene $scene" if ($scene);
   fhem "setreading Homedummy scene ".$scene;
    }  
}
else
  {
    # unterschiedliche Ausschaltzeiten für unterschiedliche Räume
    my $t = 3;
    $t = 15 if ($room eq "WOH" || $room eq "BUE" || $room eq "KZ1" || $room eq "KZ2" || $room eq "KZ3" || $room eq "SLA");
    #$t = 2 if ($room eq "bz" || ($room =~ /wz|ku/ && "%MODE%" =~ /sleep/));
    $t = 1 if ($room eq "EFL" || $room eq "OFL" || $room eq "ANK" || $room eq "TEC");
fhem "setreading Homedummy t ".$t;
    # Zahl in Minuten umrechnen in einen Zeitpunkt für das "at"
    my $d = HOMEMODE_hourMaker($t);
fhem "setreading Homedummy d ".$d;

    # Anlegen des "at" zum Ausschalten des Lichts wenn die Lichter angeschaltet sind und auch AutoLight eingeschaltet ist
    if ($licht ne "off" && Value($room."_AutoLight") eq "on")
    {
      my $cmd = "set ".$room."_LS scene aus";
      fhem "defmod atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF% at +$d $cmd";
  fhem "setreading Homedummy cmd ".$cmd;
    }
  }
}


Mein Homedummy zum testen liefert nur folgendes siehe Bild.

Kannst du mir sagen woran es liegen könnte?

Grüße
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: binford6000 am 13 September 2018, 15:20:44
Poste mal bitte Lists aller beteiligten devices.
VG Sebastian
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: blane am 13 September 2018, 17:15:25
HOME List
Internals:
   CFGFN     
   DEF        rgr_Bewohner
   NAME       Home
   NOTIFYDEV  Praesenzmelder_EG_BUE_KNX_Praesenz,Praesenzmelder_EG_EFL_KNX_Praesenz,Praesenzmelder_EG_GWC_KNX_Praesenz,Praesenzmelder_EG_HWR_KNX_Praesenz,Praesenzmelder_EG_KUE_KNX_Praesenz,Praesenzmelder_EG_TEC_KNX_Praesenz,Praesenzmelder_EG_WOH_KNX_Praesenz,Praesenzmelder_OG_ANK_KNX_Praesenz,Praesenzmelder_OG_BAD_KNX_Praesenz,Praesenzmelder_OG_KZ1_KNX_Praesenz,Praesenzmelder_OG_KZ2_KNX_Praesenz,Praesenzmelder_OG_KZ3_KNX_Praesenz,Praesenzmelder_OG_OFL_KNX_Praesenz,Praesenzmelder_OG_SLA_KNX_Praesenz,global,rgr_Bewohner,rr_David,rr_Maria
   NR         65441
   NTFY_ORDER 51-Home
   RESIDENTS  rr_David,rr_Maria
   SENSORSMOTION Praesenzmelder_EG_BUE_KNX_Praesenz,Praesenzmelder_EG_EFL_KNX_Praesenz,Praesenzmelder_EG_GWC_KNX_Praesenz,Praesenzmelder_EG_HWR_KNX_Praesenz,Praesenzmelder_EG_KUE_KNX_Praesenz,Praesenzmelder_EG_TEC_KNX_Praesenz,Praesenzmelder_EG_WOH_KNX_Praesenz,Praesenzmelder_OG_ANK_KNX_Praesenz,Praesenzmelder_OG_BAD_KNX_Praesenz,Praesenzmelder_OG_KZ1_KNX_Praesenz,Praesenzmelder_OG_KZ2_KNX_Praesenz,Praesenzmelder_OG_KZ3_KNX_Praesenz,Praesenzmelder_OG_OFL_KNX_Praesenz,Praesenzmelder_OG_SLA_KNX_Praesenz
   STATE      Nachmittag
   TYPE       HOMEMODE
   VERSION    1.4.5
   Helper:
     DBLOG:
       alarmState:
         DbLog:
           TIME       1536849796.965
           VALUE      disarm
       alarmTriggered:
         DbLog:
           TIME       1536819710.45173
           VALUE      Praesenzmelder_EG_EFL_KNX_Praesenz
       alarmTriggered_ct:
         DbLog:
           TIME       1536849797.06488
           VALUE      0
       alarmTriggered_hr:
         DbLog:
           TIME       1536819710.45173
           VALUE      Der Praesenzmelder_EG_EFL_KNX_Praesenz
       daytime:
         DbLog:
           TIME       1536841801.15906
           VALUE      Nachmittag
       lastAbsentByResident:
         DbLog:
           TIME       1536816833.59301
           VALUE      rr_David
       lastActivityByResident:
         DbLog:
           TIME       1536849792.20766
           VALUE      rr_Maria
       lastCMDerror:
         DbLog:
           TIME       1536669589.58719
           VALUE      error: >Please define HomedummyPraesenzmelder first< in CMD: {  my $room = (split /_/,"Praesenzmelder_EG_BUE_KNX_Praesenz")[0];;  fhem "set Homedummy".$room."";; }
       lastMotion:
         DbLog:
           TIME       1536851678.81376
           VALUE      Praesenzmelder_OG_SLA_KNX_Praesenz
       lastMotionClosed:
         DbLog:
           TIME       1536851566.61207
           VALUE      Praesenzmelder_EG_EFL_KNX_Praesenz
       lastPresentByResident:
         DbLog:
           TIME       1536849797.36915
           VALUE      rr_Maria
       location:
         DbLog:
           TIME       1536849914.82065
           VALUE      home
       mode:
         DbLog:
           TIME       1536849797.16542
           VALUE      Nachmittag
       modeAlarm:
         DbLog:
           TIME       1536849796.965
           VALUE      disarm
       motionsInside:
         DbLog:
           TIME       1536851679.21101
           VALUE      Praesenzmelder_EG_EFL_KNX_Praesenz,Praesenzmelder_EG_KUE_KNX_Praesenz,Praesenzmelder_EG_WOH_KNX_Praesenz,Praesenzmelder_OG_OFL_KNX_Praesenz,Praesenzmelder_OG_SLA_KNX_Praesenz
       motionsInside_ct:
         DbLog:
           TIME       1536851679.21101
           VALUE      5
       motionsInside_hr:
         DbLog:
           TIME       1536851679.21101
           VALUE      Der Praesenzmelder_EG_EFL_KNX_Praesenz, der Praesenzmelder_EG_KUE_KNX_Praesenz, der Praesenzmelder_EG_WOH_KNX_Praesenz, der Praesenzmelder_OG_OFL_KNX_Praesenz and der Praesenzmelder_OG_SLA_KNX_Praesenz
       motionsOutside_ct:
         DbLog:
           TIME       1536654228.67381
           VALUE      0
       motionsSensors:
         DbLog:
           TIME       1536851679.21101
           VALUE      Praesenzmelder_EG_EFL_KNX_Praesenz,Praesenzmelder_EG_KUE_KNX_Praesenz,Praesenzmelder_EG_WOH_KNX_Praesenz,Praesenzmelder_OG_OFL_KNX_Praesenz,Praesenzmelder_OG_SLA_KNX_Praesenz
       motionsSensors_ct:
         DbLog:
           TIME       1536851679.21101
           VALUE      5
       motionsSensors_hr:
         DbLog:
           TIME       1536851679.21101
           VALUE      Der Praesenzmelder_EG_EFL_KNX_Praesenz, der Praesenzmelder_EG_KUE_KNX_Praesenz, der Praesenzmelder_EG_WOH_KNX_Praesenz, der Praesenzmelder_OG_OFL_KNX_Praesenz and der Praesenzmelder_OG_SLA_KNX_Praesenz
       presence:
         DbLog:
           TIME       1536849796.69967
           VALUE      present
       prevActivityByResident:
         DbLog:
           TIME       1536849797.32111
           VALUE      rr_Maria
       prevLocation:
         DbLog:
           TIME       1536849914.82065
           VALUE      arrival
       prevMode:
         DbLog:
           TIME       1536849797.16542
           VALUE      absent
       prevModeAlarm:
         DbLog:
           TIME       1536849796.965
           VALUE      armaway
       prevMotion:
         DbLog:
           TIME       1536851678.81376
           VALUE      Praesenzmelder_OG_OFL_KNX_Praesenz
       prevMotionClosed:
         DbLog:
           TIME       1536851566.61207
           VALUE      Praesenzmelder_OG_OFL_KNX_Praesenz
       season:
         DbLog:
           TIME       1536308263.37555
           VALUE      autumn
       sensorsTampered_ct:
         DbLog:
           TIME       1536654228.67381
           VALUE      0
       state:
         DbLog:
           TIME       1536849797.16542
           VALUE      Nachmittag
   READINGS:
     2018-09-13 16:43:16   alarmState      disarm
     2018-09-13 16:43:17   alarmTriggered 
     2018-09-13 16:43:17   alarmTriggered_ct 0
     2018-09-13 16:43:17   alarmTriggered_hr
     2018-09-07 10:17:41   anyoneElseAtHome off
     2018-09-13 14:30:01   daytime         Nachmittag
     2018-09-07 10:17:41   dnd             off
     2018-09-13 07:33:53   lastAbsentByResident rr_David
     2018-09-13 16:43:12   lastActivityByResident rr_Maria
     2018-09-13 07:23:08   lastCMDerror    error: >Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.
< in CMD: {  my $room = (split /_/,"Praesenzmelder_EG_EFL_KNX_Praesenz")[2];;  fhem "setreading Homedummy room ".$room;;  my $autolight = Value($room."_AutoLight");;  fhem "setreading Homedummy autolight ".$autolight;;  my $licht = Value("Licht_EG_".$room."_KNX_Deckenspots_Schalten");;  fhem "setreading Homedummy licht ".$licht;;  my $absolut = Value("Licht_EG_".$room."_KNX_Deckenspots_ABSOLUT");;  fhem "setreading Homedummy absolut ".$absolut;;  my $tl = Value("Tageslicht");;  fhem "setreading Homedummy tl ".$tl;;  my $anwesend = ReadingsVal('Home','presence','');;  fhem "setreading Homedummy anwesend ".$anwesend;;  if ($anwesend eq "present")  { my $lux = (split / /,Value("Praesenzmelder_EG_".$room."_KNX_Helligkeit"))[0];;  fhem "set Homedummy ".$lux;;  fhem "setreading Homedummy lux ".$lux;;  fhem "delete atTmp_Bewegungsmelder_Licht_aus_".$room."_Home" if (IsDevice("atTmp_Bewegungsmelder_Licht_aus_".$room."_Home"));;  if (($tl == 0 || $lux < 100) && $licht eq "off" && Value($room."_AutoLight") eq "on" && "disarm" ne "armaway")  {  my $scene;;  if ("Morgen" eq "gotosleep")  {  $scene = "gotosleep";;  }  elsif ("Morgen" eq "asleep")  {  $scene = "asleep";;  }  elsif ("Morgen" eq "away")  {  $scene = "awy";;  }  elsif ("Morgen" eq "travel")  {  $scene = "travel";;  }  elsif (Value("daytime") eq "Mitternacht")  {  $scene = "Mitternacht";;  }  elsif (Value("daytime") eq "Nacht")  {  $scene = "Nacht";;  }  elsif (Value("daytime") eq "Morgen")  {  $scene = "Morgen";;  }  elsif (Value("daytime") eq "Vormittag")  {  $scene = "Vormittag";;  }  elsif (Value("daytime") eq "Mittag")  {  $scene = "Mittag";;  }  elsif (Value("daytime") eq "Nachmittag")  {  $scene = "Nachmittag";;  }  elsif (Value("daytime") eq "Abend")  {  $scene = "Abend";;  }  elsif (Value("daytime") eq "Spaetabend")  {  $scene = "Spaetabend";;  }  fhem "set ".$room."_LS scene $scene" if ($scene);;  fhem "setreading Homedummy scene ".$scene;;  } } else  {  my $t = 3;;  $t = 15 if ($room eq "WOH" || $room eq "BUE" || $room eq "KZ1" || $room eq "KZ2" || $room eq "KZ3" || $room eq "SLA");;  $t = 1 if ($room eq "EFL" || $room eq "OFL" || $room eq "ANK" || $room eq "TEC");; fhem "setreading Homedummy t ".$t;;  my $d = HOMEMODE_hourMaker($t);; fhem "setreading Homedummy d ".$d;;  if ($licht ne "off" && Value($room."_AutoLight") eq "on")  {  my $cmd = "set ".$room."_LS scene aus";;  fhem "defmod atTmp_Bewegungsmelder_Licht_aus_".$room."_Home at +$d $cmd";;  fhem "setreading Homedummy cmd ".$cmd;;  }  } }
     2018-09-13 17:14:38   lastMotion      Praesenzmelder_OG_SLA_KNX_Praesenz
     2018-09-13 17:12:46   lastMotionClosed Praesenzmelder_EG_EFL_KNX_Praesenz
     2018-09-13 16:43:17   lastPresentByResident rr_Maria
     2018-09-13 16:45:14   location        home
     2018-09-13 16:43:17   mode            Nachmittag
     2018-09-13 16:43:16   modeAlarm       disarm
     2018-09-13 17:14:39   motionsInside   Praesenzmelder_EG_EFL_KNX_Praesenz,Praesenzmelder_EG_KUE_KNX_Praesenz,Praesenzmelder_EG_WOH_KNX_Praesenz,Praesenzmelder_OG_OFL_KNX_Praesenz,Praesenzmelder_OG_SLA_KNX_Praesenz
     2018-09-13 17:14:39   motionsInside_ct 5
     2018-09-13 17:14:39   motionsInside_hr Der Praesenzmelder_EG_EFL_KNX_Praesenz, der Praesenzmelder_EG_KUE_KNX_Praesenz, der Praesenzmelder_EG_WOH_KNX_Praesenz, der Praesenzmelder_OG_OFL_KNX_Praesenz and der Praesenzmelder_OG_SLA_KNX_Praesenz
     2018-09-11 10:23:48   motionsOutside_ct 0
     2018-09-13 17:14:39   motionsSensors  Praesenzmelder_EG_EFL_KNX_Praesenz,Praesenzmelder_EG_KUE_KNX_Praesenz,Praesenzmelder_EG_WOH_KNX_Praesenz,Praesenzmelder_OG_OFL_KNX_Praesenz,Praesenzmelder_OG_SLA_KNX_Praesenz
     2018-09-13 17:14:39   motionsSensors_ct 5
     2018-09-13 17:14:39   motionsSensors_hr Der Praesenzmelder_EG_EFL_KNX_Praesenz, der Praesenzmelder_EG_KUE_KNX_Praesenz, der Praesenzmelder_EG_WOH_KNX_Praesenz, der Praesenzmelder_OG_OFL_KNX_Praesenz and der Praesenzmelder_OG_SLA_KNX_Praesenz
     2018-09-07 10:17:41   panic           off
     2018-09-13 16:43:14   presence        present
     2018-09-13 16:43:17   prevActivityByResident rr_Maria
     2018-09-13 16:45:14   prevLocation    arrival
     2018-09-13 16:43:17   prevMode        absent
     2018-09-13 16:43:16   prevModeAlarm   armaway
     2018-09-13 17:14:38   prevMotion      Praesenzmelder_OG_OFL_KNX_Praesenz
     2018-09-13 17:12:46   prevMotionClosed Praesenzmelder_OG_OFL_KNX_Praesenz
     2018-09-07 10:17:43   season          autumn
     2018-09-11 10:23:48   sensorsTampered_ct 0
     2018-09-13 16:43:17   state           Nachmittag
   helper:
     enabledDevices Praesenzmelder_EG_BUE_KNX_Praesenz,Praesenzmelder_EG_EFL_KNX_Praesenz,Praesenzmelder_EG_GWC_KNX_Praesenz,Praesenzmelder_EG_HWR_KNX_Praesenz,Praesenzmelder_EG_KUE_KNX_Praesenz,Praesenzmelder_EG_TEC_KNX_Praesenz,Praesenzmelder_EG_WOH_KNX_Praesenz,Praesenzmelder_OG_ANK_KNX_Praesenz,Praesenzmelder_OG_BAD_KNX_Praesenz,Praesenzmelder_OG_KZ1_KNX_Praesenz,Praesenzmelder_OG_KZ2_KNX_Praesenz,Praesenzmelder_OG_KZ3_KNX_Praesenz,Praesenzmelder_OG_OFL_KNX_Praesenz,Praesenzmelder_OG_SLA_KNX_Praesenz,global,rgr_Bewohner,rr_David,rr_Maria
     lastChangedAttr HomeCMDmotion
     lastChangedAttrValue {
  # Raum aus Sensornamen ermitteln, z.B. bz_Sensor
  my $room = (split /_/,"%SENSOR%")[2];
  fhem "setreading Homedummy room ".$room;
 
  my $autolight = Value($room."_AutoLight");
  fhem "setreading Homedummy autolight ".$autolight;
 
  # Status des Lichtes dieses Raums
  my $licht = Value("Licht_EG_".$room."_KNX_Deckenspots_Schalten");
  fhem "setreading Homedummy licht ".$licht;
 
  # Absolutes Dimmen
  my $absolut = Value("Licht_EG_".$room."_KNX_Deckenspots_ABSOLUT");
  fhem "setreading Homedummy absolut ".$absolut;
 
  # Status des dummy Tageslicht
  my $tl = Value("Tageslicht");
  fhem "setreading Homedummy tl ".$tl;
 
  # Status ob jemand anwesend ist
  #my $anwesend = Value("presence");
  my $anwesend = ReadingsVal('Home','presence','');
  #"{ReadingsVal('Kuechentuer','state','')}"
  fhem "setreading Homedummy anwesend ".$anwesend;
 
  # nur wenn jemand anwesend ist Lichtsteuerung ausführen
  if ($anwesend eq "absent")
  {
  #TEST
my $abwesendschleife = "abwesendschleife";
fhem "setreading Homedummy abwesendschleife ".$abwesendschleife;
# Lichtwert des Sensors
my $lux = (split / /,Value("Praesenzmelder_EG_".$room."_KNX_Helligkeit"))[0];
 
fhem "set Homedummy ".$lux;
fhem "setreading Homedummy lux ".$lux;

# Löschen des evtl. schon vorhandenen "at"
    fhem "delete atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%" if (IsDevice("atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%"));

# Licht nur wenn kein Tageslicht oder Lichtwert des Sensors kleiner als 100 und Lichtschalter nicht gedrückt und AutoLight eingeschaltet und modeAlarm nicht armaway
if (($tl = 0 || $lux < 100) && $licht eq "off" && Value($room."_AutoLight") eq "on" && "%AMODE%" ne "armaway")
   {
     my $scene;
#TEST
my $scenenschleife = "scenenschleife";
fhem "setreading Homedummy scenenschleife ".$scenenschleife;
       # verschiedene Szenen für verschiedene Modus bzw. Aussenlichtstärken
   #00:00|Mitternacht 00:05|Nacht 05:00|Morgen 10:00|Vormittag 12:00|Mittag 14:30|Nachmittag 18:00|Abend 22:00|Spaetabend
       if ("%MODE%" eq "gotosleep")
      {
        $scene = "gotosleep";
      }
      elsif ("%MODE%" eq "asleep")
{
$scene = "asleep";
}
elsif ("%MODE%" eq "away")
{
$scene = "awy";
}
elsif ("%MODE%" eq "travel")
{
$scene = "travel";
}
elsif (Value("daytime") eq "Mitternacht")
      {
         $scene = "Mitternacht";
}
elsif (Value("daytime") eq "Nacht")
      {
         $scene = "Nacht";
}
elsif (Value("daytime") eq "Morgen")
      {
         $scene = "Morgen";
#TEST
my $morgenschleife = "morgenschleife";
fhem "setreading Homedummy morgenschleife ".$morgenschleife;
}
elsif (Value("daytime") eq "Vormittag")
      {
         $scene = "Vormittag";
}
elsif (Value("daytime") eq "Mittag")
      {
         $scene = "Mittag";
}
elsif (Value("daytime") eq "Nachmittag")
      {
         $scene = "Nachmittag";
}
elsif (Value("daytime") eq "Abend")
      {
         $scene = "Abend";
}
elsif (Value("daytime") eq "Spaetabend")
      {
         $scene = "Spaetabend";
}
     
       # Schalten der entsprechenden Szene (Modul LightScene)
       # TEST: fhem "set Homedummy ".$room."_LS scene $scene" if ($scene);
   fhem "set ".$room."_LS scene $scene" if ($scene);
   fhem "setreading Homedummy scene ".$scene;
    }  
}
else
  {
    # unterschiedliche Ausschaltzeiten für unterschiedliche Räume
    my $t = 3;
    $t = 15 if ($room eq "WOH" || $room eq "BUE" || $room eq "KZ1" || $room eq "KZ2" || $room eq "KZ3" || $room eq "SLA");
    #$t = 2 if ($room eq "bz" || ($room =~ /wz|ku/ && "%MODE%" =~ /sleep/));
    $t = 1 if ($room eq "EFL" || $room eq "OFL" || $room eq "ANK" || $room eq "TEC");
fhem "setreading Homedummy t ".$t;
    # Zahl in Minuten umrechnen in einen Zeitpunkt für das "at"
    my $d = HOMEMODE_hourMaker($t);
fhem "setreading Homedummy d ".$d;

    # Anlegen des "at" zum Ausschalten des Lichts wenn die Lichter angeschaltet sind und auch AutoLight eingeschaltet ist
    if ($licht ne "off" && Value($room."_AutoLight") eq "on")
    {
      my $cmd = "set ".$room."_LS scene aus";
      fhem "defmod atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF% at +$d $cmd";
  fhem "setreading Homedummy cmd ".$cmd;
    }
  }
}
     presdevs:
Attributes:
   HomeAdvancedUserAttr 1
   HomeAutoArrival 2
   HomeCMDmotion {
  # Raum aus Sensornamen ermitteln, z.B. bz_Sensor
  my $room = (split /_/,"%SENSOR%")[2];
  fhem "setreading Homedummy room ".$room;
 
  my $autolight = Value($room."_AutoLight");
  fhem "setreading Homedummy autolight ".$autolight;
 
  # Status des Lichtes dieses Raums
  my $licht = Value("Licht_EG_".$room."_KNX_Deckenspots_Schalten");
  fhem "setreading Homedummy licht ".$licht;
 
  # Absolutes Dimmen
  my $absolut = Value("Licht_EG_".$room."_KNX_Deckenspots_ABSOLUT");
  fhem "setreading Homedummy absolut ".$absolut;
 
  # Status des dummy Tageslicht
  my $tl = Value("Tageslicht");
  fhem "setreading Homedummy tl ".$tl;
 
  # Status ob jemand anwesend ist
  #my $anwesend = Value("presence");
  my $anwesend = ReadingsVal('Home','presence','');
  #"{ReadingsVal('Kuechentuer','state','')}"
  fhem "setreading Homedummy anwesend ".$anwesend;
 
  # nur wenn jemand anwesend ist Lichtsteuerung ausführen
  if ($anwesend eq "absent")
  {
  #TEST
my $abwesendschleife = "abwesendschleife";
fhem "setreading Homedummy abwesendschleife ".$abwesendschleife;
# Lichtwert des Sensors
my $lux = (split / /,Value("Praesenzmelder_EG_".$room."_KNX_Helligkeit"))[0];
 
fhem "set Homedummy ".$lux;
fhem "setreading Homedummy lux ".$lux;

# Löschen des evtl. schon vorhandenen "at"
    fhem "delete atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%" if (IsDevice("atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%"));

# Licht nur wenn kein Tageslicht oder Lichtwert des Sensors kleiner als 100 und Lichtschalter nicht gedrückt und AutoLight eingeschaltet und modeAlarm nicht armaway
if (($tl = 0 || $lux < 100) && $licht eq "off" && Value($room."_AutoLight") eq "on" && "%AMODE%" ne "armaway")
   {
     my $scene;
#TEST
my $scenenschleife = "scenenschleife";
fhem "setreading Homedummy scenenschleife ".$scenenschleife;
       # verschiedene Szenen für verschiedene Modus bzw. Aussenlichtstärken
   #00:00|Mitternacht 00:05|Nacht 05:00|Morgen 10:00|Vormittag 12:00|Mittag 14:30|Nachmittag 18:00|Abend 22:00|Spaetabend
       if ("%MODE%" eq "gotosleep")
      {
        $scene = "gotosleep";
      }
      elsif ("%MODE%" eq "asleep")
{
$scene = "asleep";
}
elsif ("%MODE%" eq "away")
{
$scene = "awy";
}
elsif ("%MODE%" eq "travel")
{
$scene = "travel";
}
elsif (Value("daytime") eq "Mitternacht")
      {
         $scene = "Mitternacht";
}
elsif (Value("daytime") eq "Nacht")
      {
         $scene = "Nacht";
}
elsif (Value("daytime") eq "Morgen")
      {
         $scene = "Morgen";
#TEST
my $morgenschleife = "morgenschleife";
fhem "setreading Homedummy morgenschleife ".$morgenschleife;
}
elsif (Value("daytime") eq "Vormittag")
      {
         $scene = "Vormittag";
}
elsif (Value("daytime") eq "Mittag")
      {
         $scene = "Mittag";
}
elsif (Value("daytime") eq "Nachmittag")
      {
         $scene = "Nachmittag";
}
elsif (Value("daytime") eq "Abend")
      {
         $scene = "Abend";
}
elsif (Value("daytime") eq "Spaetabend")
      {
         $scene = "Spaetabend";
}
     
       # Schalten der entsprechenden Szene (Modul LightScene)
       # TEST: fhem "set Homedummy ".$room."_LS scene $scene" if ($scene);
   fhem "set ".$room."_LS scene $scene" if ($scene);
   fhem "setreading Homedummy scene ".$scene;
    }  
}
else
  {
    # unterschiedliche Ausschaltzeiten für unterschiedliche Räume
    my $t = 3;
    $t = 15 if ($room eq "WOH" || $room eq "BUE" || $room eq "KZ1" || $room eq "KZ2" || $room eq "KZ3" || $room eq "SLA");
    #$t = 2 if ($room eq "bz" || ($room =~ /wz|ku/ && "%MODE%" =~ /sleep/));
    $t = 1 if ($room eq "EFL" || $room eq "OFL" || $room eq "ANK" || $room eq "TEC");
fhem "setreading Homedummy t ".$t;
    # Zahl in Minuten umrechnen in einen Zeitpunkt für das "at"
    my $d = HOMEMODE_hourMaker($t);
fhem "setreading Homedummy d ".$d;

    # Anlegen des "at" zum Ausschalten des Lichts wenn die Lichter angeschaltet sind und auch AutoLight eingeschaltet ist
    if ($licht ne "off" && Value($room."_AutoLight") eq "on")
    {
      my $cmd = "set ".$room."_LS scene aus";
      fhem "defmod atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF% at +$d $cmd";
  fhem "setreading Homedummy cmd ".$cmd;
    }
  }
}
   HomeDaytimes 00:00|Mitternacht 00:05|Nacht 05:00|Morgen 10:00|Vormittag 12:00|Mittag 14:30|Nachmittag 18:00|Abend 22:00|Spaetabend
   HomeLanguage DE
   HomeSensorsMotion Praesenzmelder_EG_BUE_KNX_Praesenz,Praesenzmelder_EG_EFL_KNX_Praesenz,Praesenzmelder_EG_GWC_KNX_Praesenz,Praesenzmelder_EG_HWR_KNX_Praesenz,Praesenzmelder_EG_KUE_KNX_Praesenz,Praesenzmelder_EG_TEC_KNX_Praesenz,Praesenzmelder_EG_WOH_KNX_Praesenz,Praesenzmelder_OG_ANK_KNX_Praesenz,Praesenzmelder_OG_BAD_KNX_Praesenz,Praesenzmelder_OG_OFL_KNX_Praesenz,Praesenzmelder_OG_KZ1_KNX_Praesenz,Praesenzmelder_OG_KZ2_KNX_Praesenz,Praesenzmelder_OG_KZ3_KNX_Praesenz,Praesenzmelder_OG_SLA_KNX_Praesenz
   devStateIcon absent:user_away:dnd+on
gone:user_ext_away:dnd+on
dnd:audio_volume_mute:dnd+off
gotosleep:scene_sleeping:dnd+on
asleep:scene_sleeping_alternat:dnd+on
awoken:weather_sunrise:dnd+on
home:status_available:dnd+on
morning:weather_sunrise:dnd+on
day:weather_sun:dnd+on
afternoon:weather_summer:dnd+on
evening:weather_sunset:dnd+on
night:weather_moon_phases_2:dnd+on
   icon       floor
   room       Server,develop
   userattr   HomeCMDdaytime-Abend:textField-long HomeCMDdaytime-Mittag:textField-long HomeCMDdaytime-Mitternacht:textField-long HomeCMDdaytime-Morgen:textField-long HomeCMDdaytime-Nachmittag:textField-long HomeCMDdaytime-Nacht:textField-long HomeCMDdaytime-Spaetabend:textField-long HomeCMDdaytime-Vormittag:textField-long HomeCMDmode-Abend:textField-long HomeCMDmode-Mittag:textField-long HomeCMDmode-Mitternacht:textField-long HomeCMDmode-Morgen:textField-long HomeCMDmode-Nachmittag:textField-long HomeCMDmode-Nacht:textField-long HomeCMDmode-Spaetabend:textField-long HomeCMDmode-Vormittag:textField-long HomeCMDmode-absent-rr_David:textField-long HomeCMDmode-absent-rr_Maria:textField-long HomeCMDmode-asleep-rr_David:textField-long HomeCMDmode-asleep-rr_Maria:textField-long HomeCMDmode-awoken-rr_David:textField-long HomeCMDmode-awoken-rr_Maria:textField-long HomeCMDmode-gone-rr_David:textField-long HomeCMDmode-gone-rr_Maria:textField-long HomeCMDmode-gotosleep-rr_David:textField-long HomeCMDmode-gotosleep-rr_Maria:textField-long HomeCMDmode-home-rr_David:textField-long HomeCMDmode-home-rr_Maria:textField-long HomeCMDpresence-absent-rr_David:textField-long HomeCMDpresence-absent-rr_Maria:textField-long HomeCMDpresence-present-rr_David:textField-long HomeCMDpresence-present-rr_Maria:textField-long HomeCMDseason-autumn:textField-long HomeCMDseason-spring:textField-long HomeCMDseason-summer:textField-long HomeCMDseason-winter:textField-long
   webCmd     modeAlarm


Helligkeitssensor
Internals:
   DEF        7/5/1:dpt9.004
   DEVNAME    Praesenzmelder_EG_FLU_KNX_Helligkeit
   FIRSTGADNAME g1
   GETSTRING  g1:noArg
   IODev      KNX
   KNX_MSGCNT 671
   KNX_RAWMSG C01018w075011f1b
   KNX_TIME   2018-09-14 07:45:15
   LASTInputDev KNX
   MSGCNT     671
   NAME       Praesenzmelder_EG_EFL_KNX_Helligkeit
   NR         200
   NTFY_ORDER 50-Praesenzmelder_EG_FLU_KNX_Helligkeit
   SETSTRING  g1:slider,-670760,13415,670760
   STATE      145.52 lux
   TYPE       KNX
   GADDETAILS:
     g1:
       CODE       07501
       GROUP      7/5/1
       MODEL      dpt9.004
       NO         1
       OPTION     
       RDNAMEGET  getG1
       RDNAMEPUT  putG1
       RDNAMESET  setG1
       SETLIST    :slider,-670760,13415,670760
   GADTABLE:
     07501      g1
   Helper:
     DBLOG:
       getG1:
         DbLog:
           TIME       1536903915.25356
           VALUE      145.52
       last-sender:
         DbLog:
           TIME       1536903915.25356
           VALUE      1/0/24
       setG1:
         DbLog:
           TIME       1536649229.59189
           VALUE      -10.00
       state:
         DbLog:
           TIME       1536903915.25356
           VALUE      145.52
   READINGS:
     2018-09-14 07:45:15   getG1           145.52 lux
     2018-09-14 07:45:15   last-sender     1/0/24
     2018-09-11 09:00:29   setG1           -10.00 lux
     2018-09-14 07:45:15   state           145.52 lux
Attributes:
   IODev      KNX
   group      Helligkeit
   room       EG_Flur,KNX,Sensoren,---EG---


Absolutes Dimmen
Internals:
   CFGFN     
   DEF        1/3/1:dpt5.001
   DEVNAME    Licht_EG_FLU_KNX_Deckenspots_ABSOLUT
   FIRSTGADNAME g1
   GETSTRING  g1:noArg
   IODev      KNX
   NAME       Licht_EG_EFL_KNX_Deckenspots_ABSOLUT
   NR         54658
   NTFY_ORDER 50-Licht_EG_FLU_KNX_Deckenspots_ABSOLUT
   SETSTRING  g1:slider,0,1,100
   STATE      0 %
   TYPE       KNX
   GADDETAILS:
     g1:
       CODE       01301
       GROUP      1/3/1
       MODEL      dpt5.001
       NO         1
       OPTION     
       RDNAMEGET  getG1
       RDNAMEPUT  putG1
       RDNAMESET  setG1
       SETLIST    :slider,0,1,100
   GADTABLE:
     01301      g1
   Helper:
     DBLOG:
       setG1:
         DbLog:
           TIME       1536780159.87132
           VALUE      0
       state:
         DbLog:
           TIME       1536780159.87132
           VALUE      0
   READINGS:
     2018-09-12 21:22:37   setG1           0 %
     2018-09-12 21:22:37   state           0 %
Attributes:
   IODev      KNX
   room       EG_Flur
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0


Scenes


Internals:
   CFGFN     
   DEF        Licht_EG_EFL_KNX_Deckenspots_ABSOLUT
   HAS_DataDumper 1
   HAS_JSON   1
   NAME       EFL_LS
   NR         180276
   NTFY_ORDER 50-EFL_LS
   STATE      aus
   TYPE       LightScene
   mayBeVisible 1
   CONTENT:
     Licht_EG_EFL_KNX_Deckenspots_ABSOLUT 1
   Helper:
     DBLOG:
       Licht_EG_EFL_KNX_Deckenspots_ABSOLUT.state:
         DbLog:
           TIME       1536780159.97838
           VALUE      <html><div id="Licht_EG_EFL_KNX_Deckenspots_ABSOLUT"  title="0 %" class="col2">0 %</div></html>
       Licht_EG_EFL_KNX_Deckenspots_Schalten.state:
         DbLog:
           TIME       1536780065.48436
           VALUE      <html><div id="Licht_EG_EFL_KNX_Deckenspots_Schalten"  title="off" class="col2"><svg class=" off" data-txt="off" width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sketch="http://www.bohemiancoding.com/sketch/ns">     <!-- Generator
       state:
         DbLog:
           TIME       1536780160.04261
           VALUE      aus
   READINGS:
     2018-09-12 21:22:40   state           aus
   SCENES:
     Abend:
       Licht_EG_EFL_KNX_Deckenspots_ABSOLUT 15
       Licht_EG_EFL_KNX_Deckenspots_Schalten off
     aus:
       Licht_EG_EFL_KNX_Deckenspots_ABSOLUT 0
       Licht_EG_EFL_KNX_Deckenspots_Schalten off
   devices:
     Licht_EG_EFL_KNX_Deckenspots_ABSOLUT
Attributes:
   group      Szenen
   room       Server


Präsenzmelder
Internals:
   DEF        7/1/1:dpt1.001:praesenz
   DEVNAME    Praesenzmelder_EG_FLU_KNX_Praesenz
   FIRSTGADNAME praesenz
   GETSTRING  praesenz:noArg
   IODev      KNX
   KNX_MSGCNT 680
   KNX_RAWMSG C01018w0710100
   KNX_TIME   2018-09-14 07:11:11
   LASTInputDev KNX
   MSGCNT     680
   NAME       Praesenzmelder_EG_EFL_KNX_Praesenz
   NR         1790
   NTFY_ORDER 50-Praesenzmelder_EG_FLU_KNX_Praesenz
   SETSTRING  praesenz:off,on
   STATE      off
   TYPE       KNX
   GADDETAILS:
     praesenz:
       CODE       07101
       GROUP      7/1/1
       MODEL      dpt1.001
       NO         1
       OPTION     
       RDNAMEGET  praesenz-get
       RDNAMEPUT  praesenz-put
       RDNAMESET  praesenz-set
       SETLIST    :off,on
   GADTABLE:
     07101      praesenz
   Helper:
     DBLOG:
       last-sender:
         DbLog:
           TIME       1536901871.26818
           VALUE      1/0/24
       praesenz-get:
         DbLog:
           TIME       1536901871.26818
           VALUE      off
       praesenz-set:
         DbLog:
           TIME       1536821802.28923
           VALUE      on
       state:
         DbLog:
           TIME       1536901871.26818
           VALUE      off
   READINGS:
     2018-09-14 07:11:11   last-sender     1/0/24
     2018-09-14 07:11:11   praesenz-get    off
     2018-09-13 08:56:40   praesenz-set    on
     2018-09-14 07:11:11   state           off
Attributes:
   HomeModeAlarmActive armaway
   HomeSensorLocation inside
   IODev      KNX
   devStateIcon off:10px-kreis-rot on:10px-kreis-gruen
   group      Praesenz
   room       EG_Flur,KNX,Sensoren,---EG---
   userattr   HomeModeAlarmActive HomeReadings HomeValues HomeSensorLocation:inside,outside HomeModeAlarmActive HomeReadings HomeValues HomeSensorLocation:inside,outside


Lichtschaltung
Internals:
   DEF        1/1/1:dpt1:schalten
   DEVNAME    Licht_EG_FLU_KNX_Deckenspots_Schalten
   FIRSTGADNAME schalten
   GETSTRING  schalten:noArg
   IODev      KNX
   KNX_MSGCNT 13
   KNX_RAWMSG C01028w0110100
   KNX_TIME   2018-09-13 22:06:54
   LASTInputDev KNX
   MSGCNT     13
   NAME       Licht_EG_EFL_KNX_Deckenspots_Schalten
   NR         1486
   NTFY_ORDER 50-Licht_EG_FLU_KNX_Deckenspots_Schalten
   SETSTRING  schalten:off,on
   STATE      off
   TYPE       KNX
   GADDETAILS:
     schalten:
       CODE       01101
       GROUP      1/1/1
       MODEL      dpt1
       NO         1
       OPTION     
       RDNAMEGET  schalten-get
       RDNAMEPUT  schalten-put
       RDNAMESET  schalten-set
       SETLIST    :off,on
   GADTABLE:
     01101      schalten
   Helper:
     DBLOG:
       last-sender:
         DbLog:
           TIME       1536869214.92237
           VALUE      1/0/40
       schalten-get:
         DbLog:
           TIME       1536869214.92237
           VALUE      off
       schalten-set:
         DbLog:
           TIME       1536780065.41966
           VALUE      off
       state:
         DbLog:
           TIME       1536869214.92237
           VALUE      off
   READINGS:
     2018-09-13 22:06:54   last-sender     1/0/40
     2018-09-13 22:06:54   schalten-get    off
     2018-09-12 21:21:05   schalten-set    off
     2018-09-13 22:06:54   state           off
Attributes:
   IODev      KNX
   group      Licht
   room       Licht,EG_Flur
   userattr   lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 room_map structexclude




Internals:
   CFGFN     
   NAME       FLU_AutoLight
   NR         155314
   STATE      on
   TYPE       dummy
   Helper:
     DBLOG:
       state:
         DbLog:
           TIME       1536674745.70757
           VALUE      on
   READINGS:
     2018-09-11 16:05:45   state           on
Attributes:
   group      Lichtautomtik
   room       Server
   webCmd     on:off
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: blane am 14 September 2018, 08:11:13
Anbei die Lists
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: binford6000 am 14 September 2018, 13:42:32
Ok danke. Werde es mir am Wochenende mal in Ruhe anschauen.
VG Sebastian
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: binford6000 am 14 September 2018, 20:36:40
Hallo,
also spontan sind mir ein paar Dinge im entscheidenden Attribut "HomeCMDmotion" aufgefallen. Mal der Reihe nach:

Das wiederspricht sich:
my $anwesend = ReadingsVal('Home','presence','');
fhem "setreading Homedummy anwesend ".$anwesend;
# nur wenn jemand anwesend ist Lichtsteuerung ausführen
if ($anwesend eq "absent")


Was komplett fehlt ist die Abfrage Motion on/off.
if ("%STATE%" eq "offen") {...}
Sollte hiervor kommen:
# Löschen des evtl. schon vorhandenen "at"
fhem "delete atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%" if (IsDevice("atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF%"));


Der darauf folgende else Block bezieht sich in deinem Code auf dieses if:
if ($anwesend eq "absent")
Müsste sich aber auf dieses beziehen:
if ("%STATE%" eq "offen") {...}

Damit hättest du die Unterscheidung Motion on/off. Alternativ könntest du den Code auch in die Attribute HomeCMD-motion-on
und HomeCMD-motion-off packen. Ist Geschmackssache. Ich hab da den Code für mein Wandtablet und Foto bei Abwesenheit drin...

Hier mal der ganze Code mit meinen oben genannten Änderungsvorschlägen ab dem Kommentar:
# Licht nur wenn kein Tageslicht oder Lichtwert des Sensors kleiner als 100 und Lichtschalter nicht gedrückt und AutoLight eingeschaltet und modeAlarm nicht armaway
if (($tl = 0 || $lux < 100) && $licht eq "off" && Value($room."_AutoLight") eq "on" && "%AMODE%" ne "armaway") {
    my $scene;
#TEST
my $scenenschleife = "scenenschleife";
fhem "setreading Homedummy scenenschleife ".$scenenschleife;
# verschiedene Szenen für verschiedene Modus bzw. Aussenlichtstärken
#00:00|Mitternacht 00:05|Nacht 05:00|Morgen 10:00|Vormittag 12:00|Mittag 14:30|Nachmittag 18:00|Abend 22:00|Spaetabend
if ("%MODE%" eq "gotosleep") {
$scene = "gotosleep";
      }
      elsif ("%MODE%" eq "asleep") {
$scene = "asleep";
}
elsif ("%MODE%" eq "away") {
$scene = "awy";
}
elsif ("%MODE%" eq "travel") {
$scene = "travel";
}
elsif (Value("daytime") eq "Mitternacht") {
$scene = "Mitternacht";
}
elsif (Value("daytime") eq "Nacht") {
$scene = "Nacht";
}
elsif (Value("daytime") eq "Morgen") {
$scene = "Morgen";
#TEST
my $morgenschleife = "morgenschleife";
fhem "setreading Homedummy morgenschleife ".$morgenschleife;
}
elsif (Value("daytime") eq "Vormittag") {
$scene = "Vormittag";
}
elsif (Value("daytime") eq "Mittag") {
$scene = "Mittag";
}
elsif (Value("daytime") eq "Nachmittag") {
$scene = "Nachmittag";
}
elsif (Value("daytime") eq "Abend") {
$scene = "Abend";
}
elsif (Value("daytime") eq "Spaetabend") {
$scene = "Spaetabend";
}
# Schalten der entsprechenden Szene (Modul LightScene)
# TEST: fhem "set Homedummy ".$room."_LS scene $scene" if ($scene);
fhem "set ".$room."_LS scene $scene" if ($scene);
fhem "setreading Homedummy scene ".$scene;
}  
}
elseif (%STATE% ne "offen" && %PRESENCE% == 1) {
# unterschiedliche Ausschaltzeiten für unterschiedliche Räume
my $t = 3;
$t = 15 if ($room eq "WOH" || $room eq "BUE" || $room eq "KZ1" || $room eq "KZ2" || $room eq "KZ3" || $room eq "SLA");
#$t = 2 if ($room eq "bz" || ($room =~ /wz|ku/ && "%MODE%" =~ /sleep/));
$t = 1 if ($room eq "EFL" || $room eq "OFL" || $room eq "ANK" || $room eq "TEC");
fhem "setreading Homedummy t ".$t;
# Zahl in Minuten umrechnen in einen Zeitpunkt für das "at"
my $d = HOMEMODE_hourMaker($t);
fhem "setreading Homedummy d ".$d;
# Anlegen des "at" zum Ausschalten des Lichts wenn die Lichter angeschaltet sind und auch AutoLight eingeschaltet ist
if ($licht ne "off" && Value($room."_AutoLight") eq "on") {
my $cmd = "set ".$room."_LS scene aus";
fhem "defmod atTmp_Bewegungsmelder_Licht_aus_".$room."_%SELF% at +$d $cmd";
fhem "setreading Homedummy cmd ".$cmd;
}
}


Hier noch ein paar generelle Dinge:

Sowas
fhem "setreading Homedummy autolight ".$autolight;
geht einfacher so:
fhem("setreading Homedummy autolight $autolight");

Sowas (siehe oben):
my $anwesend = ReadingsVal('Home','presence','');
entspricht in HOMEMODE der Einfachheit
%PRESENCE%

Am besten nutzt du soviel wie möglich die bereits vorhanden Platzhalter.
Im Wiki sind alle aufgeführt. Manche sind nur in Speziellen Attributen verfügbar. Andere in allen.

Sowas
"%MODE%" eq "away"
"%MODE%" eq "travel"

Muss m.M.n. vorher in HomeSpecialModes explizit eingetragen werden!

So, ich hoffe ich konnte dir etwas bei der Fehlersuche behilflich sein.
VG Sebastian






Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: blane am 17 September 2018, 08:50:26
Hi,

Zitatmy $anwesend = ReadingsVal('Home','presence','');
fhem "setreading Homedummy anwesend ".$anwesend;
# nur wenn jemand anwesend ist Lichtsteuerung ausführen
if ($anwesend eq "absent")
Das ist korrekt. Nutze das absent nur zum Testen von außerhalb. Im Livebetrieb kommt hier dann present hin.

Zitatif ("%STATE%" eq "offen") {...}
Dies verstehe ich gar nicht. Der STATE von meinem HOMEMODE ist STATE absent. Wieso steht hier bei dir "offen" bzw. im Wiki "geöffnet?
Ich hatte dies deswegen bei mir umgeändert in
if ($anwesend eq "presence")

Vielleicht kannst du mir hier schon mal eine Rückmeldung zu geben. Ansonsten teste ich aktuell noch weiter.

Grüße
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: binford6000 am 17 September 2018, 21:20:40
ZitatDies verstehe ich gar nicht. Der STATE von meinem HOMEMODE ist STATE absent.
STATE ne %STATE%  ;)
Laut Doku:
4.2 verfügbar in den HomeCMDcontact, HomeCMDmotion und HomeCMDalarm Attributen
4.2.1 %ALIAS%
4.2.2 %SENSOR%
4.2.3 %STATE%


ZitatWieso steht hier bei dir "offen" bzw. im Wiki "geöffnet?
Das Attribut HomeTextClosedOpen ist dafür zuständig.
HomeTextClosedOpen geschlossen|offen

HOMEMODE ist ein sehr umfangreiches Modul. Bitte sorgfältig die Doku lesen!

VG Sebastian
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: blane am 18 September 2018, 09:59:57
Hi Sebastian,

danke schon einmal so far.
Bin durch deine Hilfe schlauer geworden und weiter gekommen.
Konnte gestern kurz testen und es scheint nun anzulaufen.
Ich werde noch ein wenig feinjustieren und schauen ob alles passt.

Für alle die es interessiert anbei das bis dato funktionierende Modul:

    # Raum aus Sensornamen ermitteln, z.B. bz_Sensor
    my $room = ( split /_/, "%SENSOR%" )[2];

# Etage aus Sensornamen ermitteln, z.B. bz_Sensor
    my $floor = ( split /_/, "%SENSOR%" )[1];

    # Ermitteln, ob für den Raum Autlight on oder off ist
my $autolight = Value( $room . "_AutoLight" );

    # Status des Lichtes dieses Raums
    my $licht = Value( "Licht_" . $floor . "_" . $room . "_KNX_Deckenspots_Status" );

    # Absolutes Dimmen
    my $absolut = Value( "Licht_" . $floor . "_" . $room . "_KNX_Deckenspots_ABSOLUT" );

    # Status des dummy Tageslicht
    my $tl = Value("Tageslicht");

    # Status ob jemand anwesend ist
    my $anwesend = ReadingsVal( 'Home', 'presence', '' );

    #"{ReadingsVal('Kuechentuer','state','')}"

    # nur wenn jemand anwesend ist Lichtsteuerung ausführen
    if ( "%STATE%" eq "open" ) {

        # Lichtwert des Sensors
        my $lux = (
            split / /, Value( "Praesenzmelder_" . $floor . "_" . $room . "_KNX_Helligkeit" )
        )[0];

        # Löschen des evtl. schon vorhandenen "at"
        fhem "delete atTmp_Bewegungsmelder_Licht_aus_" . $room . "_%SELF%"
          if (
            IsDevice( "atTmp_Bewegungsmelder_Licht_aus_" . $room . "_%SELF%" )
          );

# Licht nur wenn kein Tageslicht oder Lichtwert des Sensors kleiner als 100 und Lichtschalter nicht gedrückt und AutoLight eingeschaltet und modeAlarm nicht armaway
        if (   ( $tl == 0 || $lux < 100 )
            && $licht eq "off"
            && Value( $room . "_AutoLight" ) eq "on"
            && "%AMODE%" ne "armaway" )
        {
            my $scene;
            my $scenenschleife = "scenenschleife";
if ("%DAYTIME%" eq "Mitternacht" ) {
                $scene = "Mitternacht";
            }
            elsif ("%DAYTIME%" eq "Nacht" ) {
                $scene = "Nacht";
            }
elsif ("%DAYTIME%" eq "Morgen" ) {
                $scene = "Morgen";
            }
elsif ("%DAYTIME%" eq "Vormittag" ) {
                $scene = "Vormittag";
            }
elsif ("%DAYTIME%" eq "Mittag" ) {
                $scene = "Mittag";
            }
elsif ("%DAYTIME%" eq "Nachmittag" ) {
                $scene = "Nachmittag";
            }
elsif ("%DAYTIME%" eq "Abend" ) {
                $scene = "Abend";
            }
elsif ("%DAYTIME%" eq "Spaetabend" ) {
                $scene = "Spaetabend";
            }
            else {
                $scene = "keine";
            }
            fhem "set " . $room . "_LS scene $scene" if ($scene);
            fhem "setreading Homedummy scene " . $scene;
        }
    }
    else {
        # unterschiedliche Ausschaltzeiten für unterschiedliche Räume
        my $t = 3;
        $t = 15
          if ( $room eq "WOH"
            || $room eq "BUE"
            || $room eq "KZ1"
            || $room eq "KZ2"
            || $room eq "KZ3"
            || $room eq "SLA" );

        #$t = 2 if ($room eq "bz" || ($room =~ /wz|ku/ && "%MODE%" =~ /sleep/));
        $t = 1
          if ( $room eq "EFL"
            || $room eq "OFL"
            || $room eq "ANK"
            || $room eq "TEC" );
        fhem "setreading Homedummy t " . $t;

        # Zahl in Minuten umrechnen in einen Zeitpunkt für das "at"
        my $d = HOMEMODE_hourMaker($t);
        fhem "setreading Homedummy d " . $d;

# Anlegen des "at" zum Ausschalten des Lichts wenn die Lichter angeschaltet sind und auch AutoLight eingeschaltet ist
        if ( $licht ne "off" && Value( $room . "_AutoLight" ) eq "on" ) {
            my $cmd = "set " . $room . "_LS scene aus";
            fhem "defmod atTmp_Bewegungsmelder_Licht_aus_" . $room
              . "_%SELF% at +$d $cmd";
            fhem "setreading Homedummy cmd " . $cmd;
        }
    }
}


Bzw. eine Frage habe ich noch. Ich habe meine Räume noch in OG/EG unterteilt. Kann ich einen Platzhalter für das O bzw. E setzen?
Beispielsweise habe ich die Variable

my $licht = Value( "Licht_EG_" . $room . "_KNX_Deckenspots_Status" );
Nun soll diese aber auch für das OG gelten.

PS: Habe dies durch eine weitere Variable gelöst. (noch ungetestet)
Definition: my $floor = ( split /_/, "%SENSOR%" )[1];
Nutzung: my $licht = Value( "Licht_" . $floor . "_" . $room . "_KNX_Deckenspots_Status" );

Grüße
David
Titel: Antw:Badlichtsteuerung über Präsenzmelder und Szenen
Beitrag von: binford6000 am 18 September 2018, 14:44:59
Zitat von: blane am 18 September 2018, 09:59:57
Hi Sebastian,

danke schon einmal so far.
Bin durch deine Hilfe schlauer geworden und weiter gekommen.
Konnte gestern kurz testen und es scheint nun anzulaufen.
Ich werde noch ein wenig feinjustieren und schauen ob alles passt.

Für alle die es interessiert anbei das bis dato funktionierende Modul:

    # Raum aus Sensornamen ermitteln, z.B. bz_Sensor
    my $room = ( split /_/, "%SENSOR%" )[2];

# Etage aus Sensornamen ermitteln, z.B. bz_Sensor
    my $floor = ( split /_/, "%SENSOR%" )[1];

    # Ermitteln, ob für den Raum Autlight on oder off ist
my $autolight = Value( $room . "_AutoLight" );

    # Status des Lichtes dieses Raums
    my $licht = Value( "Licht_" . $floor . "_" . $room . "_KNX_Deckenspots_Status" );

    # Absolutes Dimmen
    my $absolut = Value( "Licht_" . $floor . "_" . $room . "_KNX_Deckenspots_ABSOLUT" );

    # Status des dummy Tageslicht
    my $tl = Value("Tageslicht");

    # Status ob jemand anwesend ist
    my $anwesend = ReadingsVal( 'Home', 'presence', '' );

    #"{ReadingsVal('Kuechentuer','state','')}"

    # nur wenn jemand anwesend ist Lichtsteuerung ausführen
    if ( "%STATE%" eq "open" ) {

        # Lichtwert des Sensors
        my $lux = (
            split / /, Value( "Praesenzmelder_" . $floor . "_" . $room . "_KNX_Helligkeit" )
        )[0];

        # Löschen des evtl. schon vorhandenen "at"
        fhem "delete atTmp_Bewegungsmelder_Licht_aus_" . $room . "_%SELF%"
          if (
            IsDevice( "atTmp_Bewegungsmelder_Licht_aus_" . $room . "_%SELF%" )
          );

# Licht nur wenn kein Tageslicht oder Lichtwert des Sensors kleiner als 100 und Lichtschalter nicht gedrückt und AutoLight eingeschaltet und modeAlarm nicht armaway
        if (   ( $tl == 0 || $lux < 100 )
            && $licht eq "off"
            && Value( $room . "_AutoLight" ) eq "on"
            && "%AMODE%" ne "armaway" )
        {
            my $scene;
            my $scenenschleife = "scenenschleife";
if ("%DAYTIME%" eq "Mitternacht" ) {
                $scene = "Mitternacht";
            }
            elsif ("%DAYTIME%" eq "Nacht" ) {
                $scene = "Nacht";
            }
elsif ("%DAYTIME%" eq "Morgen" ) {
                $scene = "Morgen";
            }
elsif ("%DAYTIME%" eq "Vormittag" ) {
                $scene = "Vormittag";
            }
elsif ("%DAYTIME%" eq "Mittag" ) {
                $scene = "Mittag";
            }
elsif ("%DAYTIME%" eq "Nachmittag" ) {
                $scene = "Nachmittag";
            }
elsif ("%DAYTIME%" eq "Abend" ) {
                $scene = "Abend";
            }
elsif ("%DAYTIME%" eq "Spaetabend" ) {
                $scene = "Spaetabend";
            }
            else {
                $scene = "keine";
            }
            fhem "set " . $room . "_LS scene $scene" if ($scene);
            fhem "setreading Homedummy scene " . $scene;
        }
    }
    else {
        # unterschiedliche Ausschaltzeiten für unterschiedliche Räume
        my $t = 3;
        $t = 15
          if ( $room eq "WOH"
            || $room eq "BUE"
            || $room eq "KZ1"
            || $room eq "KZ2"
            || $room eq "KZ3"
            || $room eq "SLA" );

        #$t = 2 if ($room eq "bz" || ($room =~ /wz|ku/ && "%MODE%" =~ /sleep/));
        $t = 1
          if ( $room eq "EFL"
            || $room eq "OFL"
            || $room eq "ANK"
            || $room eq "TEC" );
        fhem "setreading Homedummy t " . $t;

        # Zahl in Minuten umrechnen in einen Zeitpunkt für das "at"
        my $d = HOMEMODE_hourMaker($t);
        fhem "setreading Homedummy d " . $d;

# Anlegen des "at" zum Ausschalten des Lichts wenn die Lichter angeschaltet sind und auch AutoLight eingeschaltet ist
        if ( $licht ne "off" && Value( $room . "_AutoLight" ) eq "on" ) {
            my $cmd = "set " . $room . "_LS scene aus";
            fhem "defmod atTmp_Bewegungsmelder_Licht_aus_" . $room
              . "_%SELF% at +$d $cmd";
            fhem "setreading Homedummy cmd " . $cmd;
        }
    }
}


Bzw. eine Frage habe ich noch. Ich habe meine Räume noch in OG/EG unterteilt. Kann ich einen Platzhalter für das O bzw. E setzen?
Beispielsweise habe ich die Variable

my $licht = Value( "Licht_EG_" . $room . "_KNX_Deckenspots_Status" );
Nun soll diese aber auch für das OG gelten.

PS: Habe dies durch eine weitere Variable gelöst. (noch ungetestet)
Definition: my $floor = ( split /_/, "%SENSOR%" )[1];
Nutzung: my $licht = Value( "Licht_" . $floor . "_" . $room . "_KNX_Deckenspots_Status" );

Grüße
David

Hallo David,
das freut mich zu hören :D
Wenn alles klappt markiere den Thread noch als gelöst.  ;)
VG Sebastian