Also,
ich hab nun don Rollershutter Channel nochmal gelöscht, dann einen Color Channel angelegt, verlinkt, wieder Rollershutter Channel angelegt, auch verlinkt, und es funktioniert nun mit beiden. Ich habe nun folgende MAP geschrieben:
Code: Alles auswählen
button_1_single=30,10,100
button_2_single=300,10,100
button_5_single=UP
button_6_single=DOWN
button_1_double=0,15,100
button_2_double=70,20,100
button_5_double=STOP
button_6_double=STOP
button_1_triple=130,100,100
button_2_triple=0,100,100
button_3_triple=200,100,100
button_4_triple=25,100,100
button_5_triple=300,100,100
button_6_triple=60,100,100
Diese benutze ich für den Shutter als auch den Color Channel.
Sollte ich hier lieber extra MAPs erstellen für Shutter und Channel. Jetzt macht das wohl noch kein Problem, aber wenn noch ein Dimmer Channel hinzukommt wird dieser Dimmerwert ja auch an den Shutter geschickt, und könnte dort interpretiert werden oder?
Und ein Toggle Modus ist so auch nicht möglich oder. Naja, das bleibt eben dann in der Rule, oder ich stelle noch um, dass jeweils ein Button zum ein- und ein anderer zum ausschalten ist.
In der Rule hab ich auch noch das dimmen, farbwechseln usw. gelassen:
Code: Alles auswählen
var Timer tbuero = null
rule "Buero Schalter"
when
Channel "mqtt:topic:broker:gf_office_switch:office_switch_trigger" triggered
then
if (tbuero !== null) tbuero.cancel()
switch(receivedEvent) {
// case "button_1_single" : GF_Office_Light.sendCommand("30,10,100")
// case "button_2_single" : GF_Office_Light.sendCommand("300,10,100")
case "button_3_single" : {
if (GF_Office_Light.getStateAs(OnOffType) != ON)
GF_Office_Light.sendCommand(ON)
else
GF_Office_Light.sendCommand(OFF)
}
case "button_4_single" : {
if (GF_Office_Light.getStateAs(OnOffType) != ON)
GF_Office_Light.sendCommand("0,0,100")
else
GF_Office_Light.sendCommand(OFF)
}
// case "button_5_single" : GF_Office_Shutter.sendCommand(UP)
// case "button_6_single" : GF_Office_Shutter.sendCommand(DOWN)
// case "button_1_double" : GF_Office_Light.sendCommand("0,15,100")
// case "button_2_double" : GF_Office_Light.sendCommand("70,20,100")
case "button_3_double" : {
Office_Light_temp.sendCommand((Office_Light_temp.state as Number) + 20)
}
case "button_4_double" : {
Office_Light_temp.sendCommand((Office_Light_temp.state as Number) - 20)
}
// case "button_5_double" : GF_Office_Shutter.sendCommand(STOP)
// case "button_6_double" : GF_Office_Shutter.sendCommand(STOP)
// case "button_1_triple" : GF_Office_Light.sendCommand("130,100,100")
// case "button_2_triple" : GF_Office_Light.sendCommand("0,100,100")
// case "button_3_triple" : GF_Office_Light.sendCommand("200,100,100")
// case "button_4_triple" : GF_Office_Light.sendCommand("25,100,100")
// case "button_5_triple" : GF_Office_Light.sendCommand("300,100,100")
// case "button_6_triple" : GF_Office_Light.sendCommand("60,100,100")
case "button_1_hold" : {
tbuero = createTimer(now, [ |
var HSBType currentState
currentState = GF_Office_Light.state as HSBType
var DecimalType new_H = currentState.hue
var PercentType new_S = currentState.saturation
var PercentType new_B = new PercentType(currentState.brightness + 5)
if( new_B > 98)
new_B = new PercentType(100)
var HSBType newState = new HSBType(new_H,new_S,new_B)
sendCommand(GF_Office_Light,newState.toString)
if(new_B < 100)
tbuero.reschedule(now.plusNanos(200000000))
])
}
case "button_1_release" : {
if(tbuero !== null) tbuero.cancel
}
case "button_2_hold" : {
tbuero = createTimer(now, [ |
var HSBType currentState
currentState = GF_Office_Light.state as HSBType
var DecimalType new_H = currentState.hue
var PercentType new_S = currentState.saturation
var PercentType new_B = new PercentType(currentState.brightness - 5)
if( new_B < 20)
new_B = new PercentType(0)
var HSBType newState = new HSBType(new_H,new_S,new_B)
sendCommand(GF_Office_Light,newState.toString)
if(new_B > 0)
tbuero.reschedule(now.plusNanos(200000000))
])
}
case "button_2_release" : {
if(tbuero !== null) tbuero.cancel
}
case "button_5_hold" : {
tbuero = createTimer(now, [ |
var HSBType currentState
currentState = GF_Office_Light.state as HSBType
var DecimalType new_H = new DecimalType(currentState.hue + 10)
var PercentType new_S = currentState.saturation
var PercentType new_B = currentState.brightness
if( new_H > 359)
new_H = new DecimalType(0)
var HSBType newState = new HSBType(new_H,new_S,new_B)
sendCommand(GF_Office_Light,newState.toString)
// if(new_H < 360)
tbuero.reschedule(now.plusNanos(200000000))
])
}
case "button_5_release" : {
if(tbuero !== null) tbuero.cancel
}
case "button_6_hold" : {
tbuero = createTimer(now, [ |
var HSBType currentState
currentState = GF_Office_Light.state as HSBType
var DecimalType new_H = new DecimalType(currentState.hue - 10)
var PercentType new_S = currentState.saturation
var PercentType new_B = currentState.brightness
if( new_H < 10)
new_H = new DecimalType(359)
var HSBType newState = new HSBType(new_H,new_S,new_B)
sendCommand(GF_Office_Light,newState.toString)
// if(new_H > 0)
tbuero.reschedule(now.plusNanos(200000000))
])
}
case "button_6_release" : {
if(tbuero !== null) tbuero.cancel
}
case "button_3_hold" : {
tbuero = createTimer(now, [ |
var HSBType currentState
currentState = GF_Office_Light.state as HSBType
var DecimalType new_H = currentState.hue
var PercentType new_S = new PercentType(currentState.saturation + 5)
var PercentType new_B = currentState.brightness
if( new_S > 95)
new_S = new PercentType(100)
var HSBType newState = new HSBType(new_H,new_S,new_B)
sendCommand(GF_Office_Light,newState.toString)
if(new_S < 100)
tbuero.reschedule(now.plusNanos(200000000))
])
}
case "button_3_release" : {
if(tbuero !== null) tbuero.cancel
}
case "button_4_hold" : {
tbuero = createTimer(now, [ |
var HSBType currentState
currentState = GF_Office_Light.state as HSBType
var DecimalType new_H = currentState.hue
var PercentType new_S = new PercentType(currentState.saturation - 5)
var PercentType new_B = currentState.brightness
if( new_S < 5)
new_S = new PercentType(0)
var HSBType newState = new HSBType(new_H,new_S,new_B)
sendCommand(GF_Office_Light,newState.toString)
if(new_S > 0)
tbuero.reschedule(now.plusNanos(200000000))
])
}
case "button_4_release" : {
if(tbuero !== null) tbuero.cancel
}
}
end