al-one / hass-xiaomi-miot

Automatic integrate all Xiaomi devices to HomeAssistant via miot-spec, support Wi-Fi, BLE, ZigBee devices. 小米米家智能家居设备接入Hass集成
https://miot-spec.com
Apache License 2.0
4.56k stars 644 forks source link

Can't control Roborock S7 #966

Open felalex opened 1 year ago

felalex commented 1 year ago

Device model / 设备型号

roborock.vacuum.a15

Component version / 插件版本

0.7.4

HA core version / HA版本

2022.12.8

Integrated mode / 集成方式

Local (本地模式)

The problem / 问题详情

Hi,

I'm able to start the vacuum, but afterwards it became unavailable.

I see errors in the log:

Logger: custom_components.xiaomi_miot.vacuum Source: custom_components/xiaomi_miot/init.py:1360

Xiaomi Miot(roborock.vacuum.a15): Got MiioException while fetching the state: Unable to discover the device 192.168.xxx.yyy mapping: {'vacuum.status': {'siid': 2, 'piid': 1}, 'vacuum.fault': {'siid': 2, 'piid': 2}, 'vacuum.mode': {'siid': 2, 'piid': 4}, 'vacuum.water_level': {'siid': 2, 'piid': 102}, 'vacuum.mop_mode': {'siid': 2, 'piid': 103}, 'filter.filter_life_level': {'siid': 11, 'piid': 1}, 'brush_life_level-10-2': {'siid': 10, 'piid': 2}, 'brush_cleaner.brush_life_level': {'siid': 9, 'piid': 2}, 'battery_level': {'siid': 3, 'piid': 1}}, max_properties: 10/9

Also warning:

Logger: custom_components.xiaomi_miot.vacuum Source: custom_components/xiaomi_miot/init.py:1898

Xiaomi Miot(roborock.vacuum.a15): Call miot action {'did': 'action-2-2', 'siid': 2, 'aiid': 2, 'in': []} failed: Unable to discover the device 192.168.xx.yyy Xiaomi Miot(roborock.vacuum.a15): Call miot action {'did': 'action-3-1', 'siid': 3, 'aiid': 1, 'in': []} failed: Unable to discover the device 192.168.xx.yyy

Entity attributes / 实体属性

fan_speed_list:
  - Silent
  - Basic
  - Strong
  - Full Speed
  - Mop Only
  - Custom
friendly_name: Vacuum cleaner Robot Cleaner
supported_features: 13052

Home Assistant Logs / 系统日志

Logger: custom_components.xiaomi_miot.vacuum Source: custom_components/xiaomi_miot/init.py:1360

Xiaomi Miot(roborock.vacuum.a15): Got MiioException while fetching the state: Unable to discover the device 192.168.xxx.yyy mapping: {'vacuum.status': {'siid': 2, 'piid': 1}, 'vacuum.fault': {'siid': 2, 'piid': 2}, 'vacuum.mode': {'siid': 2, 'piid': 4}, 'vacuum.water_level': {'siid': 2, 'piid': 102}, 'vacuum.mop_mode': {'siid': 2, 'piid': 103}, 'filter.filter_life_level': {'siid': 11, 'piid': 1}, 'brush_life_level-10-2': {'siid': 10, 'piid': 2}, 'brush_cleaner.brush_life_level': {'siid': 9, 'piid': 2}, 'battery_level': {'siid': 3, 'piid': 1}}, max_properties: 10/9

Also warning:

Logger: custom_components.xiaomi_miot.vacuum Source: custom_components/xiaomi_miot/init.py:1898

Xiaomi Miot(roborock.vacuum.a15): Call miot action {'did': 'action-2-2', 'siid': 2, 'aiid': 2, 'in': []} failed: Unable to discover the device 192.168.xx.yyy Xiaomi Miot(roborock.vacuum.a15): Call miot action {'did': 'action-3-1', 'siid': 3, 'aiid': 1, 'in': []} failed: Unable to discover the device 192.168.xx.yyy

al-one commented 1 year ago
felalex commented 1 year ago

1) Device IP is as HA tries to connect to. 2) Same subnet 3) Did that, no change 4) Vacuum is denied from internet connection on router level for security purposes, only local control.

The device becomes unavailable and then becomes available again after some time...

Here is an extract from the logbook:

