Dimmer für EIB/KNX: Unterschied zwischen den Versionen

Aus FHEMWiki
(%% => %)
(aktualisiert für fhem v5.7)
Zeile 1: Zeile 1:
Das Beispiel erzeugt einen Schieberegler für einen '''EIB/KNX Dimmer'''. Der aktuelle Helligkeitswert und der Schaltzustand werden auch dargestellt, wenn der Dimmer nicht über Fhem sondern über übliche Wandtaster gesteuert wird. Das Beispiel arbeitet mit Kanal C eines MDT Dimmers AKD-04.01.01 und verweist auf dessen [[:Kategorie:EIB/KNX|KNX]] Objekte.
Das Beispiel (Feature-Set 5.7 getestet) erzeugt einen Schieberegler für einen '''EIB/KNX Dimmer'''. Der aktuelle Helligkeitswert und der Schaltzustand werden auch dargestellt, wenn der Dimmer nicht über Fhem sondern über übliche Wandtaster gesteuert wird. Das Beispiel arbeitet mit Kanal C eines MDT Dimmers AKD-04.01.01 und verweist auf dessen [[:Kategorie:EIB/KNX|KNX]] Objekte.


Es werden folgende GAs verwendet:
Es werden folgende GAs verwendet:
Zeile 8: Zeile 8:
;<code>1/1/32</code> : Absoluter Dimmwert zum Aktor (Obj.33)
;<code>1/1/32</code> : Absoluter Dimmwert zum Aktor (Obj.33)


Die Definition des Geräts in der Konfigurationsdatei (z.&nbsp;B. fhem.cfg):
Die Definition des Bedienelementes für den Dimmer-Schaltzustand in der Konfigurationsdatei (z.&nbsp;B. fhem.cfg):
:<code>define 103_Licht EIB 1/1/19 1/1/119</code>
define 103_Licht EIB 1/1/19 1/1/119
attr 103_Licht model dpt1
attr 103_Licht IODev tul


Mit folgendem Element wird der jeweils aktuelle Dimmwert in 103_Dimm_Status für die Visualisierung in 103_Dimm gesetzt
Mit folgendem Element wird der jeweils aktuelle Dimmwert in 103_Dimm_Status für die Visualisierung in 103_Dimm gesetzt
  define 103_Dimm_Status EIB 1/1/104
  define 103_Dimm_Status EIB 1/1/104
  attr 103_Dimm_Status model dpt5
attr 103_Dimm_Status IODev tul
  attr 103_Dimm_Status model persent
  attr 103_Dimm_Status room hidden
  attr 103_Dimm_Status room hidden
  define x_103_Dimm_Status notify 103_Dimm_Status { \
  define x_103_Dimm_Status notify 103_Dimm_Status { \
    if (abs($value{"103_Dimm"}-$value{"103_Dimm_Status"})>1) { \
          my $i=Value("103_Dimm_Status");; \
          my $i=$value{"103_Dimm_Status"};; \
          if(Value("103_Dimm_Status_T")) {fhem("delete 103_Dimm_Status_T")};; \
          fhem("set 103_Dimm $i") \
          fhem("define 103_Dimm_Status_T at +00:00:10 setreading 103_Dimm state $i") \
    } \
  }
  }
Die beiden letzten Zeilen stellen sicher, dass nach 10 Sekunden auch die Weboberfläche aktualisiert wird, wenn der Dimmerstatus aus dem KNX-System heraus verändert wurde. (Vielleicht kennt jemand eine bessere Variante...)


Nun das Element für die Visualisierung:
Nun das Element für die Visualisierung des Schiebereglers:
  define 103_Dimm dummy
  define 103_Dimm dummy
  attr 103_Dimm setList state:slider,1,1,255
  attr 103_Dimm setList state:slider,1,1,100
  attr 103_Dimm webCmd state
  attr 103_Dimm webCmd state


