After issuing an updateSetting for a bool, the value does not change when checking the value in the app. However it does change, after the page refreshes.
(This is sample code, real code sets debug for 30 minutes)
Sequence of events
- installed module
- set button to debug on
- set button to debug off
- set button to debug on
The code in question
log.info "logDebugs: $logDebugs Before setting true" app.updateSetting("logDebugs",[value:"true",type:"bool"]) runIn(15,debugOff) //turns off debug logging after 15 seconds log.info "logDebugs: $logDebugs After setting true"
The log
The source module
definition(
name: "testStatus",
namespace: "hubitat",
author: "AAB",
description: "test status",
category: "Convenience",
iconUrl: "",
iconX2Url: ""
)
preferences {
page(name: "mainPage")
}
def mainPage()
{
dynamicPage(name: "mainPage", title: "Test Status", install: true, uninstall: true)
{
section
{
if (settings.logDebugs)
input "buttonDebugOff", "button", title: "Debug Off"
else
input "buttonDebugOn", "button", title: "Debug for 15 Seconds"
}
}
}
void appButtonHandler(btn)
{
switch(btn)
{
case "buttonDebugOff":
unschedule(debugOff)
debugOff()
break
case "buttonDebugOn":
log.info "logDebugs: $logDebugs Before setting true"
app.updateSetting("logDebugs",[value:"true",type:"bool"])
runIn(15,debugOff) //turns off debug logging after 15 seconds
log.info "logDebugs: $logDebugs After setting true"
break
}
}
void debugOff(){
// stops debug logging
log.info "debug logging disabled"
app.updateSetting("logDebugs",[value:"false",type:"bool"])
}
def installed() {
initialize()
}
def updated() {
initialize()
}
def initialize()
{
}