Merge pull request #1295 from SmartThingsCommunity/production

Rolling down production hotfix to staging
This commit is contained in:
Vinay Rao
2016-09-26 11:50:24 -07:00
committed by GitHub

View File

@@ -333,9 +333,9 @@ def bulbListHandler(hub, data = "") {
def bridge = null def bridge = null
if (selectedHue) { if (selectedHue) {
bridge = getChildDevice(selectedHue) bridge = getChildDevice(selectedHue)
bridge?.sendEvent(name: "bulbList", value: hub, data: bulbs, isStateChange: true, displayed: false)
} }
bridge.sendEvent(name: "bulbList", value: hub, data: bulbs, isStateChange: true, displayed: false) msg = "${bulbs.size()} bulbs found. ${bulbs}"
msg = "${bulbs.size()} bulbs found. ${bulbs}"
return msg return msg
} }
@@ -490,24 +490,25 @@ def ssdpBridgeHandler(evt) {
def host = ip + ":" + port def host = ip + ":" + port
log.debug "Device ($parsedEvent.mac) was already found in state with ip = $host." log.debug "Device ($parsedEvent.mac) was already found in state with ip = $host."
def dstate = bridges."${parsedEvent.ssdpUSN.toString()}" def dstate = bridges."${parsedEvent.ssdpUSN.toString()}"
def dni = "${parsedEvent.mac}" def dniReceived = "${parsedEvent.mac}"
def d = getChildDevice(dni) def currentDni = dstate.mac
def d = getChildDevice(dniReceived)
def networkAddress = null def networkAddress = null
if (!d) { if (!d) {
childDevices.each { // There might be a mismatch between bridge DNI and the actual bridge mac address, correct that
if (it.getDeviceDataByName("mac")) { log.debug "Bridge with $dniReceived not found"
def newDNI = "${it.getDeviceDataByName("mac")}" def bridge = childDevices.find { it.deviceNetworkId == currentDni }
d = it if (bridge != null) {
if (newDNI != it.deviceNetworkId) { log.warn "Bridge is set to ${bridge.deviceNetworkId}, updating to $dniReceived"
def oldDNI = it.deviceNetworkId bridge.setDeviceNetworkId("${dniReceived}")
log.debug "updating dni for device ${it} with $newDNI - previous DNI = ${it.deviceNetworkId}" dstate.mac = dniReceived
it.setDeviceNetworkId("${newDNI}") // Check to see if selectedHue is a valid bridge, otherwise update it
if (oldDNI == selectedHue) { def isSelectedValid = bridges?.find {it.value?.mac == selectedHue}
app.updateSetting("selectedHue", newDNI) if (isSelectedValid == null) {
} log.warn "Correcting selectedHue in state"
doDeviceSync() app.updateSetting("selectedHue", dniReceived)
}
} }
doDeviceSync()
} }
} else { } else {
updateBridgeStatus(d) updateBridgeStatus(d)
@@ -525,6 +526,18 @@ def ssdpBridgeHandler(evt) {
d.sendEvent(name:"networkAddress", value: host) d.sendEvent(name:"networkAddress", value: host)
d.updateDataValue("networkAddress", host) d.updateDataValue("networkAddress", host)
} }
if (dstate.mac != dniReceived) {
log.warn "Correcting bridge mac address in state"
dstate.mac = dniReceived
}
if (selectedHue != dniReceived) {
// Check to see if selectedHue is a valid bridge, otherwise update it
def isSelectedValid = bridges?.find {it.value?.mac == selectedHue}
if (isSelectedValid == null) {
log.warn "Correcting selectedHue in state"
app.updateSetting("selectedHue", dniReceived)
}
}
} }
} }
} }