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

Aus FHEMWiki
(%% => %)
K (Sichtung / Korrektur der letzten Änderungen)
 
(11 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
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 dann aktualisiert dargestellt, wenn der Dimmer nicht über FHEM sondern über übliche Wandtaster gesteuert wird.  
 
[[Datei:EIB-KNX-DimmerDarstellung.png]]
 
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:


;<code>1/1/19</code> : Schaltet ein/aus zum Aktor (Obj.30)
;<code>1/1/19</code> : Schaltet ein/aus zum Aktor (Obj.30, write only)
;<code>1/1/119</code> : Rückmeldung des Schaltzustands vom Aktor (Obj.34)
;<code>1/1/119</code> : Rückmeldung des Schaltzustands vom Aktor (Obj.34, read only)
;<code>1/1/104</code> : Status des Dimmwertes vom Aktor (Obj.35)
;<code>1/1/104</code> : Status des Dimmwertes vom Aktor (Obj.35, byte, read only)
;<code>1/1/32</code> : Absoluter Dimmwert zum Aktor (Obj.33)
;<code>1/1/32</code> : Absoluter Dimmwert zum Aktor (Obj.33, byte, write only)
 
{{Randnotiz|RNText=Die Konfiguationen und Beispiele verwenden das Modul EIB! Dieses Modul ist seit 2018 deprecated und wird nicht mehr gewartet. Beispiele für KNX sind auf der Seite [[KNX Device Definition - Beispiele]] zu finden.}}
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 percent
  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 $v") \
}
 
[[Kategorie:Examples]]
[[Kategorie:Examples]]
[[Kategorie:EIB/KNX]]
[[Kategorie:EIB/KNX]]

Aktuelle Version vom 11. Oktober 2021, 10:23 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 dann aktualisiert dargestellt, wenn der Dimmer nicht über FHEM sondern über übliche Wandtaster gesteuert wird.

EIB-KNX-DimmerDarstellung.png

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, write only)
1/1/119
Rückmeldung des Schaltzustands vom Aktor (Obj.34, read only)
1/1/104
Status des Dimmwertes vom Aktor (Obj.35, byte, read only)
1/1/32
Absoluter Dimmwert zum Aktor (Obj.33, byte, write only)
Info green.pngDie Konfiguationen und Beispiele verwenden das Modul EIB! Dieses Modul ist seit 2018 deprecated und wird nicht mehr gewartet. Beispiele für KNX sind auf der Seite KNX Device Definition - Beispiele zu finden.

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 percent
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 $v") \
}