(FHEM) Beispiele

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

KNX-Dimmer mit Slider

Im Wohnzimmer ist die Deckenleuchte ueber einen KNX-Dimmer angeschlossen. Ein geteilter Taster dient an der Wand zum dimmen/schalten. Mit FHEM sollte mit Hilfe eines Sliders der Dimmwert eingestellt werden koennen. Die fuer die Funktion relevanten Stellen sind mit '> markiert.

>define L_WZ_Dimmer_dummy dummy
 setuuid L_WZ_Dimmer_dummy 61db0cc0-XXXX-XXXX-XXXX-743efae02beXXXX
 attr L_WZ_Dimmer_dummy alias Wohnzimmer Decke Dimmer
 attr L_WZ_Dimmer_dummy group EG1
 attr L_WZ_Dimmer_dummy room KNX,LEUCHTEN,EG_1_Wohnzimmer
>attr L_WZ_Dimmer_dummy setList state:slider,1,1,100    // erzeugt in der Combobox bei set einen Eintrag mit state und einem slider
>attr L_WZ_Dimmer_dummy webCmd state // uebernimmt den Slider in den Device Overview

Dann passiert aber halt noch nix.

Zum Schalten brauchen ich das:

>define L_WZ_Dimmer_schalten KNX 1/0/100:dpt1.001:dpt1.001  // das hier muss ein Fehler sein warum doppelt?
setuuid L_WZ_Dimmer_schalten 61db0cc0-f33f-XXXX-6edf-1c2c950f1e4469c4
>attr L_WZ_Dimmer_schalten IODev EIB
attr L_WZ_Dimmer_schalten alias Wohnzimmer Decke
attr L_WZ_Dimmer_schalten group EG1
attr L_WZ_Dimmer_schalten room KNX,LEUCHTEN,EG_1_Wohnzimmer
#attr L_WZ_Dimmer_schalten webCmd state

und um den Prozentwert an KNX zu uebergeben das:

define L_WZ_Dimmer_setzen KNX 1/0/102:dpt5.001
setuuid L_WZ_Dimmer_setzen 61db0cc0-f33f-XXXX-ca3c-311006b4b34ad7fe
attr L_WZ_Dimmer_setzen IODev EIB
attr L_WZ_Dimmer_setzen room hidden
#attr L_WZ_Dimmer_setzen webCmd value // nicht notwendig durch den dpt5.001 wird der state automatisch in % angezeigt
#attr L_WZ_Dimmer_setzen model percent
define L_WZ_Dimmer_dummy_notify_1 notify L_WZ_Dimmer_dummy:.* set L_WZ_Dimmer_setzen $EVENT
setuuid L_WZ_Dimmer_dummy_notify_1 61db0cc8-f33f-1c66-bf96-e1f9110f3c6d5a1c
attr L_WZ_Dimmer_dummy_notify_1 alias L_WZ_Dimmer_dummy_notify_1 // Warum ich diesen alias drin habe ist mir ein Raetsel

Ich hatte auch mal das probiert aber wieder verworfen.

#define x_L_WZ_Dimmer_dummy notify L_WZ_Dimmer_setzen {my $v=Value("L_WZ_Dimmer_dummy");;fhem("set L_WZ_Dimmer_setzen value $v")}
define L_WZ_Dimmer_setzen_DOIF_1 DOIF ([L_WZ_Dimmer_setzen:"^.*.%$"]) (Set L_WZ_Dimmer_dummy $EVENT)
setuuid L_WZ_Dimmer_setzen_DOIF_1 61db0cc8-f33f-1c66-d4d6-98282b938f25ec13
attr L_WZ_Dimmer_setzen_DOIF_1 alias L_WZ_Dimmer_setzen_DOIF_1 // Warum ich diesen alias drin habe ist mir ein Raetsel

Das Notify ist sozusagen der Hinweg und das DOIF der Rueckweg. Uerbsetzung Notify: Wenn sich der State de Dummy-Devices irgendwie aendert 'L_WZ_Dimmer_dummy:.*' dann setze den Dimmer ueber KNX 'set L_WZ_Dimmer_setzen $EVENT' auf das wie er jetzt ist. * (Statuswert) -> $EVENT (Prozentwert KNX)

Uebersetzung DOIF: Sobald der %-Wert sich aendert, setze mit diesem Wert den Dummy. Wie ich auf den Regexp gekommen bin kann ich nicht mehr nachvollziehen. Ich probier mal /^.\d*%$/