ogiewon:
def componentSetSpeed(ch, speed) {
if (logEnable) log.info("received setSpeed request from ${ch.label}, with speed = ${speed}")
int percentage = 0
switch (speed) {
case "off":
percentage = 0
break
case "low":
case "medium-low":
percentage = 25
break
case "on":
case "auto":
case "medium":
percentage = 50
break
case "medium-high":
percentage = 75
break
case "high":
percentage = 100
break
default:
if (logEnable) log.info "No case defined for Fan setSpeed(${speed})"
}
state.id = state.id + 1
entity = ch.name
domain = entity.tokenize(".")[0]
// messPCT = JsonOutput.toJson([id: state.id, type: "call_service", domain: "${domain}", service: "set_percentage", service_data: [entity_id: "${entity}", percentage: "${percentage}"]])
// if (logEnable) log.debug("messOn = ${messPCT}")
// interfaces.webSocket.sendMessage("${messPCT}")
//added per user request to help will fan devices on Hass that do not turn on/off properly when set_percentage is called.
if (percentage != 0) {
messOn = JsonOutput.toJson([id: state.id, type: "call_service", domain: "${domain}", service: "turn_on", service_data: [entity_id: "${entity}", percentage: "${percentage}"]])
interfaces.webSocket.sendMessage("${messOn}")
} else {
messOff = JsonOutput.toJson([id: state.id, type: "call_service", domain: "${domain}", service: "turn_off", service_data: [entity_id: "${entity}"]])
interfaces.webSocket.sendMessage("${messOff}")
}
}
Thanks very much. The it's working now. Set Speed from the off state also works. Just curious, the 'On' in the HE side works a little differently from the HA side. Hitting 'On' in HE always sets the fan to medium where as in HA it just turns it on to its last set speed. Is this due to some limitation on the HE built in fan driver?