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