From bf1caf50e1fb7fbce8f2b716b5e589f6054a1505 Mon Sep 17 00:00:00 2001 From: lifetimr <76044510+lifetimr@users.noreply.github.com> Date: Mon, 24 Nov 2025 20:52:23 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9cover=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E4=B8=8BOPEN/STOP/PAUSE=E6=97=A0=E6=B3=95=E6=AD=A3=E5=B8=B8?= =?UTF-8?q?=E6=9A=B4=E9=9C=B2=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom_components/xiaomi_home/cover.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/custom_components/xiaomi_home/cover.py b/custom_components/xiaomi_home/cover.py index deba601..3245bd8 100644 --- a/custom_components/xiaomi_home/cover.py +++ b/custom_components/xiaomi_home/cover.py @@ -143,6 +143,8 @@ class Cover(MIoTServiceEntity, CoverEntity): self.entity_id) continue for item in prop.value_list.items: + item_str: str = item.name + item_name: str = re.sub(r'[^a-z]', '', item_str) if item.name in {'open', 'up'}: self._attr_supported_features |= ( CoverEntityFeature.OPEN) From eec13826d2f426fe2250aa73ec4fc541e7ba5b10 Mon Sep 17 00:00:00 2001 From: lifetimr <76044510+lifetimr@users.noreply.github.com> Date: Tue, 25 Nov 2025 22:09:41 +0800 Subject: [PATCH 2/2] Update cover.py --- custom_components/xiaomi_home/cover.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/custom_components/xiaomi_home/cover.py b/custom_components/xiaomi_home/cover.py index 3245bd8..8cda37f 100644 --- a/custom_components/xiaomi_home/cover.py +++ b/custom_components/xiaomi_home/cover.py @@ -107,6 +107,7 @@ class Cover(MIoTServiceEntity, CoverEntity): _prop_position_value_range: Optional[int] _prop_pos_closing: bool _prop_pos_opening: bool + _reverse_position: bool def __init__(self, miot_device: MIoTDevice, entity_data: MIoTEntityData) -> None: @@ -134,6 +135,8 @@ class Cover(MIoTServiceEntity, CoverEntity): self._prop_position_value_range = None self._prop_pos_closing = False self._prop_pos_opening = False + # 新增:针对airer类型设备反转位置 + self._reverse_position = (entity_data.spec.device_class == CoverDeviceClass.BLIND) # properties for prop in entity_data.props: @@ -257,6 +260,10 @@ class Cover(MIoTServiceEntity, CoverEntity): if current is not None: self._prop_pos_opening = pos > current self._prop_pos_closing = pos < current + # 针对airer类型设备反转位置 + if self._reverse_position: + pos = 100 - pos + pos = round(pos * self._prop_position_value_range / 100) await self.set_property_async(prop=self._prop_target_position, value=pos) @@ -284,6 +291,9 @@ class Cover(MIoTServiceEntity, CoverEntity): pos = 0 elif pos >= (100 - self._cover_dead_zone_width): pos = 100 + # 针对airer类型设备反转位置 + if self._reverse_position: + pos = 100 - pos return pos @property