Hi Gemeinde,
benötige eure Expertise.
zur Steuerung meines MiLight moduls via Bewegungsmelder komme ich nicht weiter.
das hier funktioniert:
define n_bewegung notify ZW_Multisensor1:basicSet:.255 set testLED2 hsv 4400,0,30;;define at_bewegung at +00:01 set testLED2 off
"hsv 4400,0,30" soll durch eine Variable ersetzt werden, weil ich je nach Lichtverhältnissen und Tageszeit die Lichtfarbe so wie die Helligkeit verändere.
Durch meine Variable "lichtwert" muss ich Perl einsetzen.
folgendes funktioniert wenn ich es in die Befehlszeile eingebe:
{fhem("set testLED2 ".Value("lichtwert"))}
wenn ich aber:
define n_bewegung notify (ZW_Multisensor1:basicSet:.255) {fhem("set testLED2 ".Value("lichtwert")); ("define at_bewegung at +00:00:30 set testLED2 off") if (ReadingsVal ("ZW_Multisensor1","luminance",0) < 50)}
versuche dann scheitere ich kläglich obwohl ich schon so viel varianten versucht habe. Was gelingt ist die Variable an testLED2 zuübergeben aber der "at" und "ReadingsVal" wird nicht ausgeführt.
wie lautet der syntax richtig?
bitte um Eure Unterstützung.
danke Andre
du musst nicht. ach perl wechseln. [device:reading] reicht.
ansonsten ist wenn vorhanden on-for-timer oder sleep kürzer.
Zitat von: justme1968 am 29 September 2016, 14:14:28
du musst nicht. ach perl wechseln. [device:reading] reicht.
ansonsten ist wenn vorhanden on-for-timer oder sleep kürzer.
-wie soll denn bei einem hsv Wert noch on-for-timer oder sleep mit dran gehangen werden?
-das mit dem [device:reading] versteh ich nicht? set testLED2 [lichtwert:?????] geht doch nicht.
bitte mal in meinen code einbauen.
danke Andre
dein device heisst lichtwert und das reading heisst vermutlich state. also [lichtwert:state]. schau in der detail ansicht nach.
ob on-for-timer oder ähnliches geht hängt von deinem device ab. ansonsten sleep. das ist ein eigenes fhem kommando.
also z.b. etwa so:define n_bewegung notify ZW_Multisensor1:basicSet:.255 set testLED2 hsv [lichtwert:state];; sleep 60 set testLED2 off
je nach dem wie oft dein bewegungsmelder sendet musst du das sleep noch benennen und am anfang des notify löschen damit beim mehrere meldungen in unter einer minute kein blödsinn passiert.
gruss
andre
Zitat von: justme1968 am 29 September 2016, 15:23:42
dein device heisst lichtwert und das reading heisst vermutlich state. also [lichtwert:state]. schau in der detail ansicht nach.
ob on-for-timer oder ähnliches geht hängt von deinem device ab. ansonsten sleep. das ist ein eigenes fhem kommando.
also z.b. etwa so:define n_bewegung notify ZW_Multisensor1:basicSet:.255 set testLED2 hsv [lichtwert:state];; sleep 60 set testLED2 off
je nach dem wie oft dein bewegungsmelder sendet musst du das sleep noch benennen und am anfang des notify löschen damit beim mehrere meldungen in unter einer minute kein blödsinn passiert.
gruss
andre
das klappt nicht: Fhem sagt:
n_bewegung return value: Usage: set testLED2 hsv <h(3000=Warm..6500=Cool)>,<s(-)>,<v(0..100)> [seconds(0..x)] [flags(q=don't clear queue)]
lichtwert = 4400,0,50
und was noch fehlt ist 'if (ReadingsVal ("ZW_Multisensor1","luminance",0) < 50)}'
sorry, aber ich raff es nicht
andre
Zitat von: ischgucke am 29 September 2016, 17:22:01
und was noch fehlt ist 'if (ReadingsVal ("ZW_Multisensor1","luminance",0) < 50)}'
Ich bin ein Freund von DOIF.
Zitat von: igami am 29 September 2016, 17:24:52
Ich bin ein Freund von DOIF.
ja gefällt mir auch wenn ich mir das so durchlese, aber so richtig komm ich noch nicht klar. Wenn du ne idee hast das zu richten - gerne:
define bewegung_buero DOIF ([ZW_Multisensor1:basicSet] eq "255" and [ZW_Multisensor1:luminance] < "60") (set testLED2 on-for-timer 62 ;; set testLED2 ct 3350 ;; set testLED2 dim 50)
bei set testLED2 sollte dann auch die variable 'lichtwert' über geben werden. Bitte kannst du mir helfen?
hier noch:
Internals:
CFGFN
NAME lichtwert
NR 7394
STATE 4400,0,50
TYPE dummy
Readings:
2016-09-29 17:17:08 state 4400,0,50
Attributes:
Zitat von: ischgucke am 29 September 2016, 17:52:20
ja gefällt mir auch wenn ich mir das so durchlese, aber so richtig komm ich noch nicht klar. Wenn du ne idee hast das zu richten - gerne:
Bitte mal mit Perl Vergleichsoperatoren beschäftigen. Es gibt Unterschiede zwischen Text und Zahlen.
Zitat von: ischgucke am 29 September 2016, 17:52:20
bei set testLED2 sollte dann auch die variable 'lichtwert' über geben werden. Bitte kannst du mir helfen?
Das hat andre schon weiter oben geschrieben.
Ok Danke euch.
ich habe es nicht geschafft den "off" Befehl mit in eine Zeile zu packen und löse das nun über einen 2. Notify.
so klappt es jetzt:
bewegung_buero DOIF ([ZW_Multisensor1:basicSet] eq "255" and [ZW_Multisensor1:luminance] < "60") (set testLED2 [lichtwert:state])