|
|
|
@@ -1,4 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Hue Bulb
|
|
|
|
* Hue Bulb
|
|
|
|
*
|
|
|
|
*
|
|
|
|
@@ -11,6 +10,7 @@ metadata {
|
|
|
|
capability "Switch Level"
|
|
|
|
capability "Switch Level"
|
|
|
|
capability "Actuator"
|
|
|
|
capability "Actuator"
|
|
|
|
capability "Color Control"
|
|
|
|
capability "Color Control"
|
|
|
|
|
|
|
|
capability "Color Temperature"
|
|
|
|
capability "Switch"
|
|
|
|
capability "Switch"
|
|
|
|
capability "Refresh"
|
|
|
|
capability "Refresh"
|
|
|
|
capability "Sensor"
|
|
|
|
capability "Sensor"
|
|
|
|
@@ -25,7 +25,7 @@ metadata {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
tiles (scale: 2){
|
|
|
|
tiles (scale: 2){
|
|
|
|
multiAttributeTile(name:"switch", type: "lighting", width: 6, height: 4, canChangeIcon: true){
|
|
|
|
multiAttributeTile(name:"rich-control", type: "lighting", width: 6, height: 4, canChangeIcon: true){
|
|
|
|
tileAttribute ("device.switch", key: "PRIMARY_CONTROL") {
|
|
|
|
tileAttribute ("device.switch", key: "PRIMARY_CONTROL") {
|
|
|
|
attributeState "on", label:'${name}', action:"switch.off", icon:"st.lights.philips.hue-single", backgroundColor:"#79b821", nextState:"turningOff"
|
|
|
|
attributeState "on", label:'${name}', action:"switch.off", icon:"st.lights.philips.hue-single", backgroundColor:"#79b821", nextState:"turningOff"
|
|
|
|
attributeState "off", label:'${name}', action:"switch.on", icon:"st.lights.philips.hue-single", backgroundColor:"#ffffff", nextState:"turningOn"
|
|
|
|
attributeState "off", label:'${name}', action:"switch.on", icon:"st.lights.philips.hue-single", backgroundColor:"#ffffff", nextState:"turningOn"
|
|
|
|
@@ -33,23 +33,58 @@ metadata {
|
|
|
|
attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.lights.philips.hue-single", backgroundColor:"#ffffff", nextState:"turningOn"
|
|
|
|
attributeState "turningOff", label:'${name}', action:"switch.on", icon:"st.lights.philips.hue-single", backgroundColor:"#ffffff", nextState:"turningOn"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tileAttribute ("device.level", key: "SLIDER_CONTROL") {
|
|
|
|
tileAttribute ("device.level", key: "SLIDER_CONTROL") {
|
|
|
|
attributeState "level", action:"switch level.setLevel"
|
|
|
|
attributeState "level", action:"switch level.setLevel", range:"(0..100)"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
tileAttribute ("device.level", key: "SECONDARY_CONTROL") {
|
|
|
|
|
|
|
|
attributeState "level", label: 'Level ${currentValue}%'
|
|
|
|
}
|
|
|
|
}
|
|
|
|
tileAttribute ("device.color", key: "COLOR_CONTROL") {
|
|
|
|
tileAttribute ("device.color", key: "COLOR_CONTROL") {
|
|
|
|
attributeState "color", action:"setAdjustedColor"
|
|
|
|
attributeState "color", action:"setAdjustedColor"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
standardTile("reset", "device.reset", inactiveLabel: false, decoration: "flat", width: 2, height: 2) {
|
|
|
|
standardTile("switch", "device.switch", width: 2, height: 2, canChangeIcon: true) {
|
|
|
|
|
|
|
|
state "on", label:'${name}', action:"switch.off", icon:"st.lights.philips.hue-single", backgroundColor:"#79b821", nextState:"turningOff"
|
|
|
|
|
|
|
|
state "off", label:'${name}', action:"switch.on", icon:"st.lights.philips.hue-single", backgroundColor:"#ffffff", nextState:"turningOn"
|
|
|
|
|
|
|
|
state "turningOn", label:'${name}', action:"switch.off", icon:"st.lights.philips.hue-single", backgroundColor:"#79b821", nextState:"turningOff"
|
|
|
|
|
|
|
|
state "turningOff", label:'${name}', action:"switch.on", icon:"st.lights.philips.hue-single", backgroundColor:"#ffffff", nextState:"turningOn"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
controlTile("colorTempSliderControl", "device.colorTemperature", "slider", width: 4, height: 2, inactiveLabel: false, range:"(2000..6500)") {
|
|
|
|
|
|
|
|
state "colorTemperature", action:"color temperature.setColorTemperature"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
valueTile("colorTemp", "device.colorTemperature", inactiveLabel: false, decoration: "flat", width: 2, height: 2) {
|
|
|
|
|
|
|
|
state "colorTemperature", label: '${currentValue} K'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
standardTile("reset", "device.reset", height: 2, width: 2, inactiveLabel: false, decoration: "flat") {
|
|
|
|
state "default", label:"Reset Color", action:"reset", icon:"st.lights.philips.hue-single"
|
|
|
|
state "default", label:"Reset Color", action:"reset", icon:"st.lights.philips.hue-single"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
standardTile("refresh", "device.switch", inactiveLabel: false, decoration: "flat", width: 2, height: 2) {
|
|
|
|
standardTile("refresh", "device.switch", height: 2, width: 2, inactiveLabel: false, decoration: "flat") {
|
|
|
|
state "default", label:"", action:"refresh.refresh", icon:"st.secondary.refresh"
|
|
|
|
state "default", label:"", action:"refresh.refresh", icon:"st.secondary.refresh"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
controlTile("levelSliderControl", "device.level", "slider", height: 1, width: 2, inactiveLabel: false, range:"(0..100)") {
|
|
|
|
|
|
|
|
state "level", action:"switch level.setLevel"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
valueTile("level", "device.level", inactiveLabel: false, decoration: "flat") {
|
|
|
|
|
|
|
|
state "level", label: 'Level ${currentValue}%'
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
controlTile("saturationSliderControl", "device.saturation", "slider", height: 1, width: 2, inactiveLabel: false) {
|
|
|
|
|
|
|
|
state "saturation", action:"color control.setSaturation"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
valueTile("saturation", "device.saturation", inactiveLabel: false, decoration: "flat") {
|
|
|
|
|
|
|
|
state "saturation", label: 'Sat ${currentValue} '
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
controlTile("hueSliderControl", "device.hue", "slider", height: 1, width: 2, inactiveLabel: false) {
|
|
|
|
|
|
|
|
state "hue", action:"color control.setHue"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
valueTile("hue", "device.hue", inactiveLabel: false, decoration: "flat") {
|
|
|
|
|
|
|
|
state "hue", label: 'Hue ${currentValue} '
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
main(["switch"])
|
|
|
|
main(["switch"])
|
|
|
|
details(["switch", "levelSliderControl", "rgbSelector", "refresh", "reset"])
|
|
|
|
details(["rich-control", "colorTempSliderControl", "colorTemp", "reset", "refresh"])
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// parse events into attributes
|
|
|
|
// parse events into attributes
|
|
|
|
@@ -135,6 +170,14 @@ void setAdjustedColor(value) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void setColorTemperature(value) {
|
|
|
|
|
|
|
|
if (value) {
|
|
|
|
|
|
|
|
log.trace "setColorTemperature: ${value}k"
|
|
|
|
|
|
|
|
parent.setColorTemperature(this, value)
|
|
|
|
|
|
|
|
sendEvent(name: "colorTemperature", value: value)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void refresh() {
|
|
|
|
void refresh() {
|
|
|
|
log.debug "Executing 'refresh'"
|
|
|
|
log.debug "Executing 'refresh'"
|
|
|
|
parent.manualRefresh()
|
|
|
|
parent.manualRefresh()
|
|
|
|
|