hallo Leute,
ich zerbrech mir gerade den kopf über folgende Funktion:
ich möchte auf einer 4 tasten fernbedienung eine Taste folgendermaßen programmieren - 1. Tastendruck = ein, 2. Tastendruck = Rot, 3. Tastendruck = blau, 4. Tastendruck = grün, 5. Tastendruck = aus
ist nur ein Beispiel.
Das ganze soll mit einem FS20 Sender und dem wifirgb modul realisiert werden.
bei mir fehlt es schon an den knowhow das umzusetzen .. IF? DOIF?
das Forum hab ich schon bemüht nur leider weiss ich nicht nach was genau ich suchen soll .. wenn wer einen Link auf einen Tread hat immer her damit ..
Danke
Schau dir mal http://fhem.de/commandref.html#sequence an
nee ich denke das ist nicht was ich suche .. das ist ja eher .. ich muss taste 1, 2 und 3 innerhalb einer gewissen zeit drücken damit die lampe an geht oder?
..oder taste 1, 1 und 1 - jedefalls verstehe ich das Beispiel unter triggerPartial so. Aber ich verwende das Modul nicht.
Ich teste es mal .. danke für den tipp
Also das wars nicht ...
nur hab ich mir ein Define zusammengebastelt allerding ohne funktion ...
Da ich nicht wirklich der Fhem freak bin bitte ich um hilfe ...
Woran kann es liegen?
FS20_074a06:toggle {
if(ReadingsVal("WZ_LED_Stripe", "RGB", 0) eq "000000") {
fhem("set WZ_LED_Stripe RGB FFFFFF");
}
elsif {
if(ReadingsVal("WZ_LED_Stripe", "RGB", 0) eq "FFFFFF") {
fhem("set WZ_LED_Stripe RGB FF0000");
}
elsif {
if(ReadingsVal("WZ_LED_Stripe", "RGB", 0) eq "FF0000") {
fhem("set WZ_LED_Stripe RGB 00FF00");
}
elsif {
if(ReadingsVal("WZ_LED_Stripe", "RGB", 0) eq "00FF00") {
fhem("set WZ_LED_Stripe RGB 0000FF");
}
}}}}
also das notify wird laut log nicht abgearbeitet...
Ich sehe grade nicht, was das mit dem ursprünglichen Problem zu tun hat. Deine elsif-Deklaration ist zudem syntaktisch falsch (http://perldoc.perl.org/perlsyn.html#Compound-Statements) und macht logisch keinen Sinn (meinst du vielleicht einfach nur "else"?). Davon abgesehen: Wenn das notify (das du nicht vollständig zeigst) nicht ausgeführt wird, liegt das idR daran, dass das Event nicht aufgetreten ist. Taucht FS20_074a06:toggle denn im Eventmonitor auf? Wie sieht die Eventmonitor-Zeile dazu aus?
Im event monitor steht nur FS20_074a06:toggle .... mehr nicht
Würde das mit einem Zähler lösen
Gesendet von Tapatalk
Kann ich dir jetzt abend schicken, bin nur im Moment unterwegs und mit Tag ist das schlecht
Gesendet von Tapatalk
Hallo Mirko
test das mal:
Kannst beliebig erweitern, würde Dir aber raten es im DEF über das WEB Interface anzupassen.
(Leider geht das Codesymbole nicht :-()
define itaster dummy
attr itaster room Light
define ntf_taster notify FS20_074a06:toggle {\
\
my $icount = Value("itaster");;\
$icount += 1;;\
if ($icount > 5) {$icount = 0}\
\
Log 1 , "evt_toggle $icount";;\
\
if ($icount == 0) \
{\
fhem("set WZ_LED_Stripe off")\
} else {\
fhem("set WZ_LED_Stripe:FILTER=STATE=off on")\
} ;;\
if ($icount == 1) {fhem("set WZ_LED_Stripe rgb 0000FF")};;\
if ($icount == 2) {fhem("set WZ_LED_Stripe rgb 000022")};;\
if ($icount == 3) {fhem("set WZ_LED_Stripe rgb 000033")};;\
if ($icount == 4) {fhem("set WZ_LED_Stripe rgb 000004")};;\
if ($icount == 5) {fhem("set WZ_LED_Stripe rgb 000055")};;\
\
fhem("set itaster " . $icount);;\
\
}
attr ntf_taster room Light
define taster dummy
attr taster room Light
attr taster webCmd toggle
... jetzt auch im Code TAG ...
komisch von unterwegs via Tethering funktioniert es nicht ???
Gruß Hannes
Wenn das "code-Symbol nicht geht", kann man die tags auch selbst schreiben...ich mache das mal für dich
define itaster dummy
attr itaster room Light
define ntf_taster notify FS20_074a06:toggle {\
\
my $icount = Value("itaster");;\
$icount += 1;;\
if ($icount > 5) {$icount = 0}\
\
Log 1 , "evt_toggle $icount";;\
\
if ($icount == 0) \
{\
fhem("set WZ_LED_Stripe off")\
} else {\
fhem("set WZ_LED_Stripe :FILTER=STATE=off on")\
} ;;\
if ($icount == 1) {fhem("set WZ_LED_Stripe rgb 0000FF")};;\
if ($icount == 2) {fhem("set WZ_LED_Stripe rgb 000022")};;\
if ($icount == 3) {fhem("set WZ_LED_Stripe rgb 000033")};;\
if ($icount == 4) {fhem("set WZ_LED_Stripe rgb 000004")};;\
if ($icount == 5) {fhem("set WZ_LED_Stripe rgb 000055")};;\
\
fhem("set itaster " . $icount);;\
\
}
also aus geht das licht schon mal ..
aber leider lässt es sich nicht schalten.
Folgenden Fehler bekomm ich im log:
2015.03.18 20:18:11 1: evt_toggle 3
2015.03.18 20:18:11 3: set WZ_LED_Stripe :FILTER=STATE=off on : unknown command (:FILTER=STATE=off): choose one of on off dim dimup dimdown HSV RGB sync pair unpair
2015.03.18 20:18:11 3: WZ_LED_Stripe set HSV 120, 100, 100 with ramp: 0, flags:
2015.03.18 20:18:14 1: evt_toggle 4
2015.03.18 20:18:14 3: set WZ_LED_Stripe :FILTER=STATE=off on : unknown command (:FILTER=STATE=off): choose one of on off dim dimup dimdown HSV RGB sync pair unpair
2015.03.18 20:18:14 3: WZ_LED_Stripe set HSV 240, 100, 100 with ramp: 0, flags:
2015.03.18 20:18:16 1: evt_toggle 5
2015.03.18 20:18:16 3: set WZ_LED_Stripe :FILTER=STATE=off on : unknown command (:FILTER=STATE=off): choose one of on off dim dimup dimdown HSV RGB sync pair unpair
2015.03.18 20:18:16 3: WZ_LED_Stripe set HSV 240, 0, 0 with ramp: 0, flags:
Hallo Mirko,
bei set WZ_LED_Stripe:FILTER=STATE=off on"
hat sich zwischen WZ_LED_Stripe und :FILTER ein Leerzeichen eingeschlichen :-\
Habe oben den Code korrigiert.
Gruß Hannes
stimmt das wars :-)
DANKE
Hallo Mirko,
hier die Version, welche sich die letzte Farbe merkt, wenn zwischen der Sequenz ausgeschaltet wurde.
FS20_074a06:toggle {
my $icount = Value("itaster");
Log 4 , "ntf_name Counter:$icount";
if ($icount >= 5) {$icount = 0}
if (Value("WZ_LED_Stripe") eq "on")
{
if ($icount == 0)
{
fhem("set WZ_LED_Stripe off")
} else {
$icount += 1;
} ;
} else {
if ($icount == 0) {$icount += 1}
fhem("set WZ_LED_Stripe on")
}
if ($icount == 1) {fhem("set WZ_LED_Stripe rgb 0000FF")};
if ($icount == 2) {fhem("set WZ_LED_Stripe rgb 000022")};
if ($icount == 3) {fhem("set WZ_LED_Stripe rgb 000033")};
if ($icount == 4) {fhem("set WZ_LED_Stripe rgb 000004")};
if ($icount == 5) {fhem("set WZ_LED_Stripe rgb 000055")};
fhem("set itaster " . $icount);
}
Den Notify ntf_taster im WEB Interface öffnen und auf DEF klicken.
Hier kannst Du den Code einfügen, ohne den \ und doppelten ;;
Ist auch etwas übersichtliche mit Codemirror (Müstest Du auch installiert haben)
attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB codemirrorParam { "theme":"blackboard", "lineNumbers":true }
Gruß Hannes
kleine Korektur das es auch wirklich stimmt, rgb muss gross geschrieben werden:
FS20_074a06:toggle {
my $icount = Value("itaster");
Log 4 , "ntf_name Counter:$icount";
if ($icount >= 5) {$icount = 0}
if (Value("WZ_LED_Stripe") eq "on")
{
if ($icount == 0)
{
fhem("set WZ_LED_Stripe off")
} else {
$icount += 1;
} ;
} else {
if ($icount == 0) {$icount += 1}
fhem("set WZ_LED_Stripe on")
}
if ($icount == 1) {fhem("set WZ_LED_Stripe RGB 0000FF")};
if ($icount == 2) {fhem("set WZ_LED_Stripe RGB 000022")};
if ($icount == 3) {fhem("set WZ_LED_Stripe RGB 000033")};
if ($icount == 4) {fhem("set WZ_LED_Stripe RGB 000004")};
if ($icount == 5) {fhem("set WZ_LED_Stripe RGB 000055")};
fhem("set itaster " . $icount);
}