فهرست منبع

Vacuum: add paused and idle state handling, handled charged as docked.

Only consider power and active states to mean docked if they are returning
False (not None, ie missing).

- mellerware - change some standby states to idle or paused, report
charged separately.

Issue #584
Jason Rumney 2 سال پیش
والد
کامیت
40c8229062
2فایلهای تغییر یافته به همراه11 افزوده شده و 5 حذف شده
  1. 1 1
      custom_components/tuya_local/devices/mellerware_citymove_vacuum.yaml
  2. 10 4
      custom_components/tuya_local/vacuum.py

+ 1 - 1
custom_components/tuya_local/devices/mellerware_citymove_vacuum.yaml

@@ -41,7 +41,7 @@ primary_entity:
         - dps_val: SLEEP
           value: standby
         - dps_val: CHARG_COMP
-          value: standby
+          value: charged
         - dps_val: null
           value: standby
         - dps_val: HALTING

+ 10 - 4
custom_components/tuya_local/vacuum.py

@@ -7,8 +7,10 @@ from homeassistant.components.vacuum import (
     SERVICE_STOP,
     STATE_CLEANING,
     STATE_DOCKED,
-    STATE_RETURNING,
     STATE_ERROR,
+    STATE_IDLE,
+    STATE_PAUSED,
+    STATE_RETURNING,
     StateVacuumEntity,
     VacuumEntityFeature,
 )
@@ -109,11 +111,15 @@ class TuyaLocalVacuum(TuyaLocalEntity, StateVacuumEntity):
             return STATE_ERROR
         elif status in [SERVICE_RETURN_TO_BASE, "returning"]:
             return STATE_RETURNING
-        elif status in ["standby", "charging"]:
+        elif status == "standby":
+            return STATE_IDLE
+        elif status == "paused":
+            return STATE_PAUSED
+        elif status in ["charging", "charged"]:
             return STATE_DOCKED
-        elif self._power_dps and not self._power_dps.get_value(self._device):
+        elif self._power_dps and self._power_dps.get_value(self._device) is False:
             return STATE_DOCKED
-        elif self._active_dps and not self._active_dps.get_value(self._device):
+        elif self._active_dps and self._active_dps.get_value(self._device) is False:
             return STATE_DOCKED
         else:
             return STATE_CLEANING