From ec833b6539963aeabe4f03ce929d429f3009c620 Mon Sep 17 00:00:00 2001 From: Li Shuzhen Date: Tue, 2 Sep 2025 17:22:40 +0800 Subject: [PATCH] feat: subscribe the proxy gateway child device up messages even though the device is offline (#1393) * feat: subscribe the proxy gateway child device up messages even though the device is offline (#1313) * feat: do not subscribe proxy gateway child device online/offline state message --- custom_components/xiaomi_home/miot/miot_client.py | 7 +++++-- custom_components/xiaomi_home/miot/miot_mips.py | 8 +++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/custom_components/xiaomi_home/miot/miot_client.py b/custom_components/xiaomi_home/miot/miot_client.py index f8f3141..e6fe6a8 100644 --- a/custom_components/xiaomi_home/miot/miot_client.py +++ b/custom_components/xiaomi_home/miot/miot_client.py @@ -1374,10 +1374,13 @@ class MIoTClient: """Update cloud devices. NOTICE: This function will operate the cloud_list """ - # MIoT cloud service may not publish the online state updating message + # MIoT cloud may not publish the online state updating message # for the BLE device. Assume that all BLE devices are online. + # MIoT cloud does not publish the online state updating message for the + # child device under the proxy gateway (eg, VRF air conditioner + # controller). Assume that all proxy gateway child devices are online. for did, info in cloud_list.items(): - if did.startswith('blt.'): + if did.startswith('blt.') or did.startswith('proxy.'): info['online'] = True for did, info in self._device_list_cache.items(): if filter_dids and did not in filter_dids: diff --git a/custom_components/xiaomi_home/miot/miot_mips.py b/custom_components/xiaomi_home/miot/miot_mips.py index 8c51c8b..6e7186d 100644 --- a/custom_components/xiaomi_home/miot/miot_mips.py +++ b/custom_components/xiaomi_home/miot/miot_mips.py @@ -998,9 +998,11 @@ class MipsCloudClient(_MipsClient): did, MIoTDeviceState.ONLINE if msg['event'] == 'online' else MIoTDeviceState.OFFLINE, ctx) - if did.startswith('blt.'): - # MIoT cloud may not publish BLE device online/offline state message. - # Do not subscribe BLE device online/offline state. + if did.startswith('blt.') or did.startswith('proxy.'): + # MIoT cloud may not publish BLE device or proxy gateway child device + # online/offline state message. + # Do not subscribe BLE device or proxy gateway child device + # online/offline state. return True return self.__reg_broadcast_external( topic=topic, handler=on_state_msg, handler_ctx=handler_ctx)