diff --git a/custom_components/xiaomi_home/miot/miot_client.py b/custom_components/xiaomi_home/miot/miot_client.py index 8ef2b96..1508113 100644 --- a/custom_components/xiaomi_home/miot/miot_client.py +++ b/custom_components/xiaomi_home/miot/miot_client.py @@ -1281,9 +1281,17 @@ class MIoTClient: @final async def __on_gw_device_list_changed(self, mips: MipsLocalClient, did_list: list[str]) -> None: - _LOGGER.info("gateway devices list changed, %s, %s", mips.group_id, + _LOGGER.info('gateway devices list changed, %s, %s', mips.group_id, did_list) - payload: dict = {"filter": {"did": did_list}} + payload: dict = { + 'filter': { + 'did': did_list + }, + 'info': [ + 'name', 'model', 'urn', 'online', 'specV2Access', + 'pushAvailable' + ] + } gw_list = await mips.get_dev_list_async(payload=json.dumps(payload)) if gw_list is None: _LOGGER.error("local mips get_dev_list_async failed, %s", did_list) @@ -1631,7 +1639,14 @@ class MIoTClient: if not mips.mips_state: _LOGGER.debug("local mips disconnect, skip refresh, %s", group_id) return - gw_list: dict = await mips.get_dev_list_async() + payload: dict = { + 'info': [ + 'name', 'model', 'urn', 'online', 'specV2Access', + 'pushAvailable' + ] + } + gw_list: dict = await mips.get_dev_list_async( + payload=json.dumps(payload)) if gw_list is None: _LOGGER.error("refresh gw devices with group_id failed, %s, %s", self._uid, group_id) diff --git a/custom_components/xiaomi_home/miot/miot_cloud.py b/custom_components/xiaomi_home/miot/miot_cloud.py index 086e0bb..82995d4 100644 --- a/custom_components/xiaomi_home/miot/miot_cloud.py +++ b/custom_components/xiaomi_home/miot/miot_cloud.py @@ -578,55 +578,28 @@ class MIoTHttpClient: did) continue device_infos[did] = { - "did": - did, - "uid": - device.get("uid", None), - "name": - name, - "urn": - urn, - "model": - model, - "connect_type": - device.get("pid", -1), - "token": - device.get("token", None), - "online": - device.get("isOnline", False), - "icon": - device.get("icon", None), - "parent_id": - device.get("parent_id", None), - "manufacturer": - model.split(".")[0], + "did": did, + "uid": device.get("uid", None), + "name": name, + "urn": urn, + "model": model, + "connect_type": device.get("pid", -1), + "token": device.get("token", None), + "online": device.get("isOnline", False), + "icon": device.get("icon", None), + "parent_id": device.get("parent_id", None), + "manufacturer": model.split(".")[0], # 2: xiao-ai, 1: general speaker - "voice_ctrl": - device.get("voice_ctrl", 0), - "rssi": - device.get("rssi", None), - "owner": - device.get("owner", None), - "pid": - device.get("pid", None), - "local_ip": - device.get("local_ip", None), - "ssid": - device.get("ssid", None), - "bssid": - device.get("bssid", None), - "order_time": - device.get("orderTime", 0), - "fw_version": - device.get("extra", {}).get("fw_version", "unknown"), + 'voice_ctrl': device.get('voice_ctrl', 0), + 'rssi': device.get('rssi', None), + 'owner': device.get('owner', None), + 'pid': device.get('pid', None), + 'local_ip': device.get('local_ip', None), + 'ssid': device.get('ssid', None), + 'bssid': device.get('bssid', None), + 'order_time': device.get('orderTime', 0), + 'fw_version': device.get('extra', {}).get('fw_version', None) } - if isinstance(device.get("extra", None), dict) and device["extra"]: - device_infos[did]["fw_version"] = device["extra"].get( - "fw_version", None) - device_infos[did]["mcu_version"] = device["extra"].get( - "mcu_version", None) - device_infos[did]["platform"] = device["extra"].get( - "platform", None) next_start_did = res_obj.get("next_start_did", None) if res_obj.get("has_more", False) and next_start_did: diff --git a/custom_components/xiaomi_home/miot/miot_mips.py b/custom_components/xiaomi_home/miot/miot_mips.py index 6c96ccb..87834cf 100644 --- a/custom_components/xiaomi_home/miot/miot_mips.py +++ b/custom_components/xiaomi_home/miot/miot_mips.py @@ -1461,20 +1461,10 @@ class MipsLocalClient(_MipsClient): self.log_info(f'unsupported model, {model}, {did}') continue device_list[did] = { - "did": did, - "name": name, - "urn": urn, - "model": model, - "online": info.get("online", False), - "icon": info.get("icon", None), - "fw_version": None, - "home_id": "", - "home_name": "", - "room_id": info.get("roomId", ""), - "room_name": info.get("roomName", ""), - "specv2_access": info.get("specV2Access", False), - "push_available": info.get("pushAvailable", False), - "manufacturer": model.split(".")[0], + 'did': did, + 'online': info.get('online', False), + 'specv2_access': info.get('specV2Access', False), + 'push_available': info.get('pushAvailable', False) } return device_list