vojtamolda / homebridge-ecobee3-sensors

Homebridge plugin that exposes Ecobee 3 sensors as HomeKit accessories.
https://www.npmjs.com/package/homebridge-ecobee3-sensors
MIT License
26 stars 15 forks source link

Failure when adding accessories #9

Closed johnschult closed 7 years ago

johnschult commented 7 years ago

I have cleaned out persist, changed username and removed my Homebridge accessory from Home and restarted homebridge. When I try to add the accessory again Home says "Couldn't add Homebridge" and I get the following in the log:

[12/8/2016, 7:52:17 PM] Homebridge is running on port 51826.
[12/8/2016, 7:52:17 PM] [Ecobee] These are the steps authorize this application to access your Ecobee 3:
[12/8/2016, 7:52:17 PM] [Ecobee]   1. Go to https://www.ecobee.com/home/ecobeeLogin.jsp
[12/8/2016, 7:52:17 PM] [Ecobee]   2. Login to your thermostat console
[12/8/2016, 7:52:17 PM] [Ecobee]   3. Select 'MY APPS' from the menu on the top right.
[12/8/2016, 7:52:17 PM] [Ecobee]   4. Click 'Add Application'
[12/8/2016, 7:52:17 PM] [Ecobee]   5. Enter the following authorization code:
[12/8/2016, 7:52:17 PM] [Ecobee]    +------+
[12/8/2016, 7:52:17 PM] [Ecobee]    ¦ x23e ¦
[12/8/2016, 7:52:17 PM] [Ecobee]    +------+
[12/8/2016, 7:52:17 PM] [Ecobee]   6. Wait a moment.
[12/8/2016, 7:52:18 PM] [Ecobee] Waiting for user to authorize application. Retrying in 30 seconds.
[12/8/2016, 7:52:49 PM] [Ecobee] Authorization successful :-)
[12/8/2016, 7:52:49 PM] [Ecobee] Update sensors
[12/8/2016, 7:52:49 PM] [Ecobee] Create | Great Room | QRYQ
[12/8/2016, 7:52:50 PM] [Ecobee] [Great Room] Initialized | QRYQ
[12/8/2016, 7:52:50 PM] [Ecobee] [Great Room] Vacant | 21.3°C
[12/8/2016, 7:52:50 PM] [Ecobee] Create | Family Room | K52Q
[12/8/2016, 7:52:50 PM] [Ecobee] [Family Room] Initialized | K52Q
[12/8/2016, 7:52:50 PM] [Ecobee] [Family Room] Vacant | 22.1°C
[12/8/2016, 7:52:50 PM] [Ecobee] Create | Bedroom | undefined
[12/8/2016, 7:52:50 PM] [Ecobee] [Bedroom] Initialized | undefined
[12/8/2016, 7:52:50 PM] [Ecobee] [Bedroom] Vacant | 37% | 20.9°C
[12/8/2016, 7:52:50 PM] [Ecobee] Create | Guest Bedroom | MG4Y
[12/8/2016, 7:52:50 PM] [Ecobee] [Guest Bedroom] Initialized | MG4Y
[12/8/2016, 7:52:50 PM] [Ecobee] [Guest Bedroom] Vacant | 22.5°C
[12/8/2016, 7:52:50 PM] [Ecobee] [Bedroom] Vacant | 34% | 22.1°C
[12/8/2016, 7:52:50 PM] [Ecobee] Wait | 30 seconds
[12/8/2016, 7:52:50 PM] [Ecobee] Tokens
Fri, 09 Dec 2016 00:53:04 GMT EventedHTTPServer [::ffff:192.168.1.71] New connection from client
Fri, 09 Dec 2016 00:53:04 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP server listening on port 33227
Fri, 09 Dec 2016 00:53:04 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-setup
Fri, 09 Dec 2016 00:53:04 GMT HAPServer [CD:00:2D:F3:CE:32] HAP Request: POST /pair-setup
Fri, 09 Dec 2016 00:53:04 GMT HAPServer [CD:00:2D:F3:CE:32] Pair step 1/5
Fri, 09 Dec 2016 00:53:06 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 00:53:09 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-setup
Fri, 09 Dec 2016 00:53:09 GMT HAPServer [CD:00:2D:F3:CE:32] HAP Request: POST /pair-setup
Fri, 09 Dec 2016 00:53:09 GMT HAPServer [CD:00:2D:F3:CE:32] Pair step 2/5
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-setup
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] HAP Request: POST /pair-setup
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] Pair step 3/5
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] Pair step 4/5
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] Pair step 5/5
Fri, 09 Dec 2016 00:53:11 GMT Accessory [Homebridge] Paired with client 868C2787-2FEA-4BB5-84CA-3B5B32AA522F
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] Client connection closed
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP connection was closed
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP server was closed
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] New connection from client
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP server listening on port 37815
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-verify
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] HAP Request: POST /pair-verify
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] Pair verify step 1/2
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-verify
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] HAP Request: POST /pair-verify
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] Pair verify step 2/2
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] Client 868C2787-2FEA-4BB5-84CA-3B5B32AA522F verification complete
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /accessories
Fri, 09 Dec 2016 00:53:11 GMT HAPServer [CD:00:2D:F3:CE:32] HAP Request: GET /accessories
Fri, 09 Dec 2016 00:53:11 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 00:53:12 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pairings
Fri, 09 Dec 2016 00:53:12 GMT HAPServer [CD:00:2D:F3:CE:32] HAP Request: POST /pairings
Fri, 09 Dec 2016 00:53:12 GMT HAPServer [CD:00:2D:F3:CE:32] Removing pairing info for client
Fri, 09 Dec 2016 00:53:12 GMT Accessory [Homebridge] Unpairing with client 868C2787-2FEA-4BB5-84CA-3B5B32AA522F
Fri, 09 Dec 2016 00:53:12 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 00:53:12 GMT EventedHTTPServer [::ffff:192.168.1.71] Client connection closed
Fri, 09 Dec 2016 00:53:12 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP connection was closed
Fri, 09 Dec 2016 00:53:12 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP server was closed
vojtamolda commented 7 years ago

