mrbungle64 / ecovacs-deebot.js

A Node.js library for running Ecovacs Deebot and yeedi vacuum cleaner robots
GNU General Public License v3.0
115 stars 37 forks source link

Move Left Right MoveTurnAround ? #270

Open matrix1233 opened 1 year ago

matrix1233 commented 1 year ago

The question

Hi, am trying to move my ecovacs N8 but the move Left, Right and the MoveTurnAround can't work vacbot.run("MoveForward"); ==> WORK vacbot.run("MoveLeft"); ==> NOT WORKING vacbot.run("MoveRight"); ==> NOT WORKING vacbot.run("MoveBackward"); ==> WORK vacbot.run("MoveTurnAround"); ==> NOT WORKING vacbot.run("Stop"); ==> WORK

Can you help me to move my ecovacs to all direction ?

Thanks

Which model do you own?

None

Additional information

No response

mrbungle64 commented 1 year ago

@matrix1233

The move commands are not working on every device. For example none of them is working on my T8 AIVI. They are actually for older models with remote control.

I still need to figure out the move commands for the newer models, but that's honestly not high on my priority list 😉 I'll let you know when I implemented new move commands.

scognito commented 1 year ago

I have the same problem. Is there a way to debug?

mrbungle64 commented 1 year ago

@scognito

I have the same problem. Is there a way to debug?

What model are you using?

scognito commented 1 year ago

N8+

I'm a developer, I can help in some way if you need

Il Gio 20 Apr 2023, 21:43 Sascha @.***> ha scritto:

@scognito https://github.com/scognito

I have the same problem. Is there a way to debug?

What model are you using?

— Reply to this email directly, view it on GitHub https://github.com/mrbungle64/ecovacs-deebot.js/issues/270#issuecomment-1516856934, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADRYVGVOQH45JY4DTUQFFDXCGGWLANCNFSM6AAAAAATIVHYHI . You are receiving this because you were mentioned.Message ID: @.***>

mrbungle64 commented 1 year ago

@scognito

Please try if the move commands of this branch are working: https://github.com/mrbungle64/ecovacs-deebot.js/tree/test/2023-04

scognito commented 1 year ago

Unfortunately this didn't work (forward and backward commands work though, like the master branch). This is the relevant part of the code (it's mainly the example):

        console.log("Devices:", JSON.stringify(devices));

        let vacuum = devices[deviceID];
        let vacbot = api.getVacBot(api.uid, EcoVacsAPI.REALM, api.resource, api.user_access_token, vacuum, continent);

        // Once the session has started the bot will fire a 'ready' event.
        // At this point you can request information from your vacuum or send actions to it.
        vacbot.on("ready", (event) => {
            console.log("vacbot ready");

            vacbot.run("RotateLeft");

            vacbot.on("BatteryInfo", (battery) => {
                console.log("Battery level: " + Math.round(battery));
            });
            vacbot.on('CleanReport', (value) => {
                console.log("Clean status: " + value);
            });
            vacbot.on('ChargeState', (value) => {
                console.log("Charge status: " + value);
            });
        });
        vacbot.connect();

