Hallo und guten Morgen zusammen.
Ich zerbreche mir gerade ein wenig den Kopf. Und zwar folgendes:
Ich habe zwei Wifilight Devices welche ich über TabletUI steuern möchte bzw. schon steuere.
Dazu - um es in FHEM übersichtlich zu halten - habe ich einen Dummy "LED-Brightness" angelegt, welcher als Reading die Devices enthält:
list LED-Brightness:
Internals:
CFGFN
NAME LED_Brightness
NR 89155
STATE ???
TYPE dummy
Readings:
2016-11-16 07:56:27 LED_Rueckseite 0
2016-11-16 09:20:13 LED_WZ 100
Attributes:
group LED_Help
room Helfer
Mit TabletUI setze ich dann über ein Volume-Widget die Readings. Dazu gibt es dann natürlich ein Notify, welches dann auf die entsprechenden LEDs überträgt.
das DEF des Notifys sieht wie folgt aus:
LED_Brightness:.* {
#welches reading, also Gerät wurde geändert und gleich den Doppelpunkt entfernen
my $LED = (split(":",$EVTPART0))[0];
#die entsprechende Leuchte setzen
fhem("set $LED dim $EVTPART1");
}
Damit nun die Anzeige im TabletUI auch mitbekommt, wenn sich die LED durch etwas Anderes geändert hat, gibt es noch ein Notify dessen DEF so aussieht:
.*:brightness:.* {
#alle Änderungen eines brightness Wertes abfangen.
my $bright = ReadingsVal("LED_Brightness",$NAME,0);
if ($bright != $EVTPART1) {
fhem ("setreading LED_Brightness $NAME $EVTPART1");
}
}
Hier höre ich auf alle Änderungen eines Brightness-Wertes. Und wenn dieser anders als im Dummy ist, wird er im Dummy gesetzt. Soweit so gut. Mit direkten Änderungen funktioniert das auch so wie gewollt.
Das Schwierige sind Dimmvoränge über eine Zeit. Da werden natürlich mehrere Events losgelassen und somit verschluckt sich mein letztes Notify.
Hat jemand eine Idee, wie ich das elegant lösen könnte?
Irgendwie müsste ich vermutlich den Zeitwert für den Dimmvorgang abfangen und dann irgendwie sperren, aber mir will wie gesagt keine Lösung einfallen.
Ich hoffe auf eure Hilfe.
Viele Grüße,
Ingo
OK...
ich hab nochmal nachgedacht.
Für die Helligkeit brauche ich das tatsächlich nicht, da ich den brightness Wert direkt aus dem Device lesen und per dim setzen kann.
Mit der Farbe geht das tendenziell über die Klasse "rgb" in TabletUI auch. Allerdings funktioniert das nicht ganz, wenn ich noch einen Zeit Parameter mit übergeben möchte, damit ich einen sanften Farbübergang habe.
Da muss ich nochmal nachdenken, ob ich das wirklich brauche...
Grüße,
Ingo
Kurze Rückmeldung.
Mit cmdalias habe ich mir jetzt was für das direkte setzen eines hue wertes gebastelt.
Grüße,
Ingo
Hallo gitarero
kannst du mir deinen code für die Sterung einmal geben?
Gruß
Ingo (kein Scherz)