Got it working (in OH3)… the full code:
var ButtonLong=false
var ButtonDown=false
rule "Test short press"
when
Channel 'velbus:vmbgpod-2:7f964e441a:02:input#CH1' triggered PRESSED
then
ButtonLong=false
var IKEA_state = IKEA_Color.state()
logInfo("IKEA","IKEA detected on with luminosity " + IKEA_state.toString)
end
rule "Test long press"
when
Channel 'velbus:vmbgpod-2:7f964e441a:02:input#CH1' triggered LONG_PRESSED
then
logInfo("TEST", "Test fired! LONG_PRESSED")
ButtonLong=true
ButtonDown=true
if (IKEA_Color.state.toString != "0,0,0") {
var HSBType hsbValue = IKEA_Color.state as HSBType
logInfo("IKEA", "IKEA_Color=" + hsbValue)
var DecimalType hue = new DecimalType(hsbValue.hue.intValue % 360 + 10) // 0-360; 0=red, 120=green, 240=blue, 360=red(again)
var PercentType sat = new PercentType(hsbValue.saturation.intValue) // 0-100
var bright = (IKEA_Color.state as HSBType).brightness.intValue // 0-100
logInfo("IKEA", "IKEA_Color_HUE=" + hue)
logInfo("IKEA", "IKEA_Color_SATURATION=" + sat)
logInfo("IKEA", "IKEA_Color_BRIGHNTESS=" + bright
if (bright <30) {
logInfo("IKEA", "IKEA_Color_BRIGHNTESS DIM UP")
while(bright < 100 && ButtonDown == true) {
bright = bright + 10
if (bright >100) {bright=100}
logInfo("IKEA", "IKEA_Color_BRIGHNTESS=" + bright)
var newStatus = hue+","+sat+","+bright
IKEA_Color.sendCommand(newStatus)
Thread::sleep(500) //.5 seconds
}
}
if (bright >30 ) {
logInfo("IKEA", "IKEA_Color_BRIGHNTESS DIM DOWN")
while(bright <= 100 && bright > 1 && ButtonDown == true) {
bright = bright - 10
if (bright <1) {bright=10}
logInfo("IKEA", "IKEA_Color_BRIGHNTESS=" + bright)
var newStatus = hue+","+sat+","+bright
IKEA_Color.sendCommand(newStatus)
Thread::sleep(500) // .5 seconds
logInfo("IKEA", "IKEA_Color_BRIGHNTESS DIM DOWN NEXT")
}
}
}
end
rule "Test release"
when
Channel 'velbus:vmbgpod-2:7f964e441a:02:input#CH1' triggered RELEASED
then
ButtonDown = false
if (ButtonLong==false){
logInfo("IKEA", "Test fired! PRESSED")
if (IKEA_Color.state.toString == "0,0,0") {
IKEA_Color.sendCommand("ON")
}
else{
IKEA_Color.sendCommand("OFF")
}
}
ButtonLong=false
end