FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Michi240281 am 02 März 2014, 19:37:27

Titel: [GELÖST] Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 02 März 2014, 19:37:27
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!
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 12:01:49
Keiner ne Idee?
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Elektrolurch am 03 März 2014, 12:33:15
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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 13:01:11
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()}}}
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Elektrolurch am 03 März 2014, 14:40:14
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ß



Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 15:13:48
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.
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 16:31:58
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?
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 16:54:26
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?
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 18:16:18
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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 18:31:42
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!
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 18:55:47
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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag 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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 19:00:38
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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 19:01:30


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

Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 19:22:07
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


Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 19:38:52
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?!?
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 19:48:41
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




Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 19:50:18
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.
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 19:53:18
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

Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 20:15:36
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]})
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 20:29:22
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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 22:12:10
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]})
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 22:23:51
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


Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 22:49:11
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.
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag 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?!?

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??????
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 23:14:11
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

Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag 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, 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?
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 23:27:29
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


Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 23:42:31
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!
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 03 März 2014, 23:45:42
@ 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.
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 03 März 2014, 23:51:58
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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 04 März 2014, 08:58:59
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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 04 März 2014, 10:14:43
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ß
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag 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...
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 04 März 2014, 11:15:22
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! :)
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 04 März 2014, 11:51:54
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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: dafex am 04 März 2014, 13:08:02
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.
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 04 März 2014, 13:29:26
@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?
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 04 März 2014, 18:02:10
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? :(
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag 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?
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 04 März 2014, 18:56:02
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
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag 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. 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! :)
Titel: Antw:Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Damian am 04 März 2014, 20:55:43
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
Titel: Antw:[GELÖST] Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: dafex am 04 März 2014, 21:50:21
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 dasdefine 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.

Titel: Antw:[GELÖST] Notify Bewegungsmelder: Kombination von Schaltzuständen
Beitrag von: Michi240281 am 04 März 2014, 22:12:55
Alles passiert! .* hab ich rausgenommen! Alles prima!

Vielen Dank nochmal an alle!