koalazak / dorita980

Unofficial iRobot Roomba and Braava (i7/i7+, 980, 960, 900, e5, 690, 675, m6, etc) node.js library (SDK) to control your robot
MIT License
942 stars 150 forks source link

Connected but without response #61

Closed wojtulab closed 6 years ago

wojtulab commented 6 years ago

hello, I have problem with my Roomba980. After I get blid & password, I've tried many times to control it via node scripts without success.

My roomba details:

Robot Data:

{ ver: '2',
  hostname: 'Roomba-6945CXXXXXXX840',
  robotname: 'Roomba',
  ip: '192.168.1.3',
  mac: '80:A1:89:11:1D:FD',
  sw: 'v2.2.11-4',
  sku: 'R98----',
  nc: 0,
  proto: 'mqtt',
  blid: '6945CXXXXXXX840' }
Password=> AsGzX0pzA1EReTYh <= Yes, all this string.
Use this credentials in dorita980 lib :)
koalazak commented 6 years ago

Can you share the steps and code you are running?

wojtulab commented 6 years ago

Sure, the first what i tested is test.js: root@orangepizero:~/apps/dorita980# node test.js I have to wait ... 30min later i cancel it becase there wasn't any response.

root@orangepizero:~/apps/dorita980# cat test.js


var dorita980 = require('dorita980');

var myRobotViaLocal = new dorita980.Local('6945CXXXXXXX840', 'AsGzX0pzA1EReTYh', '192.168.1.3'); // robot IP address

myRobotViaLocal.on('connect', init);

function init () {
  myRobotViaLocal.getWeek()
  .then((weekConfig) => {
    console.log(weekConfig)
    myRobotViaLocal.end()
  })
  .catch(console.log);
}

root@orangepizero:~/apps/dorita980# nodejs --version v6.12.0

root@orangepizero:~/apps/dorita980# npm ls |grep dorita dorita980@3.0.11 /root/apps/dorita980

root@orangepizero:~/apps/dorita980# uname -a Linux orangepizero 3.4.113-sun8i #4 SMP PREEMPT Wed Nov 22 13:45:28 CET 2017 armv7l GNU/Linux root@orangepizero:~/apps/dorita980# sudo arp-scan --interface=eth0 --localnet

Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.8.1 with 256 hosts (http://www.nta-monitor.com/tools/arp-scan/)
192.168.1.3     80:A1:89:11:1D:FD       (Unknown)

root@orangepizero:~/apps/dorita980# ping 192.168.1.3 -c 3

PING 192.168.1.3 (192.168.1.3) 56(84) bytes of data.
64 bytes from 192.168.1.3: icmp_seq=1 ttl=255 time=1.18 ms
64 bytes from 192.168.1.3: icmp_seq=2 ttl=255 time=1.19 ms
64 bytes from 192.168.1.3: icmp_seq=3 ttl=255 time=1.26 ms

root@orangepizero:~/apps/dorita980# nslookup 192.168.1.3

Server:         192.168.1.1
Address:        192.168.1.1#53
3.1.168.192.in-addr.arpa        name = roomba.lan.

Is there anything else what should I run&paste here for you to debug it?

koalazak commented 6 years ago

yes, try nc -vz 192.168.1.3 8883

wojtulab commented 6 years ago

port seems to be closed?

root@orangepizero:~/cron# nc -vz 192.168.1.3 8883 nnetfd reuseport failed : Protocol not available roomba.lan [192.168.1.3] 8883 (?) : Connection refused

koalazak commented 6 years ago

yes, you can not reach the required port on roomba. Maybe a firewall in your router? Or if you have the HOME mobile app opened, please close it and try again.

wojtulab commented 6 years ago

root@orangepizero:~/cron# nmap 192.168.1.3

Starting Nmap 6.47 ( http://nmap.org ) at 2017-12-12 13:54 CET Nmap scan report for roomba.lan (192.168.1.3) Host is up (0.0012s latency). All 1000 scanned ports on roomba.lan (192.168.1.3) are closed MAC Address: 80:A5:89:71:9D:FD (Unknown)

Internal firewall is closed. All mobile apps are closed also.

But u are right, every time I want to make connection to my roomba via mobile I can see in the rigt top corner WAN connection not LAN. Strange. (ok I know - this is possible because I am connected via 5Ghz and roomba via 2,4Ghz. Source is the same but AP SSIDs are different)

Above connection is direct from my router:

root@router:~# telnet 192.168.1.3 8883
telnet: can't connect to remote host (192.168.1.3): Connection refused
koalazak commented 6 years ago

sounds like a network issue, you should reach the 8883 port on the robot. Digg on that connectivity issue and then try again with dorita980

wojtulab commented 6 years ago

Why the network issue? I am trying to connect directly from my router (no firewalls etc) and port is also closed?

koalazak commented 6 years ago

try restarting your robot (press clean buton for 10s). This is how looks a nc to the robot without a connectivity issue:

nc -vz 192.168.1.104 8883
found 0 associations
found 1 connections:
     1: flags=82<CONNECTED,PREFERRED>
    outif en0
    src 192.168.1.101 port 52883
    dst 192.168.1.104 port 8883
    rank info not available
    TCP aux info available

Connection to 192.168.1.104 port 8883 [tcp/*] succeeded!
wojtulab commented 6 years ago

You are right but after restart procedure nothing changed in my problem.

koalazak commented 6 years ago

sorry, press the clean buton for 10s, not the home button

wojtulab commented 6 years ago

ok, restarted.

root@router:~# nc 192.168.1.3 8883
nc: can't connect to remote host (192.168.1.3): Connection refused

any idea how to connect via 8883 tcp?

wojtulab commented 6 years ago

I disabled firewall on my router. The status is the same...connection refused on 8883 tcp port.

wojtulab commented 6 years ago

finally I resolved the issue.

Problem wasn't connected with my WiFi / Router etc. I remove robot from my mobile app and reconfigure it again. After that I managed to run scripts.

Greetings