homebridge-plugin-eufy-security icon indicating copy to clipboard operation
homebridge-plugin-eufy-security copied to clipboard

Nothing shows in Homebridge App

Open brent7320 opened this issue 4 years ago • 92 comments

I have installed the plugin in homebridge and supplied valid credentials, no accessories ever appear. Are there any additional instructions we should be following? I have restarted Homebridge multiple times, nothing ever appears. This is a Battery 2K Doorbell.

Plugin version - 0.0.3 Homebridge - v1.2.3 NPM - 6.14.7

12/1/2020, 8:17:03 PM] [EufySecurityHomebridgePlugin] credentials found. reusing them...

brent7320 avatar Dec 02 '20 02:12 brent7320

Try the 0.1.1 version I just published. Start with homebridge -D and see if there are any logs

birkir avatar Dec 02 '20 02:12 birkir

I have installed the plugin in homebridge and supplied valid credentials, no accessories ever appear. Are there any additional instructions we should be following? I have restarted Homebridge multiple times, nothing ever appears. This is a Battery 2K Doorbell.

Plugin version - 0.0.3 Homebridge - v1.2.3 NPM - 6.14.7

12/1/2020, 8:17:03 PM] [EufySecurityHomebridgePlugin] credentials found. reusing them...

I'm having the same issue too.

Edit: I removed the log due to security reasons.

Techlover22 avatar Dec 02 '20 03:12 Techlover22

I've updated to 0.1.1 and I'm still having this exact issue, including the part where the only thing the log says is [EufySecurityHomebridgePlugin] credentials found. reusing them...

I have the original 2K Battery doorbell (the one that connects to the Home Base 2).

DaveM8686 avatar Dec 02 '20 04:12 DaveM8686

Hi!

I have used a previous version of the plug-in with the exact same Doorbell. It worked after installing twice.

ktsi avatar Dec 02 '20 06:12 ktsi

I've uninstalled and reinstalled so many times. I've installed while it's already installed. I've tried from the terminal and from the HomeBridge UI. I've restarted the server repeatedly. Set up a new guest account for the doorbell, turned off 2FA, nothing.

I'm running HomeBridge on a Synology NAS through Docker, if that makes a difference.

DaveM8686 avatar Dec 02 '20 07:12 DaveM8686

I'm having the same issue too. I'm sending you a zip of the home bridge.log file

homebridge.log.zip

You might want to take this attachment down and change your eufy password ASAP as it was in the above log file.

brent7320 avatar Dec 02 '20 10:12 brent7320

I ran homebridge in debug mode and below is the only additional information displayed in the logs.

[12/2/2020, 4:35:38 AM] [EufySecurityHomebridgePlugin] Initializing EufySecurityHomebridgePlugin platform... [12/2/2020, 4:35:38 AM] [EufySecurityHomebridgePlugin] Config { username: '[email protected]', password: 'xxxxx', platform: 'EufySecurityHomebridgePlugin' } [12/2/2020, 4:35:38 AM] [EufySecurityHomebridgePlugin] Finished initializing platform: undefined

brent7320 avatar Dec 02 '20 10:12 brent7320

I'm having this exact same issue. I spent some time debugging with log files and this like seems to be where it bails:

https://github.com/birkir/homebridge-plugin-eufy-security/blob/master/src/platform.ts#L82

I cannot get passed that. I do currently have 2FA turned off for testing. I have a wired doorbell, but I don't think it matters in this case.

dshafik avatar Dec 02 '20 10:12 dshafik

I'm having this exact same issue. I spent some time debugging with log files and this like seems to be where it bails:

https://github.com/birkir/homebridge-plugin-eufy-security/blob/master/src/platform.ts#L82

I cannot get passed that. I do currently have 2FA turned off for testing. I have a wired doorbell, but I don't think it matters in this case.

I initially had 2FA turned on as well, but disabled for testing. Not sure if that has something to do with it not working or not.

brent7320 avatar Dec 02 '20 10:12 brent7320

Same! I had 2FA on at first, and it won't work for me. Even rolling back my config file and completely setting up the plug-in from scratch, it still says it found existing credentials and is reusing them. I think this is the problem.

DaveM8686 avatar Dec 02 '20 11:12 DaveM8686

I got same issue. Got the wired door bell. Installed version 0.1.1 of plugin. installing twice did not help.

Startup logs says:

2.12.2020, 15:47:47 (node:9291) UnhandledPromiseRejectionWarning: Error: Request failed: https://security-app-eu.eufylife.com/v1/passport/login -> 26052 - need validate code 2.12.2020, 15:47:47 at /home/hoobs/.hoobs/node_modules/eufy-node-client/build/http/http.utils.js:24:15 2.12.2020, 15:47:47 at Generator.next () 2.12.2020, 15:47:47 at fulfilled (/home/hoobs/.hoobs/node_modules/eufy-node-client/build/http/http.utils.js:5:58) 2.12.2020, 15:47:47 at runMicrotasks () 2.12.2020, 15:47:47 at processTicksAndRejections (internal/process/task_queues.js:97:5) 2.12.2020, 15:47:47 (node:9291) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1) 2.12.2020, 15:47:47 (node:9291) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

raphb83 avatar Dec 02 '20 15:12 raphb83

I actually tried deleting the "eufy-security-credentials.json" file and running again. It found the new credentials in this case, but still nothing showing in Home.

DaveM8686 avatar Dec 03 '20 00:12 DaveM8686

@raphb83 do you have 2 Factor Auth (2FA) enabled? I believe I saw the same behavior when I did. Currently 2FA isn't supported.

dshafik avatar Dec 03 '20 00:12 dshafik

@DaveM8686 same here. I had hoped it was bad credentials due to the 2FA issue, but it didn't help.

dshafik avatar Dec 03 '20 00:12 dshafik

@raphb83 do you have 2 Factor Auth (2FA) enabled? I believe I saw the same behavior when I did. Currently 2FA isn't supported.

I'm having the same issue but without 2FA...

Techlover22 avatar Dec 03 '20 00:12 Techlover22

With some more debugging and patience (takes 5+ minutes) I finally got an error out of: https://github.com/birkir/homebridge-plugin-eufy-security/blob/master/src/platform.ts#L82

{ RequestError: read ECONNRESET
    at ClientRequest.request.once (/homebridge/node_modules/homebridge-plugin-eufy-security/node_modules/got/dist/source/core/index.js:953:111)
    at Object.onceWrapper (events.js:286:20)
    at ClientRequest.emit (events.js:203:15)
    at ClientRequest.origin.emit.args (/homebridge/node_modules/homebridge-plugin-eufy-security/node_modules/@szmarczak/http-timer/dist/source/index.js:39:20)
    at TLSSocket.socketErrorListener (_http_client.js:401:9)
    at TLSSocket.emit (events.js:198:13)
    at emitErrorNT (internal/streams/destroy.js:91:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at TLSWrap.onStreamRead (internal/stream_base_commons.js:111:27)
  name: 'RequestError',
  code: 'ECONNRESET',
  timings:
   { start: 1606905673656,
     socket: 1606905673656,
     lookup: 1606905673674,
     connect: 1606905673762,
     secureConnect: 1606905675424,
     upload: 1606905673657,
     response: undefined,
     end: undefined,
     error: 1606905675794,
     abort: undefined,
     phases:
      { wait: 0,
        dns: 18,
        tcp: 88,
        tls: 1662,
        request: NaN,
        firstByte: undefined,
        download: undefined,
        total: 2138 } } }

This is a pretty opaque error in that it just means that the Eufy server abruptly closed the connection (probably due to a timeout after 5m!).

Because I catch that exception and return from the function, it then tries to find the devices, and results in this:

UnhandledPromiseRejectionWarning: RequestError: getaddrinfo EAI_AGAIN security-app.eufylife.com security-app.eufylife.com:443
    at ClientRequest.request.once (/homebridge/node_modules/homebridge-plugin-eufy-security/node_modules/got/dist/source/core/index.js:953:111)
    at Object.onceWrapper (events.js:286:20)
    at ClientRequest.emit (events.js:203:15)
    at ClientRequest.origin.emit.args (/homebridge/node_modules/homebridge-plugin-eufy-security/node_modules/@szmarczak/http-timer/dist/source/index.js:39:20)
    at TLSSocket.socketErrorListener (_http_client.js:401:9)
    at TLSSocket.emit (events.js:198:13)
    at emitErrorNT (internal/streams/destroy.js:91:8)
    at emitErrorAndCloseNT (internal/streams/destroy.js:59:3)
    at process._tickCallback (internal/process/next_tick.js:63:19)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:56:26)
(node:6518) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:6518) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