... und das Element für das Senden absoluter Dimmwerte an den Aktor:
... und das Element für das Senden absoluter Dimmwerte an den Aktor:
  define 103_abs EIB 1/1/32
  define 103_abs EIB 1/1/32
  attr 103_abs model dpt5
  attr 103_abs model percent
  attr 103_abs room hidden
  attr 103_abs room hidden


(Kann jemand kurz kommentieren, was das folgende define umfasst?)
Wenn über die Bedienoberfläche der Schieberegler verschoben wird, ändert sich "103_Dimm" und löst nun ein Event aus. Dabei wird dann "103_abs" aktualisiert, d.h., der neue Dimmwert wird von fhem gen KNX-Bus in den Aktor geschrieben.
:<code>define 103_Dimm_a notify 103_Dimm {my $i=sprintf("%.2x",$value{"103_Dimm"}>0?$value{"103_Dimm"}:0);; fhem("set 103_abs value $i") }</code>
 
define x_103_Dimm notify 103_Dimm { \
    my $v=Value("103_Dimm");; \
    fhem("set 103_abs value $i") \
}


[[Kategorie:Examples]]
[[Kategorie:Examples]]
[[Kategorie:EIB/KNX]]
[[Kategorie:EIB/KNX]]

Version vom 12. Dezember 2015, 12:39 Uhr

Das Beispiel (Feature-Set 5.7 getestet) erzeugt einen Schieberegler für einen EIB/KNX Dimmer. Der aktuelle Helligkeitswert und der Schaltzustand werden auch dargestellt, wenn der Dimmer nicht über Fhem sondern über übliche Wandtaster gesteuert wird. Das Beispiel arbeitet mit Kanal C eines MDT Dimmers AKD-04.01.01 und verweist auf dessen KNX Objekte.

Es werden folgende GAs verwendet:

1/1/19
Schaltet ein/aus zum Aktor (Obj.30)
1/1/119
Rückmeldung des Schaltzustands vom Aktor (Obj.34)
1/1/104
Status des Dimmwertes vom Aktor (Obj.35)
1/1/32
Absoluter Dimmwert zum Aktor (Obj.33)

Die Definition des Bedienelementes für den Dimmer-Schaltzustand in der Konfigurationsdatei (z. B. fhem.cfg):

define 103_Licht EIB 1/1/19 1/1/119
attr 103_Licht model dpt1
attr 103_Licht IODev tul

Mit folgendem Element wird der jeweils aktuelle Dimmwert in 103_Dimm_Status für die Visualisierung in 103_Dimm gesetzt

define 103_Dimm_Status EIB 1/1/104
attr 103_Dimm_Status IODev tul
attr 103_Dimm_Status model persent
attr 103_Dimm_Status room hidden
define x_103_Dimm_Status notify 103_Dimm_Status { \
         my $i=Value("103_Dimm_Status");; \
         if(Value("103_Dimm_Status_T")) {fhem("delete 103_Dimm_Status_T")};; \
         fhem("define 103_Dimm_Status_T at +00:00:10 setreading 103_Dimm state $i") \
}

Die beiden letzten Zeilen stellen sicher, dass nach 10 Sekunden auch die Weboberfläche aktualisiert wird, wenn der Dimmerstatus aus dem KNX-System heraus verändert wurde. (Vielleicht kennt jemand eine bessere Variante...)

Nun das Element für die Visualisierung des Schiebereglers:

define 103_Dimm dummy
attr 103_Dimm setList state:slider,1,1,100
attr 103_Dimm webCmd state

... und das Element für das Senden absoluter Dimmwerte an den Aktor:

define 103_abs EIB 1/1/32
attr 103_abs model percent
attr 103_abs room hidden

Wenn über die Bedienoberfläche der Schieberegler verschoben wird, ändert sich "103_Dimm" und löst nun ein Event aus. Dabei wird dann "103_abs" aktualisiert, d.h., der neue Dimmwert wird von fhem gen KNX-Bus in den Aktor geschrieben.

define x_103_Dimm notify 103_Dimm { \
    my $v=Value("103_Dimm");; \
    fhem("set 103_abs value $i") \
}