Weback cloud integration: testers and help required

thanks a lot

Hi,

My model - Robojet Duel3

First of all - Thank you for reverse engineering of Weback! My robot stopped to work automatically month ago. I suppose it could be related with SSL certificate expiration. Now I am working on unverified connection (still using them, but not verifying)

I succesfully integrated vacuum cleaner with HA. I am using Xiaomi card .
I am sending custom commands to make it work

buttons:
  start:
    service: vacuum.send_command
    service_data:
      entity_id: vacuum.rj_duel3_xx_xx_xx_xx_xx_xx
      command: any_text_here
      params:
        working_status: AutoClean

I also modified your script to get cleaning time

return {  "raw_state": self.device.current_mode
				, "clean_time": self.device.shadow.get("clean_time")};

Right now some things concerns me

  1. Can my robot be controlled only using Weback/AWS connection? So it always goes online through cloud?
  2. Is my robot capable of remembering room map? It seems that my model is really limited, and Weback application is limited also.
  3. Weback application can provide graphical track of cleaning, but I completely cannot make reverse engineering. For example - this track:

    is represented with robot_x ,robot_y and other settings in this way:
{	 'connected': 'true'
	,'upgrade_logic': '1.0'
	,'config_app': 'WeBack'
	,'firmware_version': '3.6.8'
	,'yugong_software_version': '3.6.8'
	,'working_status': 'BackCharging'
	,'fan_status': 'Pause'
	,'water_level': 'None'
	,'voice_switch': 'on'
	,'error_info': 'NoError'
	,'battery_level': 30
	,'vendor_firmware_version': '5512'
	,'chassis_hardware_version': '00'
	,'offset_hours': 0
	,'offset_minutes': 0
	,'Voicebox_Source': 'null'
	,'point_num': 819
	,'clean_time': 3203
	,'undisturb_mode': 'unsupport'
	,'uv_lamp': 'unsupport'
	,'robot_x': 'fH19fX12dnV9fXx8fXx8enh4cXB4eG5sam5uampub2tsbm93d3h1dXd5eXZ3eXp3doB/fXd3fHx9eXd5fn5zcn5/bm1vbmxub21ucHBubm99fHJyfX1ycG9vcXFvb3Bxbm1ub3FyfHt0dHR6eHZ0dHR2eXl6ent7gYB/f4B/fnx7enl4eXh4eHd2dnZ1dnV0cnFxc3N0dXR0c3N0dXR0cG1rampscHNzdXV2dXZ2dXFwbGtsbW5wcXN0dHx8fHx9f359fHx+gIGBfXt5eXh4eXh6enV2doCBgnh5eoaHfX6AioyPgoOEkJCHh4+Pi4aGh4eJj46LiouMjIiIjIyKiYiMi4qIhYqLioSEiIiDg4eHh4aHiYqKiIeHiYqMiYmIh4eHhoaHiYeGhoWIh4aDhIWGiImIh4iJh4eGhoWFhIODgoKAgoSFhYeGh4iLioyNjo+PjY2MioeGhYWGhoWEhIODgoKBgYCChISGh4iIiomKjIyNjo2LioiFhIN+f3+ChIWFhoaHh4aGhYOCgYGAfn+Cg4OFhoeHiImIiYuLjYyLiYeEgX97ent6enl4eHp7enFwbnRzamlubmhobm1paWppaWhobG9xc3NycnN1eHyCg4OCgoODgoGAgIB/f35/f35+f39+fX6Bgn98fH9+fXt9fn16eXt5en19f4GBg4OFhoiIgn59e3p2dXZ0c3Bxc3N2d3l5e3t5eHZ3eHp5d3h4eXh3bWtqaWlsbGxramtrc3Z3eHhub3V2dXRxcXJ0dXNxcW5tbGhpanl5bWloamttbnFxcnh5enp5eXt7eXl7fH59fXx7eXl3dXZ1dXN0dXZ3eXl4eXt8f4CChYiLi4qJiYiGh4SDgoF9fn5/f4CCg4OEgoGCdnNxcXBwbGtlZmdoaWtsbG5wcHFycnFyc3NwbGloaGpqbG5wcXF1eHl5enp7enl4eXt8fX59e3p5eHZ1dXN0dHV2d3l5eHl7fn+BgoaJioyLiYeHhoWEg4KBfX5/f4CAgoODhIOCgoF7d3RycXBwbmZlZWZnaGtsbG1vcHBycnFycnBvbGhnaWpscHBxdXh5eXh4eXp7enl4eHt7'
	,'robot_y': 'fHx8fH19fn5+f3+AgIB+fX6AgIGBgoKDg4OEhIWFhoaHhIODhISEhYaGh4eIiImJioqKi4uMjI2NjY6Pj5CQkZGSkpOTlJSWlpaXl5iYlJOTlJSVlZaWl5eWl5iYmZmYmJeXmJiXl5iYmZmZmZqam5qZlpSRjouKiomJiIiIiYmKiYmHh4aFhomLjIuKiIeFhYSDgX9/fn5/gH9+fn1+goSFhoeHg4OEhYeJiouOj5GRk5SVl5iYl5eYmpaUlZSSkpGOjYuKiomIiImIhISCgH58e3t7enp5eXl5eHh3d3d2dnV1dXV0dHNzcnJxcHBvb25wcG9vbm1tbGxra2ppamlpaGhnZ2dmZWVkZGNjYmJhYmRmZ2hpa2tramltcHJzc3F1dXV3dXR1d3l5eXp6e3t6eXh2eHl3dnNxbGtqaWloZ2ZlZWRkZmdnaGhub3NzdHd4eHl4d3V0cnFwb21ta2tqamlpaGdmZmdpaWttb3Fzc3R3eHh5eXp7fX5+f35+fHp3dXRzcG9ubWxsa2pqaGhnZmlpamxtb3BxdHR1eXl6ent8f3+Bg4WFhoaHhoWFhoaHh4eJiYqKi4uMjI2Njo6OjYyKiIeGhIOCgYGAfnx6eHd1dHNycG9vcG9wcXFxcG9wcG9vbm1tbm1ta2tsa2tqamtramtramlobGxtcXR2dnp7fX+AgYGDhYeJiYyOjpGRkJCPj5GSkpOVlpqanJ2enp6fn6Cgn6CgoaChoaGfn6Cfn56enZ2eoKGhoqKhoJ6dnJybnJycm5uampycoKGhoKCiop+enp2dmpqYlpOSkpGQj4+QkJGRkI+PjYyKiYmIiIeFg4KCgYGAfXx8e3l4dndzcmxsamlra2xtb3Fxc3Z3eXl7gYKDhIWHiYqNj5CQj4+OjYuLjo6QkZOTlZeZm5ydnqChoaCgoaOhn5+bm5qamZaVk5OSkpGQkJGQkpGRjY2LiomJiIiHhoSDgoKBgH59fXx7d3Zyb21sbGppa2tsbm5xcXJ2dnh5enx+gIKDg4SGiIyMjY+Qj46OjYyLjY6QkpOVl5iZmpycoKGgoKKioJ+fnp2bm5qamZaVk5OS'
}

