Hallo zusammen,
ich habe seit dem WE einen Bewegungsmelder in Betrieb, der mir meine Terassenbeleuchtung einschaltet (in erster Linie erstmal um unerwünschte Besucher abzuschrecken). Gelöst ist das mit folgendem Notify:
define BM_Terasse_Motion notify BM_Terasse:motion.* {if(ReadingsVal("BM_Terasse","brightness","100")<95){fhem "set Lampe_Terasse 100 90"}}
Die Terassenlampe wird über einen Dimmer eingeschaltet. In dem Notify bedeuten:
100: Helligkeitswert (entspricht on)
90: Einschaltdauer 90s
Jetzt ist das Problem, dass die Lampe eben nach 90 Sekunden wieder ausgeschaltet wird. Soweit so gut. Doch ich würde die Lampe gerne z.B. auch als "Dauernachtlicht" verwenden und sie z.B. auf 30% nachts laufen lassen. ODER: Man schaltet die Lampe über den Wandtaster auf einen beliebigen Wert.
Nun soll, wenn die Lampe z.B. 40% hat und der Bewegungsmelder den Notify auslöst, die Lampe entsprechend des Notifys auf 100% (also on) gesetzt werden. Nach Ablauf der 90 Sekunden soll die Lampe jedoch nicht wieder ausgehen, sondern soll den Zustand annehmen, den die Lampe vor Auslösung des Notifys hatte.
Man müsste in den Befehl sowas einbauen wie: "Schalte Lampe mit 100% Helligkeit für 90 Sekunden an, dann warte 90 Sekunden und stelle dann den Zustand wieder her, der vor dem Notify bestand, her".
Kann man das irgendwie lösen und wenn ja, wie? ICH habe keine Ahnung, wie man das machen könnte. Gibt es überhaupt einen Befehl "warte"?
Vielen Dank im voraus!
Keiner ne Idee?
Hallo,
das geht schon.
Zunächst mal würde ich mir den alten Wert des dim-Zustandes der Lampe in einem Reading bei der Lampe speichern, bevor ich sie einschalte:
my $aw = Value('Lampe_Terasse');
fhem("setreading Lampe_Terasse AlterWert $aw");
Im notify definiertst Du Dir einen at so in der Art:
define Lampe_Terasse_at at +00:01:30 {Lampe_Terasse_akt2();}
dann in die 99_myUtils.pm
sub Lampe_Terasse_akt2()
{
my $aw = ReadingsVal('Lampe_Terasse','AlterWert',0);
fhem($set Lampe_Terasse $aw") if ($aw > 0)
}
Ein bisschen "schmutzig hingeschrieben...
Gruß
Elektrolurch
Zitat von: Elektrolurch am 03 März 2014, 12:33:15
my $aw = Value('Lampe_Terasse');
fhem("setreading Lampe_Terasse AlterWert $aw");
Wo muss denn der Befehl hin? Oder fehlt da ein "define" davor?
Zitat
Im notify definiertst Du Dir einen at so in der Art:
define Lampe_Terasse_at at +00:01:30 {Lampe_Terasse_akt2();}
Das kommt dann IN den Notify? Also sozusagen als 2. Befehl nach dem Einschalten der Lampe?
Ich hab den Notify jetzt folgendermaßen erstellt und den Eintrag in der 99_Utils hinzugefügt. Jetzt geht der Notify erstmal überhaupt nicht mehr. Ein Reading wird auch nicht angelegt in der Lampe.
define BM_Terasse_Motion notify BM_Terasse:motion.* {if(ReadingsVal("BM_Terasse","brightness","100")<395){my $aw = Value('Lampe_Terasse');;\
fhem("setreading Lampe_Terasse AlterWert $aw");;fhem "set Lampe_Terasse 100 90";;define Lampe_Terasse_at at +00:01:30 {Lampe_Terasse_akt2()}}}
Hallo,
also erst einmal zum Verständnis:
1. Der Bewegungsmelder löst das notify aus.
2. Im notify fragst Du erst einmal den aktuellen Wert der Lampe ab und speicherst ihn in einem Reading.
3. Dann machst Du die Lampe an.
4. Bevor Du aus dem notify wieder herausspringst, definierst Du Dir einen at-timer, der nach 90 sec startet und den alten Wert aus dem Reading der Lampe ausliest und wieder damit die Lampe setzt.
Also so:
define BM_Terasse_Motion notify BM_Terasse:motion.* {\
if(ReadingsVal("BM_Terasse","brightness","100")<395) \
{\
my $aw = Value('Lampe_Terasse');;\
fhem("setreading Lampe_Terasse AlterWert $aw");;\
fhem "set Lampe_Terasse 100 90");;\
my $com = 'define Lampe_Terasse_at at +00:01:30 {Lampe_Terasse_akt2();;}'\
fhem($com);;\
}\
}
Du bist im perl-Zweig, da geht define nicht direkt, sondern Du musst das mit fhem(...) ausführen.
In dem Fall könntest Du sttatt der my $com - Variable natürlich auch direkt den String an fhem( ) übergeben, wenn es aber komplizierter wird, verliert man leicht den Überblick.
Was übrigens in '...' steht, wird variablen technisch nicht ausgewertet.
Gruß
Vielen Dank für deine Hilfe!!!
Den Ablauf und die Logik verstehe ich, nur mangelts eben an Perlkenntnissen. :(
Leider funktioniert der Notify nicht. :-( Ohne die zusätzlichen Einträge zum Schreiben des Readings und zum Wiederherstellen des alten Wertes geht die Lampe an. Mit den Einträgen leider nicht. Irgendwas scheint also an der Syntax noch nicht zu stimmen. Eine Idee?
Also der Notify sieht so aus:
define BM_Terasse_Motion notify BM_Terasse:motion.* {\
if(ReadingsVal("BM_Terasse","brightness","100")<395) \
{\
my $aw = Value('Lampe_Terasse');;\
fhem("setreading Lampe_Terasse AlterWert $aw");;\
fhem ("set Lampe_Terasse 100 90");;\
my $com = 'define Lampe_Terasse_at at +00:01:30 {Lampe_Terasse_akt2();;}'\
fhem($com);;\
}\
}
Und in der 99_myUtils:
#########Terassenlampe#########
sub Lampe_Terasse_akt2()
{
my $aw = ReadingsVal('Lampe_Terasse','AlterWert',0);
fhem("set Lampe_Terasse $aw") if ($aw > 0)
}
An welcher Stelle wird eigentlich das Reading ausgelesen? Müsste nicht irgendwo ein "state" oder ein "level" stehn?
Hier mal die Readings des Dimmers (30% eingestellt):
Internals:
DEF 1D66E801
NAME Lampe_Terasse
NR 377
STATE 30 %
TYPE CUL_HM
chanNo 01
device Dimmer_Terasse
Readings:
2014-03-03 15:15:50 CommandAccepted yes
2014-02-28 18:43:47 R-fuseDelay 1 s
2014-02-28 18:43:47 R-logicCombination or
2014-02-28 18:43:47 R-ovrTempLvl 80 C
2014-02-28 18:43:47 R-powerUpAction off
2014-02-28 18:43:47 R-redLvl 40 %
2014-02-28 18:43:47 R-redTempLvl 75 C
2014-02-28 18:43:47 R-statusInfoMinDly 2 s
2014-02-28 18:43:47 R-statusInfoRandom 1 s
2014-02-28 18:43:47 R-transmitTryMax 6
2014-02-28 18:44:44 RegL_01: 30:06 32:50 33:64 34:4B 35:50 56:00 57:24 59:01 00:00
2014-03-03 15:15:55 deviceMsg 30 % (to HMLAN1)
2014-03-03 15:15:55 dim stop:30 %
2014-03-03 15:15:55 level 30 %
2014-02-28 22:17:53 levelMissed desired:100
2014-03-03 15:15:55 overheat off
2014-03-03 15:15:55 overload off
2014-03-03 15:15:55 pct 30
2014-03-03 15:15:55 phyLevel 30 %
2014-03-03 15:15:55 recentStateType info
2014-03-03 15:15:55 reduced off
2014-03-03 15:15:55 state 30 %
2014-03-03 15:15:55 timedOn off
Helper:
dlvlCmd ++A01123A6D71D66E802013C0320FFFF
Role:
chn 1
Vdim:
idPhy 1D66E8
idV2 1D66E802
idV3 1D66E803
Attributes:
eventMap on:an off:aus
group Dimmer
model HM-LC-Dim1TPBU-FM
peerIDs 00000000,
room Außen
webCmd aus:pct:an
Laut logfile stimmt da tatsächlich irgendwo was nicht:
2014.03.03 15:41:03.503 3: BM_Terasse_Motion return value: syntax error at (eval 297) line 8, near "'define Lampe_Terasse_at at +00:01:30 {Lampe_Terasse_akt2();}'
fhem"
Global symbol "$com" requires explicit package name at (eval 297) line 8.
2014.03.03 15:41:03.516 3: BM_Terasse_Motion return value: syntax error at (eval 298) line 8, near "'define Lampe_Terasse_at at +00:01:30 {Lampe_Terasse_akt2();}'
fhem"
Global symbol "$com" requires explicit package name at (eval 298) line 8.
2014.03.03 15:41:03.528 3: BM_Terasse_Motion return value: syntax error at (eval 299) line 8, near "'define Lampe_Terasse_at at +00:01:30 {Lampe_Terasse_akt2();}'
fhem"
Global symbol "$com" requires explicit package name at (eval 299) line 8.
So, ich habe es jetzt hinbekommen, dass der Notify schonmal wieder funktioniert. Jedoch klappt da was mit dem alten Wert nicht, denn die Lampe geht nach den 90 Sekunden wieder aus.
So sieht der Notify nun aus:
define BM_Terasse_Motion notify BM_Terasse:motion.* {\
if(ReadingsVal("BM_Terasse","brightness","100")<395) \
{\
my $aw = Value('Lampe_Terasse');;\
fhem("setreading Lampe_Terasse AlterWert $aw");;\
fhem ("set Lampe_Terasse 100 90");;\
my $com = 'define Lampe_Terasse_at at +00:01:30 {Lampe_Terasse_akt2()}';;\
fhem($com);;\
}\
}
Und die Subfunktion:
#########Terassenlampe#########
sub Lampe_Terasse_akt2()
{
my $aw = ReadingsVal('Lampe_Terasse','AlterWert',0);
fhem("set Lampe_Terasse $aw") if ($aw > 0)
}
Hast du noch ne Idee?
Ah, jetzt habe ich auch ein Reading "AlterWert" und der zeigt auch den Wert an, den die Lampe hatte, bevor der Notify ausgelöst wurde. Nur zurückgeschrieben wird er noch nicht. Die Lampe geht nach wie vor aus.
Hier mal ein Auszug aus dem EventMonitor (hab das at mal einzeln um 17:23:00 ausführen lassen):
2014-03-03 17:23:00.027 CUL_HM Lampe_Terasse level: set_14
2014-03-03 17:23:00.038 CUL_HM Lampe_Terasse set_14
2014-03-03 17:23:00.061 Global global DELETED Lampe_Terasse_at2
2014-03-03 17:23:00.263 CUL_HM Lampe_Terasse level: 0.5 %
2014-03-03 17:23:00.263 CUL_HM Lampe_Terasse pct: 0.5
2014-03-03 17:23:00.263 CUL_HM Lampe_Terasse deviceMsg: 0.5 % (to HMLAN1)
2014-03-03 17:23:00.263 CUL_HM Lampe_Terasse chn:0.5 % phys:0 %
2014-03-03 17:23:00.263 CUL_HM Lampe_Terasse timedOn: running
2014-03-03 17:23:00.263 CUL_HM Lampe_Terasse dim: up:0.5 %
2014-03-03 17:23:00.263 CUL_HM Lampe_Terasse overload: aus
2014-03-03 17:23:00.263 CUL_HM Lampe_Terasse overheat: aus
2014-03-03 17:23:00.263 CUL_HM Lampe_Terasse reduced: aus
2014-03-03 17:23:05.634 CUL_HM Dimmer_Terasse chn:set_100 phys:0 %
2014-03-03 17:23:05.634 CUL_HM Dimmer_Terasse phyLevel: 0 %
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse phyLevel: 0 %
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse level: 0 %
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse pct: 0
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse deviceMsg: aus (to HMLAN1)
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse aus
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse timedOn: aus
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse dim: stop:aus
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse overload: aus
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse overheat: aus
2014-03-03 17:23:05.666 CUL_HM Lampe_Terasse reduced: aus
2014-03-03 17:23:40.267 CUL_HM BM_Terasse brightness: 208
2014-03-03 17:23:40.267 CUL_HM BM_Terasse cover: closed
2014-03-03 17:23:40.267 CUL_HM BM_Terasse battery: ok
Ist das DELETED normal?
Die Lampe geht jedenfalls nicht auf 14%. Verstehe nicht warum!
Hier ein Auszug aus dem EventMonitor als ich das Notify über den Bewegungsmelder getriggert habe:
Events:
2014-03-03 17:34:58.077 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_01 chn:off phys:100 %
2014-03-03 17:34:58.077 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_01 phyLevel: 100 %
2014-03-03 17:34:58.085 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_02 chn:off phys:100 %
2014-03-03 17:34:58.085 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_02 phyLevel: 100 %
2014-03-03 17:34:58.097 CUL_HM Dimmer_Terasse chn:set_100 phys:100 %
2014-03-03 17:34:58.097 CUL_HM Dimmer_Terasse phyLevel: 100 %
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse phyLevel: 100 %
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse level: 100 %
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse pct: 100
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse deviceMsg: an (to HMLAN1)
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse an
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse timedOn: running
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse dim: stop:an
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse overload: aus
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse overheat: aus
2014-03-03 17:34:58.127 CUL_HM Lampe_Terasse reduced: aus
2014-03-03 17:35:58.001 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_01 off
2014-03-03 17:35:58.001 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_01 phyLevel: 0 %
2014-03-03 17:35:59.008 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_02 off
2014-03-03 17:35:59.008 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_02 phyLevel: 0 %
2014-03-03 17:35:59.019 CUL_HM Dimmer_Terasse chn:set_100 phys:0 %
2014-03-03 17:35:59.019 CUL_HM Dimmer_Terasse phyLevel: 0 %
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse phyLevel: 0 %
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse level: 0 %
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse pct: 0
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse deviceMsg: aus (to HMLAN1)
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse aus
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse timedOn: aus
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse dim: stop:aus
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse overload: aus
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse overheat: aus
2014-03-03 17:35:59.052 CUL_HM Lampe_Terasse reduced: aus
2014-03-03 17:36:23.129 CUL_HM Lampe_Terasse level: set_30
2014-03-03 17:36:23.141 CUL_HM Lampe_Terasse set_30
2014-03-03 17:36:23.163 Global global DELETED Lampe_Terasse_at
2014-03-03 17:36:23.365 CUL_HM Lampe_Terasse level: 0.5 %
2014-03-03 17:36:23.365 CUL_HM Lampe_Terasse pct: 0.5
2014-03-03 17:36:23.365 CUL_HM Lampe_Terasse deviceMsg: 0.5 % (to HMLAN1)
2014-03-03 17:36:23.365 CUL_HM Lampe_Terasse chn:0.5 % phys:0 %
2014-03-03 17:36:23.365 CUL_HM Lampe_Terasse timedOn: running
2014-03-03 17:36:23.365 CUL_HM Lampe_Terasse dim: up:0.5 %
2014-03-03 17:36:23.365 CUL_HM Lampe_Terasse overload: aus
2014-03-03 17:36:23.365 CUL_HM Lampe_Terasse overheat: aus
2014-03-03 17:36:23.365 CUL_HM Lampe_Terasse reduced: aus
2014-03-03 17:36:28.435 CUL_HM Dimmer_Terasse chn:set_100 phys:0 %
2014-03-03 17:36:28.435 CUL_HM Dimmer_Terasse phyLevel: 0 %
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse phyLevel: 0 %
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse level: 0 %
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse pct: 0
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse deviceMsg: aus (to HMLAN1)
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse aus
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse timedOn: aus
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse dim: stop:aus
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse overload: aus
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse overheat: aus
2014-03-03 17:36:28.467 CUL_HM Lampe_Terasse reduced: aus
Das "set30" (das stand dann im Reading "AlterWert") kommt ja auch, aber dennoch bleibt die Lampe aus. Kannst du da was erkennen?
Ich will dich jetzt nicht verwirren, aber deine Konstruktion ließe sich mit IF (siehe Nachbar-Thread) wesentlich eleganter realisieren (ohne zusätzliche Variable, ohne setreading, ohne Perl-code und ohne ausgelagerte Funktionen) :)
define BM_Terasse_Motion notify BM_Terasse:motion.*
IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90, define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})
Das ist alles. Mit weniger Code kann man weniger falsch machen :)
Gruß
Damian
Ok!
Und an welcher Stelle weiß das Notify denn dann, welchen dim-Wert die Lampe vorher hatte?
Update: Scheint garnicht erst einfügbar sein. Es kommt eine Fehlermeldung: Unknown command IF
Hab das Modul nun mal eingefügt! ;)
Nun kommt: Unknown Reading BM_Terasse:brightness
Versteh ich nicht, das Reading gibt es!
IF muss du noch downloaden und ins FHEM-Verzeichnis kopieren:
siehe http://forum.fhem.de/index.php/topic,17895.msg118503.html#msg118503
Dein alter Wert wird bereits bei der Definition des at-Befehls übergeben :)
Gruß
Damian
Hab ich getan! Dennoch kommt:
ERROR:
Usage: define notify IF: unknown reading: BM_Terasse:brightness
Zitat von: Michi240281 am 03 März 2014, 18:58:56
Hab ich getan! Dennoch kommt:
ERROR:
Usage: define notify IF: unknown reading: BM_Terasse:brightness
mach mal list BM_Terasse und post den Output.
Gruß
Damian
Internals:
DEF 20AD1B
HMLAN1_MSGCNT 1
HMLAN1_RAWMSG E20AD1B,0000,0B998881,FF,FFC0,16A64120AD1B23A6D701295460
HMLAN1_RSSI -64
HMLAN1_TIME 2014-03-03 19:00:07
IODev HMLAN1
LASTInputDev HMLAN1
MSGCNT 1
NAME BM_Terasse
NR 386
STATE motion
TYPE CUL_HM
lastMsg No:16 - t:41 s:20AD1B d:23A6D7 01295460
protLastRcv 2014-03-03 19:00:07
protSnd 2 last_at:2014-03-03 19:00:07
protState CMDs_done
rssi_at_HMLAN1 avg:-64 min:-64 max:-64 lst:-64 cnt:1
Readings:
2014-03-03 18:58:47 Activity alive
2014-03-01 13:17:57 CommandAccepted yes
2014-03-01 13:19:31 D-firmware 1.6
2014-03-01 13:19:31 D-serialNr KEQ0195919
2014-03-01 13:19:29 PairedTo 0x23A6D7
2014-03-01 13:17:58 R-brightFilter 7
2014-03-01 13:17:58 R-captInInterval off
2014-03-01 12:58:43 R-evtFltrNum 1
2014-03-01 12:58:43 R-evtFltrPeriod 1 s
2014-03-01 12:58:43 R-ledOnTime 0 s
2014-03-01 13:17:58 R-minInterval 60
2014-03-01 12:58:43 R-pairCentral 0x23A6D7
2014-03-01 13:19:29 RegL_00: 02:01 0A:23 0B:A6 0C:D7 00:00
2014-03-01 13:19:30 RegL_01: 01:12 02:72 08:01 22:00 00:00
2014-03-01 13:17:56 aesKeyNbr FF
2014-03-03 18:56:55 battery ok
2014-03-03 19:00:07 brightness 84
2014-03-03 18:56:55 cover closed
2014-03-03 19:00:07 motion on (to HMLAN1)
2014-03-03 19:00:07 motionCount 41_next:6-60
2014-03-03 18:56:55 recentStateType info
2014-03-03 19:00:07 state motion
Helper:
mId 005D
rxType 28
Io:
newChn +20AD1B,00,01,1E
nextSend 1393869607.55117
Prt:
bErr 0
sProc 0
sleeping 1
Rspwait:
Q:
qReqConf
qReqStat
Role:
chn 1
dev 1
Rpt:
IO HMLAN1
flg A
ts 1393869607.4664
ack:
HASH(0x13bb4d8)
16800223A6D720AD1B01015400
HASH(0x13bb4d8)
16800223A6D720AD1B0101C800
Rssi:
At_hmlan1:
avg -64
cnt 1
lst -64
max -64
min -64
Attributes:
IODev HMLAN1
actCycle 000:10
actStatus alive
autoReadReg 4_reqStatus
expert 2_full
firmware 1.6
model HM-Sen-MDIR-O
peerIDs 00000000,
room Außen
serialNr KEQ0195919
subType motionDetector
hm??? Verstehe ich nicht.
Da muss man sich wohl herantasten.
Du könntest "BM_Terasse:brightness" gegen "BM_Terasse:state" ersetzen und schauen, ob er das schluckt. Macht jetzt hier keinen Sinn, aber man kann erkennen, ob es am Reading selbst liegt.
Gruß
Damian
Mag er auch nicht.
ERROR:
Usage: define notify IF: unknown reading: BM_Terasse:state
Der ERROR kommt ständig. Auch wenn ich nen anderes Device incl. Reading nehme, kommt der Fehler?!?
Zitat von: Michi240281 am 03 März 2014, 19:38:52
Mag er auch nicht.
ERROR:
Usage: define notify IF: unknown reading: BM_Terasse:state
dubios???
Welche Meldung kommt, wenn du in der Commandozeile eingibst:
IF (1) ([BM_Terasse:brightness])
ansonsten, mache bitte noch mal list BM_Terasse_Motion, vielleicht ist da noch ein Leerzeichen zu viel.
Gruß
Damian
Zitat von: Damian am 03 März 2014, 19:48:41
Welche Meldung kommt, wenn du in der Commandozeile eingibst:
IF (1) ([BM_Terasse:brightness])
Unknown command 45, try help.
Zitat von: Michi240281 am 03 März 2014, 19:50:18
Unknown command 45, try help.
ok, das ist schon ein gutes Zeichen, dann ist der Fehler in der Definition des Notifys drin.
Dann kopiere 1:1 das, was du eingibst für deinen Notify und poste es hier.
Gruß
Damian
Genau wie du es gepostet hast habe ich es eingefügt:
define BM_Terasse_Motion notify BM_Terasse:motion.*
IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90, define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})
Ich habe beim mir den Fall genauso mit einem Notify und einem dummy nachgestellt - es funktioniert.
Ich kann den Fehler provozieren, wenn ich [BM_Terrasse: brightness] oder [BM_Terrasse:brightness ] eingebe, also vor oder hinter brightness ein Leerzeichen eingebe.
Es muss ein Leerzeichen vor oder hinter brightness bei einem der beiden Angaben im Notify bei dir drin sein, denn grundsätzlich funktioniert es, weil IF (1) ([BM_Terrasse:brightness]) den korrekten Wert "45" liefert.
Gruß
Damian
Ok, ich verstehe!
Nur da ist dummerweise kein Leerzeichen! :(
Ich kopiere nochmal hier rein:
define BM_Terasse_Motion notify BM_Terasse:motion.*
IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90, define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})
OK, dann jetzt noch mal mit Paste und Copy um sicher zu gehen - den Fehler werden wir schon einkreisen.
Was macht in die Kommandozeile kopiert:
IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90)
wenn es keinen Unknown-Fehler bringt, dann den zweiten Teil in die Kommandozeile kopieren:
IF (1) (set Lampe_Terasse 100 90, define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})
Gruß
Damian
Also:
Beide Befehlszeilen in die Kommandozeile und es folgt kein Fehler. Habe den notify nun auch endlich einfügen können, es waren 2 Leerzeichen vor dem IF.
Nur leider tut der notify nix! Also die Lampe wird nicht eingeschaltet!
Und dann hätte ich noch ne Frage, falls ich ihn irgendwann zum Laufen bekomme: Wie bekomme ich denn dann den letzten Wert wieder hergestellt für die Lampe? So wie ich das verstehe, nimmt die Lampe nach dem Ausschalten den Wert des Readings [BM_Terasse:brightness] an, aber es soll ja der Wert von der Lampe angenommen werden, die diese hatte, bevor das notify ausgelöst wurde.
Soooooooooooooooo,
der notify läuft!!!!! :)
Hiermit:
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse on,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})
Nur wie in meinem vorherigen Post, wird nach 90 Sekunden die Lampe_Terasse mit dem Helligkeitswert des BM gefüttert. So macht das aber keinen Sinn und war ja auch garnicht gewünscht. Ich möchte dass die Lampe den Wert wieder annimmt, den sie hatte, bevor der Notify die Lampe auf 100% gesetzt hat. Ne Idee? Hattest in deinem ersten Post ja geschrieben dass es einfach umsetzbar wäre?!?
Was ich nicht verstehe: Wenn ich den Notify so umbaue:
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse on,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[Lampe_Terasse:state]})
geht er wieder nicht. Warum das denn? Ich sage doch hiermit: Wenn Bewegung erkannt wird und brightness <100 ist, dann mache die Lampe an. Nach 90 Sekunden nehme den Wert vom Reading Lampe_Terasse:state an. Oder nicht??????
Zitat von: Michi240281 am 03 März 2014, 23:03:19
Soooooooooooooooo,
der notify läuft!!!!! :)
Hiermit:
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse on,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[BM_Terasse:brightness]})
Nur wie in meinem vorherigen Post, wird nach 90 Sekunden die Lampe_Terasse mit dem Helligkeitswert des BM gefüttert. So macht das aber keinen Sinn und war ja auch garnicht gewünscht. Ich möchte dass die Lampe den Wert wieder annimmt, den sie hatte, bevor der Notify die Lampe auf 100% gesetzt hat. Ne Idee? Hattest in deinem ersten Post ja geschrieben dass es einfach umsetzbar wäre?!?
Der Code macht nichts anderes, als dein vorheriger in Perl. Denn du hast dir dort genau den Wert gemerkt, der nach dem notify im Reading steht, um ihn 1,5 Minuten später zu setzen und dein jetziger Einzeiler macht nichts anderes: Wenn Motion ausgelöst wird der aktuelle Wert, sofern er kleiner 100 ist z. B. 40 anderthalb Minuten später wieder gesetzt.
Gruß
Damian
Ne, da hatte ich mir aber den Wert von "Lampe_Terasse" gemerkt, nicht den Wert von brightness!!!!!!!!!!!
Macht ja keinen Sinn, die Lampe mit dem brightness Wert, der vom Bewegungsmelder kommt zu füttern! Ich möchte ja, dass die Lampe wieder den Wert annimmt, den sie hatte, bevor der Notify ausgelöst wurde!
Was ich nicht verstehe: Wenn ich das 2. [BM_Terasse:brightness] z.B. durch [Lampe_Terasse:level] ersetze, macht der notify die Lampe erst garnicht an. Wieso das denn?
Zitat von: Michi240281 am 03 März 2014, 23:23:36
Ne, da hatte ich mir aber den Wert von "Lampe_Terasse" gemerkt, nicht den Wert von brightness!!!!!!!!!!!
Macht ja keinen Sinn, die Lampe mit dem brightness Wert zu füttern! Ich möchte ja, dass die Lampe wieder den Wert annimmt, den sie hatte, bevor der Notify ausgelöst wurde!
Was ich nicht verstehe: Wenn ich das 2. [BM_Terasse:brightness] z.B. durch [Lampe_Terasse:level] ersetze, macht der notify die Lampe erst garnicht an. Wieso das denn?
Du hast recht - habe ich gerade auch gesehen.
Wenn der Wert der Lampe im reading "state" steht, dann könntest du [Lampe_Terasse:state] im define angeben. Was steht den im Level-Reading drin?
Gruß
Damian
Ja der Wert steht da drin, in %! Man könnte auch das reading "level" nehmen. Allerdings weiß ich nicht, ob der sich dann den Wert von 90 Sekunden vorher merkt?!?
Und was ich halt nicht verstehe: Ich habe das schon ausgetauscht, und zwar so:
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[Lampe_Terasse:state]})
Doch dann tut der Notify garnix!! Nur wenn der hintere Ausdruck auch [BM_Terasse:brightness] lautet, arbeitet das notify!
@ Elektrolurch: Hast du ne Idee, warum in deiner Variante der letzte Wert nicht reingeschrieben wird? Es existiert wie gesagt ein reading namens "AlterWert" welches auch tatsächlich den letzten Wert hat, und es kommt dann auch ein "set_", doch dann geht die Lampe doch aus. Es sieht so aus, als würde da direkt wieder ein off kommen. Im EventMonitor sieht man aber kein command dafür.
Zitat von: Michi240281 am 03 März 2014, 23:42:31
Und was ich halt nicht verstehe: Ich habe das schon ausgetauscht, und zwar so:
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse {[Lampe_Terasse:state]})
Doch dann tut der Notify garnix!! Nur wenn der hintere Ausdruck auch [BM_Terasse:brightness] lautet, arbeitet das notify!
Bei den Tests musst du natürlich 90 Sekunden warten, bis du den nächsten Motion-Event auslöst, sonst existiert der define at noch und kann nicht neu definiert werden. Ansonsten kannst du innerhalb von 90 Sekunden schauen, was unter Lampe_Terasse_at steht, denn das ist das set Kommando welches aufgelöst wurde und nach 90 Sekunden ausgeführt wird.
Gruß
Damian
Ursprünglich ging ich nur von Zahlen im Reading aus, da wären die geschweifte Klammern nicht schlimm, die braucht man allerdings nur, wenn man beim IF vor der Ausführung des FHEM-Befehls hier der set-Befehl noch etwas in Perl berechnen will, damit sind die geschweiften Klammern in deinem Fall eigentlich überflüssig, im Gegenteil sogar, da beim Reading state offenbar auch der Zustand on, off drin stehen wird, kann der Perl-Parser damit nichts anfangen und dürfte im Log eine Fehlermeldung bringen. Ebenso verhält es sich mit dem Prozentzeichen.
Es reicht also einfach die geschweiften Klammern zu entfernen.
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse [Lampe_Terasse:state])
So wird bei set Lampe_Terasse ..., genau das genommen, was im Reading state steht. Alternativ kannst du das Gleiche mit Reading-level machen. Wenn dort Prozentzeichen vorkommt, dann wird das auch an set weiter gegeben, in der Hoffnung dass dein Device damit was anfangen kann. Du kannst aber auch im Reading mit :d nach Zahlen filtern, dann würde vom Reading-level nur die Zahl genommen. Der Code sieht dann so aus:
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 100) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse [Lampe_Terasse:level:d])
Ich hoffe, dass du nach der gestrigen Odyssee langsam zum Erfolgserlebnis kommst. :)
Gruß
Damian
Hallo Damian,
besten Dank für deine Antwort! :)
Tatsächlich war es gestern ziemlich langwierig und am Ende war das gewünschte Ergebnis noch nicht da, leider.
Das Reading "state" von Lampe_Terasse kann die Werte "off, 1-99% und on" annehmen. Beim Reading level steht nur 0-100% drin. Da es wie gesagt ein Dimmer ist, würde ich das Reading "level" bevorzugen.
Bin schon gespannt, ob das so hinhaut! Werde es heute Abend direkt testen.
Wenn das grundsätzlich so klappt, ist nur noch die Frage, zu welchem Zeitpunkt er dann den Wert des Readings ausliest. Das müsste ja wie gesagt passieren, bevor das Notify die Lampe auf 100% setzt. Sonst machts ja keinen Sinn.
Danke und Gruß
Hallo Michi,
eine kleine Nebenbemerkung zum Notify "notify BM_Terasse:motion.*". Ich würde das ".*" am Ende weglassen, sonst wird dein Notify immer dreimal getriggert (je Event des BM). Aus dem Gedächtnis meldet der BM nämlich z.B. immer:
10:36:03 BM_Terasse motion
10:36:03 BM_Terasse motion on (to HMLAN...)
10:36:03 BM_Terasse motion Count ....
Mit ".*" regiert das Notify auf alle drei Events, ohne nur auf das erste.
Hatte mich bei mir immer gewundert, dass das Kommando an die Lampe immer dreimal rausgeht. Vielleicht bringt das bei deinem Vorhaben auch die Dinge durcheinander.
Hope that helps...
Zitat von: Deudi am 04 März 2014, 10:37:18
Hallo Michi,
eine kleine Nebenbemerkung zum Notify "notify BM_Terasse:motion.*". Ich würde das ".*" am Ende weglassen, sonst wird dein Notify immer dreimal getriggert (je Event des BM). Aus dem Gedächtnis meldet der BM nämlich z.B. immer:
10:36:03 BM_Terasse motion
10:36:03 BM_Terasse motion on (to HMLAN...)
10:36:03 BM_Terasse motion Count ....
Mit ".*" regiert das Notify auf alle drei Events, ohne nur auf das erste.
Hatte mich bei mir immer gewundert, dass das Kommando an die Lampe immer dreimal rausgeht. Vielleicht bringt das bei deinem Vorhaben auch die Dinge durcheinander.
Hope that helps...
Vielen Dank für den Hinweis! Werde ich direkt umsetzen! :)
Zitat von: Michi240281 am 04 März 2014, 10:14:43
Wenn das grundsätzlich so klappt, ist nur noch die Frage, zu welchem Zeitpunkt er dann den Wert des Readings ausliest. Das müsste ja wie gesagt passieren, bevor das Notify die Lampe auf 100% setzt. Sonst machts ja keinen Sinn.
Dass Level-Zustand vor dem Setzen auf 100% genommen wird, da bin ich mir ziemlich sicher.
Wenn du, wie Deudi dein Motion-Notify so filterst, dass bei einer Bewegung nur einmal dein notify auslöst, dann wird jeweils nur einmal die IF-Abfrage ausgeführt und genau zu dem Zeitpunkt, also bevor set Lampe 100 90 ausgeführt wird, wird das Reading-Level dem define übergeben. Das kannst du, wie schon geschrieben, auch sehen, wenn du innerhalb von 90 Sekunden dir den at-define anschaust.
Das es so ist, müsste ich eigentlich genau wissen - hab´s ja schließlich programmiert.
Gruß
Damian
Eine Verständnisfrage für mich als absoluten Programmier Laien. Du willst doch, bevor die Lampe auf 100% geht, wissen welchen Wert sie hat. Bzw. ob der Wert kleiner als 100% ist. Stimmt das so? Wenn dem so ist, müsste nach dem IF Befehl nicht Lampe_Terasse:level oder so ähnlich stehen?
Ansonsten wird meiner Meinung nach ja nur Helligkeitsert des Bewegungsmelders abgefragt. Der ja völlig irrelevant ist. Der muss ja nur Bewegung melden.
@Damian: Vielen Dank für deine Mühen! Bin schon gespannt, das heute Abend auszuprobieren und freu mich riesig, wenns hinhaut!
@Dafex: Ne das ist so nicht richtig. Zum einen will ich die Lampe ja nur bei Dunkelheit einschalten lassen, daher die Abfrage des "brightness"-Wertes. Zusätzlich möchte ich jedoch folgendes erreichen: Angenommen ich habe die Lampe vorher per Wanddimmer auf 30% eingeschaltet, um eben eine "Schummerbeleuchtung" zu erzeugen. Jetzt läuft draußen jmd rum und die Lampe wird für 90 Sekunden auf 100% gesetzt. Soweit so gut. Nach den 90 Sekunden würde die Lampe aber dann aus gehen. Ich möchte jedoch, dass die Lampe dann wieder die 30% annimmt, die vorher ja auch (von mir) eingestellt wurden. Alles verstanden?
Mann o Mann!
Es geht immer noch nicht! Das Reading wird korrekt übernommen und es gibt auch hinterher ein "set", aber die Lampe geht dann trotzdem aus. Hier mal ein Auszug aus dem Eventmonitor:
2014-03-04 17:58:59.412 CUL_HM Lampe_Terasse level: set_27
2014-03-04 17:58:59.423 CUL_HM Lampe_Terasse set_27
2014-03-04 17:58:59.445 Global global DELETED Lampe_Terasse_at
2014-03-04 17:58:59.647 CUL_HM Lampe_Terasse level: 99.5 %
2014-03-04 17:58:59.647 CUL_HM Lampe_Terasse pct: 99.5
2014-03-04 17:58:59.647 CUL_HM Lampe_Terasse deviceMsg: 99.5 % (to HMLAN1)
2014-03-04 17:58:59.647 CUL_HM Lampe_Terasse chn:99.5 % phys:100 %
2014-03-04 17:58:59.647 CUL_HM Lampe_Terasse timedOn: running
2014-03-04 17:58:59.647 CUL_HM Lampe_Terasse dim: down:99.5 %
2014-03-04 17:58:59.647 CUL_HM Lampe_Terasse overload: aus
2014-03-04 17:58:59.647 CUL_HM Lampe_Terasse overheat: aus
2014-03-04 17:58:59.647 CUL_HM Lampe_Terasse reduced: aus
2014-03-04 17:59:04.582 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_01 off
2014-03-04 17:59:04.582 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_01 phyLevel: 0 %
2014-03-04 17:59:04.590 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_02 off
2014-03-04 17:59:04.590 CUL_HM CUL_HM_HM_LC_Dim1TPBU_FM_1D66E8_Sw1_V_02 phyLevel: 0 %
2014-03-04 17:59:04.601 CUL_HM Dimmer_Terasse chn:set_100 phys:0 %
2014-03-04 17:59:04.601 CUL_HM Dimmer_Terasse phyLevel: 0 %
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse phyLevel: 0 %
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse level: 0 %
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse pct: 0
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse deviceMsg: aus (to HMLAN1)
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse aus
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse timedOn: aus
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse dim: stop:aus
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse overload: aus
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse overheat: aus
2014-03-04 17:59:04.633 CUL_HM Lampe_Terasse reduced: aus
Hast du noch ne Idee? Habe den notify jetzt so:
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 400) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse [Lampe_Terasse:level])
Habe in den 90 Sekunden ins at geschaut und da stand auch drin ".....set 27%". Das komische ist, wenn ich in die Kommandozeile "set Lampe_Terasse 27%" eingebe, funktioniert es! Was kann denn das bloß sein? :(
Ok ich habs! :) :) :)
Man muss, wie du auch geschrieben hast, das % rauswerfen. MIt folgendem Notify geht nun alles wie gewünscht!
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 400) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse [Lampe_Terasse:level:d])
Vielen vielen Dank für deine Hilfe!!!!!!!!! Ohne dich hätte ich es nie hinbekommen!!
Wenn ich jetzt noch zusätzliche Aktionen ausführen möchte, könnte ich die einfach mit , getrennt hinten dranhängen, richtig?
Also z.B.:
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 400) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse [Lampe_Terasse:level:d],set Lampe on)
?
Muss nach dem Komma eigentlich ein Leerzeichen? Habe ich davor ja auch nicht (vor dem define), oder ist es egal?
Zitat von: Michi240281 am 04 März 2014, 18:24:07
Ok ich habs! :) :) :)
Man muss, wie du auch geschrieben hast, das % rauswerfen. MIt folgendem Notify geht nun alles wie gewünscht!
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 400) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse [Lampe_Terasse:level:d])
Vielen vielen Dank für deine Hilfe!!!!!!!!! Ohne dich hätte ich es nie hinbekommen!!
Wenn ich jetzt noch zusätzliche Aktionen ausführen möchte, könnte ich die einfach mit , getrennt hinten dranhängen, richtig?
Also z.B.:
define BM_Terasse_Motion notify BM_Terasse:motion.* IF ([BM_Terasse:brightness] < 400) (set Lampe_Terasse 100 90,define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse [Lampe_Terasse:level:d],set Lampe on)
?
Muss nach dem Komma eigentlich ein Leerzeichen? Habe ich davor ja auch nicht (vor dem define), oder ist es egal?
Ich würde allerdings statt set Lampe_Terasse 100 90 set Lampe_Terasse 100 oder set Lampe_Terasse on angeben, denn durch geringe Verzögerungen könnten sich die Vorgänge leicht überholen und dann wird der Timer von 90 dir evtl. die kurz vorher zurückgesetzte Lampe ausschalten.
Du kannst beliebig viele FHEM-Befehle mit Komma getrennt angeben, Leerzeichen sind egal.
Schön, dass es noch geklappt hat und ich finde viel eleganter, weil viel kürzer, als deine erste, im Vergleich hierzu umständliche, Lösung. :)
Gruß
Damian
Das mit dem 100 90 habe ich extra so gewählt, weil dadurch die Lampe dann hochdimmt. Man kann dann sogar als 3. Parameter noch die Hochdimmrampe bestimmen, das brauche ich aber nicht. Ein einfaches on schaltet die Lampe direkt ein. Was ich auch sehr cool finde: Das at dimmt die Lampe dann auch wieder runter. Richtig gut!!
Also zusammengefasst: TOP Funktion von dir und super Service zugleich!!!!!!! Bin begeistert! :)
Zitat von: Michi240281 am 04 März 2014, 19:35:02
Das mit dem 100 90 habe ich extra so gewählt, weil dadurch die Lampe dann hochdimmt.Also zusammengefasst: TOP Funktion von dir und
OK.
Und denke noch daran deinen notify eindeutig zu machen, wie Deudi vorgeschlagen hatte, sonst wird IF, bei jeder Bewegung, drei mal ausgeführt.
Gruß
Damian
So, sitz jetzt vor meinem Schreibtisch Rechner. Erschreckend was Tapatalk so alles verschluckt!
Zitat von: Michi240281 am 04 März 2014, 13:29:26@Dafex: Ne das ist so nicht richtig. Zum einen will ich die Lampe ja nur bei Dunkelheit einschalten lassen, daher die Abfrage des "brightness"-Wertes. Zusätzlich möchte ich jedoch folgendes erreichen: Angenommen ich habe die Lampe vorher per Wanddimmer auf 30% eingeschaltet, um eben eine "Schummerbeleuchtung" zu erzeugen. Jetzt läuft draußen jmd rum und die Lampe wird für 90 Sekunden auf 100% gesetzt. Soweit so gut. Nach den 90 Sekunden würde die Lampe aber dann aus gehen. Ich möchte jedoch, dass die Lampe dann wieder die 30% annimmt, die vorher ja auch (von mir) eingestellt wurden. Alles verstanden?
Ja, dann hab ich dich schon richtig verstanden, nur ich hab mich falsch ausgedrückt. Ich meinte nicht den IF Befehl selber, sondern das
define Lampe_Terasse_at at +00:01:30 set Lampe_Terasse [BM_Terasse:brightness])
nach dem IF Befehl.
Ich war nur irritiert wegen dem [BM_Terasse:brightness] in deinem set Befehl. Das hast Du ja jetzt durch [Lampe_Terasse:level:d] ersetzt.
Alles passiert! .* hab ich rausgenommen! Alles prima!
Vielen Dank nochmal an alle!