homebridge-plugins / homebridge-roomba2

Homebridge plugin to connect iRobot Roomba devices with Homebridge/HomeKit.
MIT License
145 stars 17 forks source link

Error: connect EHOSTUNREACH 192.168.1.4:8883 #122

Open DGHEE123045 opened 2 years ago

DGHEE123045 commented 2 years ago

I'm not sure if I'm not doing something right here, but for the life of me I can't seem to get communication with my j7. I had it set with a static IP, and this morning removed homebridge-roomba2 and reinstalled it through the setup directions again, as I couldn't get past a different issue. Now I can't seem to connect to it at all running the getrobotpwd npm command. I even removed the static IP and had it grab a new one from DHCP, can see that it's on the router, but still nothing.

When I ran the getrobotpwd command, I got this:

Make sure your robot is on the Home Base and powered on (green lights on). Then press and hold the HOME button (or DOCK+SPOT on some models) on your robot until it plays a series of tones (about 2 seconds). Release the button and your robot will flash WIFI light.
Then press any key here...
node:events:505
      throw er; // Unhandled 'error' event
      ^

Error: Client network socket disconnected before secure TLS connection was established
    at connResetException (node:internal/errors:692:14)
    at TLSSocket.onConnectEnd (node:_tls_wrap:1587:19)
    at TLSSocket.emit (node:events:539:35)
    at endReadableNT (node:internal/streams/readable:1342:12)
    at processTicksAndRejections (node:internal/process/task_queues:83:21)
Emitted 'error' event on TLSSocket instance at:
    at emitErrorNT (node:internal/streams/destroy:164:8)
    at emitErrorCloseNT (node:internal/streams/destroy:129:3)
    at processTicksAndRejections (node:internal/process/task_queues:83:21) {
  code: 'ECONNRESET',
  path: undefined,
  host: '192.168.1.4',
  port: 8883,
  localAddress: undefined
}

I then ran npm audit fix as it recommended above that, and ran the getrobotpwd command again and now get this:

Make sure your robot is on the Home Base and powered on (green lights on). Then press and hold the HOME button on your robot until it plays a series of tones (about 2 seconds). Release the button and your robot will flash WIFI light. Then wait and look here...
Fatal error connecting to robot. Please verify the IP address and connectivity: Error: connect EHOSTUNREACH 192.168.1.16:443
    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1187:16) {
  errno: -113,
  code: 'EHOSTUNREACH',
  syscall: 'connect',
  address: '192.168.1.16',
  port: 443
}

This is from a clean slate, so I'm not sure what's going on here. I just erased the raspberry pi 4 and reinstalled the newest version of openSUSE Tumbleweed yesterday, and while not with this plugin as I only recently got the Roomba, the device previously had an older version of openSUSE running Homebridge before I moved 2 years ago, and this is the first time it's been connected in the new house.

Versions

Homebridge version: 1.5.0 Node: 17.7.1 Homebridge-roomba2: 1.3.1

**Edit: I forgot to mention I had added 8883 and 443 to the firewall to troubleshoot while doing it.

karlvr commented 1 year ago

@DGHEE123045 It does sound like a connectivity issue between your Homebridge and your Roomba.

Perhaps try using ping to see if you can get a response from your Roomba.

ping 192.168.1.16

My Roomba, at least, responds to pings.

Maybe there is a setting to prevent members of your WiFi network from communicating with each other. That is sometimes a configuration option. Try pinging your Roomba from different machines, and try pinging from one computer to another to see if this might be the case on your WiFi.

ganewate commented 1 year ago

I have a J7 too and ran into this issue, it's not connectivity (the device pings happily from the homebridge)

Googling around I found on the HomeAssistant forums that the J series doesn't support the direct interrogation method, you can only get the password from the device from packet sniffing the app's connection to the device or using the script to get it from the cloud.

I'm guessing from issue #124 that this plugin considers the "get-password-cloud" method to be the old way of doing it? however it's probably the easiest for a J series. Reading the issue submitted there I followed what that poster said they'd done:

sudo npm install -g dorita980
cd $(npm root -g)/dorita980
npm run get-password-cloud "username" "password"

which returned the BLID and password i could then use in the plugin.

TLDR; I'd suggest that this project continues to document both the direct and cloud mechanisms of locating BLID and password as it appears the J series at least (and maybe future newer devices) can only offer this information via the cloud script (the alternative of setting up a packet sniffer or wireshark on iOS at least is a pain).

karlvr commented 1 year ago

@ganewate Thank you. Yes this sounds practical; I will add a section to the documentation for this unless someone PRs it.

fcmarriott commented 1 year ago

I'm having the same issue with my new i7 Roomba Vacuum. Neither the original instructions, or the Dorito980 seem to work.

`> dorita980@3.1.11 get-password-cloud

node ./bin/getPasswordCloud.js username password

Authentication error. Please check your credentials. { callId: 'd1a97437bab94c288c5795292e4e5924', errorCode: 403042, errorDetails: 'invalid loginID or password', errorMessage: 'Invalid LoginID', apiVersion: 2, statusCode: 403, statusReason: 'Forbidden', time: '2023-06-28T10:23:50.574Z' } pi@homebridge:/usr/local/lib/node_modules/dorita980 $`

The i7 is available via the iRobot app, which has my correct credentials.