Has anyone an idea how can I translate it to some graphical representation and show it in HA dashboard?
4. Refreshment of attributes in HA dashboard is not so frequent. One per minute, or two. Is there any way we can speed it up? Or how to investigate if it’s not actually robot itself delaying of update in AWS cloud?

@opravdin - I’ll be happy to participate in testing. Just let me know what exactly and how can I deliver for you.

1 Like

Only here to report another device compatible.
Working also with IKOHS Netbot S15 (version 1) vacuum cleaner :slight_smile: Thanks for creating this integration. Great job!
For now I tried only to start and stop normal cleaning (without water).
I will make other attempts in the coming days.
It would be very appreciated to have a graphical track of cleaning as WeBack do.
Pivek, have you made any progress in your investigation?

1 Like

I had continued my reverse engineering process and it looks like I found a way to recreate map from robot_x and robot_y values. Basically they are same sized bytes array and it looks like each byte represents x and y coordinate of point on map (the map itself is like 256*256 grid). Robot starts near point (127, 127) – in the middle of the map. Every time robot moves in any direction for specific distance (not sure about scale), the software adds new point to byte array in case point is not exist in there. So stay tuned for update with working map in HA UI :upside_down_face:

1 Like



This is a results I had achieved with map you provided :slight_smile:

1 Like

Ha, Man - you are awesome :slight_smile:
I await your update!

Hi ,
I have a ABIR X6 vacuum cleaner that works with weback.
its a alliexpress vacuum cleaner.
i having problems Device not supported by this integration you can see in the log but is dicovered.
any idea how to hack this?

