get_robot_status_smart
Retrieve real-time status information for GS cleaning robots by providing the serial number, automatically selecting the correct API version based on robot series.
Instructions
智能获取机器人状态。
自动根据机器人系列选择V1 (M-line) 或V2 (S-line) API。
Args:
serial_number: 机器人序列号
Returns:
机器人状态信息字典
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| serial_number | Yes |
Implementation Reference
- Core handler function in RobotAPIRouter that intelligently routes to V1 or V2 API based on robot series detected from serial number prefix. Calls mcp.get_robot_status_v1 or v2 and adds metadata.async def get_robot_status_smart(self, serial_number: str) -> Dict[str, Any]: """智能获取机器人状态。 自动根据机器人序列号前缀选择V1或V2 API。 """ # 基于序列号前缀判断机器人系列 detected_series = self._determine_robot_series_from_sn(serial_number) if self.is_s_line_robot(detected_series): # S-line 机器人使用 V2 API result = await self.mcp.get_robot_status_v2(serial_number) result["api_version"] = "V2 (S-line)" result["detected_series"] = detected_series return result else: # M-line 机器人或未知类型默认使用 V1 API result = await self.mcp.get_robot_status_v1(serial_number) result["api_version"] = "V1 (M-line/Default)" result["detected_series"] = detected_series return result
- src/gs_openapi/main.py:303-316 (registration)MCP tool registration using @mcp.tool() decorator. Proxies the call to the router's get_robot_status_smart method.@mcp.tool() async def get_robot_status_smart(serial_number: str): """智能获取机器人状态。 自动根据机器人系列选择V1 (M-line) 或V2 (S-line) API。 Args: serial_number: 机器人序列号 Returns: 机器人状态信息字典 """ return await router.get_robot_status_smart(serial_number)
- Helper method to determine robot series from serial number prefix using predefined mapping ROBOT_SERIES_MAPPING.def _determine_robot_series_from_sn(self, serial_number: str) -> str: """根据序列号前缀判断机器人系列。 Args: serial_number: 机器人序列号 Returns: 机器人系列代码 (40, 50, 75, S, SW) 或 "unknown" """ if len(serial_number) < 5: return "unknown" prefix = serial_number[:5] return self.ROBOT_SERIES_MAPPING.get(prefix, "unknown")
- Helper to check if robot is S-line based on series code.def is_s_line_robot(self, model_family_code: str) -> bool: """判断是否为S-line机器人。""" return model_family_code in ["S", "SW"]
- Helper to check if robot is M-line based on series code.def is_m_line_robot(self, model_family_code: str) -> bool: """判断是否为M-line机器人。""" return model_family_code in ["40", "50", "75", "OMNIE"]