Vacuum cleaner Robot Cleaner water_level became unavailable 7:56:34 AM - 3 minutes ago Vacuum cleaner Robot Cleaner Status became unavailable 7:56:34 AM - 3 minutes ago Vacuum cleaner Robot Cleaner became unavailable 7:56:14 AM - 4 minutes ago Vacuum cleaner Robot Cleaner changed to Cleaning 7:55:04 AM - 5 minutes ago Vacuum cleaner Robot Cleaner Status changed to sweeping 7:55:04 AM - 5 minutes ago Vacuum cleaner Robot Cleaner changed to Docked 7:54:34 AM - 5 minutes ago Vacuum cleaner Robot Cleaner mop_mode changed to Custom 7:54:34 AM - 5 minutes ago Vacuum cleaner Robot Cleaner water_level changed to Level2 7:54:34 AM - 5 minutes ago Vacuum cleaner Robot Cleaner Status changed to charging 7:54:34 AM - 5 minutes ago Vacuum cleaner Robot Cleaner mop_mode became unavailable 7:54:04 AM - 6 minutes ago Vacuum cleaner Robot Cleaner water_level became unavailable 7:54:04 AM - 6 minutes ago Vacuum cleaner Robot Cleaner Status became unavailable 7:54:04 AM - 6 minutes ago Vacuum cleaner Robot Cleaner became unavailable 7:53:44 AM - 6 minutes ago Vacuum cleaner Robot Cleaner changed to Docked 7:52:04 AM - 8 minutes ago Vacuum cleaner Robot Cleaner mop_mode changed to Custom 7:52:04 AM - 8 minutes ago Vacuum cleaner Robot Cleaner water_level changed to Level2 7:52:04 AM - 8 minutes ago Vacuum cleaner Robot Cleaner Status changed to charging 7:52:04 AM - 8 minutes ago Vacuum cleaner Robot Cleaner mop_mode became unavailable 7:51:34 AM - 8 minutes ago

al-one commented 1 year ago

Check it use miiocli.

felalex commented 1 year ago

Check it use miiocli.

Check what? If I can constantly control it?

felalex commented 1 year ago

I've tried to call several calls via miiocli, works like a charm:

$ miiocli vacuum --ip 192.168.xx.yyy --token ################### info Model: roborock.vacuum.a15 Hardware version: Linux Firmware version: 4.3.5_1578 Network: {'localIp': '192.168.xx.yyy', 'mask': '255.255.255.0', 'gw': '192.168.xx.1'} AP: {'ssid': #############, 'bssid': '##:##:##:##:##:##', 'rssi': '0', 'freq': 0}

Consumable status:

Running command consumable_status <ConsumableStatus main: 9 days, 21:43:59, side: 3 days, 13:13:56, filter: 3 days, 13:13:56, sensor dirty: 1 day, 22:33:15>

Running command fan_speed 102

So the it's probably not a connectivity issue. Maybe frequency of requests are too much for the vacuum, or any other issue.

al-one commented 1 year ago

You can change interval_seconds in integration options or yaml:

# configuration.yaml
xiaomi_miot:
  device_customizes:
    roborock.vacuum.a15:
      interval_seconds: 90
felalex commented 1 year ago

You can change interval_seconds in integration options or yaml:

# configuration.yaml
xiaomi_miot:
  device_customizes:
    roborock.vacuum.a15:
      interval_seconds: 90

Tried it, the error still appears in the log… Xiaomi Miot(roborock.vacuum.a15): Got MiioException while fetching the state: Unable to discover the device 192.168.xx.yyy, mapping: {'vacuum.status': {'siid': 2, 'piid': 1}, 'vacuum.fault': {'siid': 2, 'piid': 2}, 'vacuum.mode': {'siid': 2, 'piid': 4}, 'vacuum.water_level': {'siid': 2, 'piid': 102}, 'vacuum.mop_mode': {'siid': 2, 'piid': 103}, 'filter.filter_life_level': {'siid': 11, 'piid': 1}, 'brush_life_level-10-2': {'siid': 10, 'piid': 2}, 'brush_cleaner.brush_life_level': {'siid': 9, 'piid': 2}, 'battery_level': {'siid': 3, 'piid': 1}}, max_properties: 10/9

felalex commented 1 year ago

@al-one any news? This behavior is still happening. Device becomes offline and online intermittently.

al-one commented 1 year ago
andrewigali commented 1 year ago

Same problem with Xiaomi Vacuum Cleaner Gen1. Sometime online sometime offline, but every time online on my router and i can use with Android Xiaomi Home app. The problem only on Home Assistant 2023.7.2 on Xiaomi Miot. Can you repair?

felalex commented 1 year ago

I moved to Valetudo, on the robot. Works like a charm.

andrewigali commented 1 year ago

I moved to Valetudo, on the robot. Works like a charm.

Can you help me? How to change original FW to Valetudo FW on Xiaomi Vacuum Cleaner Gen1? And if dislike can i restore? I use Windows 10/11, so no Linux.

And how to integrated to Home Assistant? Can you share description/ video to the method?

felalex commented 1 year ago

There’s a good guide on their site. Please verify that your robot is supported, as I understand it’s Xiaomi v1, but please verify. Here’s the guide for xiaomi v1. https://valetudo.cloud/pages/general/supported-robots.html#xiaomi_v1