I updated ESM, but unfortunately the resume command still doesn’t work. Here are the ESM logs when I turned the switch on - this correctly set the program to sleep with an indefinite hold:
1c9e4fb0 9:36:31 AM: trace Prep complete (313ms)
1c9e4fb0 9:36:31 AM: info Polling 311014448992 completed
1c9e4fb0 9:36:32 AM: trace Updates sent (559 / 3490ms)
1c9e4fb0 9:36:32 AM: trace <===== Leaving pollEcobeeAPICallback() results: true
1c9e4fb0 9:36:31 AM: debug updateSensorData() - Sensor Living Room, sensorDNI == ecobee_suite-sensor_tstat-ei:0-Living Room
1c9e4fb0 9:36:31 AM: trace Sensor data: [ecobee_suite-sensor-rs:100-M4XX:[name:Bedroom, data:[eventsUpdated:2020-05-03 09:36:29]]]
1c9e4fb0 9:36:31 AM: trace updateSensorData() - Updated these remoteSensors: [ecobee_suite-sensor-rs:100-M4XX:[name:Bedroom, data:[eventsUpdated:2020-05-03 09:36:29]]]
1c9e4fb0 9:36:31 AM: trace updateSensorData() - sensorCollector being updated with sensorData: [eventsUpdated:2020-05-03 09:36:29]
1c9e4fb0 9:36:31 AM: trace updateThermostatData() - Event data updated for thermostat Living Room (311014448992) = [[lastPoll:full @ 2020-05-03 09:36:31 CDT], [ventilatorMinOnTime:5], [currentProgram:Sleep], [currentProgramName:Hold: Sleep, schedule:Hold: Sleep until 2035-01-01 00:00:00], [currentProgramId:sleep], [holdEndDate:2035-01-01 00:00:00, schedText: until 2035-01-01 00:00:00], [thermostatHold:hold], [holdEndsAt:a long time from now], [holdStatus:Hold ends a long time from now], [eventsUpdated:2020-05-03 09:36:29]]
1c9e4fb0 9:36:31 AM: info forcePoll
1c9e4fb0 9:36:31 AM: info =====> pollEcobeeAPICallback() entered - thermostatIdsString = 311014448992
1c9e4fb0 9:36:29 AM: info getChildThermostatDeviceIdsString() - !singleStat returning the list for all thermostats
1c9e4fb0 9:36:29 AM: trace pollEcobeeAPI() - jsonRequestBody is: {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992","includeEquipmentStatus":"true","includeSettings":"true","includeProgram":"true","includeEvents":"true","includeAudio":"true"}}
1c9e4fb0 9:36:28 AM: trace checkThermostatSummary() - 311014448992
1c9e4fb0 9:36:28 AM: trace It has only been 0.2464666667 since last scheduleWatchdog was called. Please come back later.
1c9e4fb0 9:36:28 AM: trace scheduleWatchdog() called with evt (null) & local (true)
1c9e4fb0 9:36:29 AM: info <===== Leaving checkThermostatSummary() result: true, tstats: 311014448992
1c9e4fb0 9:36:29 AM: info Polling 311014448992
1c9e4fb0 9:36:28 AM: trace Checking for updates...
1c9e4fb0 9:36:14 AM: warn scheduleWatchdog() --> pollAlive==true watchdogAlive==true
1c9e4fb0 9:36:14 AM: trace After watchdog tagging
1c9e4fb0 9:36:14 AM: trace isDaemonAlive() - result is true
1c9e4fb0 9:36:14 AM: trace isDaemonAlive(watchdog) - timeSinceLastScheduledWatchdog=(0.0007166667) Timestamps: (2020-05-03 09:36:14 CDT) (epic: 1588516574093) now-(1588516574139)
1c9e4fb0 9:36:14 AM: trace isDaemonAlive() - Checking daemon (watchdog) in 'watchdog'
1c9e4fb0 9:36:14 AM: info isDaemonAlive() - Time since watchdog activation? 0.0007166667 -- lastScheduledWatchdog == 1588516574093
1c9e4fb0 9:36:14 AM: trace isDaemonAlive() - now() == 1588516574134 for daemon (watchdog)
1c9e4fb0 9:36:14 AM: trace isDaemonAlive() - result is true
1c9e4fb0 9:36:14 AM: trace isDaemonAlive() - Checking daemon (poll) in 'poll'
1c9e4fb0 9:36:14 AM: info isDaemonAlive() - Time since last poll? 4.7849333333 -- lastScheduledPoll == 1588516287037
1c9e4fb0 9:36:14 AM: trace isDaemonAlive() - now() == 1588516574126 for daemon (poll)
1c9e4fb0 9:36:14 AM: trace scheduleWatchdog() called with evt (null) & local (false)
1c9e4fb0 9:36:14 AM: trace scheduleWatchdog() called with evt (null) & local (false)
1c9e4fb0 9:34:39 AM: info setProgram(sleep) for EcobeeTherm: Living Room (311014448992): [[heatingSetpoint:68], [coolingSetpoint:70], [currentProgram:Sleep], [currentProgramId:sleep], [thermostatHold:hold]]
1c9e4fb0 9:34:39 AM: trace setProgram() for thermostat EcobeeTherm: Living Room: about to sendJson with jsonRequestBody ({"functions":[{"type":"setHold","params":{"holdClimateRef":"sleep","holdType":"indefinite"}}],"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"}}
1c9e4fb0 9:34:38 AM: info getChildThermostatDeviceIdsString() - !singleStat returning the list for all thermostats
1c9e4fb0 9:34:38 AM: trace pollChildren(311014448992, false)
1c9e4fb0 9:34:38 AM: trace =====> pollChildren(311014448992) - forcePoll(false) atomicState.lastPoll(1588516289453) now(1588516478369) atomicState.lastPollDate(2020-05-03 09:31:29 CDT)
1c9e4fb0 9:34:39 AM: info Polling 311014448992 completed
1c9e4fb0 9:34:39 AM: trace Updates sent (141 / 900ms)
1c9e4fb0 9:34:39 AM: trace <===== Leaving pollEcobeeAPICallback() results: true
1c9e4fb0 9:34:39 AM: trace Prep complete (163ms)
1c9e4fb0 9:34:39 AM: trace updateSensorData() - sensorCollector being updated with sensorData: [temperature:70.9]
1c9e4fb0 9:34:39 AM: debug updateSensorData() - Sensor Living Room, sensorDNI == ecobee_suite-sensor_tstat-ei:0-Living Room
1c9e4fb0 9:34:39 AM: trace Sensor data: [ecobee_suite-sensor-rs:100-M4XX:[name:Bedroom, data:[temperature:70.9]]]
1c9e4fb0 9:34:39 AM: debug Entered updateSensorData() [311014448992:[[capability:[[id:1, type:temperature, value:709], [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:713], [id:2, type:humidity, value:50], [id:3, type:occupancy, value:true]], id:ei:0, inUse:true, name:Living Room, type:thermostat]]]
1c9e4fb0 9:34:39 AM: debug updateSensorData() - Sensor Bedroom, sensorDNI == ecobee_suite-sensor-rs:100-M4XX
1c9e4fb0 9:34:39 AM: info 1 update for 1 sensor (Bedroom)
1c9e4fb0 9:34:39 AM: debug updateSensorData() - Sensor Bedroom temp is 709
1c9e4fb0 9:34:39 AM: trace updateThermostatData() - Event data updated for thermostat Living Room (311014448992) = [[lastPoll:full @ 2020-05-03 09:34:38 CDT], [temperature:71], [runtimeUpdated:2020-05-03 09:34:38], [extendRTUpdated:2020-05-03 09:34:38], [sensorsUpdated:2020-05-03 09:34:38]]
1c9e4fb0 9:34:39 AM: info Living Room data: [[lastPoll:full @ 2020-05-03 09:34:38 CDT], [temperature:71], [runtimeUpdated:2020-05-03 09:34:38], [extendRTUpdated:2020-05-03 09:34:38], [sensorsUpdated:2020-05-03 09:34:38], [thermostatTime:2020-05-03 09:34:38]]
1c9e4fb0 9:34:39 AM: info 6 updates for 1 thermostat (Living Room)
1c9e4fb0 9:34:38 AM: trace updateThermostatData(Living Room 311014448992) - currentClimateRef: home, currentClimate: null, currentClimateName: null, currentClimateId: null, currentClimateOwner: null, currentClimateType: null, thermostatHold: null
1c9e4fb0 9:34:38 AM: trace updateThermostatData() - updatesLog: [alertsUpdated:false, changedTids:[311014448992], equipUpdated:false, extendRTUpdated:true, forcePoll:false, getWeather:false, runtimeUpdated:true, thermostatUpdated:false, weatherUpdated:false]
1c9e4fb0 9:34:38 AM: trace pollEcobeeAPICallback() - T: false, R: true A: false, E: false, e: true
1c9e4fb0 9:34:38 AM: info pollEcobeeAPICallback() - Parsing complete
1c9e4fb0 9:34:38 AM: info =====> pollEcobeeAPICallback() entered - thermostatIdsString = 311014448992
And here are the corresponding thermostat logs:
ef9bd33d 9:41:32 AM: error groovy.lang.MissingMethodException: No signature of method: script_dth_8c0ca28dc230c994c9dcb13574679d3149c7133a8fce19f7ea469b905cc920ba.generateEvent() is applicable for argument types: (java.util.ArrayList) values: [[[equipmentStatus:compCool1,fan], [thermostatOperatingState:cooling], ...]]
Possible solutions: generateEvent(java.util.Map), createEvent(java.util.Map) @line 2150 (doCall)
ef9bd33d 9:36:32 AM: error groovy.lang.MissingMethodException: No signature of method: script_dth_8c0ca28dc230c994c9dcb13574679d3149c7133a8fce19f7ea469b905cc920ba.generateEvent() is applicable for argument types: (java.util.ArrayList) values: [[[lastPoll:full @ 2020-05-03 09:36:31 CDT], [ventilatorMinOnTime:5], ...]]
Possible solutions: generateEvent(java.util.Map), createEvent(java.util.Map) @line 2150 (doCall)
ef9bd33d 9:34:39 AM: info Updated 1 object (31ms)
ef9bd33d 9:34:39 AM: info Updated 1 object (35ms)
ef9bd33d 9:34:39 AM: debug Ecobee Suite Manager: sendJson() resp.status 200, resp.data: [status:[code:0, message:]], returnStatus: 0 (trace)
ef9bd33d 9:34:39 AM: debug Ecobee Suite Manager: setProgram(sleep) for EcobeeTherm: Living Room (311014448992): [[heatingSetpoint:68], [coolingSetpoint:70], [currentProgram:Sleep], [currentProgramId:sleep], [thermostatHold:hold]] (info)
ef9bd33d 9:34:39 AM: info Updated 1 object (33ms)
ef9bd33d 9:34:39 AM: info Updated 1 object (33ms)
ef9bd33d 9:34:39 AM: debug Ecobee Suite Manager: setProgram() for thermostat EcobeeTherm: Living Room: about to sendJson with jsonRequestBody ({"functions":[{"type":"setHold","params":{"holdClimateRef":"sleep","holdType":"indefinite"}}],"selection":{"selectionType":"thermostats","selectionMatch":"311014448992"}} (trace)
ef9bd33d 9:34:39 AM: info Updated 1 object (35ms)
ef9bd33d 9:34:39 AM: debug Ecobee Suite Manager: Successful call to ecobee API. (trace)
ef9bd33d 9:34:38 AM: info Using holdType indefinite
ef9bd33d 9:34:39 AM: error groovy.lang.MissingMethodException: No signature of method: script_dth_8c0ca28dc230c994c9dcb13574679d3149c7133a8fce19f7ea469b905cc920ba.generateEvent() is applicable for argument types: (java.util.ArrayList) values: [[[lastPoll:full @ 2020-05-03 09:34:38 CDT], [temperature:71], ...]]
Possible solutions: generateEvent(java.util.Map), createEvent(java.util.Map) @line 2150 (doCall)
ef9bd33d 9:31:30 AM: error groovy.lang.MissingMethodException: No signature of method: script_dth_8c0ca28dc230c994c9dcb13574679d3149c7133a8fce19f7ea469b905cc920ba.generateEvent() is applicable for argument types: (java.util.ArrayList) values: [[[lastPoll:full @ 2020-05-03 09:31:29 CDT], [heatingSetpoint:69], ...]]
Possible solutions: generateEvent(java.util.Map), createEvent(java.util.Map) @line 2150 (doCall)
Then at 10;43, I turned the switch off, which should issue the resume program command. Curiously, there is no ESM log event for the resume program command:
1c9e4fb0 10:46:15 AM: trace It has only been 0.4635166667 since last scheduleWatchdog was called. Please come back later.
1c9e4fb0 10:46:15 AM: trace scheduleWatchdog() called with evt (null) & local (false)
1c9e4fb0 10:45:50 AM: trace Prep complete (283ms)
1c9e4fb0 10:45:49 AM: debug Entered updateSensorData() [311014448992:[[capability:[[id:1, type:temperature, value:705], [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:709], [id:2, type:humidity, value:50], [id:3, type:occupancy, value:true]], id:ei:0, inUse:true, name:Living Room, type:thermostat]]]
1c9e4fb0 10:45:49 AM: info Living Room data: [[lastPoll:full @ 2020-05-03 10:45:49 CDT], [motion:active], [temperature:71], [runtimeUpdated:2020-05-03 10:45:47], [extendRTUpdated:2020-05-03 10:45:47], [sensorsUpdated:2020-05-03 10:45:47], [thermostatTime:2020-05-03 10:45:47]]
1c9e4fb0 10:45:49 AM: info 7 updates for 1 thermostat (Living Room)
1c9e4fb0 10:45:49 AM: trace Found a running Event: [coolHoldTemp:700, coolRelativeTemp:0, drRampUpTemp:0, drRampUpTime:3600, dutyCyclePercentage:255, endDate:2035-01-01, endTime:00:00:00, fan:auto, fanMinOnTime:0, heatHoldTemp:680, heatRelativeTemp:0, holdClimateRef:sleep, isCoolOff:false, isHeatOff:false, isOccupied:true, isOptional:true, isTemperatureAbsolute:true, isTemperatureRelative:false, linkRef:, name:auto, occupiedSensorActive:false, running:true, startDate:2020-05-03, startTime:09:34:39, type:hold, unoccupiedSensorActive:false, vent:off, ventilatorMinOnTime:5]
1c9e4fb0 10:45:49 AM: debug updateSensorData() - Sensor Bedroom, sensorDNI == ecobee_suite-sensor-rs:100-M4XX
1c9e4fb0 10:45:49 AM: info Living Room -> scheduledClimateId: unknown, scheduledClimateName: Unknown, scheduledClimateOwner: null, scheduledClimateType: null, climatesList: []
1c9e4fb0 10:45:49 AM: trace updateThermostatData() - Event data updated for thermostat Living Room (311014448992) = [[lastPoll:full @ 2020-05-03 10:45:49 CDT], [motion:active], [temperature:71], [runtimeUpdated:2020-05-03 10:45:47], [extendRTUpdated:2020-05-03 10:45:47], [sensorsUpdated:2020-05-03 10:45:47]]
1c9e4fb0 10:45:49 AM: info forcePoll
1c9e4fb0 10:45:49 AM: info pollEcobeeAPICallback() - Parsing data for thermostat (311014448992)
1c9e4fb0 10:45:49 AM: info pollEcobeeAPICallback() - Parsing complete
1c9e4fb0 10:45:47 AM: info getChildThermostatDeviceIdsString() - !singleStat returning the list for all thermostats
1c9e4fb0 10:45:47 AM: trace checkThermostatSummary() - pollParams: [uri:https://api.ecobee.com, path:/1/thermostatSummary, headers:[Content-Type:application/json, Authorization:Bearer <redacted>], query:[format:json, body:{"selection":{"selectionType":"thermostats","selectionMatch":"311014448992","includeEquipmentStatus":"true"}}], timeout:30]
1c9e4fb0 10:45:47 AM: info <===== Leaving checkThermostatSummary() result: true, tstats: 311014448992
1c9e4fb0 10:45:47 AM: trace isDaemonAlive(watchdog) - timeSinceLastScheduledWatchdog=(9.5071833333) Timestamps: (2020-05-03 10:36:16 CDT) (epic: 1588520176851) now-(1588520747285)
1c9e4fb0 10:45:47 AM: trace isDaemonAlive() - Checking daemon (watchdog) in 'watchdog'
1c9e4fb0 10:45:47 AM: trace isDaemonAlive() - Checking daemon (poll) in 'poll'
1c9e4fb0 10:45:47 AM: info isDaemonAlive() - Time since last poll? 0.0015166667 -- lastScheduledPoll == 1588520747186
1c9e4fb0 10:45:47 AM: trace isDaemonAlive() - result is true
1c9e4fb0 10:45:47 AM: trace isDaemonAlive() - now() == 1588520747270 for daemon (poll)
1c9e4fb0 10:45:47 AM: trace Checking for updates...
1c9e4fb0 10:45:47 AM: trace pollScheduled() - Running at 2020-05-03 10:45:47 CDT (epic: 1588520747186)
1c9e4fb0 10:40:49 AM: debug updateSensorData() - Sensor Bedroom temp is 700
1c9e4fb0 10:40:49 AM: trace Prep complete (343ms)
1c9e4fb0 10:40:49 AM: trace Sensor data: [ecobee_suite-sensor-rs:100-M4XX:[name:Bedroom, data:[temperature:70.0]]]
1c9e4fb0 10:40:49 AM: trace updateSensorData() - sensorCollector being updated with sensorData: [temperature:70.0]
1c9e4fb0 10:40:49 AM: debug Entered updateSensorData() [311014448992:[[capability:[[id:1, type:temperature, value:700], [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:705], [id:2, type:humidity, value:50], [id:3, type:occupancy, value:false]], id:ei:0, inUse:true, name:Living Room, type:thermostat]]]
1c9e4fb0 10:40:49 AM: trace updateThermostatData() - Event data updated for thermostat Living Room (311014448992) = [[lastPoll:full @ 2020-05-03 10:40:49 CDT], [motion:inactive], [temperature:70], [humidity:50], [weatherTemperature:76, weatherHumidity:70, weatherDewpoint:66, weatherTempLowForecast:67,66.3,68.1,64,62.5], [runtimeUpdated:2020-05-03 10:40:47], [extendRTUpdated:2020-05-03 10:40:47], [weatherUpdated:2020-05-03 10:40:47], [sensorsUpdated:2020-05-03 10:40:47]]
1c9e4fb0 10:40:49 AM: info forcePoll
1c9e4fb0 10:40:49 AM: trace updateThermostatData() - updatesLog: [alertsUpdated:false, changedTids:[311014448992], equipUpdated:false, extendRTUpdated:true, forcePoll:false, getWeather:true, runtimeUpdated:true, thermostatUpdated:false, weatherUpdated:true]
1c9e4fb0 10:40:49 AM: info =====> pollEcobeeAPICallback() entered - thermostatIdsString = 311014448992
1c9e4fb0 10:40:46 AM: trace checkThermostatSummary() - 311014448992
1c9e4fb0 10:40:47 AM: trace pollEcobeeAPI() - jsonRequestBody is: {"selection":{"selectionType":"thermostats","selectionMatch":"311014448992","includeEquipmentStatus":"true","includeRuntime":"true","includeExtendedRuntime":"true","includeSensors":"true","includeWeather":"true"}}
1c9e4fb0 10:40:46 AM: warn scheduleWatchdog() --> pollAlive==true watchdogAlive==true
1c9e4fb0 10:40:46 AM: trace isDaemonAlive() - now() == 1588520446818 for daemon (watchdog)
1c9e4fb0 10:40:46 AM: trace isDaemonAlive() - Checking daemon (poll) in 'poll'
But you can see the command was received (?) by the thermostat:
ef9bd33d 10:45:50 AM: error groovy.lang.MissingMethodException: No signature of method: script_dth_8c0ca28dc230c994c9dcb13574679d3149c7133a8fce19f7ea469b905cc920ba.generateEvent() is applicable for argument types: (java.util.ArrayList) values: [[[lastPoll:full @ 2020-05-03 10:45:49 CDT], [motion:active], ...]]
Possible solutions: generateEvent(java.util.Map), createEvent(java.util.Map) @line 2150 (doCall)
ef9bd33d 10:43:27 AM: info resumeProgram() - No current hold
ef9bd33d 10:40:50 AM: error groovy.lang.MissingMethodException: No signature of method: script_dth_8c0ca28dc230c994c9dcb13574679d3149c7133a8fce19f7ea469b905cc920ba.generateEvent() is applicable for argument types: (java.util.ArrayList) values: [[[lastPoll:full @ 2020-05-03 10:40:49 CDT], [motion:inactive], ...]]
Possible solutions: generateEvent(java.util.Map), createEvent(java.util.Map) @line 2150 (doCall)