This is the log (I removed a lot of information I think it is private, let me know if you need other info).

 info  Setting up EcovacsAPI instance
 function  connect(accountId,passwordHash)
 function  callUserAuthApi('user/login',{account:accountId,password:passwordHash})
 info  portalUrl.href: 'https://gl-it-api.ecovacs.com/v1/private/IT/EN/XXX/global_e/2.2.3/google_play/1/user/login'
 info  searchParams: 'account=XXX&password=1XXX&authTimespan=1682347383844&requestId=XXX&authTimeZone=GMT-8&authAppkey=XXX&authSign=XXX'
 payload 
{
  code: '0000',
  msg: '操作成功',
  time: 1682347384003,
  data: {
    uid: 'XXX',
    accessToken: 'XXXX',
    userName: 'XXX',
    email: 'XXX',
    mobile: null,
    isNew: null,
    loginName: 'XXX',
    ucUid: 'XXX'
  },
  success: true
}
 function  callUserAuthApi('user/getAuthCode',{"uid":"XXX","accessToken":"XXX"})
 info  portalUrl.href: 'https://gl-it-openapi.ecovacs.com/v1/global/auth/getAuthCode'
 info  searchParams: 'uid=XXX&accessToken=XXX&authTimespan=1682347384181&bizType=&deviceId=XXX&openId=global&authAppkey=XXX&authSign=XXX'
 payload 
{
  code: '0000',
  msg: '操作成功',
  time: 1682347384318,
  data: {
    authCode: 'XXX',
    ecovacsUid: 'XXX'
  },
  success: true
}
 function  callPortalApi('users/user.do','loginByItToken','{"edition":"ECOGLOBLE","userId":"XXX","token":"GLOBAL_APP__XXX","realm":"ecouser.net","resource":"XXX","org":"ECOWW","last":"","country":"IT"}')
 info  params: {"todo":"loginByItToken","edition":"ECOGLOBLE","userId":"XXX","token":"XXX","realm":"ecouser.net","resource":"XXX","org":"ECOWW","last":"","country":"IT"}
 info  portalUrl: 'https://api-app.dc-eu.ww.ecouser.net/api/users/user.do'
 payload 
{
  todo: 'result',
  result: 'ok',
  userId: 'XXX',
  resource: 'XXX',
  token: 'XXX',
  last: 604800000
}
 success  user authentication complete
 function  callPortalApi('users/user.do','GetDeviceList','{"userid":"XXX","auth":{"with":"users","userid":"XXX","realm":"ecouser.net","token":"XXX","resource":"XXX"}}')
 info  params: {"todo":"GetDeviceList","userid":"XXX","auth":{"with":"users","userid":"XXX","realm":"ecouser.net","token":"XXX","resource":"XXX"}}
 info  portalUrl: 'https://api-app.dc-eu.ww.ecouser.net/api/users/user.do'
 payload 
{
  todo: 'result',
  result: 'ok',
  devices: [
    {
      did: 'XXX',
      name: 'XXX',
      class: '7bryc5',
      resource: '8ukt',
      nick: 'Alfred',
      company: 'eco-ng',
      bindTs: 1643315113556,
      service: [Object]
    }
  ]
}
 function  callPortalApi('appsvr/app.do','GetGlobalDeviceList','{"userid":"XXX","auth":{"with":"users","userid":"XXX","realm":"ecouser.net","token":"XXX","resource":"XXX"}}')
 info  params: {"todo":"GetGlobalDeviceList","userid":"XXX","auth":{"with":"users","userid":"XXX","realm":"ecouser.net","token":"XXX","resource":"XXX"}}
 info  portalUrl: 'https://api-app.dc-eu.ww.ecouser.net/api/appsvr/app.do'
 payload 
{
  code: 0,
  todo: 'result',
  ret: 'ok',
  devices: [
    {
      did: 'XXX',
      name: 'XXX',
      class: '7bryc5',
      resource: '8ukt',
      nick: 'Alfred',
      company: 'eco-ng',
      bindTs: 1643315113556,
      service: [Object],
      homeId: 'XXX',
      homeSort: 9999,
      deviceName: 'DEEBOT N8+',
      icon: 'https://portal-ww.ecouser.net/api/pim/file/get/5fb474d4d16a99000667edd9',
      ota: true,
      UILogicId: 'N8_PLUS',
      materialNo: 'XXX',
      pid: 'XXX',
      product_category: 'DEEBOT',
      model: 'N8_PLUS_WHITE',
      updateInfo: [Object],
      status: 1,
      offmap: true
    }
  ]
}
Devices: [{"did":"XXX","name":"XXX","class":"7bryc5","resource":"XXX","nick":"Alfred","company":"eco-ng","bindTs":1643315113556,"service":{"jmq":"jmq-ngiot-eu.dc.ww.ecouser.net","mqs":"api-ngiot.dc-as.ww.ecouser.net"},"homeId":"XXX","homeSort":9999,"deviceName":"DEEBOT N8+","icon":"https://portal-ww.ecouser.net/api/pim/file/get/XXX","ota":true,"UILogicId":"N8_PLUS","materialNo":"XXX","pid":"XXX","product_category":"DEEBOT","model":"N8_PLUS_WHITE","updateInfo":{"needUpdate":false,"changeLog":""},"status":1,"offmap":true,"deviceNumber":0}]
 function  getVacBot('XXX','ecouser.net','XXX','XXX','[object Object]','eu')
 warn  got value 'eu' for continent (deprecated)
 success  '950type' model identified
 function  connect()
 info  url: 'mqtts://mq-eu.ecouser.net:8883'
 info  username: 'XXX@ecouser'
 info  clientId: 'XXX@ecouser/XXX'
 success  MQTT client connected
 function  subscribe()
 info  atr channel: 'iot/atr/+/XXX/XXX/XXX/j'
 success  successfully subscribed to atr channel
 info  [VacBot] Ready event!
