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 Parameterstate.any_onzeigt, 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.
