diff --git a/custom_components/xiaomi_gateway3/core/devices.py b/custom_components/xiaomi_gateway3/core/devices.py index 291aa903..ef59a933 100644 --- a/custom_components/xiaomi_gateway3/core/devices.py +++ b/custom_components/xiaomi_gateway3/core/devices.py @@ -50,8 +50,8 @@ - `led` - control device led light - `wireless` - change mode from wired to wireless (decoupled) - `power_on_state` - default state when electricity is supplied -- `contact` - for contact sensor -- `moisture` - for water leak sensor +- `contact` - for door/windor sensor (zigbee2mqtt - contact, hass - door or window) +- `water_leak` - for water leak sensor (zigbee2mqtt - water_leak, hass - moisture) Nice project with MIoT spec description: https://home.miot-spec.com/ """ diff --git a/custom_components/xiaomi_gateway3/hass/entity.py b/custom_components/xiaomi_gateway3/hass/entity.py index 4755470d..0bdbed90 100644 --- a/custom_components/xiaomi_gateway3/hass/entity.py +++ b/custom_components/xiaomi_gateway3/hass/entity.py @@ -69,7 +69,6 @@ def __init__(self, device: "XDevice", conv: "BaseConv"): hw_version=device.extra.get("hw_ver"), via_device=via_device, ) - # self._attr_entity_registry_enabled_default = conv.enabled in (True, None) self._attr_has_entity_name = True self._attr_name = attr_human_name(conv.attr) self._attr_should_poll = False @@ -77,8 +76,13 @@ def __init__(self, device: "XDevice", conv: "BaseConv"): setup_entity_description(self, conv) - entity_name = device.extra.get("entity_name") or device.uid - self.entity_id = f"{conv.domain}.{entity_name}_{conv.attr}" + if entity_name := device.extra.get("entity_name"): + if entity_name.endswith(conv.attr): + self.entity_id = f"{conv.domain}.{entity_name}" + else: + self.entity_id = f"{conv.domain}.{entity_name}_{conv.attr}" + else: + self.entity_id = f"{conv.domain}.{device.uid}_{conv.attr}" self.on_init()