Einfacher Dimmer mit enOcean Taster und FIBARO-Dimmer

Begonnen von KillRob, 24 Juli 2017, 08:42:25

Vorheriges Thema - Nächstes Thema

KillRob

Ich habe einige Zeit nach einer Dim-Funktion gesucht und nichts gefunden, was mir gefallen hat.
Außerdem wollte ich verstehen wie es läuft und hab mich daher hingesetzt und gemacht.
Dies ist die Version 0.3. Hat also noch ein paar Schwächen ;)

Ich hoffe irgendwer kann den Dimmer oder Teile daraus gebrauchen.
Da ich so viel in diesem Forum gefunden und gelernt habe (und immer noch tue), will ich hiermit meinen Teil beitragen.

Folgende Funktion soll erfüllt werden:
Taster oben kurz drücken: Licht ein, 100%
Taster unten kurz drücken: Licht aus

Taster oben lange drücken: Dimmen, steigern der Leistung
Taster unten lange drücken: Dimmen, senken der Leistung

Einfaches Anpassen an andere Dimmer und Schalter. Mit HUE-Spots und HUE-ColorSpots funktioniert alles fast genauso. (Stat 'dim' einfach 'pct' verwenden in den DIM-Notifys Zeile 3)

Umsetzung:
Der Dimmer sollte schon definiert sein. Hier trägt er den Namen ,,WNZ_DIM_01".
Der Taster sollte ebenfalls schon definiert sein. Nennt sich hier ,,WNZ_Switch_01".

Zuerst wird ein Dummy definiert.
Dies wird als Speicher für die eingestellte Leistung am Dimmer verwendet:

defmod WNZ_DIM_01_Mirror dummy
attr WNZ_DIM_01_Mirror room Wohnzimmer

Hierzu sind keine großen Erklärungen nötig :)

Danach die Sequenzen für den Taster:
defmod WNZ_seq_Switch_B0 sequence WNZ_Switch_01:channelB:.B0 1 WNZ_Switch_01:buttons:.released
attr WNZ_seq_Switch_B0 disable 0
attr WNZ_seq_Switch_B0 room Wohnzimmer
attr WNZ_seq_Switch_B0 triggerPartial 1


defmod WNZ_seq_Switch_BI sequence WNZ_Switch_01:channelB:.BI 1 WNZ_Switch_01:buttons:.released
attr WNZ_seq_Switch_BI disable 0
attr WNZ_seq_Switch_BI room Wohnzimmer
attr WNZ_seq_Switch_BI triggerPartial 1

In der ersten Zeile jeweils, sorgt die Angabe von ,,channelB:.B0" für ein Triggern auch wenn beide Tasten gedrückt werden (Chanel A und Chanel B).
Die Zeit bis zum Dimmen wurde auf 1 Sekunde gestellt... in der ersten Zeile.

Zuletzt die Notify-Definitionen:
defmod WNZ_notify_B0_Short notify WNZ_seq_Switch_B0:trigger set WNZ_DIM_01_Mirror 99 ;;set WNZ_DIM_01 on;;set WNZ_DIM_01 dim 99
attr WNZ_notify_B0_Short room Wohnzimmer


defmod WNZ_notify_BI_Short notify WNZ_seq_Switch_BI:trigger set WNZ_DIM_01_Mirror 0;;set WNZ_DIM_01 off;;set WNZ_DIM_01 dim 0
attr WNZ_notify_BI_Short room Wohnzimmer


defmod WNZ_notify_dimDown notify WNZ_seq_Switch_BI:partial_1 {\
fhem("set WNZ_DIM_01_Mirror " . (ReadingsVal("WNZ_DIM_01_Mirror","state",0) - 4))};;\
{fhem("set WNZ_DIM_01 dim " . ReadingsVal("WNZ_DIM_01_Mirror","state",0))};;\
sleep 0.2;;\
IF ( [WNZ_DIM_01_Mirror:state] >= 10 and [WNZ_Switch_01:buttons] ne "released" ) ( trigger WNZ_seq_Switch_BI partial_1 )
attr WNZ_notify_dimDown room Wohnzimmer


defmod WNZ_notify_dimUp notify WNZ_seq_Switch_B0:partial_1 {\
fhem("set WNZ_DIM_01_Mirror " . (ReadingsVal("WNZ_DIM_01_Mirror","state",0) + 4))};;\
{fhem("set WNZ_DIM_01 dim " . ReadingsVal("WNZ_DIM_01_Mirror","state",0))};;\
sleep 0.2;;\
IF ( [WNZ_DIM_01_Mirror:state] <= 95 and [WNZ_Switch_01:buttons] ne "released" ) ( trigger WNZ_seq_Switch_B0 partial_1 )
attr WNZ_notify_dimUp room Wohnzimmer


Bei den Notifys für Kurzes Betätigen wird der Dimmer entweder auf 99% oder auf 0% gestellt. Bei 100% gab es unerwartete Probleme...

Notifys fürs Dimmen:
2te Zeile fast am Ende: Hier werden 4% pro Zyklus erhöht bzw. gesenkt.
4te Zeile: Die Wartezeit zwischen den Zyklen beträgt 0.2 Sekunden.
5te Zeile: Maximal und Minimalwert festlegen ( 10% bzw 95% ). Name des Tasters der beim loslassen den Retrigger unterbindet.