Lichtsteuerung mit Homematic IP (CCU3) und deCONZ REST-API

Symbolbild: Lampe in einem Zimmer.

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

  1. Ein Bewegungsmelder aktiviert die Zigbee-Lampe bei Bewegung zeitweise mit 100% Helligkeit.
  2. Nach Inaktivität wird die Lampe auf 1% gedimmt, um Orientierung zu ermöglichen und schaltet diese schließlich ganz aus.
  3. Dieser Dimmzustand bleibt in der Lampe auch nach dem abschalten gespeichert.
  4. Der Homematic IP-Lichtschalter sendet beim Drücken einen Toggle-Befehl („an“/„aus“) und kennt nicht den aktuellen Dimmzustand der Lampe.
  5. 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

  1. Toggle der Gruppe
    Ein einfacher HTTP-PUT-Aufruf über CUxD schaltet alle Lampen in der definierten Gruppe um.
  2. Statusabfrage
    Ein HTTP-GET-Aufruf liest das JSON-Objekt der Gruppe aus. Der Parameter state.any_on zeigt, ob mindestens eine Lampe eingeschaltet ist.
  3. Prüfung auf any_on:true
    Eine einfache String-Suche ("any_on":true) bestimmt den Schaltzustand ohne aufwendiges JSON-Parsing.
  4. 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.