updateSetting change not reflected in setting value

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

  1. installed module
  2. set button to debug on
  3. set button to debug off
  4. 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()
	{
}

Solved with getSetting
Undocumented and added in 2.2.1

This works
log.info "getSettting logDebug ${app.getSetting('logDebugs')}"

1 Like