/**
* **************** Broadlink Fireplace Connector ****************
*
* Usage:
* This was designed to sync up to five virtual switches to Broadlink Virtual Device code names
*
**/
definition (
name: "Broadlink Fireplace Connector",
namespace: "Hubitat",
author: "Burgess",
description: "Controller for Virtual Switches to control an IR fireplace via Broadlink device",
category: "My Apps",
iconUrl: "",
iconX2Url: ""
)
preferences {
page name: "mainPage", title: "", install: true, uninstall: true
}
def mainPage() {
lock
dynamicPage(name: "mainPage") {
section("Broadlink Device") {
input (
name: "broadlinkDevice",
type: "capability.actuator",
title: "Select BroadLink Device",
required: true,
multiple: false
)
}
section("Fireplace Flames") {
input (
name: "flamesSwitch",
type: "capability.switch",
title: "Select Flames Virtual Switch",
required: true,
multiple: false,
submitOnChange: true
)
}
section("Fireplace Heat") {
input (
name: "heatSwitch",
type: "capability.switch",
title: "Select Fireplace Virtual Switch",
required: true,
multiple: false,
submitOnChange: true
)
}
section("") {
input (
name: "debugMode",
type: "bool",
title: "Enable logging",
required: true,
defaultValue: false
)
}
}
}
def installed() {
initialize()
}
def updated() {
initialize()
}
def initialize() {
subscribe(flamesSwitch, "switch", flamesHandler)
subscribe(heatSwitch, "switch", heatHandler)
}
def flamesHandler(evt) {
state.switch = evt.value
logDebug("Switch Event = $state.swtich")
if (evt.value == "on") {
broadlinkHandler("Flames On")
} else {
broadlinkHandler("Flames Off")
}
}
def heatHandler(evt) {
state.switch2 = evt.value
logDebug("Switch2 Event = $state.swtich2")
if (evt.value == "on") {
broadlinkHandler("Fireplace Heat")
} else {
broadlinkHandler("Fireplace Heat Off")
runIn(5,confirmHeatOff)
}
}
def broadlinkHandler(command) {
broadlinkDevice.SendStoredCode(command)
}
def confirmHeatOff() {
broadlinkDevice.SendStoredCode("Fireplace Heat Off")
}
def logDebug(txt){
try {
if (settings.debugMode) { log.debug("${app.label} - ${txt}") }
} catch(ex) {
log.error("bad debug message")
}
}