From f95c71c2ad776f04a70c9abea88f21e02984837c Mon Sep 17 00:00:00 2001 From: Quint Stoffers Date: Mon, 17 Nov 2025 03:48:53 +0100 Subject: [PATCH 1/2] fix: xiaomi.derh.lite temperature precision (#1505) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: xiaomi.derh.lite temperature precision Add value-range step of 0.1 for dehumidifier temperature property to preserve decimal precision. The xiaomi.derh.lite dehumidifier was reporting temperature as integer instead of float due to the default value-range step of 1. This fix changes the step to 0.1 to allow one decimal place precision (e.g., 22.5°C instead of 23°C). Similar to the fix for cgllc.airm.cgd1st air monitor in commit 580ff87. * chore: sort dehumidifier entry --- custom_components/xiaomi_home/miot/specs/spec_modify.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/custom_components/xiaomi_home/miot/specs/spec_modify.yaml b/custom_components/xiaomi_home/miot/specs/spec_modify.yaml index bacbd4b..4d7a42a 100644 --- a/custom_components/xiaomi_home/miot/specs/spec_modify.yaml +++ b/custom_components/xiaomi_home/miot/specs/spec_modify.yaml @@ -138,6 +138,12 @@ urn:miot-spec-v2:device:bath-heater:0000A028:xiaomi-s1:1: urn:miot-spec-v2:device:curtain:0000A00C:bjkcz-kczble:1:0000D031: prop.2.2: name: status-a +urn:miot-spec-v2:device:dehumidifier:0000A02D:xiaomi-lite:1: + prop.3.2: + value-range: + - -30 + - 100 + - 0.1 urn:miot-spec-v2:device:electronic-valve:0000A0A7:sanmei-s1:1: prop.3.1: format: float From 33ee65cf75d6f6348135aa218a4094961a65e7dd Mon Sep 17 00:00:00 2001 From: Li Shuzhen Date: Mon, 17 Nov 2025 11:15:10 +0800 Subject: [PATCH 2/2] fix: ignore mdns REMOVED package (#1296) --- custom_components/xiaomi_home/miot/miot_client.py | 10 +++++----- custom_components/xiaomi_home/miot/miot_mdns.py | 7 ++++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/custom_components/xiaomi_home/miot/miot_client.py b/custom_components/xiaomi_home/miot/miot_client.py index e6fe6a8..31e80af 100644 --- a/custom_components/xiaomi_home/miot/miot_client.py +++ b/custom_components/xiaomi_home/miot/miot_client.py @@ -1048,11 +1048,11 @@ class MIoTClient: mips = self._mips_local.get(group_id, None) if mips: - if state == MipsServiceState.REMOVED: - mips.disconnect() - self._mips_local.pop(group_id, None) - return - if ( + # if state == MipsServiceState.REMOVED: + # mips.disconnect() + # self._mips_local.pop(group_id, None) + # return + if ( # ADDED or UPDATED mips.client_id == self._entry_data['virtual_did'] and mips.host == data['addresses'][0] and mips.port == data['port'] diff --git a/custom_components/xiaomi_home/miot/miot_mdns.py b/custom_components/xiaomi_home/miot/miot_mdns.py index 2380909..f306675 100644 --- a/custom_components/xiaomi_home/miot/miot_mdns.py +++ b/custom_components/xiaomi_home/miot/miot_mdns.py @@ -232,9 +232,10 @@ class MipsService: for item in list(self._services.values()): if item['name'] != name: continue - service_data = self._services.pop(item['group_id'], {}) - self.__call_service_change( - state=MipsServiceState.REMOVED, data=service_data) + # Ignore mdns REMOVED package. Let the connection close by itself. + # service_data = self._services.pop(item['group_id'], {}) + # self.__call_service_change( + # state=MipsServiceState.REMOVED, data=service_data) return self._main_loop.create_task( self.__request_service_info_async(zeroconf, service_type, name))