rospogrigio / localtuya

local handling for Tuya devices
GNU General Public License v3.0
2.8k stars 543 forks source link

(Tesvor X500) Tuya vacuumer is not updating the status, even tho the controls are still working #1035

Open JAKAMI99 opened 1 year ago

JAKAMI99 commented 1 year ago

The problem

(Tesvor X500) Tuya vacuumer "mode" is stuck at "cleaning", even tho the controls are still working

Environment

Steps to reproduce

  1. Connect the X500 over the interface, and configure it
  2. Start or end the cleaning
  3. Mode status doesn't change

Configuration configuration.yaml or config_flow

DP dump

{ "home_assistant": { "installation_type": "Home Assistant OS", "version": "2022.9.4", "dev": false, "hassio": true, "virtualenv": false, "python_version": "3.10.5", "docker": true, "arch": "x86_64", "timezone": "Europe/Berlin", "os_name": "Linux", "os_version": "5.15.67", "supervisor": "2022.08.6", "host_os": "Home Assistant OS 9.0", "docker_version": "20.10.17", "chassis": "vm", "run_as_root": true }, "custom_components": { "nodered": { "version": "1.0.9", "requirements": [] }, "localtuya": { "version": "4.1.0", "requirements": [] }, "auto_backup": { "version": "1.3.0", "requirements": [] }, "zha_toolkit": { "version": "v0.8.13", "requirements": [] }, "hacs": { "version": "1.26.2", "requirements": [ "aiogithubapi>=22.2.4" ] }, "spotcast": { "version": "v3.6.29", "requirements": [ "spotify_token==1.0.0" ] }, "alexa_media": { "version": "4.1.0", "requirements": [ "alexapy==1.26.1", "packaging>=20.3", "wrapt>=1.12.1" ] }, "alarmo": { "version": "v1.9.5", "requirements": [] } }, "integration_manifest": { "domain": "localtuya", "name": "LocalTuya integration", "version": "4.1.0", "documentation": "https://github.com/rospogrigio/localtuya/", "dependencies": [], "codeowners": [ "@rospogrigio", "@postlund" ], "issue_tracker": "https://github.com/rospogrigio/localtuya/issues", "requirements": [], "config_flow": true, "iot_class": "local_push", "is_built_in": false }, "data": { "device_config": { "friendly_name": "Oscar", "host": "10.0.0.34", "local_key": "xxxxxxxxxxxxxxxx", "protocol_version": "3.3", "scan_interval": 15, "entities": [ { "friendly_name": "Oscar", "idle_status_value": "standby,sleep", "powergo_dp": 1, "docked_status_value": "charging,chargecompleted", "returning_status_value": "docking", "battery_dp": 130, "mode_dp": 3, "modes": "smart,wall_follow,spiral,single", "return_mode": "chargego", "fan_speed_dp": 14, "fan_speeds": "low,normal,high", "clean_time_dp": 17, "clean_area_dp": 16, "paused_state": "paused", "stop_status": "standby", "id": 1, "platform": "vacuum" } ], "reset_dpids": "1", "model": "Tesvor X500", "device_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxx", "dps_strings": [ "1 (value: True)", "2 (value: True)", "3 (value: smart)", "4 (value: forward)", "5 (value: 1)", "14 (value: strong)", "15 (value: 02001400021)", "16 (value: 101)", "17 (value: 7)", "18 (value: 0)", "29 (value: dutch)", "101 (value: low_step)", "102 (value: True)", "130 (value: 47)" ], "product_key": "eqyrkx39otooi2xr" }, "device_cloud_info": { "active_time": 1663274427, "biz_type": 18, "category": "sd", "create_time": 1662665828, "icon": "smart/icon/bay1615859977172Uire/81ae10e415b8ec949a271a5e98ce46e5.jpg", "id": "xxxxxxxxxxxxxxxxxxxxx", "ip": "xxxxxxxxxxx", "lat": "xxxxxx", "local_key": "xxxxxxxxxxxxxxx", "lon": "xxxxxx", "model": "X500", "name": "Oscar", "online": true, "owner_id": "xxxxxxxxx", "product_id": "eqyrkx39otooi2xr", "product_name": "Tesvor X500", "status": [ { "code": "power", "value": false }, { "code": "power_go", "value": false }, { "code": "mode", "value": "standby" }, { "code": "direction_control", "value": "forward" }, { "code": "suction", "value": "strong" }, { "code": "clean_record", "value": "02001400021" }, { "code": "clean_area", "value": 101 }, { "code": "clean_time", "value": 8 }, { "code": "fault", "value": 0 }, { "code": "language", "value": "dutch" }, { "code": "voice_switch", "value": true } ], "sub": false, "time_zone": "+02:00", "uid": "xxxxxxxxxxxxxxxxxxxxx", "update_time": 1663274427, "uuid": "xxxxxxxxxxxxxxx" } } }