vacbot ready
 success  MQTT client received ready event

If I can help debugging and testing something let me know, I would really like to help. Thank you

mrbungle64 commented 1 year ago

@scognito

vacbot.run("RotateLeft");

Why you use "RotateLeft"?

scognito commented 1 year ago

Sorry I was making some guessing and left the wrong command. Changing to "MoveLeft" I get

 success  got response for 'move' with id '09675245':
 warn  errorCode: 500
 warn  errorDescription: Request Timeout
 info  [EcovacsMQTT] failure code 500 (undefined) sending command 'move'
 error  error sending command: Failure code 500 (undefined)
mrbungle64 commented 1 year ago

@matrix1233 @scognito

Does the N8 (+) has control elements in the Ecovacs Home App to move the device?

scognito commented 1 year ago

No, it doesn't. Please don't tell me it's unsupported 😂

Il Lun 24 Apr 2023, 19:12 Sascha @.***> ha scritto:

@matrix1233 https://github.com/matrix1233 @scognito https://github.com/scognito

Does the N8 (+) has control elements in the Ecovacs Home App to move the device?

— Reply to this email directly, view it on GitHub https://github.com/mrbungle64/ecovacs-deebot.js/issues/270#issuecomment-1520542899, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADRYVA4LIZMKQCYC6CDGWLXC2X7HANCNFSM6AAAAAATIVHYHI . You are receiving this because you were mentioned.Message ID: @.***>

mrbungle64 commented 1 year ago

@scognito

No, it doesn't. Please don't tell me it's unsupported

The problem is that you cannot capture the traffic if you cannot trigger the function in the Ecovacs Home App 😉

scognito commented 1 year ago

Sounds good to me. Wonder how move forward and move back commands were captured since they work

Il Lun 24 Apr 2023, 19:27 Sascha @.***> ha scritto:

@scognito https://github.com/scognito

No, it doesn't. Please don't tell me it's unsupported

The problem is that you cannot capture the traffic if you cannot trigger the function in the Ecovacs Home App 😉

— Reply to this email directly, view it on GitHub https://github.com/mrbungle64/ecovacs-deebot.js/issues/270#issuecomment-1520561436, or unsubscribe https://github.com/notifications/unsubscribe-auth/AADRYVEINOVOVH2VOMDPI53XC2ZYBANCNFSM6AAAAAATIVHYHI . You are receiving this because you were mentioned.Message ID: @.***>

mrbungle64 commented 1 year ago

Sounds good to me. Wonder how move forward and move back commands were captured since they work

I think it's working by accident 😉

I captured the traffic of the move commands for my T8 AIVI and X1 Turbo devices. With the X1 it's working with the payload used in the test branch, but for the T8 AIVI it's still not working ...

That models have control elements in camera mode.

scognito commented 1 year ago

So you are 100% sure there is no way? It's a pity though. My idea was to add a mini IR camera on the N8 and create a mobile app for moving it like a security robot when I'm not at home 😔

mrbungle64 commented 1 year ago

@scognito

So you are 100% sure there is no way?

I didn't say that, did I? 😉 I'll let you know if I finally got it working with the T8 AIVI or if there is otherwise any progress on it.

scognito commented 1 year ago

Ah ok cool! Let me know if and how I can help, thanks

Hobart2967 commented 1 month ago

Same here, using a deebot N8 and LEft & Right are not working.

Hobart2967 commented 1 month ago

Would offer my support in sniffing or testing if you'd like to have some more info.