In diesem Szenario werden eine dimmbare Zigbee Lampe mit deCONZ Steuerung, ein Zigbee Bewegungsmelder und ein Homematic IP Schalter zur Lichtsteuerung kombiniert.
Das nachfolgende Skript gewährleistet, dass ein einfacher Toggle-Befehl des Schalters stets zur vollen Helligkeit führt – unabhängig von zuvor gespeicherten Dimmwerten der Lampe.
Szenario und Herausforderung
- Ein Bewegungsmelder aktiviert die Zigbee-Lampe bei Bewegung zeitweise mit 100% Helligkeit.
 
- Nach Inaktivität wird die Lampe auf 1% gedimmt, um Orientierung zu ermöglichen und schaltet diese schließlich ganz aus.
 
- Dieser Dimmzustand bleibt in der Lampe auch nach dem abschalten gespeichert.
 
- Der Homematic IP-Lichtschalter sendet beim Drücken einen Toggle-Befehl („an“/„aus“) und kennt nicht den aktuellen Dimmzustand der Lampe.
 
- Beim erneuten Einschalten leuchtet die Lampe daher oft nur in der zuvor gespeicherten, niedrigen Helligkeit.
 
Zur Lösung wird nach dem Toggle der Gruppenstatus über die deCONZ REST-API für Gruppen abgefragt. Bei eingeschaltetem Zustand wird die Helligkeit unverzüglich auf 100% (Wert 255) gesetzt.
Funktionsweise des Skripts
- Toggle der Gruppe
Ein einfacher HTTP-PUT-Aufruf über CUxD schaltet alle Lampen in der definierten Gruppe um. 
- Statusabfrage
Ein HTTP-GET-Aufruf liest das JSON-Objekt der Gruppe aus. Der Parameter state.any_on zeigt, ob mindestens eine Lampe eingeschaltet ist. 
- Prüfung auf 
any_on:true
Eine einfache String-Suche ("any_on":true) bestimmt den Schaltzustand ohne aufwendiges JSON-Parsing. 
- Helligkeitsanpassung
Bei eingeschaltetem Zustand wird über einen weiteren HTTP-PUT-Aufruf die Helligkeit auf 255 gesetzt. 
Zu setzende Variablen
- deconz_ip: IP-Adresse der deCONZ-Bridge (z. B. 
"192.168.123.123") 
- deconz_port: Port der REST-API (Standard: 
"80") 
- api_key: Persönlicher API-Schlüssel aus der deCONZ-Weboberfläche
 
- group_id: ID der Lampengruppe in deCONZ (z. B. 
"666") 
Vollständiges Skript
! deCONZ REST-API Toggle & Helligkeit Script für CCU3
! Gruppe 666 – Beispiel „Wohnzimmer“
! Variablen
string deconz_ip     = "192.168.123.123";
string deconz_port   = "80";
string api_key       = "APIKEY";
string group_id      = "666";
string response;
boolean any_on_status = false;
! Schritt 1: Toggle ausführen
WriteLine("Starte Toggle...");
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(
  "curl -s -X PUT -d '{\"toggle\":true}' " +
  "\"http://" + deconz_ip + ":" + deconz_port +
  "/api/" + api_key + "/groups/" + group_id + "/action\""
);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
! Schritt 2: Status abfragen
WriteLine("Status abfragen...");
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(
  "curl -s \"http://" + deconz_ip + ":" + deconz_port +
  "/api/" + api_key + "/groups/" + group_id + "\""
);
dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
response = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
WriteLine("API Response: " + response);
! Prüfen, ob "any_on":true im JSON steht
if (response.Find("\"any_on\":true") >= 0) {
  any_on_status = true;
  WriteLine("Status: any_on = true");
} else {
  any_on_status = false;
  WriteLine("Status: any_on = false");
}
! Schritt 3: Helligkeit setzen
if (any_on_status) {
  WriteLine("Setze Helligkeit auf 255...");
  dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State(
    "curl -s -X PUT -d '{\"bri\":255}' " +
    "\"http://" + deconz_ip + ":" + deconz_port +
    "/api/" + api_key + "/groups/" + group_id + "/action\""
  );
  dom.GetObject("CUxD.CUX2801001:1.CMD_QUERY_RET").State(1);
  response = dom.GetObject("CUxD.CUX2801001:1.CMD_RETS").State();
  WriteLine("Helligkeits-Response: " + response);
} else {
  WriteLine("Keine Helligkeitsanpassung erforderlich");
}
WriteLine("Script beendet");
Dieses Skript sorgt dafür, dass nach jedem Schaltvorgang über den Homematic IP-Lichtschalter die Lampe immer mit voller Helligkeit startet – ein konsistentes Nutzererlebnis in Verbindung mit Bewegungsmelder-Automatik.