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
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
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
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
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";
}
}
}
Nein, der Code gehört in HomeCmd-motion [emoji6]
Kurz weil mobil
Gesendet von iPad mit Tapatalk
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
Poste mal bitte Lists aller beteiligten devices.
VG Sebastian
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
Anbei die Lists
Ok danke. Werde es mir am Wochenende mal in Ruhe anschauen.
VG Sebastian
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
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
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
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
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