Hauptmenü

(gelöst) DOIF dimmen

Begonnen von kjmEjfu, 02 September 2015, 10:59:06

Vorheriges Thema - Nächstes Thema

kjmEjfu

Hallo zusammen,

ich komme mit einer, eigentlich trivialen, Anforderung an ein DOIF nicht klar.

Und zwar möchte ich, beim Klick auf eine Taste dafür sorgen, dass eine Sonos-Box so lange die Lautstärke verringert bis man die Taste los lässt.

Das DOIF dazu sieht wie folgt aus:

([S4_Schlafzimmer.4] eq "VolDown") (set Sonos_Wohnzimmer VolumeD 5)

Zusätzlich habe ich do always als Attribut gesetzt.

Es funktioniert nun soweit, dass sich bei jedem Druck auf die Taste die Lautstärke um 5 verringert. Schon mal gut.
Halte ich die Taste aber gedrückt, verändert sich die Lautstärke auch nur einmal um 5, aber nicht wiederholt.
Was mich aber insofern wundert, da die Bedingung weiterhin erfüllt ist. Der State von S4_Schlafzimmer.4 wird erst dann von "VolDown" auf "swmEnd" umgesetzt, wenn ich die Taste los lasse. Das habe ich auch so im Event Log bestätigt bekommen.

Ich hatte die Vermutung dass eventuell das Command zu schnell ausgelöst und daher ignoriert wird. Daher habe ich auch mal testweise cmdpause auf 1 gesetzt, aber das hat auch nichts verändert.

Kann mir jemand bei meinem Denkfehler helfen?

Danke schon mal
Ejfu
Migriere derzeit zu Home Assistant

CoolTux

Ich glaube nicht das es so geht. Es kann immer nur auf ein Event reagiert werden. Und ein Event gibt es nur wenn sich was verändert.
Was Du machen kannst ist eine Schleife mit Bedingung.
Führe "set Sonos_Wohnzimmer VolumeD 5" so lange aus, so lange [S4_Schlafzimmer.4 eq "VolDown"] erfüllt ist und VolumeD > 0 ist


Grüße


Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

kjmEjfu

Ah, ich hatte es so verstanden, dass DOIF auf den Zustand reagiert und weil der sich ja nicht ändert, solange ich die Taste gedrückt halte, ...
Aber gut, war dann ein Verständnisfehler und erklärt, weshalb es so nicht funktioniert.

Werde dann mal entsprechend in den cmd-Teil des DOIFs eine Perl-Schleife einbauen und es mit dieser behandeln. Danke für den Tipp!

Viele Grüße,
Ejfu
Migriere derzeit zu Home Assistant

Puschel74

Es gab im Forum mal so eine Fragestellung und der TE hat es auch gelöst - soweit mich nicht alles täuscht.
Aber ich weiß nicht in welchem Bereich.
Quäl mal die Forumssuche ein bischen mit unterschiedlichen Stichwörtern - vielleicht wirst du ja fündig.
Ohne Gewähr - ich kann mich auch irren.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

kjmEjfu

Danke für den Hinweis!

Bin, nach hin und her mit unterschiedlichen Stichwörtern, letztlich bei http://forum.fhem.de/index.php/topic,39925.msg322153.html#msg322153 gelandet und habe dann dort einen guten Ansatz ganz ohne Schleife gefunden.

Müsste sich problemlos adaptieren lassen.

Viele Grüße,
Ejfu
Migriere derzeit zu Home Assistant

Puschel74

Tja, das leidige Thema im Forum.
Es wird nur gepostet das "es geht" aber nicht "wie es geht".
Aber gut, da seid ihr Anfänger (allgemein) auch selbst schuld - ich bitte in meinem angepinnten Beitrag sogar darum die Lösung passend zu posten.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

kjmEjfu

Zitat von: Puschel74 am 03 September 2015, 19:23:41
Tja, das leidige Thema im Forum.
Es wird nur gepostet das "es geht" aber nicht "wie es geht".

ich habe ja gar nicht behauptet, dass es geht. Sondern nur, dass sich der Ansatz adaptieren lassen müsste :-)

Und weiter bin ich bis heute noch gar nicht gekommen, weil ich keine Zeit zum Ausprobieren hatte.

Es lässt sich aber prima mit

([S4_Schlafzimmer.2] eq "VolUp" and ([Sonos_Wohnzimmer:Volume] >95)) (set Sonos_Wohnzimmer Volume 100) DOELSEIF ([S4_Schlafzimmer.4] eq "VolDown" and ([Sonos_Wohnzimmer:Volume] <5)) (set Sonos_Wohnzimmer Volume 0) DOELSEIF ([S4_Schlafzimmer.2] eq "VolUp" and ([Sonos_Wohnzimmer:Volume] <=95)) (set Sonos_Wohnzimmer VolumeU 5) DOELSEIF ([S4_Schlafzimmer.4] eq "VolDown" and ([Sonos_Wohnzimmer:Volume] >=5)) (set Sonos_Wohnzimmer VolumeD 5)

lösen.

Dadurch, dass das Reading durch die Erhöhung/Verringerung der Lautstärke aktualisiert wird, löst auch das DOIF wieder aus.
Außerdem hat man automatisch einen gewissen Zeitversatz drin, weil das Reading eine gefühlte Sekunde zur Aktualisierung benötigt.

Kann man sicherlich analog auch für Lampen nutzen.

Viele Grüße,
Ejfu
Migriere derzeit zu Home Assistant

Puschel74

Ich hatte auch nicht dich gemeint sondern deinen verlinkten Beitrag  ;)
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.