mirror of
https://github.com/sudoxnym/roomba_rest980.git
synced 2026-04-14 11:37:46 +00:00
check if active mission, otherwise dont show start/elapsed time
This commit is contained in:
parent
cad8af474b
commit
d310a8441f
3 changed files with 43 additions and 27 deletions
|
|
@ -31,6 +31,20 @@ class RoombaSensor(CoordinatorEntity, SensorEntity):
|
|||
"manufacturer": "iRobot",
|
||||
}
|
||||
|
||||
def isMissionActive(self) -> bool:
|
||||
"""Return whether or not there is a mission in progress."""
|
||||
data = self.coordinator.data or {}
|
||||
status = data.get("cleanMissionStatus", {})
|
||||
# Mission State
|
||||
phase = status.get("phase")
|
||||
battery = data.get("batPct")
|
||||
state = False
|
||||
if status.get("mssnStrtTm"):
|
||||
state = True
|
||||
if phase == "charge" and battery == 100:
|
||||
state = False
|
||||
return state
|
||||
|
||||
def returnIn(self, mapping: dict[str, str], index: str) -> str:
|
||||
"""Default or map value."""
|
||||
mapping.get(index, index)
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"codeowners": [
|
||||
"@ia74"
|
||||
],
|
||||
"version": "1.8.0",
|
||||
"version": "1.9.0",
|
||||
"config_flow": true,
|
||||
"dependencies": [],
|
||||
"dhcp": [
|
||||
|
|
|
|||
|
|
@ -286,16 +286,12 @@ class RoombaMissionStartTime(RoombaSensor):
|
|||
|
||||
def _handle_coordinator_update(self):
|
||||
"""Update sensor when coordinator data changes."""
|
||||
data = self.coordinator.data or {}
|
||||
status = data.get("cleanMissionStatus", {})
|
||||
# Mission State
|
||||
phase = status.get("phase")
|
||||
battery = data.get("batPct")
|
||||
|
||||
if phase == "charge" and battery == 100:
|
||||
if not self.isMissionActive():
|
||||
self._attr_available = False
|
||||
self._attr_native_value = None
|
||||
else:
|
||||
data = self.coordinator.data or {}
|
||||
status = data.get("cleanMissionStatus", {})
|
||||
missionStartTime = status.get("mssnStrtTm") # Unix timestamp in seconds?
|
||||
|
||||
if missionStartTime:
|
||||
|
|
@ -327,6 +323,10 @@ class RoombaMissionElapsedTime(RoombaSensor):
|
|||
|
||||
def _handle_coordinator_update(self):
|
||||
"""Update sensor when coordinator data changes."""
|
||||
if not self.isMissionActive():
|
||||
self._attr_available = False
|
||||
self._attr_native_value = None
|
||||
else:
|
||||
data = self.coordinator.data or {}
|
||||
status = data.get("cleanMissionStatus", {})
|
||||
missionStartTime = status.get("mssnStrtTm") # Unix timestamp in seconds?
|
||||
|
|
@ -363,12 +363,14 @@ class RoombaRechargeTime(RoombaSensor):
|
|||
"""Update sensor when coordinator data changes."""
|
||||
data = self.coordinator.data or {}
|
||||
status = data.get("cleanMissionStatus", {})
|
||||
missionStartTime = status.get("rechrgTm") # Unix timestamp in seconds?
|
||||
estimatedRechargeTime = status.get("rechrgTm") # Unix timestamp in seconds?
|
||||
|
||||
if missionStartTime:
|
||||
if estimatedRechargeTime:
|
||||
self._attr_available = True
|
||||
try:
|
||||
self._attr_native_value = dt_util.utc_from_timestamp(missionStartTime)
|
||||
self._attr_native_value = dt_util.utc_from_timestamp(
|
||||
estimatedRechargeTime
|
||||
)
|
||||
except (TypeError, ValueError):
|
||||
self._attr_native_value = None
|
||||
else:
|
||||
|
|
|
|||
Loading…
Reference in a new issue