『HomeAssistant』求助&解答专区

[已解决] Xiaomi Gateway 3 自定义转换器(xiaomi_gateway3.py)失效修复方法
本帖最后由 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行后面增加以下代码      
  1.         from ..core import device as _device
  2.         if getattr(xiaomi_gateway3, "DEVICES", None):
  3.             _device.DEVICES = xiaomi_gateway3.DEVICES
复制代码

修改后
  1. def import_custom_converters(hass: HomeAssistant):
  2.     # Fix HA 2026.9.0 https://github.com/home-assistant/core/pull/180967
  3.     # Idea from homeassistant.loader._async_mount_config_dir
  4.     sys.path.insert(0, hass.config.config_dir)
  5.     try:
  6.         import xiaomi_gateway3  # noqa: F401, PLC0415

  7.         # LOCAL PATCH: core.device 在「包导入时」就把 DEVICES 绑定了,
  8.         # 那时 config_dir 还没进 sys.path,外部 spec 被静默忽略。
  9.         # 这里把模块全局重新绑定,让自定义 spec 生效。
  10.         from ..core import device as _device
  11.         if getattr(xiaomi_gateway3, "DEVICES", None):
  12.             _device.DEVICES = xiaomi_gateway3.DEVICES
  13.     except ModuleNotFoundError:
  14.         pass
  15.     except Exception as e:
  16.         _LOGGER.error("Can't load external converters", exc_info=e)
  17.     sys.path.remove(hass.config.config_dir)
复制代码

下面是修改好的文件,直接解压后替换custom_components/xiaomi_gateway3/hass文件夹里的hass_utils.py,然后重启就行。




评分

倒序浏览 看全部 全部回复
暂无回复,快来抢沙发
回复 1收藏