Hallo und noch ein "Problemchen" mit .rules...
Versuche gerade ein MQTT RGB Licht über einen KNX-Taster via Rule zu steuern.
Der Taster sendet ON/OFF und bei langem drücken DIMMEN. Diese beiden Funktionen habe ich mit folgender Rule auch schon abbilden können:
Nun möchte ich aber auch gerne die Farben spielen lassen...
und hierfür den Taster mehrfach betätigen...
2mal drücken -> letzte Farbe einschalten
3mal drücken -> Farbwechsel einschalten
Allerdings schaffe ich es nichtmal den Counter hochzusetzen, wenn ich innerhalb 2 Sekunden den Taster mehrfach betätige
Hier mal meine Rule -teilweise mit Funktionsbeschreibungen- so wie ich mir das vorstellen würde:
Wäre toll wenn da jemand weiterhelfen könnte
Versuche gerade ein MQTT RGB Licht über einen KNX-Taster via Rule zu steuern.
Der Taster sendet ON/OFF und bei langem drücken DIMMEN. Diese beiden Funktionen habe ich mit folgender Rule auch schon abbilden können:
Code:
rule "control MQTT RGBW light" when Item KNX_Ta_ONOFF received command then switch receivedCommand { case ON: { MQTT_Light_ONOFF.sendCommand(ON) } case OFF: MQTT_Light_ONOFF.sendCommand(OFF) case INCREASE: MQTT_Light_Dimm.sendCommand((MQTT_Light_Dimm.state as Number) + 5) case DECREASE: MQTT_Light_Dimm.sendCommand((MQTT_Light_Dimm.state as Number) - 5) } end
und hierfür den Taster mehrfach betätigen...
2mal drücken -> letzte Farbe einschalten
3mal drücken -> Farbwechsel einschalten
Allerdings schaffe ich es nichtmal den Counter hochzusetzen, wenn ich innerhalb 2 Sekunden den Taster mehrfach betätige

Hier mal meine Rule -teilweise mit Funktionsbeschreibungen- so wie ich mir das vorstellen würde:
Code:
rule "control MQTT RGBW light" when Item KNX_Ta_ONOFF received command then var Timer myTimer = null var Number rCounter switch receivedCommand { case ON: { if (myTimer !== null) { rCounter = rCounter + 1 } else { myTimer = createTimer(now.plusSeconds(2), [ | //Do something... rCounter = 1 ]) } } case OFF: // wie bei ON case INCREASE: MQTT_Light_Dimm.sendCommand((MQTT_Light_Dimm.state as Number) + 5) case DECREASE: MQTT_Light_Dimm.sendCommand((MQTT_Light_Dimm.state as Number) - 5) } switch rCounter { case 1: { if (Licht ist aus) { MQTT_Light_ONOFF.sendCommand(ON)} else { MQTT_Light_ONOFF.sendCommand(OFF) } } case 2: { // Licht in letzter Farbe anschalten } case 3: { // Licht in letzter Farbe anschalten } } end

Kommentar