This is a DNS issue. So I figured out the IP for security-app.eufylife.com (it's a CNAME to AWS, which then resolves to multiple IPs, I picked the first one), and added it to my /etc/hosts and now I get:

{ HTTPError: Response code 401 (Unauthorized)
    at Request.request.once (/homebridge/node_modules/homebridge-plugin-eufy-security/node_modules/got/dist/source/as-promise/index.js:117:42)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  name: 'HTTPError',
  code: undefined,
  timings:
   { start: 1606957517771,
     socket: 1606957517771,
     lookup: 1606957517771,
     connect: 1606957517880,
     secureConnect: 1606957517984,
     upload: 1606957517771,
     response: 1606957518074,
     end: 1606957518074,
     error: undefined,
     abort: undefined,
     phases:
      { wait: 0,
        dns: 0,
        tcp: 109,
        tls: 104,
        request: NaN,
        firstByte: 303,
        download: 0,
        total: 303 } } }`

and when trying to find devices:

UnhandledPromiseRejectionWarning: HTTPError: Response code 401 (Unauthorized)
    at Request.request.once (/homebridge/node_modules/homebridge-plugin-eufy-security/node_modules/got/dist/source/as-promise/index.js:117:42)
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:7344) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:7344) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

This might be caused by my docker-in-virtualbox-bridged-bridged networking, so I'd love to know if anyone else can confirm.

If you want to try yourself, edit node_modules/homebridge-plugin-security-eufy/dist/platform.js in your Homebridge installation directory, and look for this line around line 65 (I've added multiple debug lines above, not sure how many):

await this.httpService.registerPushToken(fcmToken);

and replace with:

        try {
                await this.httpService.registerPushToken(fcmToken);
        } catch (e) {
                this.log.debug("EXCEPTION!");
                this.log.debug(e);
                return;
        }

dshafik avatar Dec 03 '20 01:12 dshafik

If you want to try yourself, edit node_modules/homebridge-plugin-security-eufy/dist/platform.js in your Homebridge installation directory, and look for this line around line 65 (I've added multiple debug lines above, not sure how many):


await this.httpService.registerPushToken(fcmToken);

and replace with:


        try {

                await this.httpService.registerPushToken(fcmToken);

        } catch (e) {

                this.log.debug("EXCEPTION!");

                this.log.debug(e);

                return;

        }

I was able to find my cached credential .Json file and I deleted it. After doing that and putting in the log statements you stated above, i was able to duplicate what you are seeing. I am not running this in docker though, this is homebridge running on an Ubuntu VM.


[12/3/2020, 2:39:03 AM] [EufySecurityHomebridgePlugin] EXCEPTION!
[12/3/2020, 2:39:03 AM] [EufySecurityHomebridgePlugin] { HTTPError: Response code 401 (Unauthorized)
    at Request.request.once (/usr/lib/node_modules/homebridge-plugin-eufy-security/node_modules/got/dist/source/as-promise/index.js:117:42)
    at process._tickCallback (internal/process/next_tick.js:68:7)
  name: 'HTTPError',
  code: undefined,
  timings:
   { start: 1606984743636,
     socket: 1606984743636,
     lookup: 1606984743664,
     connect: 1606984743703,
     secureConnect: 1606984743748,
     upload: 1606984743636,
     response: 1606984743794,
     end: 1606984743794,
     error: undefined,
     abort: undefined,
     phases:
      { wait: 0,
        dns: 28,
        tcp: 39,
        tls: 45,
        request: NaN,
        firstByte: 158,
        download: 0,
        total: 158 } } }
[12/3/2020, 2:39:03 AM] [EufySecurityHomebridgePlugin] Executed didFinishLaunching callback
(node:670387) UnhandledPromiseRejectionWarning: HTTPError: Response code 401 (Unauthorized)
    at Request.request.once (/usr/lib/node_modules/homebridge-plugin-eufy-security/node_modules/got/dist/source/as-promise/index.js:117:42)
    at process._tickCallback (internal/process/next_tick.js:68:7)
(node:670387) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:670387) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

brent7320 avatar Dec 03 '20 08:12 brent7320

@raphb83 do you have 2 Factor Auth (2FA) enabled? I believe I saw the same behavior when I did. Currently 2FA isn't supported.

As far as i know i do not have 2FA enabled. Sorry about the question: where do i have to look if it is enabled?😬

raphb83 avatar Dec 03 '20 10:12 raphb83

I am having the same issue. I dont have 2FA enabled. after putting in my credentials and plug in nothing appears in accessories

hicksbjacob avatar Dec 03 '20 22:12 hicksbjacob

Also having this issue. On 0.1.1, just got my battery doorbell cam, no 2FA, but nothing shows up in Home.

asgertler avatar Dec 04 '20 00:12 asgertler

Getting this error when attempting to use the plugin image

cmfrazier avatar Dec 04 '20 04:12 cmfrazier

I deleted my eufy-security-credentials.json file as I had changed my password after turning off 2FA and I'm now getting this:

12/4/2020, 10:42:26] [EufySecurityHomebridgePlugin] credentials found. reusing them...
(node:31054) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 shutdown listeners added to [HomebridgeAPI]. Use emitter.setMaxListeners() to increase limit

and this

[12/4/2020, 10:37:59] [EufySecurityHomebridgePlugin] wait a short time (5sec)...
(node:30864) UnhandledPromiseRejectionWarning: HTTPError: Response code 401 (Unauthorized)
    at Request.<anonymous> (/usr/local/lib/node_modules/homebridge-plugin-eufy-security/node_modules/got/dist/source/as-promise/index.js:117:42)
    at runMicrotasks (<anonymous>)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:30864) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 4)
(node:30864) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

cmfrazier avatar Dec 04 '20 16:12 cmfrazier

If it's a 2FA related problem, you can try creating an new account and inviting to have read only access to the cameras/doorbells you want to expose. Then use that new account's credentials for this plugin and you can keep 2FA enabled for your admin account.

I'd suggest that's a better and more secure way of setting this up anyway.

a-metasyntactic avatar Dec 04 '20 20:12 a-metasyntactic

If it's a 2FA related problem, you can try creating an new account and inviting to have read only access to the cameras/doorbells you want to expose. Then use that new account's credentials for this plugin and you can keep 2FA enabled for your admin account.

I'd suggest that's a better and more secure way of setting this up anyway.

I’ve done this and it didn’t fix anything. I created a whole new account that never had 2FA, deleted the credentials file, uninstalled the plugin, then redid it all and it’s the same problem.

DaveM8686 avatar Dec 04 '20 23:12 DaveM8686

I added a option to disable push if you like (and fixed the issue that it blocks further code to run).

I also added some debug parameters so you should be able to report better logs for me.

birkir avatar Dec 05 '20 14:12 birkir

@birkir After updating and enabling debug

[12/5/2020, 12:23:32] [EufySecurityHomebridgePlugin] Initializing EufySecurityHomebridgePlugin platform...
[12/5/2020, 12:23:32] [EufySecurityHomebridgePlugin] Config {
  username: 'email-redacted',
  password: 'password-redacted',
  platform: 'EufySecurityHomebridgePlugin'
}
[12/5/2020, 12:23:32] [EufySecurityHomebridgePlugin] Finished initializing platform: undefined
[12/5/2020, 12:23:33] [EufySecurityHomebridgePlugin] push client disabled
[12/5/2020, 12:23:33] [EufySecurityHomebridgePlugin] Executed didFinishLaunching callback
(node:17243) MaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 shutdown listeners added to [HomebridgeAPI]. Use emitter.setMaxListeners() to increase limit

cmfrazier avatar Dec 05 '20 18:12 cmfrazier

I added a option to disable push if you like (and fixed the issue that it blocks further code to run).

I also added some debug parameters so you should be able to report better logs for me.

Version 0.1.2 working with 2FA disabled and wired door bell😃 Great

raphb83 avatar Dec 05 '20 18:12 raphb83

I added a option to disable push if you like (and fixed the issue that it blocks further code to run).

What does this disable? Notifications?

I also added some debug parameters so you should be able to report better logs for me.

Great!

Here's my current (redacted) logs:

[12/5/2020, 12:32:44 PM] [EufySecurityHomebridgePlugin] Initializing EufySecurityHomebridgePlugin platform...
[12/5/2020, 12:32:44 PM] [EufySecurityHomebridgePlugin] Config {
  username: '[email protected]',
  password: 'PASSWORDHERE',
  enablePush: false,
  platform: 'EufySecurityHomebridgePlugin'
}
[12/5/2020, 12:32:44 PM] [EufySecurityHomebridgePlugin] Finished initializing platform: undefined
[12/5/2020, 12:32:44 PM] [EufySecurityHomebridgePlugin] push client disabled
[12/5/2020, 12:32:44 PM] [EufySecurityHomebridgePlugin] Executed didFinishLaunching callback

(node:65778) UnhandledPromiseRejectionWarning: HTTPError: Response code 401 (Unauthorized)
    at Request.<anonymous> (/Users/dshafik/.nvm/versions/node/v14.15.1/lib/node_modules/homebridge-plugin-eufy-security/node_modules/got/dist/source/as-promise/index.js:117:42)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:65778) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:65778) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

One issue that can be easily fixed is:

[12/5/2020, 12:32:44 PM] [EufySecurityHomebridgePlugin] Finished initializing platform: undefined

--       this.log.debug("Finished initializing platform:", this.config.name);
++       this.log.debug("Finished initializing platform:", this.config.platform);

But that's not going to impact anything of consequence.

dshafik avatar Dec 05 '20 20:12 dshafik

Still nothing for me, with push on or off.

DaveM8686 avatar Dec 05 '20 21:12 DaveM8686

Is there a dependent package for this? Like a camera or doorbell one?

DaveM8686 avatar Dec 05 '20 21:12 DaveM8686