Wifilight Dimmer Widget alter Zustand?

Begonnen von MarcoE, 22 Juli 2016, 11:26:01

Vorheriges Thema - Nächstes Thema

MarcoE

Hallo,
ich würde gerne mit dem dimmer widget mein Wifilight bedienen. Sprich per Dimmer-Button ein/aus und per slider hell/dunkel.
Allerdings beim Einschalten bitte nicht einfach "on" (welches 100% wäre), sondern den Wert, der beim Ausschalten aktuell war (steht im Reading "brightness" wird aber beim ausschalten auf "0" gesetzt).

Wie könnte ich das lösen? Oder war meiner Erläuterung oben einfach unverständlich?

Danke und Gruß,
Marco

setstate

Man kann das Dimmer Widget in zwei Geschmacksrichtungen betreiben.
In der einfachen wird der dim Wert lokal am UI festgelegt und dann nur zwischen 0 und dem festgelegten Wert hin und her geschaltet. Man liest garnicht den Wert aus dem Reading.
Ansonsten könnte man eine Logik ins Fhem einbauen, die ein usrBrightness Reading bereitstellt. Wenn brightness == 0 dann nicht ändern ansonsten usrBrightness = brightness

MarcoE

#2
Zitat von: setstate am 22 Juli 2016, 11:34:08
Man kann das Dimmer Widget in zwei Geschmacksrichtungen betreiben.
In der einfachen wird der dim Wert lokal am UI festgelegt und dann nur zwischen 0 und dem festgelegten Wert hin und her geschaltet. Man liest garnicht den Wert aus dem Reading.
Da mein Dimmer aber nicht nur vom TabletUI bedient werden können soll, sondern auch noch von einem anderen Taster könnte dann der eingestellte (Wunsch) Helligkeitswert aber nicht mehr visualisiert werden, richtig?

Zitat von: setstate am 22 Juli 2016, 11:34:08
Ansonsten könnte man eine Logik ins Fhem einbauen, die ein usrBrightness Reading bereitstellt. Wenn brightness == 0 dann nicht ändern ansonsten usrBrightness = brightness
hm. Ist mir ehrlich gesagt nocht nicht ganz klar was ich da außer dem Anlegen des Userreadings dann tun müsste. Kannst du das noch genauer erläutern? (der Doku nach kann der data-set-on nur string aber keine anderen Readings reinkopieren, oder?). Abgesehen davon habe ich gerade mit versucht ein passendes Userreading anzulegen- naja wenn ich aber per set Licht off 5 das Licht in 5 Sekunden langsam auf off herunterdimmen lasse werde ich nicht den Anfangswert drin haben, sondern den letzten vor 0 (sprich wohl etwa 1 auch wenn ich bei z.B. 50 angefangen habe)

Ich glaube auch noch ein anderes Problem entdeckt zu haben:
gesetzt wird per set Licht dim 55
das Reading in welchem nachher die Helligkeit steht ist brightness
Meine aktuelle Definition sieht so aus:
<div data-type="dimmer" data-device='Licht' data-set='dim ' data-set-on='100 5' data-set-off='0 5' data-dim='brightness' ></div>
(die ' 5' bei on und off sind die Zeitkonstante zum Erreichen des Zielwertes- ja das hätte ich dann gerne auch)

Wenn ich nun den Slider bewege versucht er per set Licht brightness 34 die gewünschte Helligkeit zu erreichen (geht natürlich nicht- set Licht dim 34 wäre korrekt) ändere ich in der Definition data-dim auf 'dim' wird natürlich nicht mehr der Wert ausgelesen, aber der richtige Befehl geschickt.

Danke und Gruß,
Marco

Verstehe ich das Widget nicht richtig, oder was kann ich da tun?

setstate

Ist brightness ein read-only Reading? Das Widget kann das nicht trennen, hier lesen und dort senden. Wenn brightness dann für get und set

herrmannj

Hi

"brightness" ist read-only - der set ist "dim". Historisch so gewachsen, wird nicht auf alle Zeiten so bleiben.

Der normale Weg ist eine user reading "dim" - danach funktioniert "dim" lesend und schreibend

vg
joerg

MarcoE

Hallo,
Zitat von: herrmannj am 22 Juli 2016, 12:54:00
"brightness" ist read-only - der set ist "dim". Historisch so gewachsen, wird nicht auf alle Zeiten so bleiben.
Der normale Weg ist eine user reading "dim" - danach funktioniert "dim" lesend und schreibend

ok gemacht- damit ist zumindest das lesen und setzen gelöst.
Wenn es jetzt noch eine Lösung für das Einschalten auf den alten Wert gibt wäre es klasse!

Danke und Gruß,
Marco

MarcoE

Hallo,
hat keiner eine Idee, wie man das Problem mit der Helligkeitsspeicherung lösen könnte?

Danke und viele Grüsse,
Marco

MarcoE

Hallo,
ich habe nun noch einiges ausprobiert und eine -zumindest für mich- erträgliche Lösung gefunden:
-für jedes Licht (derzeit zwei später noch drei weitere) welches per WifiLight angebunden ist und gedimmt werden soll ein dummy anlegen
-jeder der dummies bekommt ein reading "dim"

Im TabletUI wird nur dieser Dummy verwendet:
<div data-type="dimmer" data-device='Licht1' data-cmd='set' data-cmd-value='setreading' data-set-on='on' data-set-off='off' data-dim='dim' data-version='' class="" ></div>


Dadurch wird beim dimmen der Wert in das Reading geschrieben.
Um das eigentliche Licht nun zu steuern gibt es einige notifies:

define n_Licht1_dummy_off notify (Licht1_dummy:off) set Licht_Kueche_Sockel off 9
define n_Licht1_dummy_dim notify (Licht1_dummy:dim.*) { my $level=ReadingsVal("Licht1_dummy","dim",100);; fhem("set Licht1 dim $level 2");; }
define n_Licht1_dummy_on notify (Licht1_dummy:on) { my $level=ReadingsVal("Licht1_dummy","dim",100);; fhem("set Licht1 dim $level 5");; }
define n_Licht1_state notify (Licht1:off) set Licht1_dummy off


Vielleicht nicht elegant, aber erfüllt zumindest im Großen und Ganzen meine Anforderungen.
Der nächste Schritt wird wohl sein, nun die Lichtgruppe (Licht1 und Licht2) zusammen dimmen zu können (sprich auf dem Detail Screen gebe ich zwar das Verhältnis zueinander an aber auf dem eigentlichen Schirm werden dann die Lampen in diesem Verhältnis ein- und ausgeschaltet und vielleicht noch gedimmt)

Viele Grüsse,
Marco

ToM_ToM

Hallo Marco,

ist zwar schon ein alter Thread, aber hier mal eine elegante Lösung mit Hilfe eines userReadings:

defmod LEDController WifiLight RGB LW12:LEDController
attr LEDController userReadings dim:brightness:.* {return ReadingsVal($name, "brightness",0);;}


<div data-type="dimmer"
data-device="LEDController"
data-dim="dim"
data-set-on="$v"
data-set-off="0"
data-set-value="$v"
data-get-on="on"
data-get-off="off"
class="inline">
</div>


VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8