2021-03-20 12:51:44 INFO (MainThread) [homeassistant.setup] Setting up weback
2021-03-20 12:51:51 INFO (SyncWorker_2) [custom_components.weback] Discovered Weback device xs-x6-84-cc-a8-95-22-4f with nickname Emilia
2021-03-20 12:51:53 INFO (SyncWorker_2) [custom_components.weback] Device not supported by this integration
2021-03-20 12:51:55 INFO (MainThread) [homeassistant.setup] Setup of domain weback took 11.0 seconds

i execute python3 test.py

from weback_unofficial.client import WebackApi

client = WebackApi(“mylogin”, “mypassword”)
devices = client.device_list()
for device in devices:
print(f"Checking device {device[‘Thing_Name’]}“)
description = client.get_device_description(device[“Thing_Name”])
print(f"Device type is {description.get(‘thingTypeName’)}”)

as result i get

Checking device xs-x6-cc-a8-95-22-4f
DEVICE type is _CLEAN_ROBOT_VSLAN_YW

thank you

@jcmartinezsoto You can manually edit line in __init__.py (located in custom_components/weback).

# Change this line 
SUPPORTED_DEVICES = ["_CLEAN_ROBOT"]
# Like this
SUPPORTED_DEVICES = ["_CLEAN_ROBOT", "_CLEAN_ROBOT_VSLAN_YW"]

Restart home assistant and check your devices list. Test the integration and make a report here (or on github). If your vacuum can be controlled by this integration, I will add this device type in next update.

Thanks a lot Pravdin Oleg.

I already tried some command and it works.

you can put ABIR X6 on list

Dear @jcmartinezsoto ,

Can you help me integrating my vacuum ? I have the same like the one you use (ABIR X6).

I followed all the steps (added the repository in HACS, added the configuration in configuration.yaml , added
SUPPORTED_DEVICES = ["_CLEAN_ROBOT", “_CLEAN_ROBOT_VSLAN_YW”] in init.py.)

but still no luck.

Can you guide me how you could make it?

Thank you. .Really appreciate it.

Hi aziz, did you put your login acount in your configuracion.yalm what is log file saying?

@jcmartinezsoto I really appreciate your responding man…

Yes, I added my login account in my configuration.yaml like this :
Capturew

the log file said:

Logger: homeassistant.bootstrap
Source: bootstrap.py:393
First occurred: 1:06:23 AM (1 occurrences)
Last logged: 1:06:23 AM

Waiting on integrations to complete setup: weback

anything I did wrong ?

hi aziz,

your log should be like this:
2021-04-05 00:52:08 INFO (MainThread) [homeassistant.setup] Setting up weback
2021-04-05 00:52:14 INFO (SyncWorker_0) [custom_components.weback] Discovered Weback device xs-x6-84-cc-a8-95-22-4f with nickname Emilia
2021-04-05 00:52:15 INFO (MainThread) [homeassistant.setup] Setup of domain weback took 7.0 seconds
2021-04-05 00:52:15 INFO (SyncWorker_2) [homeassistant.loader] Loaded vacuum from homeassistant.components.vacuum
2021-04-05 00:52:18 INFO (MainThread) [homeassistant.components.vacuum] Setting up vacuum.weback

maybe your installation something missing
install SSH & Web Terminal addon en do
pip3 install weback-unofficial
pip3 install proto3
install dependencies off weback-unofficial

good luck

Alright!! 2nd try and it worked on a Netbot S15!

It should be noted that the bot has to be setup on the weback App first!

Just to be clear…

Great work!

i’m having this error…
the credentials are right… i also create another account with cell phone number just in case, but the problem presist…

‘’’
Logger: homeassistant.setup
Source: custom_components/weback/init.py:47
Integration: weback
First occurred: 10:04:49 PM (1 occurrences)
Last logged: 10:04:49 PM

Error during setup of component weback
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/setup.py”, line 248, in _async_setup_component
result = await task
File “/usr/local/lib/python3.8/concurrent/futures/thread.py”, line 57, in run
result = self.fn(*self.args, **self.kwargs)
File “/config/custom_components/weback/init.py”, line 47, in setup
devices = weback_api.device_list()
File “/usr/local/lib/python3.8/site-packages/weback_unofficial/client.py”, line 75, in device_list
session = self.get_session()
File “/usr/local/lib/python3.8/site-packages/weback_unofficial/client.py”, line 137, in get_session
raise Exception(f"Could not authenticate. {weback_data[‘Fail_Reason’]}")
Exception: Could not authenticate. account or password is incorrect

‘’’

any idea?

I am postponing upgrading to the latest build of Home Assistant for this app is not compatible, or at least I see this message in the logs:

2021-06-03 13:56:49 ERROR (MainThread) [homeassistant.loader] No 'version' key in the manifest file for custom integration 'weback'. As of Home Assistant 2021.6, this integration will no longer be loaded. Please report this to the maintainer of 'weback'

What can we do?

You have to manually edit file /config/custom_components/weback/manifest.json and insert a new line with the version. Example:

{
  "domain": "weback",
  "name": "Weback",
  "version": "1.0.3",
  "documentation": "https://www.home-assistant.io/integrations/weback",
  "requirements": [
    "weback-unofficial==0.3.5"
  ],
  "codeowners": [
    "@opravdin"
  ]
}
1 Like

hello

I’ve read the whole forum but tried a few things myself but it didn’t work can someone help me?
in my log i see this

2021-06-22 22:31:49 INFO (MainThread) [homeassistant.setup] Setting up weback
2021-06-22 22:31:56 INFO (SyncWorker_2) [custom_components.weback] Discovered Weback device neatsvor-x600-00-e9-3a-06-ae-41 with nickname Robot
2021-06-22 22:31:56 INFO (SyncWorker_2) [custom_components.weback] Device not supported by this integration
2021-06-22 22:31:56 INFO (MainThread) [homeassistant.setup] Setup of domain weback took 6.9 seconds
2021-06-22 22:31:57 INFO (MainThread) [homeassistant.components.vacuum] Setting up vacuum.weback

then i tried this

pip install weback-unofficial

from weback_unofficial.client import WebackApi

client = WebackApi("login", "password")
devices = client.device_list()
for device in devices:
    print(f"Checking device {device['Thing_Name']}")
    description = client.get_device_description(device["Thing_Name"])
    print(f"Device type is {description.get('thingTypeName')}")
from weback_unofficial.client import WebackApi

client = WebackApi("login", "password")
devices = client.device_list()
for device in devices:
    print(f"Checking device {device['Thing_Name']}")
    description = client.get_device_description(device["Thing_Name"])
    print(f"Device type is {description.get('thingTypeName')}")
from weback_unofficial.client import WebackApi

client = WebackApi("login", "password")
devices = client.device_list()
for device in devices:
    print(f"Checking device {device['Thing_Name']}")
    description = client.get_device_description(device["Thing_Name"])
    print(f"Device type is {description.get('thingTypeName')}")
from weback_unofficial.client import WebackApi

client = WebackApi("login", "password")
devices = client.device_list()
for device in devices:
    print(f"Checking device {device['Thing_Name']}")
    description = client.get_device_description(device["Thing_Name"])
    print(f"Device type is {description.get('thingTypeName')}")
from weback_unofficial.client import WebackApi

client = WebackApi("login", "password")
devices = client.device_list()
for device in devices:
    print(f"Checking device {device['Thing_Name']}")
    description = client.get_device_description(device["Thing_Name"])
    print(f"Device type is {description.get('thingTypeName')}")
from weback_unofficial.client import WebackApi

client = WebackApi("login", "password")
devices = client.device_list()
for device in devices:
    print(f"Checking device {device['Thing_Name']}")
    description = client.get_device_description(device["Thing_Name"])
    print(f"Device type is {description.get('thingTypeName')}")
from weback_unofficial.client import WebackApi

client = WebackApi("login", "password")
devices = client.device_list()
for device in devices:
    print(f"Checking device {device['Thing_Name']}")
    description = client.get_device_description(device["Thing_Name"])
    print(f"Device type is {description.get('thingTypeName')}")
from weback_unofficial.client import WebackApi

client = WebackApi("login", "password")
devices = client.device_list()
for device in devices:
    print(f"Checking device {device['Thing_Name']}")
    description = client.get_device_description(device["Thing_Name"])
    print(f"Device type is {description.get('thingTypeName')}")

command not found
number expected
number expected
invalid mode specification

Ciao sono Christian da Italia, ho un neatsvor x600 e non riesco ad integrarlo, seguo la tua guida alla lettera ma ho un errore!

Component error: weback - Integration ‘weback’ not found

Mi aiuti?? Grazie mille

I did as you wrote, but I still get: Component error: weback - Integration ‘weback’ not found.