Had a strange Error 500 pop up when writing a driver, I managed to narrow it down and made this code from an example driver to reproduce it without all the clutter:
/*
Generic Component Dimmer
Copyright 2016, 2017, 2018 Hubitat Inc. All Rights Reserved
2019-09-07 2.1.5 maxwell
-refactor declarations
2018-12-15 maxwell
-initial pub
*/
metadata {
definition(name: "Generic Component Dimmer Test", namespace: "hubitat", author: "mike maxwell", component: true) {
capability "Light"
capability "Switch"
}
preferences {
input name: "txtEnable", type: "bool", title: "Enable descriptionText logging", defaultValue: true
input(name: "telePeriod", type: "number", title: "telePeriod", description: "", displayDuringSetup: true, required: false)
}
}
def getTelePeriod() {
return (telePeriod != null && telePeriod.isInteger() ? telePeriod.toInteger() : 300)
}
void updated() {
log.info "Updated..."
log.warn "description logging is: ${txtEnable == true}"
def test = telePeriod
}
void installed() {
"Installed..."
device.updateSetting("txtEnable",[type:"bool",value:true])
}
void parse(String description) { log.warn "parse(String description) not implemented" }
void parse(List<Map> description) {
description.each {
if (it.name in ["switch","level"]) {
if (txtEnable) log.info it.descriptionText
sendEvent(it)
}
}
}
To reproduce the Error 500:
0. Use this driver
- Make sure telePeriod is set to nothing.
- Press "Save Preferences"
- BAM Error 500
To make Error 500 to NOT appear (version 1):
0. Use this driver
- Make sure telePeriod is set to something, eg: 2
- Press "Save Preferences"
- All saves as expected
To make Error 500 to NOT appear (version 2):
0. Use this driver but change getTelePeriod to this:
def getTelePeriod() {
return 1 //(telePeriod != null && telePeriod.isInteger() ? telePeriod.toInteger() : 300)
}
- Make sure telePeriod is set to nothing.
- Press "Save Preferences"
- All saves as expected
I would not expect the behavior, it can't be caught with try-catch either...
Not sure who to ping, but pinging: @bravenel and @mike.maxwell