Ecobee Suite setProgramSetpoints SecurityException

Hi there @storageanarchy ,

On Ecobee Suite Manager v1.8.52 and Ecobee Suite Thermostat 1.8.20, my webcore piston to change program setpoints is no longer working. In the live logs, I see this:

[ef9bd33d-b8c3-464a-a547-a862aad22341](https://graph-na02-useast1.api.smartthings.com/ide/logs#ef9bd33d-b8c3-464a-a547-a862aad22341) 4:00:18 PM: error     java.lang.SecurityException: Getting properties on class [Ljava.lang.Object; is not allowed @line 5888 (setProgramSetpoints)
[ef9bd33d-b8c3-464a-a547-a862aad22341](https://graph-na02-useast1.api.smartthings.com/ide/logs#ef9bd33d-b8c3-464a-a547-a862aad22341) 4:00:18 PM: debug LOG: getDeviceId() returning 311014448992
[ef9bd33d-b8c3-464a-a547-a862aad22341](https://graph-na02-useast1.api.smartthings.com/ide/logs#ef9bd33d-b8c3-464a-a547-a862aad22341) 4:00:18 PM: info LOG: setProgramSetpoints( [Home, 70, 75] )

I’m guessing the problem is the Object… vararg in setProgramSetpoints, but am not sure. Any ideas?

Could you please post the log entries from ES Thermostat when the error occurs?

Never mind…

I suspect the differing versions of Groovy between SmartThings and Hubitat (or the difference between the various SmartThings shards) is the culprit.

Please try this and let me know if it solves the problem:

  • On line 5888 of Ecobee Suite Manager, change the word length to the text size()
  • Save and Publish
  • Test again

Thanks!

I actually tried that exact change yesterday and got the same (or similar) SecurityException. I’m without power atm, but can post the exact log later. I’m guessing the smartthings groovy sandbox doesn’t like or well-support var args. How do you determine which version of groovy is used?

I can’t determine which version of Groovy is used, but I can tell which platform (ST or HE) the code is running on.

If that doesn’t solve the problem, I have a plan B…but I’d like to see the error that gets thrown with size().

TYVM

Yep, same error:
[ef9bd33d-b8c3-464a-a547-a862aad22341](https://graph-na02-useast1.api.smartthings.com/ide/logs#ef9bd33d-b8c3-464a-a547-a862aad22341) 6:03:04 PM: error java.lang.SecurityException: Invoking methods on class [Ljava.lang.Object; is not allowed: size @line 5888 (setProgramSetpoints)

I don’t use WebCoRE, so I can’t test this. But could you please send me the code you are using to make the change?

Also, please insert this line of code immediately after the function entry at line 5866 of Ecobee Suite Manager. Just need to check if the data is even being passed properly…

log.debug "setProgramCheckPoints( ${child}, ${deviceId}, ${programData} ) - ${programData[0]}, ${programData[1]}, ${programData[2]}"

log.debug didn’t work for some reason, but I used your existing LOG func and got it to emit stuff:

ef9bd33d-b8c3-464a-a547-a862aad22341 4:00:36 PM: error java.lang.SecurityException: Invoking methods on class [Ljava.lang.Object; is not allowed: size @line 5890 (setProgramSetpoints)
ef9bd33d-b8c3-464a-a547-a862aad22341 4:00:36 PM: info LOG: Updated 1 object (113ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 4:00:36 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@340543dd, 311014448992, [Sleep, 68, 70] ) - Sleep, 68, 70 (info), descriptionText:-> setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@340543dd, 311014448992, [Sleep, 68, 70] ) - Sleep, 68, 70 (info), isStateChange:true, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 4:00:36 PM: info setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@340543dd, 311014448992, [Sleep, 68, 70] ) - Sleep, 68, 70
ef9bd33d-b8c3-464a-a547-a862aad22341 4:00:36 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@340543dd, 311014448992, [Sleep, 68, 70] ) - Sleep, 68, 70 (info)
ef9bd33d-b8c3-464a-a547-a862aad22341 4:00:36 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@340543dd, 311014448992, [Sleep, 68, 70] ) - Sleep, 68, 70 (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 4:00:30 PM: debug LOG: getDeviceId() returning 311014448992
ef9bd33d-b8c3-464a-a547-a862aad22341 4:00:30 PM: info LOG: setProgramSetpoints( [Sleep, 68, 70] )

and here’s the setProgramSetpoints func from the IDE (sorry, no line numbers from paste, but the function declaration line is 5866:

boolean setProgramSetpoints(child, String deviceId, Object... programData) {
	// boolean debugLevelFour = debugLevel(4)
    
	if (child == null) child = getChildDevice(getThermostatDNI(deviceId))
    String statName = child.device.displayName
    //log.debug "setProgramSetpoints() for ${statName}"
    
    LOG("setProgramCheckPoints( ${child}, ${deviceId}, ${programData} ) - ${programData[0]}, ${programData[1]}, ${programData[2]}", 2, child, 'info')
    
	if (atomicState.connected?.toString() != 'full') {
		LOG("API is not fully connected, queueing call to setProgramSetpoints(${child.device.displayName}, ${deviceId}, ${heatingSetpoint} ${coolingSetpoint}", 2, child, 'warn')
		queueFailedCall('setProgramSetpoints', child.device.deviceNetworkId, 4, deviceId, programName, heatingSetpoint, coolingSetpoint)
		return false
	}
    
    def program = [currentClimateRef:atomicState.currentClimateRef[deviceId],
					   climates:atomicState.climates[deviceId],
					   schedule:atomicState.schedule[deviceId]] as HashMap
	if (!program) {
		return false
	}
    
    Set found = new HashSet()
    Set notFound = new HashSet()
    for (int paramIdx = 0; paramIdx < programData.size(); paramIdx += 3) {
        String programName = programData[paramIdx].toString()
        String heatingSetpoint = programData[paramIdx + 1].toString()
        String coolingSetpoint = programData[paramIdx + 2].toString()
        notFound.add(programName)
		LOG("setProgramSetpoints() for ${statName} (${deviceId}): ${programName}, heatSP: ${heatingSetpoint}, coolSP: ${coolingSetpoint})", 2, child, 'info')
		
		// convert C temps to F
		def isMetric = (temperatureScale == "C")
		def ht = (heatingSetpoint?.isBigDecimal() ? (roundIt((isMetric ? (cToF(heatingSetpoint as BigDecimal) * 10.0) : ((heatingSetpoint as BigDecimal) * 10.0)), 0)) : null )		// better precision using BigDecimal round-half-up
		def ct = (coolingSetpoint?.isBigDecimal() ? (roundIt((isMetric ? (cToF(coolingSetpoint as BigDecimal) * 10.0) : ((coolingSetpoint as BigDecimal) * 10.0)), 0)) : null )
		
		// IFF autoHeatCoolFeatureEnabled, then enforce the minimum delta
		def hasAutoMode = atomicState.settings ? atomicState.settings[deviceId].autoHeatCoolFeatureEnabled : false
		def delta = !hasAutoMode ? 0.0 : (atomicState.settings ? atomicState.settings[deviceId]?.heatCoolMinDelta : null)
		if (hasAutoMode && (delta != null) && (ht != null) && (ct != null) && (ht <= ct) && ((ct - ht) < delta)) {
			LOG("setProgramSetpoints() - Error: Auto Mode is enabled on ${statName}, heating/cooling setpoints must be at least ${delta/10}°F apart.",1,child,'error')
			return false
		}
			
		int c = 0
		while ( program.climates[c] ) {	
			if ((program.climates[c].name == programName) || (program.climates[c].climateRef == programName)) { 	// Allow search by programName or programIc
				// found the program we want to change
                found.add(programName)
                notFound.remove(programName)
				def heatTemp = program.climates[c]?.heatTemp
				def coolTemp = program.climates[c]?.coolTemp
				def adjusted = ''
				// If we have both ht & ct and we support Auto Mode, we already know the delta is good
				// but if we only have 1, we need to determine the valid value for the other
				// if no Auto mode, we just copy the current value over, otherwise we adjust it
				if (!ct) {
					ct = (!hasAutoMode && coolTemp) ? coolTemp : ((!coolTemp || ((coolTemp - ht) < delta)) ? (ht + delta) : coolTemp)
					if (hasAutoMode && (!coolingSetpoint || (ct != cooltemp))) adjusted = 'cool'
				} else if (!ht) {
					ht = (!hasAutoMode && heatTemp) ? heatTemp : ((!heatTemp || ((ct - heatTemp) < delta)) ? (ct - delta) : heatTemp)
					if (hasAutoMode && (!heatingSetpoint || (ht != heatTemp))) adjusted = 'heat'
				}
				LOG("setProgramSetpoints(${programName}) - heatingSetpoint: ${ht/10}°F ${adjusted=='heat'?'(adjusted)':''}, coolingSetpoint: ${ct/10}°F ${adjusted=='cool'?'(adjusted)':''}${adjusted?', minDelta: '+(delta/10).toString()+'°F':''}",2,child,'info')
				program.climates[c].heatTemp = ht
				program.climates[c].coolTemp = ct
			}
			c++
		}
	}
    
    if (!found.isEmpty()) {
        if (updateProgramDirect( child, deviceId, program )) {
			LOG("setProgramSetpoints() for ${statName} (${deviceId}): ${found} setpoints change - Succeeded", 2, child, 'info')
			return true
		} else {
			LOG("setProgramSetpoints() for ${statName} (${deviceId}): ${found} setpoints change - Failed", 1, child, 'warn')
			// updateProgramDirect() will queue failed requests
			return false
		}
    }
    
    if (!notFound.isEmpty()) {
	    // didn't find the specified climate
	    LOG("setProgramSetpoints(): ${notFound} not found for ${statName} (${deviceId})", 1, child, 'warn')
    }
    
	return false
}

OK, can you change this line:

for (int paramIdx = 0; paramIdx < programData.size(); paramIdx += 3) {

to

for (int paramIdx = 0; (programData[paramIdx] && (programData[paramIdx].toString() != "")); paramIdx += 3) {

If that doesn’t work, then we’ll try copying the programData Object into a List…

Looks like a different exception now. Here are the thermostat logs:

ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: trace LOG: generateEvent() - In each loop: object #17 name: forced value: false
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:humidity, linkText:EcobeeTherm: Living Room, handlerName:humidity, value:52, unit:%, descriptionText:Humidity is 52% (setpoint: 36%), displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: info LOG: Updated 17 objects (320ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: trace LOG: generateEvent() - In each loop: object #16 name: thermostatTime value: 2021-02-24 17:50:50
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:heatingSetpoint, linkText:EcobeeTherm: Living Room, handlerName:heatingSetpoint, value:70.0, unit:F, descriptionText:Heating setpoint is 70.0°F])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: debug LOG: generateEvent() - Temperature updated, calling sendevent([name:temperature, linkText:EcobeeTherm: Living Room, handlerName:temperature, value:74.0, unit:F, descriptionText:Temperature is 74.0°F, displayed:true, isStateChange:false, data:[microDeviceTile:[type:value, label:74.0°, backgroundColor:#44b621]], description:])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: trace LOG: generateEvent() - In each loop: object #13 name: temperature value: 74.0
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:temperature, linkText:EcobeeTherm: Living Room, handlerName:temperature, value:74.0, unit:F, descriptionText:Temperature is 74.0°F, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: trace LOG: generateEvent() - In each loop: object #3 name: heatingSetpoint value: 70.0
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:coolingSetpoint, linkText:EcobeeTherm: Living Room, handlerName:coolingSetpoint, value:75.0, unit:F, descriptionText:Cooling setpoint is 75.0°F, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: trace LOG: generateEvent() - In each loop: object #2 name: lastPoll value: full @ 2021-02-24 17:50:52 CST
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: trace LOG: generateEvent() - In each loop: object #1 name: forced value: true
ef9bd33d-b8c3-464a-a547-a862aad22341 6:04:56 PM: debug LOG: generateEvent(): parsing data [[forced:true], [lastPoll:full @ 2021-02-24 17:50:52 CST], [heatingSetpoint:70.0], [coolingSetpoint:75.0], [temperature:74.0], [humidity:52], [:], [thermostatTime:2021-02-24 17:50:50], [forced:false]]
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:56 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:setProgramSetpoints(Home) - heatingSetpoint: 70°F , coolingSetpoint: 75°F (info), descriptionText:-> setProgramSetpoints(Home) - heatingSetpoint: 70°F , coolingSetpoint: 75°F (info), isStateChange:true, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:56 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:setProgramSetpoints(Home) - heatingSetpoint: 70°F , coolingSetpoint: 75°F (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:56 PM: info LOG: Updated 1 object (57ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:56 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Home, heatSP: 70, coolSP: 75) (info), descriptionText:-> setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Home, heatSP: 70, coolSP: 75) (info), isStateChange:true, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:56 PM: info setProgramSetpoints(Home) - heatingSetpoint: 70°F , coolingSetpoint: 75°F
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:56 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@203bd279, 311014448992, [Home, 70, 75] ) - Home, 70, 75 (info), descriptionText:-> setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@203bd279, 311014448992, [Home, 70, 75] ) - Home, 70, 75 (info), isStateChange:true, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:56 PM: info setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@203bd279, 311014448992, [Home, 70, 75] ) - Home, 70, 75
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:56 PM: info LOG: Updated 1 object (91ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:56 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@203bd279, 311014448992, [Home, 70, 75] ) - Home, 70, 75 (info)
ef9bd33d-b8c3-464a-a547-a862aad22341 6:03:47 PM: info LOG: setProgramSetpoints( [Home, 70, 75] )
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:15 PM: info LOG: Updated 1 object (55ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:15 PM: error java.lang.ArrayIndexOutOfBoundsException: 3 @line 5890 (setProgramSetpoints)
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:15 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@6118563, 311014448992, [Sleep, 68, 70] ) - Sleep, 68, 70 (info), descriptionText:-> setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@6118563, 311014448992, [Sleep, 68, 70] ) - Sleep, 68, 70 (info), isStateChange:true, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:15 PM: info setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:15 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70) (info), descriptionText:-> setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70) (info), isStateChange:true, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:15 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70) (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:15 PM: info setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@6118563, 311014448992, [Sleep, 68, 70] ) - Sleep, 68, 70
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:15 PM: info LOG: Updated 1 object (100ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:15 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:setProgramCheckPoints( script_dth_365e4ca9e67ef9169f7a7ef19a8aa497218d9bd6e836289cf6c2bd7ca8b51a2d@6118563, 311014448992, [Sleep, 68, 70] ) - Sleep, 68, 70 (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:11 PM: debug LOG: getDeviceId() returning 311014448992
ef9bd33d-b8c3-464a-a547-a862aad22341 6:01:03 PM: error java.lang.reflect.UndeclaredThrowableException @line 3405 (setProgramSetpoints)
ef9bd33d-b8c3-464a-a547-a862aad22341 6:00:49 PM: debug LOG: getDeviceId() returning 311014448992
ef9bd33d-b8c3-464a-a547-a862aad22341 6:00:49 PM: info LOG: setProgramSetpoints( [Sleep, 68, 70] )
ef9bd33d-b8c3-464a-a547-a862aad22341 6:00:28 PM: error java.lang.reflect.UndeclaredThrowableException @line 3405 (setProgramSetpoints)
ef9bd33d-b8c3-464a-a547-a862aad22341 5:59:59 PM: debug LOG: getDeviceId() returning 311014448992
ef9bd33d-b8c3-464a-a547-a862aad22341 5:59:59 PM: info LOG: setProgramSetpoints( [Sleep, 68, 70] )

OK, I think I got it worked out. Try using these from my development tree:

Ecobee Suite Thermostat
Ecobee Suite Manager

Yep, those appear to work. I’ll try to capture some logs later today. Let me know when the change has been merged to master. Thanks!

While it does appear to be updating the program set points, i’m still seeing exceptions in the device logs. See the very bottom here, where the program was first initiated:

ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:13 PM: trace Successful call to ecobee API.
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:Program settings request: [currentClimateRef:home, climates:[[climateRef:away, colour:9021815, coolFan:auto, coolTemp:780, heatFan:auto, heatTemp:680, isOccupied:false, isOptimized:true, name:Away, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:home, colour:13560055, coolFan:auto, coolTemp:750, heatFan:auto, heatTemp:700, isOccupied:true, isOptimized:false, name:Home, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:sleep, colour:2179683, coolFan:auto, coolTemp:700, heatFan:auto, heatTemp:680, isOccupied:true, isOptimized:false, name:Sleep, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20]], schedule:[[sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home,...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: sendJson() - {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"},"functions":[],"thermostat":{"program":{"currentClimateRef":"home","climates":[{"climateRef":"away","colour":9021815,"coolFan":"auto","coolTemp":780,"heatFan":"auto","heatTemp":680,"isOccupied":false,"isOptimized":true,"name":"Away","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"home","colour":13560055,"coolFan":"auto","coolTemp":750,"heatFan":"auto","heatTemp":700,"isOccupied":true,"isOptimized":false,"name":"Home","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"sleep","colour":2179683,"coolFan":"auto","coolTemp":700,"heatFan":"auto","heatTemp":680,"isOccupied":true,"isOptimized":false,"name":"Sleep","ow...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: info Program settings request: [currentClimateRef:home, climates:[[climateRef:away, colour:9021815, coolFan:auto, coolTemp:780, heatFan:auto, heatTemp:680, isOccupied:false, isOptimized:true, name:Away, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:home, colour:13560055, coolFan:auto, coolTemp:750, heatFan:auto, heatTemp:700, isOccupied:true, isOptimized:false, name:Home, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:sleep, colour:2179683, coolFan:auto, coolTemp:700, heatFan:auto, heatTemp:680, isOccupied:true, isOptimized:false, name:Sleep, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20]], schedule:[[sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:13 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:sendJson() resp.status 200, resp.data: [status:[code:0, message:]], returnStatus: 0 (trace)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70) (info), descriptionText:-> setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70) (info), isStateChange:true, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: info setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F (info), descriptionText:-> setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F (info), isStateChange:true, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: Updating Program settings for EcobeeTherm: Living Room (311014448992) (info)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:13 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:Successful call to ecobee API. (trace)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:13 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: Successful call to ecobee API. (trace)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: debug sendJson() - {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"},"functions":[],"thermostat":{"program":{"currentClimateRef":"home","climates":[{"climateRef":"away","colour":9021815,"coolFan":"auto","coolTemp":780,"heatFan":"auto","heatTemp":680,"isOccupied":false,"isOptimized":true,"name":"Away","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"home","colour":13560055,"coolFan":"auto","coolTemp":750,"heatFan":"auto","heatTemp":700,"isOccupied":true,"isOptimized":false,"name":"Home","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"sleep","colour":2179683,"coolFan":"auto","coolTemp":700,"heatFan":"auto","heatTemp":680,"isOccupied":true,"isOptimized":false,"name":"Sleep","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","n...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: Program settings request: [currentClimateRef:home, climates:[[climateRef:away, colour:9021815, coolFan:auto, coolTemp:780, heatFan:auto, heatTemp:680, isOccupied:false, isOptimized:true, name:Away, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:home, colour:13560055, coolFan:auto, coolTemp:750, heatFan:auto, heatTemp:700, isOccupied:true, isOptimized:false, name:Home, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:sleep, colour:2179683, coolFan:auto, coolTemp:700, heatFan:auto, heatTemp:680, isOccupied:true, isOptimized:false, name:Sleep, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20]], schedule:[[sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, h...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: info LOG: Updated 1 object (80ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:sendJson() - {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"},"functions":[],"thermostat":{"program":{"currentClimateRef":"home","climates":[{"climateRef":"away","colour":9021815,"coolFan":"auto","coolTemp":780,"heatFan":"auto","heatTemp":680,"isOccupied":false,"isOptimized":true,"name":"Away","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"home","colour":13560055,"coolFan":"auto","coolTemp":750,"heatFan":"auto","heatTemp":700,"isOccupied":true,"isOptimized":false,"name":"Home","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"sleep","colour":2179683,"coolFan":"auto","coolTemp":700,"heatFan":"auto","heatTemp":680,"isOccupied":true,"isOptimized":false,"name":"Sleep","owner":"system","sensors"...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:08 PM: info LOG: setProgramSetpoints( [Sleep, 68, 70] )
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: info setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:Updating Program settings for EcobeeTherm: Living Room (311014448992) (info), descriptionText:-> Updating Program settings for EcobeeTherm: Living Room (311014448992) (info), isStateChange:true, displayed:true])
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F (info)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:12 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70) (info)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): [Sleep] setpoints change - Succeeded (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:sendJson() resp.status 200, resp.data: [status:[code:0, message:]], returnStatus: 0 (trace)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: trace sendJson() resp.status 200, resp.data: [status:[code:0, message:]], returnStatus: 0
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:Program settings request: [currentClimateRef:home, climates:[[climateRef:away, colour:9021815, coolFan:auto, coolTemp:780, heatFan:auto, heatTemp:680, isOccupied:false, isOptimized:true, name:Away, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:home, colour:13560055, coolFan:auto, coolTemp:750, heatFan:auto, heatTemp:700, isOccupied:true, isOptimized:false, name:Home, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:sleep, colour:2179683, coolFan:auto, coolTemp:700, heatFan:auto, heatTemp:680, isOccupied:true, isOptimized:false, name:Sleep, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20]], schedule:[[sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, ...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: sendJson() resp.status 200, resp.data: [status:[code:0, message:]], returnStatus: 0 (trace)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: Updating Program settings for EcobeeTherm: Living Room (311014448992) (info)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: info LOG: Updated 1 object (53ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:Program settings request: [currentClimateRef:home, climates:[[climateRef:away, colour:9021815, coolFan:auto, coolTemp:780, heatFan:auto, heatTemp:680, isOccupied:false, isOptimized:true, name:Away, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:home, colour:13560055, coolFan:auto, coolTemp:750, heatFan:auto, heatTemp:700, isOccupied:true, isOptimized:false, name:Home, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:sleep, colour:2179683, coolFan:auto, coolTemp:700, heatFan:auto, heatTemp:680, isOccupied:true, isOptimized:false, name:Sleep, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20]], schedule:[[sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home,...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: trace LOG: setProgramSetpoints() SUCCEEDED!!!
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: info LOG: Updated 1 object (58ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: info LOG: Updated 1 object (53ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: info LOG: Updated 1 object (86ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: updateProgramDirect(): Updating Program settings for EcobeeTherm: Living Room (311014448992) returned true (info)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:updateProgramDirect(): Updating Program settings for EcobeeTherm: Living Room (311014448992) returned true (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: info LOG: Updated 1 object (55ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70) (info)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: debug sendJson() - {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"},"functions":[],"thermostat":{"program":{"currentClimateRef":"home","climates":[{"climateRef":"away","colour":9021815,"coolFan":"auto","coolTemp":780,"heatFan":"auto","heatTemp":680,"isOccupied":false,"isOptimized":true,"name":"Away","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"home","colour":13560055,"coolFan":"auto","coolTemp":750,"heatFan":"auto","heatTemp":700,"isOccupied":true,"isOptimized":false,"name":"Home","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"sleep","colour":2179683,"coolFan":"auto","coolTemp":700,"heatFan":"auto","heatTemp":680,"isOccupied":true,"isOptimized":false,"name":"Sleep","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","n...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: Successful call to ecobee API. (trace)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:06 PM: info LOG: Updated 1 object (54ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:sendJson() - {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"},"functions":[],"thermostat":{"program":{"currentClimateRef":"home","climates":[{"climateRef":"away","colour":9021815,"coolFan":"auto","coolTemp":780,"heatFan":"auto","heatTemp":680,"isOccupied":false,"isOptimized":true,"name":"Away","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"home","colour":13560055,"coolFan":"auto","coolTemp":750,"heatFan":"auto","heatTemp":700,"isOccupied":true,"isOptimized":false,"name":"Home","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"sleep","colour":2179683,"coolFan":"auto","coolTemp":700,"heatFan":"auto","heatTemp":680,"isOccupied":true,"isOptimized":false,"name":"Sleep","owner":"system","sensors"...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: sendJson() - {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"},"functions":[],"thermostat":{"program":{"currentClimateRef":"home","climates":[{"climateRef":"away","colour":9021815,"coolFan":"auto","coolTemp":780,"heatFan":"auto","heatTemp":680,"isOccupied":false,"isOptimized":true,"name":"Away","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"home","colour":13560055,"coolFan":"auto","coolTemp":750,"heatFan":"auto","heatTemp":700,"isOccupied":true,"isOptimized":false,"name":"Home","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"sleep","colour":2179683,"coolFan":"auto","coolTemp":700,"heatFan":"auto","heatTemp":680,"isOccupied":true,"isOptimized":false,"name":"Sleep","ow...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: info Program settings request: [currentClimateRef:home, climates:[[climateRef:away, colour:9021815, coolFan:auto, coolTemp:780, heatFan:auto, heatTemp:680, isOccupied:false, isOptimized:true, name:Away, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:home, colour:13560055, coolFan:auto, coolTemp:750, heatFan:auto, heatTemp:700, isOccupied:true, isOptimized:false, name:Home, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:sleep, colour:2179683, coolFan:auto, coolTemp:700, heatFan:auto, heatTemp:680, isOccupied:true, isOptimized:false, name:Sleep, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20]], schedule:[[sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: debug LOG: generateEvent() - Out of switch{}, calling sendevent([name:debugEventFromParent, linkText:EcobeeTherm: Living Room, handlerName:debugEventFromParent, value:sendJson() - {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"},"functions":[],"thermostat":{"program":{"currentClimateRef":"home","climates":[{"climateRef":"away","colour":9021815,"coolFan":"auto","coolTemp":780,"heatFan":"auto","heatTemp":680,"isOccupied":false,"isOptimized":true,"name":"Away","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"home","colour":13560055,"coolFan":"auto","coolTemp":750,"heatFan":"auto","heatTemp":700,"isOccupied":true,"isOptimized":false,"name":"Home","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"sleep","colour":2179683,"coolFan":"auto","coolTemp":700,"heatFan...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: Program settings request: [currentClimateRef:home, climates:[[climateRef:away, colour:9021815, coolFan:auto, coolTemp:780, heatFan:auto, heatTemp:680, isOccupied:false, isOptimized:true, name:Away, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:home, colour:13560055, coolFan:auto, coolTemp:750, heatFan:auto, heatTemp:700, isOccupied:true, isOptimized:false, name:Home, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:sleep, colour:2179683, coolFan:auto, coolTemp:700, heatFan:auto, heatTemp:680, isOccupied:true, isOptimized:false, name:Sleep, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20]], schedule:[[sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, h...[TRUNCATED]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: info LOG: Updated 1 object (52ms)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:Updating Program settings for EcobeeTherm: Living Room (311014448992) (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: trace LOG: generateEvent() - In each loop: object #1 name: debugEventFromParent value: setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F (info)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: info setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: info setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:05 PM: debug LOG: generateEvent(): parsing data [[debugEventFromParent:setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70) (info)]]
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:01 PM: debug LOG: getDeviceId() returning 311014448992
ef9bd33d-b8c3-464a-a547-a862aad22341 3:01:01 PM: info LOG: setProgramSetpoints( [Sleep, 68, 70] )
ef9bd33d-b8c3-464a-a547-a862aad22341 3:00:44 PM: error java.lang.reflect.UndeclaredThrowableException @line 3407 (setProgramSetpoints)
ef9bd33d-b8c3-464a-a547-a862aad22341 3:00:22 PM: debug LOG: getDeviceId() returning 311014448992
ef9bd33d-b8c3-464a-a547-a862aad22341 3:00:22 PM: info LOG: setProgramSetpoints( [Sleep, 68, 70] )

and here are the app logs during that time frame:

1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:04:35 PM: trace LOG: checkThermostatSummary() - 311014448992
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:04:35 PM: trace LOG: =====> pollChildren() - forcePoll(false) atomicState.lastPoll(1614546233795) now(1614546275299) atomicState.lastPollDate(2021-02-28 15:03:53 CST)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:04:35 PM: trace LOG: scheduleWatchdog() called with evt (null) & local (true)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:04:35 PM: trace LOG: Checking for updates...
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:04:35 PM: trace LOG: It has only been 0.7373333333 since last scheduleWatchdog was called. Please come back later.
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:04:35 PM: trace LOG: pollScheduled() - Running at 2021-02-28 15:04:35 CST (epic: 1614546275239)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:04:35 PM: trace LOG: checkThermostatSummary() - pollParams: [uri:https://api.ecobee.com, path:/1/thermostatSummary, headers:[Content-Type:application/json, Authorization:Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlJFWXhNVEpDT0Rnek9UaERRelJHTkRCRlFqZEdNVGxETnpaR1JUZzRNalEwTmtWR01UQkdPQSJ9.eyJodHRwczovL2NsYWltcy5lY29iZWUuY29tL21mYV9hY3RpdmUiOnRydWUsImlzcyI6Imh0dHBzOi8vYXV0aC5lY29iZWUuY29tLyIsInN1YiI6ImF1dGgwfGE5OTk3MDFkLWI2NzEtNDExMS1hZjVkLWE4ZTVmYzAxZGU1OCIsImF1ZCI6WyJodHRwczovL2RldmVsb3Blci1hcHBzLmVjb2JlZS5jb20vYXBpL3YxIiwiaHR0cHM6Ly9lY29iZWUtcHJvZC5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNjE0NTQ1MzE2LCJleHAiOjE2MTQ1NDg5MTYsImF6cCI6IkVuSkNsUmJKZVQ3RHFQbmxjMjlnb1IxaFF2blYzM3RFIiwic2NvcGUiOiJvcGVuaWQgc21hcnRSZWFkIHNtYXJ0V3JpdGUgb2ZmbGluZV9hY2Nlc3MifQ.uXy1gOg4Ju3GMAnmICUlxmDZFQ_EgEgJB0nQzA-nVaSykkXOFIXTsgWHo8ZhBSIGuPdB_9lHF-JKFbnK0OVOpzj9gXT5DhuNWEkR0wnMsPsvDEj8kFzio0hIOw7z5JAsImbGuCTlXTaWzspNmZXFkOepz32lqKzvZLd1-CEySB3-4uX4OLNZiW2i-u73EOIoxkfJ73Ziv-pNjHnTi11vgYvAo59B7InpTPggWo3DQfZVIFnieMJz1hd2oGbJ5T6Hl9rGZPmR9Ao4MdvEo9krixpV2TIIRNs-W2QELe7NYkkAMHlf0yiHxYPoTiCBPEyEIAR7FdmA3qYxbUpiquiSpQ], query:[format:json, body:{"selection":{"selectionType":"thermostats","selectionMatch":"311014448992","includeEquipmentStatus":"true"}}], timeout:30]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:04:35 PM: info LOG: getChildThermostatDeviceIdsString() - !singleStat returning the list for all thermostats
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:53 PM: trace LOG: pollEcobeeAPICallback() - T: true, R: false A: false, E: false, e: false
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:53 PM: trace LOG: <===== Leaving pollEcobeeAPICallback() results: true
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:53 PM: info LOG: Polling 311014448992 completed
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:53 PM: trace LOG: Updates sent (18 / 2934ms)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:53 PM: trace LOG: updateSensorData() - Updated these remoteSensors: [:]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:53 PM: trace LOG: Prep complete (228ms)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:53 PM: info LOG: pollEcobeeAPICallback() - Updated thermostat Living Room ([311014448992]) [1c9e4fb0-dad3-4d19-b370-bfbef481fdae.311014448992:[data:[], thermostatId:311014448992]]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:53 PM: trace LOG: Sensor data: [:]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:53 PM: debug LOG: Entered updateSensorData() [311014448992:[[capability:[[id:1, type:temperature, value:721], [id:2, type:occupancy, value:true]], code:M4XX, id:rs:100, inUse:true, name:Bedroom, type:ecobee3_remote_sensor], [capability:[[id:1, type:temperature, value:731], [id:2, type:humidity, value:56], [id:3, type:occupancy, value:true]], id:ei:0, inUse:true, name:Living Room, type:thermostat]]]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: pollEcobeeAPI() - jsonRequestBody is: {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992","includeEquipmentStatus":"true","includeSettings":"true","includeProgram":"true","includeEvents":"true","includeAudio":"true"}}
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: After watchdog tagging
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: isDaemonAlive() - Checking daemon (watchdog) in 'watchdog'
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: info LOG: Requesting ( equipmentStatus settings program events audio ) for thermostat Living Room (311014448992) - [true]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: isDaemonAlive() - result is true
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: info LOG: <===== Leaving checkThermostatSummary() result: true, tstats: 311014448992
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: info LOG: Polling 311014448992
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: checkThermostatSummary() - 311014448992
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: thermostatUpdated: true, forcePoll: false, a.needPrograms: true, checking: 311014448992
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: checkThermostatSummary() - poll results returned resp.data [revisionList:[311014448992:Living Room:true:210228141643:210221110038:210228205525:210228204500], status:[code:0, message:], statusList:[311014448992:], thermostatCount:1]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: warn LOG: scheduleWatchdog() --> pollAlive==true watchdogAlive==true
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: isDaemonAlive() - now() == 1614546231084 for daemon (watchdog)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: info LOG: isDaemonAlive() - Time since watchdog activation? 2.42135 -- lastScheduledWatchdog == 1614546085805
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: Checking for updates...
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: pollChildren(, false)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: info LOG: getChildThermostatDeviceIdsString() - !singleStat returning the list for all thermostats
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: isDaemonAlive() - now() == 1614546231075 for daemon (poll)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: info LOG: isDaemonAlive() - Time since last poll? 1.3006 -- lastScheduledPoll == 1614546153046
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:51 PM: trace LOG: scheduleWatchdog() called with evt (null) & local (true)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:46 PM: info LOG: setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): [Home] setpoints change - Succeeded
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:45 PM: info LOG: setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Home, heatSP: 70, coolSP: 75)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:45 PM: info LOG: setProgramSetpoints(Home) - heatingSetpoint: 70°F , coolingSetpoint: 75°F
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:03:45 PM: info LOG: Updating Program settings for EcobeeTherm: Living Room (311014448992)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: checkThermostatSummary() - poll results returned resp.data [revisionList:[311014448992:Living Room:true:210228141643:210221110038:210228205525:210228204500], status:[code:0, message:], statusList:[311014448992:], thermostatCount:1]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: isDaemonAlive() - now() == 1614546153124 for daemon (watchdog)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: isDaemonAlive(watchdog) - timeSinceLastScheduledWatchdog=(1.1220333333) Timestamps: (2021-02-28 15:01:25 CST) (epic: 1614546085805) now-(1614546153129)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: isDaemonAlive() - result is true
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: No updates
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: Checking for updates...
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: isDaemonAlive() - Checking daemon (watchdog) in 'watchdog'
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: isDaemonAlive() - Checking daemon (poll) in 'poll'
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: info LOG: isDaemonAlive() - Time since watchdog activation? 1.1220333333 -- lastScheduledWatchdog == 1614546085805
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: checkThermostatSummary() - 311014448992
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: =====> pollChildren() - forcePoll(false) atomicState.lastPoll(1614545796611) now(1614546153093) atomicState.lastPollDate(2021-02-28 14:56:36 CST)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: info LOG: getChildThermostatDeviceIdsString() - !singleStat returning the list for all thermostats
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: trace LOG: pollScheduled() - Running at 2021-02-28 15:02:33 CST (epic: 1614546153046)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:02:33 PM: info LOG: isDaemonAlive() - Time since last poll? 0.0012833333 -- lastScheduledPoll == 1614546153046
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:28 PM: trace LOG: No updates
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:27 PM: trace LOG: pollChildren(, false)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:28 PM: trace LOG: checkThermostatSummary() - 311014448992
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:27 PM: trace LOG: Checking for updates...
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:25 PM: trace LOG: It has only been 0.5439666667 since last scheduleWatchdog was called. Please come back later.
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:25 PM: trace LOG: scheduleWatchdog() called with evt (null) & local (false)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:17 PM: trace LOG: checkThermostatSummary() - 311014448992
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:17 PM: info LOG: getChildThermostatDeviceIdsString() - !singleStat returning the list for all thermostats
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:17 PM: trace LOG: checkThermostatSummary() - pollParams: [uri:https://api.ecobee.com, path:/1/thermostatSummary, headers:[Content-Type:application/json, Authorization:Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlJFWXhNVEpDT0Rnek9UaERRelJHTkRCRlFqZEdNVGxETnpaR1JUZzRNalEwTmtWR01UQkdPQSJ9.eyJodHRwczovL2NsYWltcy5lY29iZWUuY29tL21mYV9hY3RpdmUiOnRydWUsImlzcyI6Imh0dHBzOi8vYXV0aC5lY29iZWUuY29tLyIsInN1YiI6ImF1dGgwfGE5OTk3MDFkLWI2NzEtNDExMS1hZjVkLWE4ZTVmYzAxZGU1OCIsImF1ZCI6WyJodHRwczovL2RldmVsb3Blci1hcHBzLmVjb2JlZS5jb20vYXBpL3YxIiwiaHR0cHM6Ly9lY29iZWUtcHJvZC5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNjE0NTQ1MzE2LCJleHAiOjE2MTQ1NDg5MTYsImF6cCI6IkVuSkNsUmJKZVQ3RHFQbmxjMjlnb1IxaFF2blYzM3RFIiwic2NvcGUiOiJvcGVuaWQgc21hcnRSZWFkIHNtYXJ0V3JpdGUgb2ZmbGluZV9hY2Nlc3MifQ.uXy1gOg4Ju3GMAnmICUlxmDZFQ_EgEgJB0nQzA-nVaSykkXOFIXTsgWHo8ZhBSIGuPdB_9lHF-JKFbnK0OVOpzj9gXT5DhuNWEkR0wnMsPsvDEj8kFzio0hIOw7z5JAsImbGuCTlXTaWzspNmZXFkOepz32lqKzvZLd1-CEySB3-4uX4OLNZiW2i-u73EOIoxkfJ73Ziv-pNjHnTi11vgYvAo59B7InpTPggWo3DQfZVIFnieMJz1hd2oGbJ5T6Hl9rGZPmR9Ao4MdvEo9krixpV2TIIRNs-W2QELe7NYkkAMHlf0yiHxYPoTiCBPEyEIAR7FdmA3qYxbUpiquiSpQ], query:[format:json, body:{"selection":{"selectionType":"thermostats","selectionMatch":"311014448992","includeEquipmentStatus":"true"}}], timeout:30]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:13 PM: info LOG: updateProgramDirect(): Updating Program settings for EcobeeTherm: Living Room (311014448992) returned true
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:13 PM: trace LOG: sendJson() resp.status 200, resp.data: [status:[code:0, message:]], returnStatus: 0
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:12 PM: info LOG: Program settings request: [currentClimateRef:home, climates:[[climateRef:away, colour:9021815, coolFan:auto, coolTemp:780, heatFan:auto, heatTemp:680, isOccupied:false, isOptimized:true, name:Away, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:home, colour:13560055, coolFan:auto, coolTemp:750, heatFan:auto, heatTemp:700, isOccupied:true, isOptimized:false, name:Home, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20], [climateRef:sleep, colour:2179683, coolFan:auto, coolTemp:700, heatFan:auto, heatTemp:680, isOccupied:true, isOptimized:false, name:Sleep, owner:system, sensors:[[id:ei:0:1, name:Living Room], [id:rs:100:1, name:Bedroom]], type:program, vent:off, ventilatorMinOnTime:20]], schedule:[[sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home], [sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, sleep, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home, home,...[TRUNCATED]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:12 PM: info LOG: setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:06 PM: info LOG: updateProgramDirect(): Updating Program settings for EcobeeTherm: Living Room (311014448992) returned true
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:05 PM: debug LOG: sendJson() - {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"},"functions":[],"thermostat":{"program":{"currentClimateRef":"home","climates":[{"climateRef":"away","colour":9021815,"coolFan":"auto","coolTemp":780,"heatFan":"auto","heatTemp":680,"isOccupied":false,"isOptimized":true,"name":"Away","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"home","colour":13560055,"coolFan":"auto","coolTemp":750,"heatFan":"auto","heatTemp":700,"isOccupied":true,"isOptimized":false,"name":"Home","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:1","name":"Bedroom"}],"type":"program","vent":"off","ventilatorMinOnTime":20},{"climateRef":"sleep","colour":2179683,"coolFan":"auto","coolTemp":700,"heatFan":"auto","heatTemp":680,"isOccupied":true,"isOptimized":false,"name":"Sleep","owner":"system","sensors":[{"id":"ei:0:1","name":"Living Room"},{"id":"rs:100:...[TRUNCATED]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:06 PM: trace LOG: Successful call to ecobee API.
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:05 PM: info LOG: setProgramSetpoints(Sleep) - heatingSetpoint: 68°F , coolingSetpoint: 70°F
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:05 PM: info LOG: setProgramSetpoints() for EcobeeTherm: Living Room (311014448992): Sleep, heatSP: 68, coolSP: 70)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:06 PM: trace LOG: sendJson() resp.status 200, resp.data: [status:[code:0, message:]], returnStatus: 0
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:01:05 PM: info LOG: Updating Program settings for EcobeeTherm: Living Room (311014448992)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: After watchdog tagging
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:54 PM: trace LOG: No updates
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: checkThermostatSummary() - pollParams: [uri:https://api.ecobee.com, path:/1/thermostatSummary, headers:[Content-Type:application/json, Authorization:Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6IlJFWXhNVEpDT0Rnek9UaERRelJHTkRCRlFqZEdNVGxETnpaR1JUZzRNalEwTmtWR01UQkdPQSJ9.eyJodHRwczovL2NsYWltcy5lY29iZWUuY29tL21mYV9hY3RpdmUiOnRydWUsImlzcyI6Imh0dHBzOi8vYXV0aC5lY29iZWUuY29tLyIsInN1YiI6ImF1dGgwfGE5OTk3MDFkLWI2NzEtNDExMS1hZjVkLWE4ZTVmYzAxZGU1OCIsImF1ZCI6WyJodHRwczovL2RldmVsb3Blci1hcHBzLmVjb2JlZS5jb20vYXBpL3YxIiwiaHR0cHM6Ly9lY29iZWUtcHJvZC5hdXRoMC5jb20vdXNlcmluZm8iXSwiaWF0IjoxNjE0NTQ1MzE2LCJleHAiOjE2MTQ1NDg5MTYsImF6cCI6IkVuSkNsUmJKZVQ3RHFQbmxjMjlnb1IxaFF2blYzM3RFIiwic2NvcGUiOiJvcGVuaWQgc21hcnRSZWFkIHNtYXJ0V3JpdGUgb2ZmbGluZV9hY2Nlc3MifQ.uXy1gOg4Ju3GMAnmICUlxmDZFQ_EgEgJB0nQzA-nVaSykkXOFIXTsgWHo8ZhBSIGuPdB_9lHF-JKFbnK0OVOpzj9gXT5DhuNWEkR0wnMsPsvDEj8kFzio0hIOw7z5JAsImbGuCTlXTaWzspNmZXFkOepz32lqKzvZLd1-CEySB3-4uX4OLNZiW2i-u73EOIoxkfJ73Ziv-pNjHnTi11vgYvAo59B7InpTPggWo3DQfZVIFnieMJz1hd2oGbJ5T6Hl9rGZPmR9Ao4MdvEo9krixpV2TIIRNs-W2QELe7NYkkAMHlf0yiHxYPoTiCBPEyEIAR7FdmA3qYxbUpiquiSpQ], query:[format:json, body:{"selection":{"selectionType":"thermostats","selectionMatch":"311014448992","includeEquipmentStatus":"true"}}], timeout:30]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: isDaemonAlive() - Checking daemon (watchdog) in 'watchdog'
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: checkThermostatSummary() - 311014448992
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: info LOG: isDaemonAlive() - Time since watchdog activation? 9.4307666667 -- lastScheduledWatchdog == 1614545487399
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: isDaemonAlive() - Checking daemon (poll) in 'poll'
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: warn LOG: scheduleWatchdog() --> pollAlive==true watchdogAlive==true
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: =====> pollChildren() - forcePoll(false) atomicState.lastPoll(1614545796611) now(1614546053178) atomicState.lastPollDate(2021-02-28 14:56:36 CST)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: isDaemonAlive() - result is true
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: pollChildren(, false)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: checkThermostatSummary() - poll results returned resp.data [revisionList:[311014448992:Living Room:true:210228141643:210221110038:210228205525:210228204500], status:[code:0, message:], statusList:[311014448992:], thermostatCount:1]
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:54 PM: info LOG: <===== Leaving checkThermostatSummary() result: false, tstats:
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: isDaemonAlive() - result is true
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: info LOG: getChildThermostatDeviceIdsString() - !singleStat returning the list for all thermostats
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: Checking for updates...
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: isDaemonAlive() - now() == 1614546053242 for daemon (watchdog)
1c9e4fb0-dad3-4d19-b370-bfbef481fdae 3:00:53 PM: trace LOG: isDaemonAlive() - now() == 1614546053203 for daemon (poll)