FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: noice am 12 März 2015, 22:44:41

Titel: eine Taste mehrere Befehle pro Tastendruck
Beitrag von: noice am 12 März 2015, 22:44:41
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
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: nesges am 12 März 2015, 22:47:24
Schau dir mal http://fhem.de/commandref.html#sequence an
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: noice am 12 März 2015, 22:53:50
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?
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: nesges am 13 März 2015, 09:09:10
..oder taste 1, 1 und 1 - jedefalls verstehe ich das Beispiel unter triggerPartial so. Aber ich verwende das Modul nicht.
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: noice am 13 März 2015, 19:38:59
Ich teste es mal .. danke für den tipp
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: noice am 16 März 2015, 22:43:31
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...
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: nesges am 16 März 2015, 23:35:02
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?
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: noice am 16 März 2015, 23:40:27
Im event monitor steht nur FS20_074a06:toggle .... mehr nicht
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: AHA1805 am 18 März 2015, 07:32:32
Würde das mit einem Zähler lösen

Gesendet von Tapatalk

Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: AHA1805 am 18 März 2015, 07:33:05
Kann ich dir jetzt abend schicken, bin nur im Moment unterwegs und mit Tag ist das schlecht

Gesendet von Tapatalk

Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: AHA1805 am 18 März 2015, 09:22:23
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

Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: marvin78 am 18 März 2015, 11:28:10
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);;\
\
}
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: noice am 18 März 2015, 20:19:00
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:
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: AHA1805 am 18 März 2015, 20:53:33
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
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: noice am 18 März 2015, 21:11:25
stimmt das wars :-)
DANKE
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: AHA1805 am 18 März 2015, 21:21:42
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
Titel: Antw:eine Taste mehrere Befehle pro Tastendruck
Beitrag von: noice am 18 März 2015, 21:38:30
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);

}