kampf mit if condition

Begonnen von layer8, 16 September 2016, 12:07:11

Vorheriges Thema - Nächstes Thema

layer8

Hallo zusammen,
ich baue gerade an meiner Beschattung. Konkret habe ich gerade das Problem, dass ich in folgender Zeile einen Fehler habe - die Condition wird einfach nicht true. Wo mache ich denn hier nen Fehler?

wz.btn.links_Btn_01:Short.* {if ({fhem("get wohnzimmer.jalousie.act.links param motor")} eq "stop:".*) {fhem("set wohnzimmer.jalousie.act.links off")}}

Evtl. hab ich da einfach noch ein Verständnisproblem. Ich hätte gerne, dass der Jalousieaktor auf off gestellt wird, falls der Taster 01 kurz gedrückt wird und der Motor gerade steht. Warum mache ich das so? Ich habe zwei Fenster, bei denen ich beide Jalousien gemeinsam fahren will, wenn in die jeweilige Richtung ein langer Tastendruck erfolgt. Bei einem kurzen Tastendruck soll nur die linke und bei zwei kurzen Tastendrucken hinter einander (sequence) soll nur die rechte Jalousie fahren. Während gefahren wird, soll ein einzelner Tastendruck, egal in welche Richtung, die Jalousien anhalten. Genau dafür brauche ich die Bedingung oben, die ich dann noch mit einem else erweitere - sobald die einfache Version mal funktioniert ;-)

Ich hoffe, ich konnte halbwegs erklären, was ich vor habe...
Danke euch fürs Lesen und Antworten!

Benni

fhem("get ...") ist hier wahrscheinlich nicht das Richtige.

Schau dir mal unter Perl-Specials die Funktionen ReadingsVal, Value und ReadingsNum an.

Wahrscheinlich kommt jetzt eh gleich wieder einer um die Ecke und empfiehlt ein DOIF  ::)

layer8

habs soweit hinbekommen, danke für den Hinweis mit ReadingsVal!
Hier meine Konfiguration:

wz.btn.links_Btn_01:Short.* {if (ReadingsVal("wohnzimmer.jalousie.act.links","motor","") !~ "stop:.*") {fhem("set wohnzimmer.jalousie.act.links stop")} else {fhem("set wohnzimmer.jalousie.act.links off")} }

Jetzt hab ich grad nur das Problem, dass beim "Doppelklick" natürlich erst mal der Einzelklick ausgeführt wird und dann der Doppelklick. Kann ich irgendwie ne Sequenz bauen, die dann greift, wenn wirklich nur einmal kurz gedrückt wird und ca 0.5 Sek kein Klick folgt?

Benni


layer8

Danke! Soweit ich das verstehe, kann ich damit alles, was mindestens "Tastendruck" - "definierbare Zeit" - "Tastendruck" ist, abfangen. Mein Problem ist, dass der erste Tastendruck eben auch schon etwas schaltet, obwohl ich vielleicht noch ein zweites Mal innerhalb von 1 sek drücke. Ich bin gerade nicht sicher, ob ich fhem dazu bringen kann, nach dem ersten Tastendruck ca. 0.5s zu warten, bevor eine Aktion ausgeführt wird...

rudolfkoenig

Ja. Sequenz fuer beide Tasten definieren, triggerPartial Attribut setzen, Eventmonitor beobachten waehrend man die Tasten drueckt.

layer8

Super! Danke für die schnelle Antwort! Ich probiers mal aus :-)