homebridge-roborock-vacuum2 1.4.21 → 1.4.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.4.23
4
+
5
+ - Throttled repeated transient command warnings so recurring Roborock polling timeouts are logged periodically instead of every refresh cycle.
6
+
7
+ ## 1.4.22
8
+
9
+ - Added dedicated HomeKit momentary switches for Pause Cleaning and Return to Dock.
10
+ - Changed the main HomeKit off action to stop cleaning only instead of also sending a dock command.
11
+ - Clarified cloud-only transport logs so expected Roborock cloud calls are not described as fallback from local control.
12
+
3
13
  ## 1.4.21
4
14
 
5
15
  - Added plain-English transport transition logs for local TCP connections, cloud fallback, local recovery, remote/shared devices, offline state, missing local credentials, and missing local IP discovery.
package/README.md CHANGED
@@ -14,7 +14,7 @@ This plugin is inspired by and adapted from the [ioBroker.roborock](https://gith
14
14
 
15
15
  - **Automatic Device Detection**: No need to manually find or enter your vacuum's device ID.
16
16
  - **Local Transport Diagnostics**: The plugin UI shows resolved model data, local key availability, discovered local IP, TCP connection state, whether the plugin is using local or cloud transport, and a live local TCP probe.
17
- - **Start/Stop Cleaning**: Begin or end cleaning sessions.
17
+ - **HomeKit Cleaning Controls**: Start or stop cleaning from the main HomeKit accessory, pause cleaning with a dedicated momentary switch, and send the vacuum back to the dock with a separate Return to Dock switch.
18
18
 
19
19
  ## The supported robots are:
20
20
 
@@ -81,6 +81,20 @@ Use the Homebridge plugin settings UI to sign in, save account settings, and ins
81
81
 
82
82
  The plugin needs either a valid `encryptedToken` or a `password` to start. A saved token is preferred because it avoids repeated password login attempts.
83
83
 
84
+ ## HomeKit Controls
85
+
86
+ HomeKit does not currently expose a dedicated vacuum service through Homebridge, so the vacuum appears as a fan-style accessory plus helper switches.
87
+
88
+ | HomeKit control | Behavior |
89
+ | ------------------ | --------------------------------------------------------------------------- |
90
+ | Main accessory on | Starts cleaning or resumes the current cleaning command. |
91
+ | Main accessory off | Stops cleaning without automatically returning to the dock. |
92
+ | Pause Cleaning | Sends Roborock's pause command, then resets the switch off. |
93
+ | Return to Dock | Sends Roborock's dock command, then resets the switch off. |
94
+ | Scene switches | Runs Roborock scenes discovered for the vacuum, then resets the switch off. |
95
+
96
+ Docking is intentionally separate from turning the main accessory off. This keeps "off" from unexpectedly ending a pause-only workflow and lets you choose whether the vacuum should remain stopped or return to the charger.
97
+
84
98
  ## Diagnostics
85
99
 
86
100
  The plugin UI includes a Diagnostics section that reads cached HomeData and transport state from the Homebridge storage directory. It shows each discovered device's name, DUID, serial number, resolved model, local IP, local TCP state, cloud fallback state, and the last command transport. Use this section to confirm whether the plugin is using local TCP, ready for local control, falling back to Roborock cloud transport, or seeing the vacuum as offline.
@@ -11,6 +11,7 @@ class RoborockVacuumAccessory {
11
11
  this.accessory = accessory;
12
12
  this.services = [];
13
13
  this.sceneServices = new Map();
14
+ this.controlSwitches = new Map();
14
15
  this.currentScenes = [];
15
16
  this.lastKnownBatteryLevel = null;
16
17
  const self = this;
@@ -27,6 +28,7 @@ class RoborockVacuumAccessory {
27
28
  .getCharacteristic(this.platform.Characteristic.Active)
28
29
  .onSet(this.setActive.bind(this))
29
30
  .onGet(this.getActive.bind(this));
31
+ this.setupControlSwitches();
30
32
  this.services["Battery"] =
31
33
  this.accessory.getService(this.platform.Service.Battery) ||
32
34
  this.accessory.addService(this.platform.Service.Battery);
@@ -35,6 +37,70 @@ class RoborockVacuumAccessory {
35
37
  this.lastKnownBatteryLevel = this.getNormalizedBatteryLevel(this.platform.roborockAPI.getVacuumDeviceStatus(accessory.context, "battery"), this.platform.roborockAPI.getVacuumDeviceStatus(accessory.context, "charge_status"), this.platform.roborockAPI.getVacuumDeviceStatus(accessory.context, "state"));
36
38
  this.updateBatteryCharacteristics(this.lastKnownBatteryLevel, this.platform.roborockAPI.getVacuumDeviceStatus(accessory.context, "charge_status"), this.platform.roborockAPI.getVacuumDeviceStatus(accessory.context, "state"));
37
39
  }
40
+ /**
41
+ * Add explicit action switches for commands that should not be bundled into
42
+ * the primary HomeKit on/off control.
43
+ */
44
+ setupControlSwitches() {
45
+ this.setupMomentaryControlSwitch("pause-cleaning", "Pause Cleaning", this.setPauseCleaning.bind(this));
46
+ this.setupMomentaryControlSwitch("return-to-dock", "Return to Dock", this.setReturnToDock.bind(this));
47
+ }
48
+ setupMomentaryControlSwitch(key, displayName, onSet) {
49
+ const switchService = this.accessory.getServiceById(this.platform.Service.Switch, key) ||
50
+ this.accessory.addService(this.platform.Service.Switch, displayName, key);
51
+ switchService.setCharacteristic(this.platform.Characteristic.Name, displayName);
52
+ switchService.addOptionalCharacteristic(this.platform.Characteristic.ConfiguredName);
53
+ switchService.setCharacteristic(this.platform.Characteristic.ConfiguredName, displayName);
54
+ switchService
55
+ .getCharacteristic(this.platform.Characteristic.On)
56
+ .onSet(onSet)
57
+ .onGet(this.getMomentaryControlSwitch.bind(this));
58
+ this.controlSwitches.set(key, switchService);
59
+ }
60
+ resetMomentaryControlSwitch(key) {
61
+ setTimeout(() => {
62
+ const service = this.controlSwitches.get(key);
63
+ if (service) {
64
+ service.updateCharacteristic(this.platform.Characteristic.On, false);
65
+ }
66
+ }, 1000);
67
+ }
68
+ getVacuumName() {
69
+ return (this.platform.roborockAPI.getVacuumDeviceInfo(this.accessory.context, "name") || "Roborock vacuum");
70
+ }
71
+ async getMomentaryControlSwitch() {
72
+ return false;
73
+ }
74
+ async setPauseCleaning(value) {
75
+ if (!value) {
76
+ return;
77
+ }
78
+ try {
79
+ this.platform.log.info(`Pausing ${this.getVacuumName()}.`);
80
+ await this.platform.roborockAPI.app_pause(this.accessory.context);
81
+ }
82
+ catch (error) {
83
+ this.platform.log.error(`Error pausing ${this.getVacuumName()}: ${error}`);
84
+ }
85
+ finally {
86
+ this.resetMomentaryControlSwitch("pause-cleaning");
87
+ }
88
+ }
89
+ async setReturnToDock(value) {
90
+ if (!value) {
91
+ return;
92
+ }
93
+ try {
94
+ this.platform.log.info(`Sending ${this.getVacuumName()} back to dock.`);
95
+ await this.platform.roborockAPI.app_charge(this.accessory.context);
96
+ }
97
+ catch (error) {
98
+ this.platform.log.error(`Error sending ${this.getVacuumName()} back to dock: ${error}`);
99
+ }
100
+ finally {
101
+ this.resetMomentaryControlSwitch("return-to-dock");
102
+ }
103
+ }
38
104
  updateDeviceState() {
39
105
  try {
40
106
  this.services["Fan"].updateCharacteristic(this.platform.Characteristic.Active, this.platform.roborockAPI.isCleaning(this.platform.roborockAPI.getVacuumDeviceStatus(this.accessory.context, "state"))
@@ -209,8 +275,8 @@ class RoborockVacuumAccessory {
209
275
  await this.platform.roborockAPI.app_start(this.accessory.context);
210
276
  }
211
277
  else {
278
+ this.platform.log.info(`Stopping ${this.getVacuumName()}. Use the Return to Dock switch to dock intentionally.`);
212
279
  await this.platform.roborockAPI.app_stop(this.accessory.context);
213
- await this.platform.roborockAPI.app_charge(this.accessory.context);
214
280
  }
215
281
  this.services["Fan"].updateCharacteristic(this.platform.Characteristic.Active, value);
216
282
  }
@@ -1 +1 @@
1
- {"version":3,"file":"vacuum_accessory.js","sourceRoot":"","sources":["../src/vacuum_accessory.ts"],"names":[],"mappings":";;AAeA;;;GAGG;AACH,MAAqB,uBAAuB;IAM1C,YACmB,QAA0B,EAC1B,SAAoC;;QADpC,aAAQ,GAAR,QAAQ,CAAkB;QAC1B,cAAS,GAAT,SAAS,CAA2B;QAP/C,aAAQ,GAAc,EAAE,CAAC;QACzB,kBAAa,GAAyB,IAAI,GAAG,EAAE,CAAC;QAChD,kBAAa,GAAU,EAAE,CAAC;QAC1B,0BAAqB,GAAkB,IAAI,CAAC;QAMlD,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,wBAAwB;QACxB,kEAAkE;QAClE,MAAA,IAAI,CAAC,SAAS;aACX,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAoB,CAAC,0CACrD,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EAAE,UAAU,EACxE,iBAAiB,CAChB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,EAClC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAC3C,SAAS,CAAC,OAAO,EACjB,OAAO,CACR,IAAI,SAAS,EAEf,iBAAiB,CAChB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EACzC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAC3C,SAAS,CAAC,OAAO,EACjB,IAAI,CACL,IAAI,SAAS,EAEf,iBAAiB,CAChB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAC7C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAC3C,SAAS,CAAC,OAAO,EACjB,IAAI,CACL,IAAI,SAAS,CACf,CAAC;QAEJ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;gBACtD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzD,gEAAgE;QAChE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,iBAAiB,CACpC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EACjC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAC3C,SAAS,CAAC,OAAO,EACjB,MAAM,CACP,IAAI,iBAAiB,CACvB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;aACjB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;aACtD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aAChC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YACtB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC;gBACxD,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3D,4BAA4B;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,yBAAyB,CACzD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,SAAS,CAAC,OAAO,EACjB,SAAS,CACV,EACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,SAAS,CAAC,OAAO,EACjB,eAAe,CAChB,EACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,SAAS,CAAC,OAAO,EACjB,OAAO,CACR,CACF,CAAC;QAEF,IAAI,CAAC,4BAA4B,CAC/B,IAAI,CAAC,qBAAqB,EAC1B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,SAAS,CAAC,OAAO,EACjB,eAAe,CAChB,EACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,SAAS,CAAC,OAAO,EACjB,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACvC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EACnC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAClC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,EACtB,OAAO,CACR,CACF;gBACC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM;gBAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CACjD,CAAC;YAEF,IAAI,CAAC,4BAA4B,CAC/B,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,EACtB,SAAS,CACV,EACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,EACtB,eAAe,CAChB,EACD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,EACtB,OAAO,CACR,CACF,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,kBAAkB;gBAChB,IAAI,CAAC,mBAAmB,CACtB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,EACtB,OAAO,CACR,CACF,CACJ,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,GAAG,CAAC,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,mBAAmB;QACjB,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,CAC/D,IAAI,CAAC,SAAS,CAAC,OAAO,CACvB,CAAC;YAEF,+BAA+B;YAC/B,IAAI,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,sCAAsC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAC/D,CAAC;gBAEF,8DAA8D;gBAE9D,yBAAyB;gBACzB,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;oBACjC,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;wBACpC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBAClD,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;4BACtD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,4BAA4B,KAAK,CAAC,IAAI,SAAS,OAAO,GAAG,CAC1D,CAAC;4BAEF,MAAM,aAAa,GACjB,IAAI,CAAC,SAAS,CAAC,cAAc,CAC3B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC5B,SAAS,OAAO,EAAE,CACnB;gCACD,IAAI,CAAC,SAAS,CAAC,UAAU,CACvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAC5B,SAAS,EACT,SAAS,OAAO,EAAE,CACnB,CAAC;4BAEJ,aAAa,CAAC,iBAAiB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EACjC,SAAS,CACV,CAAC;4BAEF,aAAa,CAAC,yBAAyB,CACrC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAC5C,CAAC;4BACF,aAAa,CAAC,iBAAiB,CAC7B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,EAC3C,SAAS,CACV,CAAC;4BAEF,aAAa;iCACV,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;iCAClD,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;iCAC9C,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;4BAElD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;wBACjD,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,0BAA0B,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE,CAC7C,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,oDAAoD;gBACpD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC1C,IACE,OAAO,YAAY,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM;wBAC/C,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EACjC,CAAC;wBACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wBAEnD,wCAAwC;wBACxC,IACE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,OAAO,CAAC,EAC9D,CAAC;4BACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,8BAA8B,OAAO,CAAC,WAAW,SAAS,OAAO,GAAG,CACrE,CAAC;4BACF,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;4BACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;wBACrC,CAAC;oBACH,CAAC;gBACH,CAAC,CAAC,CAAC;gBAEH,wBAAwB;gBACxB,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;YACpC,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,KAAK,EAAE,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,SAAgB;QACpC,MAAM,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAE7D,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtE,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAE1D,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe,EAAE,KAA0B;QAC9D,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,gBAAgB,OAAO,YAAY,KAAK,EAAE,CAAC,CAAC;YAEpE,IAAI,KAAK,EAAE,CAAC;gBACV,oBAAoB;gBACpB,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;gBAExD,kEAAkE;gBAClE,UAAU,CAAC,GAAG,EAAE;oBACd,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;oBAChD,IAAI,OAAO,EAAE,CAAC;wBACZ,OAAO,CAAC,oBAAoB,CAC1B,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAC/B,KAAK,CACN,CAAC;oBACJ,CAAC;gBACH,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,yBAAyB,OAAO,KAAK,KAAK,EAAE,CAAC,CAAC;YAEtE,4CAA4C;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAChD,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,OAAO,KAAK,CAAC,CAAC,yCAAyC;IACzD,CAAC;IAED,mBAAmB,CAAC,EAAU,EAAE,IAAI;QAClC,IAAI,CAAC;YACH,IAAI,EAAE,IAAI,cAAc,IAAI,EAAE,IAAI,cAAc,EAAE,CAAC;gBACjD,MAAM,WAAW,GAAG,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBAEnE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,2BAA2B,EAAE,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAC9D,CAAC;gBAEF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAChE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC5B,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBAC9C,OAAO;oBACT,CAAC;oBACD,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;wBACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACvC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EACnC,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC;4BAClC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM;4BAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CACjD,CAAC;oBACJ,CAAC;oBAED,IAAI,QAAQ,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC;wBACvC,IAAI,CAAC,4BAA4B,CAC/B,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,KAAK,CACf,CAAC;oBACJ,CAAC;oBAED,IAAI,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,CAAC;wBAC7C,IAAI,CAAC,4BAA4B,CAC/B,QAAQ,CAAC,OAAO,EAChB,QAAQ,CAAC,aAAa,EACtB,QAAQ,CAAC,KAAK,CACf,CAAC;oBACJ,CAAC;oBAED,IAAI,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,CAAC;wBAC3C,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACvC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EACnC,QAAQ,CAAC,WAAW,IAAI,CAAC;4BACvB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM;4BAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CACjD,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,IACE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG;oBAChB,OAAO,WAAW,CAAC,GAAG,KAAK,QAAQ;oBACnC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAC5D,CAAC;oBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,qBAAqB,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CACxJ,CAAC;oBAEF,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACvC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EACnC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBAC1C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM;wBAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CACjD,CAAC;gBACJ,CAAC;gBAED,IACE,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,GAAG;oBAChB,OAAO,WAAW,CAAC,GAAG,KAAK,QAAQ;oBACnC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,KAAK,CAAC,EAC5D,CAAC;oBACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,uBAAuB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAChI,CAAC;oBAEF,IAAI,CAAC,4BAA4B,CAC/B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EACtB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EACtB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CACvB,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,IAAI,EAAE,IAAI,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,+CAA+C;gBAC/C,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,kCAAkC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,KAA0B;QACxC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC,CAAC;YAEtD,IAAI,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACxD,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACjE,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,oBAAoB,CACvC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,EACnC,KAAK,CACN,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,wBAAwB,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC,UAAU,EAAE;YACtB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM;YAC5C,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC;IACnD,CAAC;IAED,mBAAmB,CAAC,IAAY;QAC9B,MAAM,kBAAkB,GAAG;YACzB,CAAC,EAAE,SAAS;YACZ,CAAC,EAAE,YAAY;YACf,CAAC,EAAE,UAAU;YACb,CAAC,EAAE,MAAM;YACT,CAAC,EAAE,gBAAgB;YACnB,CAAC,EAAE,UAAU;YACb,CAAC,EAAE,gBAAgB;YACnB,CAAC,EAAE,aAAa;YAChB,CAAC,EAAE,UAAU;YACb,CAAC,EAAE,gBAAgB;YACnB,EAAE,EAAE,QAAQ;YACZ,EAAE,EAAE,eAAe;YACnB,EAAE,EAAE,UAAU;YACd,EAAE,EAAE,eAAe;YACnB,EAAE,EAAE,UAAU;YACd,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,OAAO;YACX,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,wBAAwB;YAC5B,EAAE,EAAE,iBAAiB;YACrB,EAAE,EAAE,uBAAuB;YAC3B,EAAE,EAAE,SAAS;YACb,EAAE,EAAE,SAAS;YACb,GAAG,EAAE,eAAe;SACrB,CAAC;QAEF,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC;IAC/C,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,eAAe,CACzB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,qBAAqB,CAC7C,IAAI,CAAC,SAAS,CAAC,OAAO,EACtB,OAAO,CACR,CACF,CAAC;IACJ,CAAC;IAED,eAAe,CAAC,KAAa;QAC3B,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,CAAC,CAAC,iBAAiB;YACzB,KAAK,CAAC,CAAC,CAAC,WAAW;YACnB,KAAK,CAAC,CAAC,CAAC,iBAAiB;YACzB,KAAK,CAAC,CAAC,CAAC,cAAc;YACtB,KAAK,EAAE,CAAC,CAAC,gBAAgB;YACzB,KAAK,EAAE,CAAC,CAAC,UAAU;YACnB,KAAK,EAAE,CAAC,CAAC,QAAQ;YACjB,KAAK,EAAE,CAAC,CAAC,aAAa;YACtB,KAAK,EAAE,CAAC,CAAC,aAAa;YACtB,KAAK,EAAE,CAAC,CAAC,kBAAkB;YAC3B,KAAK,EAAE,EAAE,wBAAwB;gBAC/B,OAAO,IAAI,CAAC;YACd;gBACE,OAAO,KAAK,CAAC;QACjB,CAAC;IACH,CAAC;IAEO,4BAA4B,CAClC,YAAqB,EACrB,iBAA0B,EAC1B,UAAmB;QAEnB,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CACtD,YAAY,EACZ,iBAAiB,EACjB,UAAU,CACX,CAAC;QAEF,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC/B,IAAI,CAAC,qBAAqB,GAAG,iBAAiB,CAAC;YAC/C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAC3C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,EACzC,iBAAiB,CAClB,CAAC;YAEF,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAC3C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,EAC7C,iBAAiB,GAAG,EAAE;gBACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,iBAAiB;gBACjE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,oBAAoB,CACvE,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,iBAAiB,KAAK,QAAQ,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAC3C,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,EAC1C,iBAAiB,IAAI,CAAC;gBACpB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ;gBACrD,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,yBAAyB,CAC/B,YAAqB,EACrB,iBAA0B,EAC1B,UAAmB;QAEnB,IAAI,OAAO,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,GAAG,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,MAAM,UAAU,GACd,OAAO,iBAAiB,KAAK,QAAQ,IAAI,iBAAiB,KAAK,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,UAAU,KAAK,CAAC,IAAI,UAAU,KAAK,GAAG,CAAC;QAE7D,IACE,YAAY,KAAK,CAAC;YAClB,IAAI,CAAC,qBAAqB,KAAK,IAAI;YACnC,IAAI,CAAC,qBAAqB,GAAG,CAAC;YAC9B,CAAC,UAAU,IAAI,aAAa,CAAC,EAC7B,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CACrB,4CAA4C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,oDAAoD,IAAI,CAAC,qBAAqB,IAAI,CAC5M,CAAC;YACF,OAAO,IAAI,CAAC,qBAAqB,CAAC;QACpC,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAphBD,0CAohBC"}
1
+ {"version":3,"file":"vacuum_accessory.js","sourceRoot":"","sources":["../src/vacuum_accessory.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "homebridge-roborock-vacuum2",
3
- "version": "1.4.21",
3
+ "version": "1.4.23",
4
4
  "description": "Roborock Vacuum Cleaner - plugin for Homebridge.",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -40,6 +40,8 @@ const dockingStationStates = [
40
40
  "isUpdownWaterReady",
41
41
  ];
42
42
 
43
+ const TRANSIENT_ERROR_LOG_THROTTLE_MS = 15 * 60 * 1000;
44
+
43
45
  function md5hex(str) {
44
46
  return crypto.createHash("md5").update(str).digest("hex");
45
47
  }
@@ -94,6 +96,13 @@ class Roborock {
94
96
  };
95
97
  this.pendingAuth = null;
96
98
  this.persistBasePath = null;
99
+ this.errorLogThrottleMs =
100
+ typeof options.errorLogThrottleMs === "number"
101
+ ? options.errorLogThrottleMs
102
+ : TRANSIENT_ERROR_LOG_THROTTLE_MS;
103
+ this.errorLogThrottle = new Map();
104
+ this.now =
105
+ typeof options.now === "function" ? options.now : () => Date.now();
97
106
  }
98
107
 
99
108
  isInited() {
@@ -525,6 +534,10 @@ class Roborock {
525
534
  }
526
535
 
527
536
  if (current.lastTransport === "cloud") {
537
+ if (this.isCloudOnlyTransportReason(current.lastTransportReason)) {
538
+ return `Using Roborock cloud transport for ${deviceLabel} (${method}) because ${reason}.`;
539
+ }
540
+
528
541
  if (previous.lastTransport === "local") {
529
542
  return `Falling back from local LAN to Roborock cloud for ${deviceLabel} (${method}) because ${reason}.`;
530
543
  }
@@ -539,6 +552,14 @@ class Roborock {
539
552
  return null;
540
553
  }
541
554
 
555
+ isCloudOnlyTransportReason(reason) {
556
+ return [
557
+ "network-info-cloud-only",
558
+ "secure-command",
559
+ "photo-command",
560
+ ].includes(String(reason));
561
+ }
562
+
542
563
  describeTransportReason(reason) {
543
564
  const reasons = {
544
565
  "cloud-request": "cloud transport was selected for this command",
@@ -2185,14 +2206,26 @@ class Roborock {
2185
2206
 
2186
2207
  async catchError(error, attribute, duid, model) {
2187
2208
  if (error) {
2188
- if (
2189
- error.toString().includes("retry") ||
2190
- error.toString().includes("locating") ||
2191
- error.toString().includes("timed out after 10 seconds")
2192
- ) {
2193
- this.log.warn(
2194
- `Failed to execute ${attribute} on robot ${duid} (${model || "unknown model"}): ${error}`
2209
+ const errorText = error.toString();
2210
+ const transientErrorKind = this.getTransientErrorKind(errorText);
2211
+ const message = `Failed to execute ${attribute} on robot ${duid} (${model || "unknown model"}): ${error}`;
2212
+
2213
+ if (transientErrorKind) {
2214
+ const throttledWarning = this.getThrottledTransientWarning(
2215
+ transientErrorKind,
2216
+ attribute,
2217
+ duid,
2218
+ model,
2219
+ message
2195
2220
  );
2221
+
2222
+ if (throttledWarning) {
2223
+ this.log.warn(throttledWarning);
2224
+ } else {
2225
+ this.log.debug(
2226
+ `Suppressed repeated ${transientErrorKind} warning for ${attribute} on robot ${duid} (${model || "unknown model"}).`
2227
+ );
2228
+ }
2196
2229
  } else {
2197
2230
  this.log.error(
2198
2231
  `Failed to execute ${attribute} on robot ${duid} (${model || "unknown model"}): ${error.stack || error}`
@@ -2201,6 +2234,64 @@ class Roborock {
2201
2234
  }
2202
2235
  }
2203
2236
 
2237
+ getTransientErrorKind(errorText) {
2238
+ const text = String(errorText || "");
2239
+
2240
+ if (text.includes("timed out after 10 seconds")) {
2241
+ if (text.includes("Local request")) {
2242
+ return "local timeout";
2243
+ }
2244
+ if (text.includes("Cloud request")) {
2245
+ return "cloud timeout";
2246
+ }
2247
+ return "timeout";
2248
+ }
2249
+
2250
+ if (text.includes("retry")) {
2251
+ return "retry";
2252
+ }
2253
+
2254
+ if (text.includes("locating")) {
2255
+ return "locating";
2256
+ }
2257
+
2258
+ return null;
2259
+ }
2260
+
2261
+ getThrottledTransientWarning(kind, attribute, duid, model, message) {
2262
+ const now = this.now();
2263
+ const key = [kind, attribute, duid, model || "unknown model"].join("|");
2264
+ const previous = this.errorLogThrottle.get(key);
2265
+
2266
+ if (!previous || now - previous.lastLoggedAt >= this.errorLogThrottleMs) {
2267
+ const suppressedCount = previous?.suppressedCount || 0;
2268
+ this.errorLogThrottle.set(key, {
2269
+ lastLoggedAt: now,
2270
+ suppressedCount: 0,
2271
+ });
2272
+
2273
+ const throttleNote = ` Future repeats for this robot and command will be logged at most once every ${this.formatThrottleDuration(this.errorLogThrottleMs)}.`;
2274
+ const summaryNote =
2275
+ suppressedCount > 0
2276
+ ? ` ${suppressedCount} similar warning(s) were suppressed.`
2277
+ : "";
2278
+
2279
+ return `${message}${summaryNote}${throttleNote}`;
2280
+ }
2281
+
2282
+ previous.suppressedCount = (previous.suppressedCount || 0) + 1;
2283
+ this.errorLogThrottle.set(key, previous);
2284
+ return null;
2285
+ }
2286
+
2287
+ formatThrottleDuration(durationMs) {
2288
+ if (durationMs >= 60 * 1000) {
2289
+ return `${Math.round(durationMs / (60 * 1000))} minutes`;
2290
+ }
2291
+
2292
+ return `${Math.max(1, Math.round(durationMs / 1000))} seconds`;
2293
+ }
2294
+
2204
2295
  async app_start(duid) {
2205
2296
  await this.startCommand(duid, "app_start", null);
2206
2297
  }
@@ -2209,6 +2300,10 @@ class Roborock {
2209
2300
  await this.startCommand(duid, "app_stop", null);
2210
2301
  }
2211
2302
 
2303
+ async app_pause(duid) {
2304
+ await this.startCommand(duid, "app_pause", null);
2305
+ }
2306
+
2212
2307
  async app_charge(duid) {
2213
2308
  await this.startCommand(duid, "app_charge", null);
2214
2309
  }