#3828·homebridge

重新装入单个插件而不是重新启动整个家用桥

作者: justjam2013创建于 2025年7月16日更新于 2025年8月29日
标签enhancementvision
  • 现状

当一个插件被更新或配置被更改时,整个家用桥会重新启动以重新装入插件. 在Homebridge倒下期间,由Homebridge所桥接的所有设备都无法使用,而不仅仅是被修改后插件所支持的设备. 这意味着任何涉及HB设备的自动化都会失败.

拟议变动

动态地重新装入单个插件,而无需完全重启Homebridge,以将Homebridge的不可用性降到最低.

++ 附加上下文

[Node.js:使用request.cache刷新一个模块] (https://gemmablack.dev/nodejs-rerefreeting-a-module-using-requerecache).

https://GitHub.com/homebridge/homebridge/blob/be3852ee20be8b39a192b6c73e06fb2e53e8894b/src/plugin.ts#L228

cont 主Path = path.join(此为.pluginPath,此为.main);
. . . . . . . .
const 插件Modules = this.isESM? 等  importDynamic(pathToFileURL (mainPath.href)):需要(mainPath);

因此,“mainPath”需要保存:

. 主Path号; . . . . . . . . 3⁄4 ̄ ̧漯B .

由于 " 插件摩多列斯 " 是按要求装入的,似乎可以这样做:

公开自动装入( ): 承诺 < void > {
删除request.cache[requere.resolve(此.mainPath)];
3⁄4 ̄ ̧漯B
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?

这将从缓存中删除此插件, 然后调用加载( ) 将插件装入缓存

Homebridge API随后需要更新,这样HB UI就可以请求在更新后或改变其配置后重新加载一个插件.

内容来源: homebridge/homebridge