本帖最后由 Howeverbut 于 2026-9-15 01:24 编辑
## 环境- Home Assistant 2026.9.2 (HAOS)
- Xiaomi Gateway 3 集成 4.2.3
- /config/xiaomi_gateway3.py 自写外部转换器
## 现象重启后自定义转换器完全没生效:设备走的还是内置 spec,自己在 /config/xiaomi_gateway3.py 里定义的属性和键名一个都没出来,实体全是 unavailable;控制台也不报错。
修改文件:/config/custom_components/xiaomi_gateway3/hass/hass_utils.py在最后面330行后面增加以下代码
- from ..core import device as _device
- if getattr(xiaomi_gateway3, "DEVICES", None):
- _device.DEVICES = xiaomi_gateway3.DEVICES
复制代码
修改后
- def import_custom_converters(hass: HomeAssistant):
- # Fix HA 2026.9.0 https://github.com/home-assistant/core/pull/180967
- # Idea from homeassistant.loader._async_mount_config_dir
- sys.path.insert(0, hass.config.config_dir)
- try:
- import xiaomi_gateway3 # noqa: F401, PLC0415
- # LOCAL PATCH: core.device 在「包导入时」就把 DEVICES 绑定了,
- # 那时 config_dir 还没进 sys.path,外部 spec 被静默忽略。
- # 这里把模块全局重新绑定,让自定义 spec 生效。
- from ..core import device as _device
- if getattr(xiaomi_gateway3, "DEVICES", None):
- _device.DEVICES = xiaomi_gateway3.DEVICES
- except ModuleNotFoundError:
- pass
- except Exception as e:
- _LOGGER.error("Can't load external converters", exc_info=e)
- sys.path.remove(hass.config.config_dir)
复制代码
下面是修改好的文件,直接解压后替换custom_components/xiaomi_gateway3/hass文件夹里的hass_utils.py,然后重启就行。