Provide Home Assistant taceback/logs

No Errors in the logs

Additional information

Also, the logbook is saying "vacuum changed to cleaning" and "vacuum changed to not available"

Device paramater

{
  "result": {
    "category": "sd",
    "functions": [
      {
        "code": "power",
        "lang_config": {
          "false": "OFF",
          "true": "ON"
        },
        "name": "Switch",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "power_go",
        "lang_config": {
          "false": "Pause Cleaning",
          "true": "Start Cleaning"
        },
        "name": "Cleaning Switch",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "mode",
        "lang_config": {
          "chargego": "Recharge",
          "mop": "Mopping Mode",
          "smart": "Smart",
          "spiral": "Spiral Clean",
          "standby": "Standby",
          "wall_follow": "Wall Follow"
        },
        "name": "Working Mode",
        "type": "Enum",
        "values": "{\"range\":[\"standby\",\"smart\",\"wall_follow\",\"mop\",\"spiral\",\"chargego\"]}"
      },
      {
        "code": "direction_control",
        "lang_config": {
          "backward": "Backward",
          "forward": "Forward",
          "stop": "Stop",
          "turn_left": "Turn Left",
          "turn_right": "Turn Right"
        },
        "name": "Direction",
        "type": "Enum",
        "values": "{\"range\":[\"forward\",\"backward\",\"turn_left\",\"turn_right\",\"stop\"]}"
      },
      {
        "code": "suction",
        "lang_config": {
          "normal": "Normal",
          "strong": "Strong"
        },
        "name": "Suction Level",
        "type": "Enum",
        "values": "{\"range\":[\"strong\",\"normal\"]}"
      },
      {
        "code": "language",
        "lang_config": {
          "german": "German"
        },
        "name": "Language",
        "type": "Enum",
        "values": "{\"range\":[\"german\"]}"
      },
      {
        "code": "voice_switch",
        "lang_config": {
          "false": "OFF",
          "true": "ON"
        },
        "name": "Voice Switch",
        "type": "Boolean",
        "values": "{}"
      }
    ],
    "status": [
      {
        "code": "power",
        "lang_config": {
          "false": "OFF",
          "true": "ON"
        },
        "name": "Switch",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "power_go",
        "lang_config": {
          "false": "Pause Cleaning",
          "true": "Start Cleaning"
        },
        "name": "Cleaning Switch",
        "type": "Boolean",
        "values": "{}"
      },
      {
        "code": "mode",
        "lang_config": {
          "chargego": "Recharge",
          "mop": "Mopping Mode",
          "smart": "Smart",
          "spiral": "Spiral Clean",
          "standby": "Standby",
          "wall_follow": "Wall Follow"
        },
        "name": "Working Mode",
        "type": "Enum",
        "values": "{\"range\":[\"standby\",\"smart\",\"wall_follow\",\"mop\",\"spiral\",\"chargego\"]}"
      },
      {
        "code": "direction_control",
        "lang_config": {
          "backward": "Backward",
          "forward": "Forward",
          "stop": "Stop",
          "turn_left": "Turn Left",
          "turn_right": "Turn Right"
        },
        "name": "Direction",
        "type": "Enum",
        "values": "{\"range\":[\"forward\",\"backward\",\"turn_left\",\"turn_right\",\"stop\"]}"
      },
      {
        "code": "suction",
        "lang_config": {
          "normal": "Normal",
          "strong": "Strong"
        },
        "name": "Suction Level",
        "type": "Enum",
        "values": "{\"range\":[\"strong\",\"normal\"]}"
      },
      {
        "code": "clean_record",
        "lang_config": {
          "unit": "Cleaning Record"
        },
        "name": "Cleaning Record",
        "type": "String",
        "values": "{\"maxlen\":255}"
      },
      {
        "code": "clean_area",
        "lang_config": {
          "unit": "㎡"
        },
        "name": "Cleaning Area",
        "type": "Integer",
        "values": "{\"unit\":\"㎡\",\"min\":0,\"max\":9999,\"scale\":1,\"step\":1}"
      },
      {
        "code": "clean_time",
        "lang_config": {
          "unit": "min"
        },
        "name": "Cleaning Time",
        "type": "Integer",
        "values": "{\"unit\":\"分\",\"min\":0,\"max\":9999,\"scale\":0,\"step\":1}"
      },
      {
        "code": "fault",
        "lang_config": {
          "0": "Normal",
          "1": "Side Cleaning Fault",
          "2": "Middle Cleaning Fault",
          "3": "Left Wheel Fault",
          "4": "Right Wheel Fault",
          "5": "Litter Box Fault",
          "6": "Ground Check Fault",
          "7": "Collision",
          "8": "Other Faults"
        },
        "name": "Fault Alarm",
        "type": "Bitmap",
        "values": "{\"label\":[\"0\",\"1\",\"2\",\"3\",\"4\",\"5\",\"6\",\"7\",\"8\"]}"
      },
      {
        "code": "language",
        "lang_config": {
          "german": "German"
        },
        "name": "Language",
        "type": "Enum",
        "values": "{\"range\":[\"german\"]}"
      },
      {
        "code": "voice_switch",
        "lang_config": {
          "false": "OFF",
          "true": "ON"
        },
        "name": "Voice Switch",
        "type": "Boolean",
        "values": "{}"
      }
    ]
  },
  "success": true,
  "t": 1663296027150,
  "tid": "ec02ef14356811edb7bc16d5dde8e980"
JAKAMI99 commented 1 year ago

Update:

In the last hour, I still tried to get it working. I added all entries from "mode" from the Tuya API GUI from the "specifications and properties" which are { "code": "mode", "desc": "{\"range\":[\"standby\",\"smart\",\"wall_follow\",\"mop\",\"spiral\",\"chargego\"]}", Sadly, still no luck. Everything works, even the battery level and the suction-control/fanspeed, except the reading of the current status. Tried to find the part, where the code checks for the status

rospogrigio commented 1 year ago

Can you check whether PR #1022 fixes this issue? Or maybe @sibowler, can you try to provide support? Thank you

sibowler commented 1 year ago

@JAKAMI99 - was this working prior to 4.1.0? If so, can you try the PR #1022 as this should make the changes introduced in 4.1.0 passive unless turned on specifically.

Given your update, have you tried putting a value for the "Scan Interval". This setting will cause localtuya to send a status update request every X seconds, which can fix some status updating issues.

JAKAMI99 commented 1 year ago

Sorry for my late answer:

@rospogrigio Couldn't find the steps to take, to check if this fixes it.

@sibowler I tried settings the "Scan Interval" to several values, still after hours no correct state.

bkbartk commented 1 year ago

I think I have the same issue, My mode always is either cleaning or error(because it runs over my sons toys) but never idle/docking, whatever. this has been so since I configured everything so it hasn't worked. But today I finally had time to match my config with the actual statuses and all is set ok.

Jezza34000 commented 1 year ago

Hi, Same issue for me with a Neatsvor X600 PRO My status is stuck in "Cleaning"

bkbartk commented 1 year ago

@Jezza34000 this is when you select the wrong ID, for the ID, search for code status

 {
        "code": "status",
        "dp_id": 5,
        "type": "Enum",
        "values": "{\"range\":[\"standby\",\"spot_clean\",\"smart_clean\",\"goto_charge\",\"wall_clean\",\"sleep\",\"charging\",\"charge_done\",\"paused\",\"cleaning\",\"mop_clean\"]}"
      },

in my case 5, but I have a different vacuum https://github.com/rospogrigio/localtuya/issues/1355 the status cannot be changed afterwards, so you need to remove the device and add it again. or go to the hidden /config/.storage/something file and edit it there.

Jezza34000 commented 1 year ago

@bkbartk Thank you for your help :+1: now it works perfectly !

kaybee98 commented 7 months ago

Hi @JAKAMI99 , I came across your thread as I was looking for a way to revitalize my robot vacuum, which is a rebrand of the TESVOR X500 (specifically IKHOS Netbot S15) , and for which the Weback service has almost completely stopped working (syncs fine, shows state and battery, but none of the commands work). So may I ask, how did you upgrade your model to Tuya? Or was it already like that when you purchased it?

Thank you very much in advance! I was going to experiment with the Home Assistant plugins, but I suppose if I could get the bot to Tuya I could prevent myself some headaches and use it with the proper apps :P

Dranoeleo commented 4 months ago

Hi @JAKAMI99 , I came across your thread as I was looking for a way to revitalize my robot vacuum, which is a rebrand of the TESVOR X500 (specifically IKHOS Netbot S15) , and for which the Weback service has almost completely stopped working (syncs fine, shows state and battery, but none of the commands work). So may I ask, how did you upgrade your model to Tuya? Or was it already like that when you purchased it?

Thank you very much in advance! I was going to experiment with the Home Assistant plugins, but I suppose if I could get the bot to Tuya I could prevent myself some headaches and use it with the proper apps :P

Hi, i havent found something for your device but it looks like they provide a manual update for older devices. Maybe you can ask the Support quoting for this page https://www.tesvor.com/de/blog/post/wie-upgrade-ich-meine-tesvor-s6-s6-turbo-app-von-weback-auf-die-neue-tesvor-app for providing you the update version for your model. Unfortunately the page is not even avialable in english, so you need to use a translator