You need to add a home in the tadozones app, don’t remove the thermostat
Vreemd, deze heb ik gebruikt. Nu staan beide temperaturen wel gelijk. Ik kreeg wel de melding om opnieuw in te loggen. Hierna was alles opnieuw ok.
Top!
Hallo @Martin_Verbeek, bedankt voor al je goede zorgen! Fijn dat je veranderende omstandigheden bij Tado proactief voor ons oppakt.
Ik heb afgelopen weekend een Home aangemaakt met succes. Echter heb ik sindsdien drie keer gehad dat Home unavailable was, met het verwijderen en opnieuw toevoegen van Home heb ik het probleem steeds opgelost. Maar het lijkt me niet helemaal de bedoeling dat dit 1-2 keer per dag opnieuw moet, heb je toevallig een oplossing? De log van vanochtend is hieronder te vinden. Bedankt!
undefinedx 2025-03-17T10:00:00.038Z [tadoHome] setTariff get it for homeId 1762078
x 2025-03-17T09:43:19.841Z [heating] [83583283-d8ae-4aa5-bc92-989712f1da1d] add open window detection to Thermostaat Keuken
x 2025-03-17T09:33:33.443Z [heating] [83583283-d8ae-4aa5-bc92-989712f1da1d] Target Temperature changed for Thermostaat Keuken to 17
x 2025-03-17T09:33:33.356Z [heating] [83583283-d8ae-4aa5-bc92-989712f1da1d] remove open window detection from Thermostaat Keuken
x 2025-03-17T09:33:25.252Z [tadoHome] [64d269ca-a6b0-4f97-9b77-7257f56c9c84] added heating cost
x 2025-03-17T09:33:25.174Z [tadoHome] [64d269ca-a6b0-4f97-9b77-7257f56c9c84] added tariff
x 2025-03-17T09:33:25.126Z [tadoHome] [64d269ca-a6b0-4f97-9b77-7257f56c9c84] added username
x 2025-03-17T09:33:22.194Z [heating] [83583283-d8ae-4aa5-bc92-989712f1da1d] setTodayDeviceForecast() Thermostaat Keuken NaN NaN 13.5
x 2025-03-17T09:33:22.090Z [tadoHome] [64d269ca-a6b0-4f97-9b77-7257f56c9c84] Added Thuis setting heating circuits and try forecast Usage
x 2025-03-17T09:33:21.905Z getHistoricDegreeDaysAndUsage() Calculated usage per degree day for Thermostaat Keuken is NaN degree days 688.8 device-home ratio undefined device ratio usage NaN from 2025-02-01 to 2025-03-17
x 2025-03-17T09:33:21.657Z getHistoricDegreeDaysAndUsage.getEnergyIQSimulatedReadings 2025-02-01 2025-03-17 207
x 2025-03-17T09:33:21.656Z getEnergyIQSimulatedReadings.energyIQConsumption 0 0 NaN
x 2025-03-17T09:33:21.207Z getHistoricDegreeDaysAndUsage() lacking meter data, try EnergyIQ simulated data Thuis Thermostaat Keuken
x 2025-03-17T09:33:19.313Z TADO units kWh
x 2025-03-17T09:33:19.129Z TADO units kWh
x 2025-03-17T09:33:18.456Z getDomesticHotwater { domesticHotWaterInterface: 'NONE' }
x 2025-03-17T09:33:18.344Z getDomesticHotwater { domesticHotWaterInterface: 'NONE' }
x 2025-03-17T09:33:18.213Z [tadoHome] list_devices Thuis 1762078
x 2025-03-17T09:33:18.188Z addTadoHome() Tado home instance for generation: LINE_X Thuis 1762078
x 2025-03-17T09:33:18.060Z [heating] [83583283-d8ae-4aa5-bc92-989712f1da1d] doInit getSundaySchedule() TypeError: Cannot destructure property 'smartSchedule' of '(intermediate value)' as it is undefined.
at TadoClient.getSundaySchedule (/app/lib/TadoClient.js:1332:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
x 2025-03-17T09:33:18.059Z [heating] [83583283-d8ae-4aa5-bc92-989712f1da1d] registerCapabilities Thermostaat Keuken
x 2025-03-17T09:33:18.057Z [heating] [83583283-d8ae-4aa5-bc92-989712f1da1d] doInit() Thermostaat Keuken Tado? true
x 2025-03-17T09:33:18.056Z [heating] [83583283-d8ae-4aa5-bc92-989712f1da1d] initAdded() Thermostaat Keuken { id: 21, home: 1762078 } 1762078 Thuis Tado App Setup Completed
x 2025-03-17T09:33:18.055Z [heating] onInit() Zone Driver heating Tado App Setup Completed
x 2025-03-17T09:33:18.055Z [valve] onInit() Zone Driver valve Tado App Setup Completed
x 2025-03-17T09:33:18.055Z [heatpump] onInit() Zone Driver heatpump Tado App Setup Completed
x 2025-03-17T09:33:18.054Z [airconditioning] onInit() Zone Driver airconditioning Tado App Setup Completed
x 2025-03-17T09:33:18.053Z [heatingCircuit] onInit() Zone Driver circuit Tado App Setup Completed
x 2025-03-17T09:33:18.048Z goWithTheFlow() APP Actions
x 2025-03-17T09:33:18.046Z goWithTheFlow() APP Conditions
x 2025-03-17T09:33:18.038Z goWithTheFlow() APP Triggers
x 2025-03-17T09:33:18.034Z setupTado() Tado Home Objects Initialised, authorized and Ready
x 2025-03-17T09:33:18.033Z [tadoHome] All drivers are ready
x 2025-03-17T09:33:18.019Z [tadoHome] setTariff get it for homeId 1762078
x 2025-03-17T09:33:18.018Z [tadoHome] setDeviceRatios() Thuis
x 2025-03-17T09:33:18.017Z [heating] onInit() Zone Driver addedFirstHome heating Tado First Home Object Initialised and Ready
x 2025-03-17T09:33:18.017Z [valve] onInit() Zone Driver addedFirstHome valve Tado First Home Object Initialised and Ready
x 2025-03-17T09:33:18.017Z [heatpump] onInit() Zone Driver addedFirstHome heatpump Tado First Home Object Initialised and Ready
x 2025-03-17T09:33:18.016Z [airconditioning] onInit() Zone Driver addedFirstHome airconditioning Tado First Home Object Initialised and Ready
x 2025-03-17T09:33:18.016Z [heatingCircuit] onInit() Zone Driver addedFirstHome circuit Tado First Home Object Initialised and Ready
x 2025-03-17T09:33:18.015Z [tadoHome] addTadoHome() set Origin Thuis 1762078
x 2025-03-17T09:33:18.014Z setHomeAvailability Set home availability to true 1762078 undefined
x 2025-03-17T09:33:17.898Z addTadoHome() Tado home instance for generation: LINE_X Thuis 1762078
x 2025-03-17T09:33:12.648Z {
access_token: 'eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImd0eSI6WyJ1cm46aWV0ZjpwYXJhbXM6b2F1dGg6Z3JhbnQtdHlwZTpkZXZpY2VfY29kZSJdLCJraWQiOiJtMnFCd2hBNU1MdzNlUjNvUEo0MU9XbnJUd28ifQ.eyJhdWQiOlsicGFydG5lciJdLCJleHAiOjE3NDIyMDQ1OTIsImlhdCI6MTc0MjIwMzk5MiwiaXNzIjoidGFkbyIsIm5iZiI6MTc0MjIwMzk5Miwic3ViIjoiYTlmNTgxYTEtZmUwNS00YjM3LTk0MDktN2E5MmFmYzQzOWE3IiwianRpIjoiZWFmMDlmZjYtNGVkOC00ZDA1LTliZmMtNDA0Yjk3ZjI0Mjk3IiwiZW1haWwiOiJrb2VudmFuYmVudGVtQGdtYWlsLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjpmYWxzZSwiYXBwbGljYXRpb25JZCI6IjFiYjUwMDYzLTZiMGMtNGQxMS1iZDk5LTM4N2Y0YTkxY2M0NiIsInJvbGVzIjpbXSwic2lkIjoiMGEyOWE3NmQtMmEwNi00OTg1LThkMTctMzM1ZTcxMjRmOWM1IiwiYXV0aF90aW1lIjoxNzQyMjAzOTkyLCJ0aWQiOiIxZDU0M2FkNS1hOGFjLTQ3MDQtYjllMi0yNjgzOGI0ZDY1MTMiLCJ0YWRvX2hvbWVzIjpbeyJpZCI6MTc2MjA3OH1dLCJsb2NhbGUiOiJubF9OTCIsInRhZG9fc2NvcGUiOlsiaG9tZS51c2VyIiwiaWRlbnRpdHk6cmVhZCJdLCJ0YWRvX3VzZXJuYW1lIjoia29lbnZhbmJlbnRlbUBnbWFpbC5jb20iLCJuYW1lIjoiS29lbiB2YW4gQmVudGVtIiwidGFkb19jbGllbnRfaWQiOiJ0YWRvLWRldmljZS1saW5raW5nIn0.YKcxDc7QE6AHVsf62W8xkSWej3bbczjG-1YKypX6L8CX7Fj67aV3f-3PRwXbwcnxE7hiS8ZeB_DCXO2zJqzaJxV3mgRpiAQPF7hwyHOdAM7zBoRHScbdYawN2JbbJTj4gz5ByrFzjGv3d-rl_QmPYtmx9cQ-taMQz7xf_4iuIjcoYZq5IIBHx6l7g1_QJPNp9N8Oq66v0p7RSu_qWl2-CyqO5e-yO_d7h8oIvBYEge9DG4EVt_s07qb1ck0DU1KTF28Ni6aEH9_FyJ3rYSdBGmB5splIcTNbeh-k0UPHIjlGDxycbZ97Qqek7yyDtzNFq62shyo3aXspl1S_tBfd-g',
expires_in: 599,
refresh_token: 'oqUUeUWR2uFYa4yFftvshgqQB7adVC-QPVIPcoFuqIFa0kNkFvQEQ2_hTVO2Gj8-',
refresh_token_id: '0a29a76d-2a06-4985-8d17-335e7124f9c5',
scope: 'offline_access',
token_type: 'Bearer',
userId: 'a9f581a1-fe05-4b37-9409-7a92afc439a7'
}
x 2025-03-17T09:33:07.644Z authorizeDeviceStep2() attempts left 19
x 2025-03-17T09:33:02.475Z {
device_code: 'jkm-6ZB4ZINYKlWHfScn9ywLDCBmE6eteq7rL3fcnK0',
expires_in: 300,
interval: 5,
user_code: 'WN2J89',
verification_uri: 'https://login.tado.com/oauth2/device',
verification_uri_complete: 'https://login.tado.com/oauth2/device?user_code=WN2J89'
}
x 2025-03-17T09:33:02.314Z authorizeDeviceStep1()
x 2025-03-17T09:32:52.525Z [tadoHome] [eda7b4f6-0484-482d-a7fd-524ccde52d14] Deleted tadoHome construct and device Thuis
x 2025-03-17T07:52:42.343Z cpu warning
x 2025-03-17T07:52:36.222Z [tadoHome] onInit.addTadoHome Error: Error: AxiosError: Request failed with status code 400
at /app/drivers/tadoHome/driver.js:111:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async tadoHomeDriver.addTadoHome (/app/drivers/tadoHome/driver.js:106:3)
at async tadoHomeDriver.onInit (/app/drivers/tadoHome/driver.js:34:6)
at async /node_modules/@athombv/homey-apps-sdk-v3/lib/Driver.js:69:7
x 2025-03-17T07:52:36.215Z setHomeAvailability Set home availability to false 1762078 Home Not Authorized
x 2025-03-17T07:52:36.214Z [tadoHome] addTadoHome AxiosError: Request failed with status code 400
x 2025-03-17T07:52:36.147Z refreshToken() AxiosError: Request failed with status code 400
at settle (/app/node_modules/axios/dist/node/axios.cjs:2031:12)
at Unzip.handleStreamEnd (/app/node_modules/axios/dist/node/axios.cjs:3148:11)
at Unzip.emit (node:events:529:35)
at endReadableNT (node:internal/streams/readable:1400:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
at Axios.request (/app/node_modules/axios/dist/node/axios.cjs:4258:41)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async tadoHomeDriver.addTadoHome (/app/drivers/tadoHome/driver.js:106:3)
at async tadoHomeDriver.onInit (/app/drivers/tadoHome/driver.js:34:6)
at async /node_modules/@athombv/homey-apps-sdk-v3/lib/Driver.js:69:7 {
code: 'ERR_BAD_REQUEST',
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
adapter: [ 'xhr', 'http', 'fetch' ],
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function [FormData]], Blob: [class Blob] },
validateStatus: [Function: validateStatus],
headers: Object [AxiosHeaders] {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
'User-Agent': 'axios/1.8.1',
'Content-Length': '150',
'Accept-Encoding': 'gzip, compress, deflate, br'
},
method: 'post',
url: 'https://login.tado.com/oauth2/token',
data: 'client_id=1bb50063-6b0c-4d11-bd99-387f4a91cc46&grant_type=refresh_token&refresh_token=H47ly1miX5hmTLO8y917-ISuRDB0UO2_mi4vmCOS4FKec05Dq5VfJzP2FyyQI04B',
allowAbsoluteUrls: true
},
request: <ref *1=""> ClientRequest {
_events: [Object: null prototype] {
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
socket: [Function (anonymous)],
timeout: [Function (anonymous)],
finish: [Function: requestOnFinish]
},
_eventsCount: 7,
_maxListeners: 80,
outputData: [],
outputSize: 0,
writable: true,
destroyed: true,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: '150',
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: true,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: 'login.tado.com',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 9,
connecting: false,
_hadError: false,
_parent: null,
_host: 'login.tado.com',
_closeAfterHandlingError: false,
_readableState: [ReadableState],
_maxListeners: 80,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: null,
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular *1],
write: [Function: writeAfterFIN],
[Symbol(alpncallback)]: null,
[Symbol(res)]: null,
[Symbol(verified)]: true,
[Symbol(pendingSession)]: null,
[Symbol(async_id_symbol)]: 130,
[Symbol(kHandle)]: null,
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kSetNoDelay)]: false,
[Symbol(kSetKeepAlive)]: true,
[Symbol(kSetKeepAliveInitialDelay)]: 60,
[Symbol(kBytesRead)]: 354,
[Symbol(kBytesWritten)]: 420,
[Symbol(connect-options)]: [Object]
},
_header: 'POST /oauth2/token HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Content-Type: application/x-www-form-urlencoded;charset=utf-8\r\n' +
'User-Agent: axios/1.8.1\r\n' +
'Content-Length: 150\r\n' +
'Accept-Encoding: gzip, compress, deflate, br\r\n' +
'Host: login.tado.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: 80,
defaultPort: 443,
protocol: 'https:',
options: [Object: null prototype],
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
maxTotalSockets: Infinity,
totalSocketCount: 0,
maxCachedSessions: 100,
_sessionCache: [Object],
[Symbol(kCapture)]: false
},
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/oauth2/token',
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 4,
_maxListeners: 80,
socket: [TLSSocket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
rawHeaders: [Array],
rawTrailers: [],
joinDuplicateHeaders: undefined,
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 400,
statusMessage: 'Bad Request',
client: [TLSSocket],
_consuming: true,
_dumped: false,
req: [Circular *1],
responseUrl: 'https://login.tado.com/oauth2/token',
redirects: [],
[Symbol(kCapture)]: false,
[Symbol(kHeaders)]: [Object],
[Symbol(kHeadersCount)]: 14,
[Symbol(kTrailers)]: null,
[Symbol(kTrailersCount)]: 0
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'login.tado.com',
protocol: 'https:',
_redirectable: Writable {
_writableState: [WritableState],
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: 80,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 150,
_requestBodyBuffers: [],
_onNativeResponse: [Function (anonymous)],
_currentRequest: [Circular *1],
_currentUrl: 'https://login.tado.com/oauth2/token',
[Symbol(kCapture)]: false
},
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
'content-type': [Array],
'user-agent': [Array],
'content-length': [Array],
'accept-encoding': [Array],
host: [Array]
},
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
response: {
status: 400,
statusText: 'Bad Request',
headers: Object [AxiosHeaders] {
'alt-svc': 'h3=":443"; ma=2592000',
'cache-control': 'no-store',
'content-type': 'application/json; charset=UTF-8',
date: 'Mon, 17 Mar 2025 07:52:35 GMT',
connection: 'close',
'transfer-encoding': 'chunked'
},
config: {
transitional: [Object],
adapter: [Array],
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: [Object],
validateStatus: [Function: validateStatus],
headers: [Object [AxiosHeaders]],
method: 'post',
url: 'https://login.tado.com/oauth2/token',
data: 'client_id=1bb50063-6b0c-4d11-bd99-387f4a91cc46&grant_type=refresh_token&refresh_token=H47ly1miX5hmTLO8y917-ISuRDB0UO2_mi4vmCOS4FKec05Dq5VfJzP2FyyQI04B',
allowAbsoluteUrls: true
},
request: <ref *1=""> ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: 80,
outputData: [],
outputSize: 0,
writable: true,
destroyed: true,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: '150',
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: true,
socket: [TLSSocket],
_header: 'POST /oauth2/token HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Content-Type: application/x-www-form-urlencoded;charset=utf-8\r\n' +
'User-Agent: axios/1.8.1\r\n' +
'Content-Length: 150\r\n' +
'Accept-Encoding: gzip, compress, deflate, br\r\n' +
'Host: login.tado.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: [Agent],
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/oauth2/token',
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'login.tado.com',
protocol: 'https:',
_redirectable: [Writable],
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype],
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
data: {
error: 'invalid_grant',
error_description: 'The refresh_token is invalid.',
error_reason: 'refresh_token_not_found'
}
},
status: 400
}
</ref></ref>x 2025-03-17T07:52:34.772Z refreshToken() no token, getting from settings
x 2025-03-17T07:52:34.555Z [heating] Driver Ready heating
x 2025-03-17T07:52:34.504Z [valve] Driver Ready valve
x 2025-03-17T07:52:32.356Z [heatpump] Driver Ready heatpump
x 2025-03-17T07:52:32.349Z [airconditioning] Driver Ready airconditioning
x 2025-03-17T07:52:32.338Z [heatingCircuit] Driver Ready circuit
x 2025-03-17T07:52:32.308Z tadoZones 6.0.12 has initialised.
x 2025-03-17T07:52:32.307Z setupTado()
x 2025-03-17T07:52:32.306Z capturing stderr
x 2025-03-17T07:52:32.303Z capturing stdout
x 2025-03-16T17:01:23.966Z app unload called
x 2025-03-16T15:02:38.732Z cpu warning
x 2025-03-16T15:02:33.921Z [tadoHome] onInit.addTadoHome Error: Error: AxiosError: Request failed with status code 400
at /app/drivers/tadoHome/driver.js:111:11
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async tadoHomeDriver.addTadoHome (/app/drivers/tadoHome/driver.js:106:3)
at async tadoHomeDriver.onInit (/app/drivers/tadoHome/driver.js:34:6)
at async /node_modules/@athombv/homey-apps-sdk-v3/lib/Driver.js:69:7
x 2025-03-16T15:02:33.914Z setHomeAvailability Set home availability to false 1762078 Home Not Authorized
x 2025-03-16T15:02:33.913Z [tadoHome] addTadoHome AxiosError: Request failed with status code 400
x 2025-03-16T15:02:33.862Z refreshToken() AxiosError: Request failed with status code 400
at settle (/app/node_modules/axios/dist/node/axios.cjs:2031:12)
at Unzip.handleStreamEnd (/app/node_modules/axios/dist/node/axios.cjs:3148:11)
at Unzip.emit (node:events:529:35)
at endReadableNT (node:internal/streams/readable:1400:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
at Axios.request (/app/node_modules/axios/dist/node/axios.cjs:4258:41)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async tadoHomeDriver.addTadoHome (/app/drivers/tadoHome/driver.js:106:3)
at async tadoHomeDriver.onInit (/app/drivers/tadoHome/driver.js:34:6)
at async /node_modules/@athombv/homey-apps-sdk-v3/lib/Driver.js:69:7 {
code: 'ERR_BAD_REQUEST',
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
adapter: [ 'xhr', 'http', 'fetch' ],
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function [FormData]], Blob: [class Blob] },
validateStatus: [Function: validateStatus],
headers: Object [AxiosHeaders] {
Accept: 'application/json, text/plain, */*',
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
'User-Agent': 'axios/1.8.1',
'Content-Length': '150',
'Accept-Encoding': 'gzip, compress, deflate, br'
},
method: 'post',
url: 'https://login.tado.com/oauth2/token',
data: 'client_id=1bb50063-6b0c-4d11-bd99-387f4a91cc46&grant_type=refresh_token&refresh_token=UpDUljWyT1OM9Cq48xouqFQ-2i2KkkFwm1pt5VWG6jrIksRPS7RMpuE1EPjk1kpZ',
allowAbsoluteUrls: true
},
request: <ref *1=""> ClientRequest {
_events: [Object: null prototype] {
abort: [Function (anonymous)],
aborted: [Function (anonymous)],
connect: [Function (anonymous)],
error: [Function (anonymous)],
socket: [Function (anonymous)],
timeout: [Function (anonymous)],
finish: [Function: requestOnFinish]
},
_eventsCount: 7,
_maxListeners: 80,
outputData: [],
outputSize: 0,
writable: true,
destroyed: true,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: '150',
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: true,
socket: TLSSocket {
_tlsOptions: [Object],
_secureEstablished: true,
_securePending: false,
_newSessionPending: false,
_controlReleased: true,
secureConnecting: false,
_SNICallback: null,
servername: 'login.tado.com',
alpnProtocol: false,
authorized: true,
authorizationError: null,
encrypted: true,
_events: [Object: null prototype],
_eventsCount: 9,
connecting: false,
_hadError: false,
_parent: null,
_host: 'login.tado.com',
_closeAfterHandlingError: false,
_readableState: [ReadableState],
_maxListeners: 80,
_writableState: [WritableState],
allowHalfOpen: false,
_sockname: null,
_pendingData: null,
_pendingEncoding: '',
server: undefined,
_server: null,
ssl: null,
_requestCert: true,
_rejectUnauthorized: true,
parser: null,
_httpMessage: [Circular *1],
write: [Function: writeAfterFIN],
[Symbol(alpncallback)]: null,
[Symbol(res)]: null,
[Symbol(verified)]: true,
[Symbol(pendingSession)]: null,
[Symbol(async_id_symbol)]: 130,
[Symbol(kHandle)]: null,
[Symbol(lastWriteQueueSize)]: 0,
[Symbol(timeout)]: null,
[Symbol(kBuffer)]: null,
[Symbol(kBufferCb)]: null,
[Symbol(kBufferGen)]: null,
[Symbol(kCapture)]: false,
[Symbol(kSetNoDelay)]: false,
[Symbol(kSetKeepAlive)]: true,
[Symbol(kSetKeepAliveInitialDelay)]: 60,
[Symbol(kBytesRead)]: 354,
[Symbol(kBytesWritten)]: 420,
[Symbol(connect-options)]: [Object]
},
_header: 'POST /oauth2/token HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Content-Type: application/x-www-form-urlencoded;charset=utf-8\r\n' +
'User-Agent: axios/1.8.1\r\n' +
'Content-Length: 150\r\n' +
'Accept-Encoding: gzip, compress, deflate, br\r\n' +
'Host: login.tado.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: Agent {
_events: [Object: null prototype],
_eventsCount: 2,
_maxListeners: 80,
defaultPort: 443,
protocol: 'https:',
options: [Object: null prototype],
requests: [Object: null prototype] {},
sockets: [Object: null prototype] {},
freeSockets: [Object: null prototype] {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'lifo',
maxTotalSockets: Infinity,
totalSocketCount: 0,
maxCachedSessions: 100,
_sessionCache: [Object],
[Symbol(kCapture)]: false
},
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/oauth2/token',
_ended: true,
res: IncomingMessage {
_readableState: [ReadableState],
_events: [Object: null prototype],
_eventsCount: 4,
_maxListeners: 80,
socket: [TLSSocket],
httpVersionMajor: 1,
httpVersionMinor: 1,
httpVersion: '1.1',
complete: true,
rawHeaders: [Array],
rawTrailers: [],
joinDuplicateHeaders: undefined,
aborted: false,
upgrade: false,
url: '',
method: null,
statusCode: 400,
statusMessage: 'Bad Request',
client: [TLSSocket],
_consuming: true,
_dumped: false,
req: [Circular *1],
responseUrl: 'https://login.tado.com/oauth2/token',
redirects: [],
[Symbol(kCapture)]: false,
[Symbol(kHeaders)]: [Object],
[Symbol(kHeadersCount)]: 14,
[Symbol(kTrailers)]: null,
[Symbol(kTrailersCount)]: 0
},
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'login.tado.com',
protocol: 'https:',
_redirectable: Writable {
_writableState: [WritableState],
_events: [Object: null prototype],
_eventsCount: 3,
_maxListeners: 80,
_options: [Object],
_ended: true,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 150,
_requestBodyBuffers: [],
_onNativeResponse: [Function (anonymous)],
_currentRequest: [Circular *1],
_currentUrl: 'https://login.tado.com/oauth2/token',
[Symbol(kCapture)]: false
},
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype] {
accept: [Array],
'content-type': [Array],
'user-agent': [Array],
'content-length': [Array],
'accept-encoding': [Array],
host: [Array]
},
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
response: {
status: 400,
statusText: 'Bad Request',
headers: Object [AxiosHeaders] {
'alt-svc': 'h3=":443"; ma=2592000',
'cache-control': 'no-store',
'content-type': 'application/json; charset=UTF-8',
date: 'Sun, 16 Mar 2025 15:02:33 GMT',
connection: 'close',
'transfer-encoding': 'chunked'
},
config: {
transitional: [Object],
adapter: [Array],
transformRequest: [Array],
transformResponse: [Array],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: [Object],
validateStatus: [Function: validateStatus],
headers: [Object [AxiosHeaders]],
method: 'post',
url: 'https://login.tado.com/oauth2/token',
data: 'client_id=1bb50063-6b0c-4d11-bd99-387f4a91cc46&grant_type=refresh_token&refresh_token=UpDUljWyT1OM9Cq48xouqFQ-2i2KkkFwm1pt5VWG6jrIksRPS7RMpuE1EPjk1kpZ',
allowAbsoluteUrls: true
},
request: <ref *1=""> ClientRequest {
_events: [Object: null prototype],
_eventsCount: 7,
_maxListeners: 80,
outputData: [],
outputSize: 0,
writable: true,
destroyed: true,
_last: true,
chunkedEncoding: false,
shouldKeepAlive: false,
maxRequestsOnConnectionReached: false,
_defaultKeepAlive: true,
useChunkedEncodingByDefault: true,
sendDate: false,
_removedConnection: false,
_removedContLen: false,
_removedTE: false,
strictContentLength: false,
_contentLength: '150',
_hasBody: true,
_trailer: '',
finished: true,
_headerSent: true,
_closed: true,
socket: [TLSSocket],
_header: 'POST /oauth2/token HTTP/1.1\r\n' +
'Accept: application/json, text/plain, */*\r\n' +
'Content-Type: application/x-www-form-urlencoded;charset=utf-8\r\n' +
'User-Agent: axios/1.8.1\r\n' +
'Content-Length: 150\r\n' +
'Accept-Encoding: gzip, compress, deflate, br\r\n' +
'Host: login.tado.com\r\n' +
'Connection: close\r\n' +
'\r\n',
_keepAliveTimeout: 0,
_onPendingData: [Function: nop],
agent: [Agent],
socketPath: undefined,
method: 'POST',
maxHeaderSize: undefined,
insecureHTTPParser: undefined,
joinDuplicateHeaders: undefined,
path: '/oauth2/token',
_ended: true,
res: [IncomingMessage],
aborted: false,
timeoutCb: null,
upgradeOrConnect: false,
parser: null,
maxHeadersCount: null,
reusedSocket: false,
host: 'login.tado.com',
protocol: 'https:',
_redirectable: [Writable],
[Symbol(kCapture)]: false,
[Symbol(kBytesWritten)]: 0,
[Symbol(kNeedDrain)]: false,
[Symbol(corked)]: 0,
[Symbol(kOutHeaders)]: [Object: null prototype],
[Symbol(errored)]: null,
[Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
data: {
error: 'invalid_grant',
error_description: 'The refresh_token is invalid.',
error_reason: 'refresh_token_not_found'
}
},
status: 400
}
</ref></ref>x 2025-03-16T15:02:32.721Z refreshToken() no token, getting from settings
x 2025-03-16T15:02:32.708Z [heating] Driver Ready heating
x 2025-03-16T15:02:32.663Z [valve] Driver Ready valve
x 2025-03-16T15:02:28.881Z [heatpump] Driver Ready heatpump
Die heb ik nog niet langs zien komen, ik zal er naar kijken.
Dag Martin, zeer fijne app, bedankt hiervoor!
Wel een probleempje met het toevoegen van de thermostaten/radiatorkranen via Homey in Apple HomeKit: daar verschijnen ze niet (geavanceerde instellingen). Ik heb al even geprobeerd opnieuw te starten, terug toe te voegen, tado bridge uit Apple HomeKit te verwijderen: geen succes.
Het is een beetje een omweg om dingen via Homey, via Tado in HomeKit te krijgen, maar dan is het wel gegroepeerd.
Misschien een kleine issue, hopelijk fixbaar!
Je hoeft in homekit toch alleen de Tado bridge te koppelen dan kun je de rest toevoegen, snap denk ik niet helemaal wat de bedoeling is van mijn app in dit scenario. Je zou ze volgens mij naast elkaar kunnen gebruiken, de verschillende veranderingen in status komen toch wel door denk ik.
Ik heb een aantal ruimtes waar meerdere radiatorknoppen zijn. tadoZones groepeert deze automatisch in Homey en dat is handig in gebruik. Via de officiele tado app (ook in homekit) verschijnen ze als individuele apparaten. Vandaar dat ik via Homey in homekit wou toevoegen.
Voor de zekerheid, gebruik je Tado X of V3+?
Ik heb allemaal V3+.
het kan zijn dat de radiatorknoppen als type radiator gedefinieerd zijn, waardoor wellicht de homekit toepassing van Homey deze skipt. Je kunt hem naar thermostaat zetten, wil je eens kijken of je hem dan wel ziet?
Net nog even geprobeerd maar geen verschil in zichtbaarheid daardoor.
Misschien is het door een update in OS homekit dat dit niet meer verschijnt want mijn (via onecata app daikin) warmtepompen verschijnen ook niet meer in homekit.
Hi @Martin_Verbeek, hier hetzelfde probleem. Ik heb afgelopen week ook al drie keer mijn Home opnieuw moeten toevoegen. Is eigenlijk al een probleem sinds de nieuwe authorizatie. Als ik kan helpen met meer info of iets uit proberen dan hoor ik het graag.
Ik weet niet of dit aan mijn app ligt. Wat vindt Athom zelf?
Soms ben ik gewoon erg druk
. Ben voortuin aan het renoveren. Moest de Tado app aanpassen vanwege een API change door Tado. Tussendoor doe ik ook mijn ding op de ThinQ app. Gaat goed, maar ik doe geen maintenance meer op versie 3…
Geen probleem hoor, maar ik vond het gek dat ik wel berichten voorbij zag komen in het tado topic , maar geen reacties in het Thin Q Topic☺️
Deze kaart lijkt het niet te doen. Mijn verwarming is actief en toch geeft deze “onwaar” terug. Hetzelfde voor de kamer specifieke (ipv controller) kaarten. Dit is op v6.0.16 bij een Tado V3+ systeem

Ik heb het opgelost door de controller te verwijderen en een nieuw verwarmingscircuit device toe te voegen. Ik merk nu ook dat mijn andere kaarten errors geven. Dien ik alle devices te verwijderen en terug toe te voegen? Ik hoop van niet, want dat betekent heel wat aanpaswerk aan al mijn flows ![]()
Dit is een authorisatie fout. Je bent op de nieuwe manier geautoriseerd?
Indien ja, doe eens een herstart van de app


