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