RaresAil / homebridge-tp-link-tapo

A platform to implement the tp-link tapo device and Adaptive Lighting for light bulbs
https://www.npmjs.com/package/homebridge-tp-link-tapo
Apache License 2.0
66 stars 5 forks source link

Please add support for S220 switches #107

Open macaaw opened 5 days ago

macaaw commented 5 days ago

Describe The Bug

Please add the S220 switches

Expected behavior

please add

Logs

none

Plugin Config

{ "addresses": [ "10.0.7.65" ], "name": "Tapo", "email": "a@acom", "password": "password", "platform": "HomebridgeTPLinkTapo", "_bridge": { "username": "0E:8B:20:B6:DA:21", "port": 59465 } },

Plugin Version

4.1.1

Homebridge Version

1.8.4

Node.js Version

v18.16.0

NPM Version

0.0

Operating System

Raspberry Pi

macaaw commented 14 hours ago

It seems to be connecting on port 80 but my H200 hub is running on 443:

Error sending command: deviceInfo AxiosError: connect ETIMEDOUT 10.0.7.65:80 at Function.AxiosError.from (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/node_modules/axios/lib/core/AxiosError.js:89:14) at RedirectableRequest.handleRequestError (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/node_modules/axios/lib/adapters/http.js:610:25) at RedirectableRequest.emit (node:events:513:28) at ClientRequest.eventHandlers. (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/node_modules/follow-redirects/index.js:38:24) at ClientRequest.emit (node:events:513:28) at Socket.socketErrorListener (node:_http_client:502:9) at Socket.emit (node:events:513:28) at emitErrorNT (node:internal/streams/destroy:151:8) at emitErrorCloseNT (node:internal/streams/destroy:116:3) at processTicksAndRejections (node:internal/process/task_queues:82:21) at Axios.request (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/node_modules/axios/lib/core/Axios.js:45:41) at processTicksAndRejections (node:internal/process/task_queues:95:5) at LegacyAPI.sendRequest (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/LegacyAPI.ts:48:22) at LegacyAPI.handshake (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/LegacyAPI.ts:163:22) at LegacyAPI.sendSecureRequest (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/LegacyAPI.ts:83:7) at LegacyAPI.login (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/LegacyAPI.ts:20:22) at TPLink.sendCommandWithNoLock (/var/lib/homebridge/node_modules/homebridge-tp-link-tapo/src/api/TPLink.ts:208:9) { port: 80, address: '10.0.7.65', syscall: 'connect', code: 'ETIMEDOUT', errno: -110, 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], Blob: [class Blob] }, validateStatus: [Function: validateStatus], headers: Object [AxiosHeaders] { Accept: 'application/json, text/plain, /', 'Content-Type': 'application/json', 'User-Agent': 'axios/1.7.2', 'Content-Length': '352', 'Accept-Encoding': 'gzip, compress, deflate, br' }, httpAgent: Agent { _events: [Object: null prototype], _eventsCount: 2, _maxListeners: undefined, defaultPort: 80, protocol: 'http:', 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: 1,

},
method: 'post',
url: 'http://10.0.7.65/app',
data: '{"method":"handshake","params":{"key":"-----BEGIN PUBLIC KEY-----\\nMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDbVtCKIl5NoBvKuHSCQUGJLKWv\\nJGeKiQC3A2iUMQ0DBhRnGtEd7qe4p10ny2QF64P2aOVYl6HoTmiENvQms8xAGwFh\\n0qxWMGH7xLI6bf2LXvjM9bFrIvRhmOMine6N0lbkIzh3cnwtSWpMXAXyECK6cxD0\\n57gUGPPOd92jvmxDywIDAQAB\\n-----END PUBLIC KEY-----\\n"},"requestTimeMils":1728151990132}'

}, request: <ref *1> Writable { _writableState: WritableState { objectMode: false, highWaterMark: 16384, finalCalled: false, needDrain: false, ending: false, ended: false, finished: false, destroyed: false, decodeStrings: true, defaultEncoding: 'utf8', length: 0, writing: false, corked: 0, sync: true, bufferProcessing: false, onwrite: [Function: bound onwrite], writecb: null, writelen: 0, afterWriteTickInfo: null, buffered: [], bufferedIndex: 0, allBuffers: true, allNoop: true, pendingcb: 0, constructed: true, prefinished: false, errorEmitted: false, emitClose: true, autoDestroy: true, errored: null, closed: false, closeEmitted: false,

},
_events: [Object: null prototype] {
  response: [Function: handleResponse],
  error: [Function: handleRequestError],
  socket: [Function: handleRequestSocket]
},
_eventsCount: 3,
_maxListeners: undefined,
_options: {
  maxRedirects: 21,
  maxBodyLength: Infinity,
  protocol: 'http:',
  path: '/app',
  method: 'POST',
  headers: [Object: null prototype],
  agents: [Object],
  auth: undefined,
  family: undefined,
  beforeRedirect: [Function: dispatchBeforeRedirect],
  beforeRedirects: [Object],
  hostname: '10.0.7.65',
  port: '',
  agent: [Agent],
  nativeProtocols: [Object],
  pathname: '/app'
},
_ended: false,
_ending: true,
_redirectCount: 0,
_redirects: [],
_requestBodyLength: 352,
_requestBodyBuffers: [ [Object] ],
_onNativeResponse: [Function (anonymous)],
_currentRequest: ClientRequest {
  _events: [Object: null prototype],
  _eventsCount: 7,
  _maxListeners: undefined,
  outputData: [],
  outputSize: 0,
  writable: true,
  destroyed: false,
  _last: true,
  chunkedEncoding: false,
  shouldKeepAlive: false,
  maxRequestsOnConnectionReached: false,
  _defaultKeepAlive: true,
  useChunkedEncodingByDefault: true,
  sendDate: false,
  _removedConnection: false,
  _removedContLen: false,
  _removedTE: false,
  strictContentLength: false,
  _contentLength: '352',
  _hasBody: true,
  _trailer: '',
  finished: false,
  _headerSent: true,
  _closed: false,
  socket: [Socket],
  _header: 'POST /app HTTP/1.1\r\n' +
    'Accept: application/json, text/plain, */*\r\n' +
    'Content-Type: application/json\r\n' +
    'User-Agent: axios/1.7.2\r\n' +
    'Content-Length: 352\r\n' +
    'Accept-Encoding: gzip, compress, deflate, br\r\n' +
    'Host: 10.0.7.65\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: '/app',
  _ended: false,
  res: null,
  aborted: false,
  timeoutCb: null,
  upgradeOrConnect: false,
  parser: null,
  maxHeadersCount: null,
  reusedSocket: false,
  host: '10.0.7.65',
  protocol: 'http:',
  _redirectable: [Circular *1],
  [Symbol(kCapture)]: false,
  [Symbol(kBytesWritten)]: 0,
  [Symbol(kNeedDrain)]: false,
  [Symbol(corked)]: 0,
  [Symbol(kOutHeaders)]: [Object: null prototype],
  [Symbol(errored)]: null,
  [Symbol(kUniqueHeaders)]: null
},
_currentUrl: 'http://10.0.7.65/app',
[Symbol(kCapture)]: false

}, cause: Error: connect ETIMEDOUT 10.0.7.65:80 at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1494:16) { errno: -110, code: 'ETIMEDOUT', syscall: 'connect', address: '10.0.7.65', port: 80 } }