Hi @johnschult,

Thanks for opening the issue and posting the log right away. It helped me to quickly zoom on what is going on. Bad news is that this is a tricky problem. It happened to me a couple of times too, and doing what you did - i.e deleting persist/ and accessories/ directories in ~/.homebridge/ usually helped me.

Your log shows your [Bedroom] added twice, which is very strange. One of the Initialized messages is very weird indeed: [Bedroom] Initialized | undefined.

HomeKit unpairing that you're experiencing typically happens if one of the characteristics value fields is out of the bounds of the min/max values. Or in case of a fixed answer lists, none of the allowed options. Sometimes iOS even blacklists the bridge for some time and that's why one needs to change the username in config.json.

To better understand what is going on, can you please, do the following:

Thanks!

johnschult commented 7 years ago

Versions

Accessories Query Response

{"status":-70401}

Log Debug Output

[12/9/2016, 10:02:11 AM] Loaded plugin: homebridge-ecobee3-sensors
Homebridge API version: 2.1
[12/9/2016, 10:02:11 AM] Registering platform 'homebridge-ecobee3-sensors.Ecobee 3 Sensors'
[12/9/2016, 10:02:11 AM] ---
[12/9/2016, 10:02:15 AM] Loaded plugin: homebridge-people
[12/9/2016, 10:02:15 AM] Registering accessory 'homebridge-people.people'
[12/9/2016, 10:02:15 AM] ---
[12/9/2016, 10:02:15 AM] Loaded config.json with 1 accessories and 1 platforms.
[12/9/2016, 10:02:15 AM] ---
[12/9/2016, 10:02:16 AM] Loading 1 platforms...
[12/9/2016, 10:02:16 AM] [Ecobee] Initializing Ecobee 3 Sensors platform...
[12/9/2016, 10:02:16 AM] Loading 1 accessories...
[12/9/2016, 10:02:16 AM] [People] Initializing people accessory...
[12/9/2016, 10:02:16 AM] [People] WebHook: Started server on port '51828'.
Scan this code with your HomeKit App on your iOS device to pair with Homebridge:
+------------+
¦ XXX-XX-XXX ¦
+------------+
Fri, 09 Dec 2016 15:02:16 GMT Accessory [Test Homebridge] Creating new AccessoryInfo for our HAP server
Fri, 09 Dec 2016 15:02:16 GMT Accessory [Test Homebridge] Creating new IdentifierCache
[12/9/2016, 10:02:17 AM] [Ecobee] Finished launching...
[12/9/2016, 10:02:17 AM] [Ecobee] Requesting authorization code...
Fri, 09 Dec 2016 15:02:17 GMT EventedHTTPServer Server listening on port 51826
[12/9/2016, 10:02:17 AM] Homebridge is running on port 51826.
[12/9/2016, 10:02:18 AM] [Ecobee] { ecobeePin: 'nmpe',
code: 'nksT1zrB1MorLimlGztkEpUefQvewVei',
scope: 'smartRead',
expires_in: 9,
interval: 30 }
[12/9/2016, 10:02:18 AM] [Ecobee] These are the steps authorize this application to access your Ecobee 3:
[12/9/2016, 10:02:18 AM] [Ecobee]   1. Go to https://www.ecobee.com/home/ecobeeLogin.jsp
[12/9/2016, 10:02:18 AM] [Ecobee]   2. Login to your thermostat console
[12/9/2016, 10:02:18 AM] [Ecobee]   3. Select 'MY APPS' from the menu on the top right.
[12/9/2016, 10:02:18 AM] [Ecobee]   4. Click 'Add Application'
[12/9/2016, 10:02:18 AM] [Ecobee]   5. Enter the following authorization code:
[12/9/2016, 10:02:18 AM] [Ecobee]    +------+
[12/9/2016, 10:02:18 AM] [Ecobee]    ¦ xxxx ¦
[12/9/2016, 10:02:18 AM] [Ecobee]    +------+
[12/9/2016, 10:02:18 AM] [Ecobee]   6. Wait a moment.
[12/9/2016, 10:02:18 AM] [Ecobee] Authorizing plugin to access the thermostat...
[12/9/2016, 10:02:19 AM] [Ecobee] ClientRequest {
domain: null,
_events:
{ response: { [Function: g] listener: [Function: bound ] },
socket: { [Function: g] listener: [Function: onSocket] },
error: [Function: bound ] },
_eventsCount: 3,
_maxListeners: undefined,
output: [ 'POST /token HTTP/1.1\r\ncontent-type: application/x-www-form-urlencoded\r\nHost: api.ecobee.com\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n65\r\ngrant_type=ecobeePin&client_id=DALCINnO49EYOmMfQQxmx7PYofM1YEGo&code=nksT1zrB1MorLimlGztkEpUefQvewVei\r\n' ],
outputEncodings: [ undefined ],
outputCallbacks: [ undefined ],
outputSize: 249,
writable: true,
_last: true,
upgrading: false,
chunkedEncoding: true,
shouldKeepAlive: false,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedHeader: {},
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: false,
_headerSent: true,
socket: null,
connection: null,
_header: 'POST /token HTTP/1.1\r\ncontent-type: application/x-www-form-urlencoded\r\nHost: api.ecobee.com\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n',
_headers:
{ 'content-type': 'application/x-www-form-urlencoded',
host: 'api.ecobee.com' },
_headerNames: { 'content-type': 'content-type', host: 'Host' },
_onPendingData: null,
agent:
Agent {
domain: null,
_events: { free: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: { path: null },
requests: {},
sockets: { 'api.ecobee.com:443::::::::': [Object] },
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
maxCachedSessions: 100,
_sessionCache: { map: [Object], list: [Object] } },
socketPath: undefined,
timeout: undefined,
method: 'POST',
path: '/token',
_ended: false }
[12/9/2016, 10:02:19 AM] [Ecobee] { error: 'authorization_pending',
error_description: 'Waiting for user to authorize application.',
error_uri: 'https://tools.ietf.org/html/rfc6749#section-5.2' }
[12/9/2016, 10:02:19 AM] [Ecobee] Waiting for user to authorize application. Retrying in 30 seconds.
[12/9/2016, 10:02:50 AM] [Ecobee] Authorizing plugin to access the thermostat...
[12/9/2016, 10:02:51 AM] [Ecobee] ClientRequest {
domain: null,
_events:
{ response: { [Function: g] listener: [Function: bound ] },
socket: { [Function: g] listener: [Function: onSocket] },
error: [Function: bound ] },
_eventsCount: 3,
_maxListeners: undefined,
output: [ 'POST /token HTTP/1.1\r\ncontent-type: application/x-www-form-urlencoded\r\nHost: api.ecobee.com\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n65\r\ngrant_type=ecobeePin&client_id=DALCINnO49EYOmMfQQxmx7PYofM1YEGo&code=nksT1zrB1MorLimlGztkEpUefQvewVei\r\n' ],
outputEncodings: [ undefined ],
outputCallbacks: [ undefined ],
outputSize: 249,
writable: true,
_last: true,
upgrading: false,
chunkedEncoding: true,
shouldKeepAlive: false,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedHeader: {},
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: false,
_headerSent: true,
socket: null,
connection: null,
_header: 'POST /token HTTP/1.1\r\ncontent-type: application/x-www-form-urlencoded\r\nHost: api.ecobee.com\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n',
_headers:
{ 'content-type': 'application/x-www-form-urlencoded',
host: 'api.ecobee.com' },
_headerNames: { 'content-type': 'content-type', host: 'Host' },
_onPendingData: null,
agent:
Agent {
domain: null,
_events: { free: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: { path: null },
requests: {},
sockets: { 'api.ecobee.com:443::::::::': [Object] },
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
maxCachedSessions: 100,
_sessionCache: { map: [Object], list: [Object] } },
socketPath: undefined,
timeout: undefined,
method: 'POST',
path: '/token',
_ended: false }
[12/9/2016, 10:02:51 AM] [Ecobee] { error: 'authorization_pending',
error_description: 'Waiting for user to authorize application.',
error_uri: 'https://tools.ietf.org/html/rfc6749#section-5.2' }
[12/9/2016, 10:02:51 AM] [Ecobee] Waiting for user to authorize application. Retrying in 30 seconds.
[12/9/2016, 10:03:22 AM] [Ecobee] Authorizing plugin to access the thermostat...
[12/9/2016, 10:03:22 AM] [Ecobee] ClientRequest {
domain: null,
_events:
{ response: { [Function: g] listener: [Function: bound ] },
socket: { [Function: g] listener: [Function: onSocket] },
error: [Function: bound ] },
_eventsCount: 3,
_maxListeners: undefined,
output: [ 'POST /token HTTP/1.1\r\ncontent-type: application/x-www-form-urlencoded\r\nHost: api.ecobee.com\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n65\r\ngrant_type=ecobeePin&client_id=DALCINnO49EYOmMfQQxmx7PYofM1YEGo&code=nksT1zrB1MorLimlGztkEpUefQvewVei\r\n' ],
outputEncodings: [ undefined ],
outputCallbacks: [ undefined ],
outputSize: 249,
writable: true,
_last: true,
upgrading: false,
chunkedEncoding: true,
shouldKeepAlive: false,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedHeader: {},
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: false,
_headerSent: true,
socket: null,
connection: null,
_header: 'POST /token HTTP/1.1\r\ncontent-type: application/x-www-form-urlencoded\r\nHost: api.ecobee.com\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n',
_headers:
{ 'content-type': 'application/x-www-form-urlencoded',
host: 'api.ecobee.com' },
_headerNames: { 'content-type': 'content-type', host: 'Host' },
_onPendingData: null,
agent:
Agent {
domain: null,
_events: { free: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: { path: null },
requests: {},
sockets: { 'api.ecobee.com:443::::::::': [Object] },
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
maxCachedSessions: 100,
_sessionCache: { map: [Object], list: [Object] } },
socketPath: undefined,
timeout: undefined,
method: 'POST',
path: '/token',
_ended: false }
[12/9/2016, 10:03:22 AM] [Ecobee] { access_token: 'roe8qV9DxQ00TPnRsSLi5mFKfaQ2Y6oq',
token_type: 'Bearer',
expires_in: 3599,
refresh_token: 'oUwSCotxdY5LXGygtCJ9jLYalUGU0lgE',
scope: 'smartRead' }
[12/9/2016, 10:03:23 AM] [Ecobee] Authorization successful :-)
[12/9/2016, 10:03:23 AM] [Ecobee] Updating sensors with fresh data...
[12/9/2016, 10:03:23 AM] [Ecobee] ClientRequest {
domain: null,
_events:
{ response: { [Function: g] listener: [Function: bound ] },
socket: { [Function: g] listener: [Function: onSocket] },
error: [Function: bound ] },
_eventsCount: 3,
_maxListeners: undefined,
output: [],
outputEncodings: [],
outputCallbacks: [],
outputSize: 0,
writable: true,
_last: true,
upgrading: false,
chunkedEncoding: false,
shouldKeepAlive: false,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedHeader: {},
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: false,
_headerSent: false,
socket: null,
connection: null,
_header: null,
_headers:
{ 'content-type': 'application/json',
authorization: 'Bearer roe8qV9DxQ00TPnRsSLi5mFKfaQ2Y6oq',
host: 'api.ecobee.com' },
_headerNames:
{ 'content-type': 'Content-Type',
authorization: 'authorization',
host: 'Host' },
_onPendingData: null,
agent:
Agent {
domain: null,
_events: { free: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: { path: null },
requests: {},
sockets: { 'api.ecobee.com:443::::::::': [Object] },
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
maxCachedSessions: 100,
_sessionCache: { map: [Object], list: [Object] } },
socketPath: undefined,
timeout: undefined,
method: 'GET',
path: '/1/thermostat?json=%7B%22selection%22%3A%7B%22selectionType%22%3A%22registered%22%2C%22selectionMatch%22%3A%22%22%2C%22includeSensors%22%3Atrue%7D%7D',
_ended: false }
[12/9/2016, 10:03:23 AM] [Ecobee] { page: { page: 1, totalPages: 1, pageSize: 2, total: 2 },
thermostatList:
[ { identifier: '311031632844',
name: 'Bedroom',
thermostatRev: '161209001921',
isRegistered: true,
modelNumber: 'athenaSmart',
brand: 'ecobee',
features: 'HomeKit',
lastModified: '2016-12-09 00:19:21',
thermostatTime: '2016-12-09 10:03:23',
utcTime: '2016-12-09 15:03:23',
remoteSensors: [Object] },
{ identifier: '319214442349',
name: 'Office',
thermostatRev: '161208231304',
isRegistered: true,
modelNumber: 'athenaSmart',
brand: 'ecobee',
features: 'HomeKit',
lastModified: '2016-12-08 23:13:04',
thermostatTime: '2016-12-09 10:03:23',
utcTime: '2016-12-09 15:03:23',
remoteSensors: [Object] } ],
status: { code: 0, message: '' } }
[12/9/2016, 10:03:23 AM] [Ecobee] Update sensors
[12/9/2016, 10:03:23 AM] [Ecobee] Setting values of sensors...
[12/9/2016, 10:03:23 AM] [Ecobee] Create | Great Room | QRYQ
[12/9/2016, 10:03:24 AM] [Ecobee] [Great Room] Initializing sensor...
[12/9/2016, 10:03:24 AM] [Ecobee] { id: 'rs:100',
name: 'Great Room',
type: 'ecobee3_remote_sensor',
code: 'QRYQ',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '663' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:24 AM] [Ecobee] [Great Room] Initialized | QRYQ
[12/9/2016, 10:03:24 AM] [Ecobee] [Great Room] Updating sensor measurement...
[12/9/2016, 10:03:24 AM] [Ecobee] { id: 'rs:100',
name: 'Great Room',
type: 'ecobee3_remote_sensor',
code: 'QRYQ',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '663' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:24 AM] [Ecobee] [Great Room] Vacant | 19.1°C
[12/9/2016, 10:03:24 AM] [Ecobee] Create | Family Room | K52Q
[12/9/2016, 10:03:24 AM] [Ecobee] [Family Room] Initializing sensor...
[12/9/2016, 10:03:24 AM] [Ecobee] { id: 'rs:101',
name: 'Family Room',
type: 'ecobee3_remote_sensor',
code: 'K52Q',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '682' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:24 AM] [Ecobee] [Family Room] Initialized | K52Q
[12/9/2016, 10:03:24 AM] [Ecobee] [Family Room] Updating sensor measurement...
[12/9/2016, 10:03:24 AM] [Ecobee] { id: 'rs:101',
name: 'Family Room',
type: 'ecobee3_remote_sensor',
code: 'K52Q',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '682' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:24 AM] [Ecobee] [Family Room] Vacant | 20.1°C
[12/9/2016, 10:03:24 AM] [Ecobee] Create | Bedroom | undefined
[12/9/2016, 10:03:24 AM] [Ecobee] [Bedroom] Initializing sensor...
[12/9/2016, 10:03:25 AM] [Ecobee] { id: 'ei:0',
name: 'Bedroom',
type: 'thermostat',
inUse: false,
capability:
[ { id: '1', type: 'temperature', value: '656' },
{ id: '2', type: 'humidity', value: '32' },
{ id: '3', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:25 AM] [Ecobee] [Bedroom] Initialized | undefined
[12/9/2016, 10:03:25 AM] [Ecobee] [Bedroom] Updating sensor measurement...
[12/9/2016, 10:03:25 AM] [Ecobee] { id: 'ei:0',
name: 'Bedroom',
type: 'thermostat',
inUse: false,
capability:
[ { id: '1', type: 'temperature', value: '656' },
{ id: '2', type: 'humidity', value: '32' },
{ id: '3', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:25 AM] [Ecobee] [Bedroom] Vacant | 32% | 18.7°C
[12/9/2016, 10:03:25 AM] [Ecobee] Create | Guest Bedroom | MG4Y
[12/9/2016, 10:03:25 AM] [Ecobee] [Guest Bedroom] Initializing sensor...
[12/9/2016, 10:03:25 AM] [Ecobee] { id: 'rs:100',
name: 'Guest Bedroom',
type: 'ecobee3_remote_sensor',
code: 'MG4Y',
inUse: false,
capability:
[ { id: '1', type: 'temperature', value: '694' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:25 AM] [Ecobee] [Guest Bedroom] Initialized | MG4Y
[12/9/2016, 10:03:25 AM] [Ecobee] [Guest Bedroom] Updating sensor measurement...
[12/9/2016, 10:03:25 AM] [Ecobee] { id: 'rs:100',
name: 'Guest Bedroom',
type: 'ecobee3_remote_sensor',
code: 'MG4Y',
inUse: false,
capability:
[ { id: '1', type: 'temperature', value: '694' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:25 AM] [Ecobee] [Guest Bedroom] Vacant | 20.8°C
[12/9/2016, 10:03:25 AM] [Ecobee] [Bedroom] Updating sensor measurement...
[12/9/2016, 10:03:25 AM] [Ecobee] { id: 'ei:0',
name: 'Office',
type: 'thermostat',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '678' },
{ id: '2', type: 'humidity', value: '31' },
{ id: '3', type: 'occupancy', value: 'true' } ] }
[12/9/2016, 10:03:25 AM] [Ecobee] [Bedroom] Occupied | 31% | 19.9°C
[12/9/2016, 10:03:25 AM] [Ecobee] Cleaning unused cached Homebridge accessories...
[12/9/2016, 10:03:25 AM] [Ecobee] {}
[12/9/2016, 10:03:25 AM] [Ecobee] Wait | 30 seconds
[12/9/2016, 10:03:25 AM] [Ecobee] Refreshing tokens...
[12/9/2016, 10:03:26 AM] [Ecobee] ClientRequest {
domain: null,
_events:
{ response: { [Function: g] listener: [Function: bound ] },
socket: { [Function: g] listener: [Function: onSocket] },
error: [Function: bound ] },
_eventsCount: 3,
_maxListeners: undefined,
output: [ 'POST /token HTTP/1.1\r\ncontent-type: application/x-www-form-urlencoded\r\nHost: api.ecobee.com\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n69\r\ngrant_type=refresh_token&code=oUwSCotxdY5LXGygtCJ9jLYalUGU0lgE&client_id=DALCINnO49EYOmMfQQxmx7PYofM1YEGo\r\n' ],
outputEncodings: [ undefined ],
outputCallbacks: [ undefined ],
outputSize: 253,
writable: true,
_last: true,
upgrading: false,
chunkedEncoding: true,
shouldKeepAlive: false,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedHeader: {},
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: false,
_headerSent: true,
socket: null,
connection: null,
_header: 'POST /token HTTP/1.1\r\ncontent-type: application/x-www-form-urlencoded\r\nHost: api.ecobee.com\r\nConnection: close\r\nTransfer-Encoding: chunked\r\n\r\n',
_headers:
{ 'content-type': 'application/x-www-form-urlencoded',
host: 'api.ecobee.com' },
_headerNames: { 'content-type': 'content-type', host: 'Host' },
_onPendingData: null,
agent:
Agent {
domain: null,
_events: { free: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: { path: null },
requests: {},
sockets: { 'api.ecobee.com:443::::::::': [Object] },
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
maxCachedSessions: 100,
_sessionCache: { map: [Object], list: [Object] } },
socketPath: undefined,
timeout: undefined,
method: 'POST',
path: '/token',
_ended: false }
[12/9/2016, 10:03:26 AM] [Ecobee] { access_token: 'yRCuHCZThZj1wnpeWHjoE4pQZB6MPKzr',
token_type: 'Bearer',
expires_in: 3599,
refresh_token: 'pjpKuy3vZebN94ysjoxFV5dwzXWZjghl',
scope: 'smartRead' }
[12/9/2016, 10:03:26 AM] [Ecobee] Tokens
[12/9/2016, 10:03:56 AM] [Ecobee] Updating sensors with fresh data...
[12/9/2016, 10:03:56 AM] [Ecobee] ClientRequest {
domain: null,
_events:
{ response: { [Function: g] listener: [Function: bound ] },
socket: { [Function: g] listener: [Function: onSocket] },
error: [Function: bound ] },
_eventsCount: 3,
_maxListeners: undefined,
output: [],
outputEncodings: [],
outputCallbacks: [],
outputSize: 0,
writable: true,
_last: true,
upgrading: false,
chunkedEncoding: false,
shouldKeepAlive: false,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedHeader: {},
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: false,
_headerSent: false,
socket: null,
connection: null,
_header: null,
_headers:
{ 'content-type': 'application/json',
authorization: 'Bearer yRCuHCZThZj1wnpeWHjoE4pQZB6MPKzr',
host: 'api.ecobee.com' },
_headerNames:
{ 'content-type': 'Content-Type',
authorization: 'authorization',
host: 'Host' },
_onPendingData: null,
agent:
Agent {
domain: null,
_events: { free: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: { path: null },
requests: {},
sockets: { 'api.ecobee.com:443::::::::': [Object] },
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
maxCachedSessions: 100,
_sessionCache: { map: [Object], list: [Object] } },
socketPath: undefined,
timeout: undefined,
method: 'GET',
path: '/1/thermostat?json=%7B%22selection%22%3A%7B%22selectionType%22%3A%22registered%22%2C%22selectionMatch%22%3A%22%22%2C%22includeSensors%22%3Atrue%7D%7D',
_ended: false }
[12/9/2016, 10:03:57 AM] [Ecobee] { page: { page: 1, totalPages: 1, pageSize: 2, total: 2 },
thermostatList:
[ { identifier: '311031632844',
name: 'Bedroom',
thermostatRev: '161209001921',
isRegistered: true,
modelNumber: 'athenaSmart',
brand: 'ecobee',
features: 'HomeKit',
lastModified: '2016-12-09 00:19:21',
thermostatTime: '2016-12-09 10:03:57',
utcTime: '2016-12-09 15:03:57',
remoteSensors: [Object] },
{ identifier: '319214442349',
name: 'Office',
thermostatRev: '161208231304',
isRegistered: true,
modelNumber: 'athenaSmart',
brand: 'ecobee',
features: 'HomeKit',
lastModified: '2016-12-08 23:13:04',
thermostatTime: '2016-12-09 10:03:57',
utcTime: '2016-12-09 15:03:57',
remoteSensors: [Object] } ],
status: { code: 0, message: '' } }
[12/9/2016, 10:03:57 AM] [Ecobee] Update sensors
[12/9/2016, 10:03:57 AM] [Ecobee] Setting values of sensors...
[12/9/2016, 10:03:57 AM] [Ecobee] [Great Room] Updating sensor measurement...
[12/9/2016, 10:03:57 AM] [Ecobee] { id: 'rs:100',
name: 'Great Room',
type: 'ecobee3_remote_sensor',
code: 'QRYQ',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '663' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:57 AM] [Ecobee] [Great Room] Vacant | 19.1°C
[12/9/2016, 10:03:57 AM] [Ecobee] [Family Room] Updating sensor measurement...
[12/9/2016, 10:03:57 AM] [Ecobee] { id: 'rs:101',
name: 'Family Room',
type: 'ecobee3_remote_sensor',
code: 'K52Q',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '682' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:57 AM] [Ecobee] [Family Room] Vacant | 20.1°C
[12/9/2016, 10:03:57 AM] [Ecobee] [Bedroom] Updating sensor measurement...
[12/9/2016, 10:03:57 AM] [Ecobee] { id: 'ei:0',
name: 'Bedroom',
type: 'thermostat',
inUse: false,
capability:
[ { id: '1', type: 'temperature', value: '656' },
{ id: '2', type: 'humidity', value: '32' },
{ id: '3', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:57 AM] [Ecobee] [Bedroom] Vacant | 32% | 18.7°C
[12/9/2016, 10:03:57 AM] [Ecobee] [Guest Bedroom] Updating sensor measurement...
[12/9/2016, 10:03:57 AM] [Ecobee] { id: 'rs:100',
name: 'Guest Bedroom',
type: 'ecobee3_remote_sensor',
code: 'MG4Y',
inUse: false,
capability:
[ { id: '1', type: 'temperature', value: '694' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:03:57 AM] [Ecobee] [Guest Bedroom] Vacant | 20.8°C
[12/9/2016, 10:03:57 AM] [Ecobee] [Bedroom] Updating sensor measurement...
[12/9/2016, 10:03:57 AM] [Ecobee] { id: 'ei:0',
name: 'Office',
type: 'thermostat',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '678' },
{ id: '2', type: 'humidity', value: '31' },
{ id: '3', type: 'occupancy', value: 'true' } ] }
[12/9/2016, 10:03:57 AM] [Ecobee] [Bedroom] Occupied | 31% | 19.9°C
[12/9/2016, 10:03:57 AM] [Ecobee] Cleaning unused cached Homebridge accessories...
[12/9/2016, 10:03:57 AM] [Ecobee] {}
[12/9/2016, 10:03:57 AM] [Ecobee] Wait | 30 seconds
Fri, 09 Dec 2016 15:04:17 GMT EventedHTTPServer [::ffff:192.168.1.71] New connection from client
Fri, 09 Dec 2016 15:04:17 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP server listening on port 56809
Fri, 09 Dec 2016 15:04:17 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-setup
Fri, 09 Dec 2016 15:04:17 GMT HAPServer [CF:33:3D:E2:D2:90] HAP Request: POST /pair-setup
Fri, 09 Dec 2016 15:04:17 GMT HAPServer [CF:33:3D:E2:D2:90] Pair step 1/5
Fri, 09 Dec 2016 15:04:40 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
[12/9/2016, 10:04:40 AM] [Ecobee] Updating sensors with fresh data...
[12/9/2016, 10:04:40 AM] [Ecobee] ClientRequest {
domain: null,
_events:
{ response: { [Function: g] listener: [Function: bound ] },
socket: { [Function: g] listener: [Function: onSocket] },
error: [Function: bound ] },
_eventsCount: 3,
_maxListeners: undefined,
output: [],
outputEncodings: [],
outputCallbacks: [],
outputSize: 0,
writable: true,
_last: true,
upgrading: false,
chunkedEncoding: false,
shouldKeepAlive: false,
useChunkedEncodingByDefault: false,
sendDate: false,
_removedHeader: {},
_contentLength: null,
_hasBody: true,
_trailer: '',
finished: false,
_headerSent: false,
socket: null,
connection: null,
_header: null,
_headers:
{ 'content-type': 'application/json',
authorization: 'Bearer yRCuHCZThZj1wnpeWHjoE4pQZB6MPKzr',
host: 'api.ecobee.com' },
_headerNames:
{ 'content-type': 'Content-Type',
authorization: 'authorization',
host: 'Host' },
_onPendingData: null,
agent:
Agent {
domain: null,
_events: { free: [Function] },
_eventsCount: 1,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: { path: null },
requests: {},
sockets: { 'api.ecobee.com:443::::::::': [Object] },
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
maxCachedSessions: 100,
_sessionCache: { map: [Object], list: [Object] } },
socketPath: undefined,
timeout: undefined,
method: 'GET',
path: '/1/thermostat?json=%7B%22selection%22%3A%7B%22selectionType%22%3A%22registered%22%2C%22selectionMatch%22%3A%22%22%2C%22includeSensors%22%3Atrue%7D%7D',
_ended: false }
Fri, 09 Dec 2016 15:04:41 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-setup
Fri, 09 Dec 2016 15:04:41 GMT HAPServer [CF:33:3D:E2:D2:90] HAP Request: POST /pair-setup
Fri, 09 Dec 2016 15:04:41 GMT HAPServer [CF:33:3D:E2:D2:90] Pair step 2/5
Fri, 09 Dec 2016 15:05:03 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 15:05:04 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-setup
Fri, 09 Dec 2016 15:05:04 GMT HAPServer [CF:33:3D:E2:D2:90] HAP Request: POST /pair-setup
Fri, 09 Dec 2016 15:05:04 GMT HAPServer [CF:33:3D:E2:D2:90] Pair step 3/5
Fri, 09 Dec 2016 15:05:04 GMT HAPServer [CF:33:3D:E2:D2:90] Pair step 4/5
Fri, 09 Dec 2016 15:05:04 GMT HAPServer [CF:33:3D:E2:D2:90] Pair step 5/5
Fri, 09 Dec 2016 15:05:04 GMT Accessory [Test Homebridge] Paired with client 868C2787-2FEA-4BB5-84CA-3B5B32AA522F
Fri, 09 Dec 2016 15:05:04 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 15:05:04 GMT EventedHTTPServer [::ffff:192.168.1.71] Client connection closed
[12/9/2016, 10:05:04 AM] [Ecobee] { page: { page: 1, totalPages: 1, pageSize: 2, total: 2 },
thermostatList:
[ { identifier: '311031632844',
name: 'Bedroom',
thermostatRev: '161209001921',
isRegistered: true,
modelNumber: 'athenaSmart',
brand: 'ecobee',
features: 'HomeKit',
lastModified: '2016-12-09 00:19:21',
thermostatTime: '2016-12-09 10:05:04',
utcTime: '2016-12-09 15:05:04',
remoteSensors: [Object] },
{ identifier: '319214442349',
name: 'Office',
thermostatRev: '161208231304',
isRegistered: true,
modelNumber: 'athenaSmart',
brand: 'ecobee',
features: 'HomeKit',
lastModified: '2016-12-08 23:13:04',
thermostatTime: '2016-12-09 10:05:04',
utcTime: '2016-12-09 15:05:04',
remoteSensors: [Object] } ],
status: { code: 0, message: '' } }
[12/9/2016, 10:05:04 AM] [Ecobee] Update sensors
[12/9/2016, 10:05:04 AM] [Ecobee] Setting values of sensors...
[12/9/2016, 10:05:04 AM] [Ecobee] [Great Room] Updating sensor measurement...
[12/9/2016, 10:05:04 AM] [Ecobee] { id: 'rs:100',
name: 'Great Room',
type: 'ecobee3_remote_sensor',
code: 'QRYQ',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '663' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:05:04 AM] [Ecobee] [Great Room] Vacant | 19.1°C
[12/9/2016, 10:05:04 AM] [Ecobee] [Family Room] Updating sensor measurement...
[12/9/2016, 10:05:04 AM] [Ecobee] { id: 'rs:101',
name: 'Family Room',
type: 'ecobee3_remote_sensor',
code: 'K52Q',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '682' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:05:04 AM] [Ecobee] [Family Room] Vacant | 20.1°C
[12/9/2016, 10:05:04 AM] [Ecobee] [Bedroom] Updating sensor measurement...
[12/9/2016, 10:05:04 AM] [Ecobee] { id: 'ei:0',
name: 'Bedroom',
type: 'thermostat',
inUse: false,
capability:
[ { id: '1', type: 'temperature', value: '656' },
{ id: '2', type: 'humidity', value: '32' },
{ id: '3', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:05:04 AM] [Ecobee] [Bedroom] Vacant | 32% | 18.7°C
[12/9/2016, 10:05:04 AM] [Ecobee] [Guest Bedroom] Updating sensor measurement...
[12/9/2016, 10:05:04 AM] [Ecobee] { id: 'rs:100',
name: 'Guest Bedroom',
type: 'ecobee3_remote_sensor',
code: 'MG4Y',
inUse: false,
capability:
[ { id: '1', type: 'temperature', value: '694' },
{ id: '2', type: 'occupancy', value: 'false' } ] }
[12/9/2016, 10:05:04 AM] [Ecobee] [Guest Bedroom] Vacant | 20.8°C
[12/9/2016, 10:05:04 AM] [Ecobee] [Bedroom] Updating sensor measurement...
[12/9/2016, 10:05:04 AM] [Ecobee] { id: 'ei:0',
name: 'Office',
type: 'thermostat',
inUse: true,
capability:
[ { id: '1', type: 'temperature', value: '678' },
{ id: '2', type: 'humidity', value: '31' },
{ id: '3', type: 'occupancy', value: 'true' } ] }
[12/9/2016, 10:05:04 AM] [Ecobee] [Bedroom] Occupied | 31% | 19.9°C
[12/9/2016, 10:05:04 AM] [Ecobee] Cleaning unused cached Homebridge accessories...
[12/9/2016, 10:05:04 AM] [Ecobee] {}
[12/9/2016, 10:05:04 AM] [Ecobee] Wait | 30 seconds
Fri, 09 Dec 2016 15:05:04 GMT EventedHTTPServer [::ffff:192.168.1.71] New connection from client
Fri, 09 Dec 2016 15:05:04 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP server listening on port 41216
Fri, 09 Dec 2016 15:05:05 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP connection was closed
Fri, 09 Dec 2016 15:05:05 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP server was closed
Fri, 09 Dec 2016 15:05:05 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-verify
Fri, 09 Dec 2016 15:05:05 GMT HAPServer [CF:33:3D:E2:D2:90] HAP Request: POST /pair-verify
Fri, 09 Dec 2016 15:05:05 GMT HAPServer [CF:33:3D:E2:D2:90] Pair verify step 1/2
Fri, 09 Dec 2016 15:05:05 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 15:05:05 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pair-verify
Fri, 09 Dec 2016 15:05:05 GMT HAPServer [CF:33:3D:E2:D2:90] HAP Request: POST /pair-verify
Fri, 09 Dec 2016 15:05:05 GMT HAPServer [CF:33:3D:E2:D2:90] Pair verify step 2/2
Fri, 09 Dec 2016 15:05:05 GMT HAPServer [CF:33:3D:E2:D2:90] Client 868C2787-2FEA-4BB5-84CA-3B5B32AA522F verification complete
Fri, 09 Dec 2016 15:05:05 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 15:05:05 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /accessories
Fri, 09 Dec 2016 15:05:05 GMT HAPServer [CF:33:3D:E2:D2:90] HAP Request: GET /accessories
Fri, 09 Dec 2016 15:05:05 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 15:05:06 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP request: /pairings
Fri, 09 Dec 2016 15:05:06 GMT HAPServer [CF:33:3D:E2:D2:90] HAP Request: POST /pairings
Fri, 09 Dec 2016 15:05:06 GMT HAPServer [CF:33:3D:E2:D2:90] Removing pairing info for client
Fri, 09 Dec 2016 15:05:06 GMT Accessory [Test Homebridge] Unpairing with client 868C2787-2FEA-4BB5-84CA-3B5B32AA522F
Fri, 09 Dec 2016 15:05:06 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP Response is finished
Fri, 09 Dec 2016 15:05:06 GMT EventedHTTPServer [::ffff:192.168.1.71] Client connection closed
Fri, 09 Dec 2016 15:05:06 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP connection was closed
Fri, 09 Dec 2016 15:05:06 GMT EventedHTTPServer [::ffff:192.168.1.71] HTTP server was closed
vojtamolda commented 7 years ago

Thanks for the log. It helped a ton! The problem you're seeing was introduced in commit da0e860. There are two fixes for you at the moment:

The reason why the problems are happening is the following. The sensorConfig.code is used as a hashing key in the this.ecobeeAccessories dictionary that contains all the accessories created by the plugin. sensorConfig.code is defined only for sensors and not for the thermostat itself. The two thermostats you have in your setup overwrite each other since they use the same (non-existing) hash key. All the flawed action is happening in EcobeePlatfrom.sensors(...) function.

Sorry for the trouble! I'll fix this in the next version 0.1.2.

vojtamolda commented 7 years ago

If you feel like it, you can test the fix in the latest version 5299f7c.

johnschult commented 7 years ago

I made the mods locally and can confirm that it all works now 😄 I'll get the update when you publish it. Thanks!

douglsmith commented 7 years ago

I tried it and can confirm the fixes worked for me too.

vojtamolda commented 7 years ago

Cool. Thanks for trying it out!