So I am not a programmer, I don't even play one on TV. Ultimately this might end up as an app but for now this Device driver pulls the color and sets the hue and sat value for https://cheerlights.com/
I then take this data into RM variables and set different lights to these values.
Cheerlights can be a fun way to get help you feel connected when the world has been so isolated.
metadata {
definition(name: "Cheerlights Color Sensor", namespace: "community", author: "Hasty") {
capability "Sensor"
capability "Polling"
attribute "color", "string"
attribute "hue", "number"
attribute "sat", "number"
}
}
preferences {
section("URIs") {
input name: 'updateSec', type: 'enum', description: "Select the update frequency", title: "Update frequency n0 is disabled", defaultValue: '15', options: ['0', '15', '30', '45','60'], required: true
input name: "logEnable", type: "bool", title: "Enable debug logging", defaultValue: true
}
}
def logsOff() {
log.warn "debug logging disabled..."
device.updateSetting("logEnable", [value: "false", type: "bool"])
}
def updated() {
unschedule()
log.info "updated..."
log.warn "debug logging is: ${logEnable == true}"
if (logEnable) runIn(1800, logsOff)
if(updateSec != "0") {
schedule("0/${updateSec} * * * * ? *", poll)
}
}
def parse(String description) {
if (logEnable) log.debug(description)
}
def poll() {
if (logEnable) log.debug "polling..."
String url = "http://api.thingspeak.com/channels/1417/field/1/last.txt"
try {
httpGet(url) { response ->
String body = "${response.data}"
if (logEnable) log.debug "${body}"
sendEvent(name: "color", value: "${body}");
switch ("${body}") {
case "red":
sendEvent(name: "hue", value: 0);
sendEvent(name: "sat", value: 100);
break;
case "green":
sendEvent(name: "hue", value: 30);
sendEvent(name: "sat", value: 100);
break;
case "blue":
sendEvent(name: "hue", value: 65);
sendEvent(name: "sat", value: 100);
break;
case "cyan":
sendEvent(name: "hue", value: 40);
sendEvent(name: "sat", value: 100);
break;
case "white":
sendEvent(name: "hue", value: 0);
sendEvent(name: "sat", value: 1);
break;
case "oldlace":
sendEvent(name: "hue", value: 9);
sendEvent(name: "sat", value: 60);
break;
case "warmwhite":
sendEvent(name: "hue", value: 9);
sendEvent(name: "sat", value: 60);
break;
case "purple":
sendEvent(name: "hue", value: 70);
sendEvent(name: "sat", value: 100);
break;
case "magenta":
sendEvent(name: "hue", value: 80);
sendEvent(name: "sat", value: 100);
break;
case "yellow":
sendEvent(name: "hue", value: 15);
sendEvent(name: "sat", value: 100);
break;
case "orange":
sendEvent(name: "hue", value: 7);
sendEvent(name: "sat", value: 100);
break;
case "pink":
sendEvent(name: "hue", value: 90);
sendEvent(name: "sat", value: 70);
break;
}
}
} catch(Exception e) {
log.debug "error occured calling httpget ${e}"
}
}
I welcome any feedback!