Fix busy state #1
Fix cleaning state shown as docking #1 Fixed robot_state access
This commit is contained in:
parent
20ed194b68
commit
30291b7337
28
__init__.py
28
__init__.py
@ -30,7 +30,7 @@ from .const import (
|
|||||||
ERRORS,
|
ERRORS,
|
||||||
MIN_TIME_BETWEEN_UPDATES,
|
MIN_TIME_BETWEEN_UPDATES,
|
||||||
MODE,
|
MODE,
|
||||||
ROBOT_ACTION_DOCKING,
|
ROBOT_CLEANING_ACTIONS,
|
||||||
ROBOT_STATE_BUSY,
|
ROBOT_STATE_BUSY,
|
||||||
ROBOT_STATE_ERROR,
|
ROBOT_STATE_ERROR,
|
||||||
ROBOT_STATE_IDLE,
|
ROBOT_STATE_IDLE,
|
||||||
@ -186,16 +186,17 @@ class VorwerkState:
|
|||||||
self._update_robot_info()
|
self._update_robot_info()
|
||||||
self._update_state()
|
self._update_state()
|
||||||
|
|
||||||
def _update_state(self):
|
def _update_robot_info(self):
|
||||||
try:
|
try:
|
||||||
if not self.robot_info:
|
if not self.robot_info:
|
||||||
self.robot_info = self.robot.get_general_info().json().get("data")
|
self.robot_info = self.robot.get_general_info().json().get("data")
|
||||||
except NeatoRobotException:
|
except NeatoRobotException:
|
||||||
_LOGGER.warning("Couldn't fetch robot information of %s", self.robot.name)
|
_LOGGER.warning("Couldn't fetch robot information of %s", self.robot.name)
|
||||||
|
|
||||||
def _update_robot_info(self):
|
def _update_state(self):
|
||||||
try:
|
try:
|
||||||
self.robot_state = self.robot.state
|
self.robot_state = self.robot.state
|
||||||
|
_LOGGER.debug(self.robot_state)
|
||||||
except NeatoRobotException as ex:
|
except NeatoRobotException as ex:
|
||||||
if self.available: # print only once when available
|
if self.available: # print only once when available
|
||||||
_LOGGER.error(
|
_LOGGER.error(
|
||||||
@ -236,10 +237,11 @@ class VorwerkState:
|
|||||||
elif robot_state == ROBOT_STATE_IDLE:
|
elif robot_state == ROBOT_STATE_IDLE:
|
||||||
state = STATE_IDLE
|
state = STATE_IDLE
|
||||||
elif robot_state == ROBOT_STATE_BUSY:
|
elif robot_state == ROBOT_STATE_BUSY:
|
||||||
if robot_state["action"] != ROBOT_ACTION_DOCKING:
|
action = self.robot_state.get("action")
|
||||||
state = STATE_RETURNING
|
if action in ROBOT_CLEANING_ACTIONS:
|
||||||
else:
|
|
||||||
state = STATE_CLEANING
|
state = STATE_CLEANING
|
||||||
|
else:
|
||||||
|
state = STATE_RETURNING
|
||||||
elif robot_state == ROBOT_STATE_PAUSE:
|
elif robot_state == ROBOT_STATE_PAUSE:
|
||||||
state = STATE_PAUSED
|
state = STATE_PAUSED
|
||||||
elif robot_state == ROBOT_STATE_ERROR:
|
elif robot_state == ROBOT_STATE_ERROR:
|
||||||
@ -282,21 +284,19 @@ class VorwerkState:
|
|||||||
|
|
||||||
def _error_status(self):
|
def _error_status(self):
|
||||||
"""Return error status."""
|
"""Return error status."""
|
||||||
robot_state = self.robot_state.get("state")
|
return ERRORS.get(self.robot_state["error"], self.robot_state["error"])
|
||||||
return ERRORS.get(robot_state["error"], robot_state["error"])
|
|
||||||
|
|
||||||
def _cleaning_status(self):
|
def _cleaning_status(self):
|
||||||
"""Return cleaning status."""
|
"""Return cleaning status."""
|
||||||
robot_state = self.robot_state.get("state")
|
|
||||||
status_items = [
|
status_items = [
|
||||||
MODE.get(robot_state["cleaning"]["mode"]),
|
MODE.get(self.robot_state["cleaning"]["mode"]),
|
||||||
ACTION.get(robot_state["action"]),
|
ACTION.get(self.robot_state["action"]),
|
||||||
]
|
]
|
||||||
if (
|
if (
|
||||||
"boundary" in robot_state["cleaning"]
|
"boundary" in self.robot_state["cleaning"]
|
||||||
and "name" in robot_state["cleaning"]["boundary"]
|
and "name" in self.robot_state["cleaning"]["boundary"]
|
||||||
):
|
):
|
||||||
status_items.append(robot_state["cleaning"]["boundary"]["name"])
|
status_items.append(self.robot_state["cleaning"]["boundary"]["name"])
|
||||||
return " ".join(s for s in status_items if s)
|
return " ".join(s for s in status_items if s)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
|
87
const.py
87
const.py
@ -20,27 +20,64 @@ VORWERK_CLIENT_ID = "KY4YbVAvtgB7lp8vIbWQ7zLk3hssZlhR"
|
|||||||
|
|
||||||
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=1)
|
MIN_TIME_BETWEEN_UPDATES = timedelta(minutes=1)
|
||||||
|
|
||||||
MODE = {1: "Eco", 2: "Turbo"}
|
ATTR_NAVIGATION = "navigation"
|
||||||
|
ATTR_CATEGORY = "category"
|
||||||
|
ATTR_ZONE = "zone"
|
||||||
|
|
||||||
|
ROBOT_STATE_INVALID = 0
|
||||||
|
ROBOT_STATE_IDLE = 1
|
||||||
|
ROBOT_STATE_BUSY = 2
|
||||||
|
ROBOT_STATE_PAUSE = 3
|
||||||
|
ROBOT_STATE_ERROR = 4
|
||||||
|
|
||||||
|
ROBOT_ACTION_INVALID = 0
|
||||||
|
ROBOT_ACTION_HOUSE_CLEANING = 1
|
||||||
|
ROBOT_ACTION_SPOT_CLEANING = 2
|
||||||
|
ROBOT_ACTION_MANUAL_CLEANING = 3
|
||||||
|
ROBOT_ACTION_DOCKING = 4
|
||||||
|
ROBOT_ACTION_USER_MENU = 5
|
||||||
|
ROBOT_ACTION_SUSPENDED_CLEANING = 6
|
||||||
|
ROBOT_ACTION_UPDATING = 7
|
||||||
|
ROBOT_ACTION_COPY_LOGS = 8
|
||||||
|
ROBOT_ACTION_RECOVERING_LOCATION = 9
|
||||||
|
ROBOT_ACTION_IEC_TEST = 10
|
||||||
|
ROBOT_ACTION_MAP_CLEANING = 11
|
||||||
|
ROBOT_ACTION_EXPLORING_MAP = 12
|
||||||
|
ROBOT_ACTION_ACQUIRING_MAP_IDS = 13
|
||||||
|
ROBOT_ACTION_UPLOADING_MAP = 14
|
||||||
|
ROBOT_ACTION_SUSPENDED_EXPLORATION = 15
|
||||||
|
|
||||||
|
ROBOT_CLEANING_ACTIONS = [
|
||||||
|
ROBOT_ACTION_HOUSE_CLEANING,
|
||||||
|
ROBOT_ACTION_SPOT_CLEANING,
|
||||||
|
ROBOT_ACTION_MANUAL_CLEANING,
|
||||||
|
ROBOT_ACTION_SUSPENDED_CLEANING,
|
||||||
|
ROBOT_ACTION_MAP_CLEANING,
|
||||||
|
ROBOT_ACTION_EXPLORING_MAP,
|
||||||
|
ROBOT_ACTION_SUSPENDED_EXPLORATION
|
||||||
|
]
|
||||||
|
|
||||||
ACTION = {
|
ACTION = {
|
||||||
0: "Invalid",
|
ROBOT_ACTION_INVALID: "Invalid",
|
||||||
1: "House Cleaning",
|
ROBOT_ACTION_HOUSE_CLEANING: "House Cleaning",
|
||||||
2: "Spot Cleaning",
|
ROBOT_ACTION_SPOT_CLEANING: "Spot Cleaning",
|
||||||
3: "Manual Cleaning",
|
ROBOT_ACTION_MANUAL_CLEANING: "Manual Cleaning",
|
||||||
4: "Docking",
|
ROBOT_ACTION_DOCKING: "Docking",
|
||||||
5: "User Menu Active",
|
ROBOT_ACTION_USER_MENU: "User Menu Active",
|
||||||
6: "Suspended Cleaning",
|
ROBOT_ACTION_SUSPENDED_CLEANING: "Suspended Cleaning",
|
||||||
7: "Updating",
|
ROBOT_ACTION_UPDATING: "Updating",
|
||||||
8: "Copying logs",
|
ROBOT_ACTION_COPY_LOGS: "Copying logs",
|
||||||
9: "Recovering Location",
|
ROBOT_ACTION_RECOVERING_LOCATION: "Recovering Location",
|
||||||
10: "IEC test",
|
ROBOT_ACTION_IEC_TEST: "IEC test",
|
||||||
11: "Map cleaning",
|
ROBOT_ACTION_MAP_CLEANING: "Map cleaning",
|
||||||
12: "Exploring map (creating a persistent map)",
|
ROBOT_ACTION_EXPLORING_MAP: "Exploring map (creating a persistent map)",
|
||||||
13: "Acquiring Persistent Map IDs",
|
ROBOT_ACTION_ACQUIRING_MAP_IDS: "Acquiring Persistent Map IDs",
|
||||||
14: "Creating & Uploading Map",
|
ROBOT_ACTION_UPLOADING_MAP: "Creating & Uploading Map",
|
||||||
15: "Suspended Exploration",
|
ROBOT_ACTION_SUSPENDED_EXPLORATION: "Suspended Exploration",
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MODE = {1: "Eco", 2: "Turbo"}
|
||||||
|
|
||||||
ERRORS = {
|
ERRORS = {
|
||||||
"ui_error_battery_battundervoltlithiumsafety": "Replace battery",
|
"ui_error_battery_battundervoltlithiumsafety": "Replace battery",
|
||||||
"ui_error_battery_critical": "Replace battery",
|
"ui_error_battery_critical": "Replace battery",
|
||||||
@ -157,19 +194,3 @@ ALERTS = {
|
|||||||
"clean_incomplete_to_start": "Cleaning incomplete",
|
"clean_incomplete_to_start": "Cleaning incomplete",
|
||||||
"log_upload_failed": "Logs failed to upload",
|
"log_upload_failed": "Logs failed to upload",
|
||||||
}
|
}
|
||||||
|
|
||||||
ATTR_NAVIGATION = "navigation"
|
|
||||||
ATTR_CATEGORY = "category"
|
|
||||||
ATTR_ZONE = "zone"
|
|
||||||
|
|
||||||
|
|
||||||
ROBOT_STATE_INVALID = 0
|
|
||||||
ROBOT_STATE_IDLE = 1
|
|
||||||
ROBOT_STATE_BUSY = 2
|
|
||||||
ROBOT_STATE_PAUSE = 3
|
|
||||||
ROBOT_STATE_ERROR = 4
|
|
||||||
|
|
||||||
ROBOT_ACTION_HOUSE_CLEANING = 1
|
|
||||||
ROBOT_ACTION_SPOT_CLEANING = 2
|
|
||||||
ROBOT_ACTION_MANUAL_CLEANING = 3
|
|
||||||
ROBOT_ACTION_DOCKING = 4
|
|
||||||
|
Loading…
Reference in New Issue
Block a user