找回密码
 立即注册

微信扫码登录

搜索
查看: 1876|回复: 30

[业界动态] 关于 HA 2026.6.0 引入未声明的破坏性更新

[复制链接]

20

主题

534

回帖

4659

积分

论坛UI达人

积分
4659
金钱
4095
HASS币
60
发表于 2026-7-15 15:31:32 | 显示全部楼层 |阅读模式

说明:

  • Home Assistant 2026.6.0 版本中,合并了一个内部 PR:#170560
  • 该 PR 在官方 changelog 中 没有任何记录,也 没有被标记为 Breaking Change,因此用户在升级时完全无法得知它会带来行为变化。
  • 然而,这个 PR 实际上引入了一个 破坏性更新:实体标识符(实体 ID) 会在某些情况下被自动重建,并加入区域标识符作为前缀。





更新了什么:

从 2026.6.0 开始,当系统触发“实体重建逻辑”时(例如设备重新添加、unique_id 变化、集成重新注册等),实体 ID 会被自动改写为:
<domain>.<area>_<original_object_id>

例如:
原实体 ID:
sensor.tianyuan_nong_li_lunar_calendar

被改写为:
sensor.ke_ting_tianyuan_nong_li_lunar_calendar

也就是说,系统自动将实体所在区域(如“客厅”)加入到了实体 ID 前缀中。

而 xiaom_home 集成中的实体会直接改写 实体标识符(实体ID):
例如:
原实体 ID:
light.yeelink_cn_585311441_ceil38_s_2_light

被改写为:
light.ci_wo_ci_wo_xi_ding_deng_xi_ding_deng

这可能与实体ID命名方式有关。



为什么这是破坏性更新:

因为实体 ID 是 Home Assistant 中最核心的引用标识符,任何自动化、脚本、模板、Lovelace 卡片、第三方系统(如 Node-RED、AppDaemon、HomeKit、Google Assistant)都依赖它。
实体 ID 被自动改写后,会导致:
  • 自动化引用旧实体 ID → 全部失效
  • 脚本引用旧实体 ID → 全部失效
  • Lovelace 卡片引用旧实体 ID → 全部失效
  • 模板引用旧实体 ID → 全部失效
  • YAML 配置引用旧实体 ID → 全部失效
  • 历史记录与统计数据断裂
这是典型的 Breaking Change,但官方并未声明。



影响范围:

  • 该行为从 2026.6.0 开始存在,在 2026.7.1、2026.7.2中仍然有效。
  • 只要满足实体重建条件,就会触发区域前缀注入。




建议:

  • 非必须,近期不要修改 UI 界面。
  • 非必须,不要重新添加设备,和新建实体。
  • 非必要请勿重置实体标识符(实体ID)。





讨论链接:#173125

评分

参与人数 2金钱 +36 HASS币 +10 收起 理由
a2633063 + 16 论坛有你更精彩!
admin + 20 + 10 感谢楼主分享!

查看全部评分

回复

使用道具 举报

3

主题

179

回帖

1435

积分

管理员

积分
1435
金钱
1253
HASS币
0
发表于 2026-7-15 16:43:33 | 显示全部楼层
感谢分享,官方这是一如既往的挖坑埋雷啊!
回复

使用道具 举报

20

主题

534

回帖

4659

积分

论坛UI达人

积分
4659
金钱
4095
HASS币
60
 楼主| 发表于 2026-7-15 16:53:38 | 显示全部楼层
admin 发表于 2026-7-15 16:43
感谢分享,官方这是一如既往的挖坑埋雷啊!

是的,该事件影响很大,讨论的人也很多。
官方一直在讨论,实体ID 的命令,一直未落实,但愿能尽可能最小影响下,重构 实体ID 的命名,或者说保留现状,回滚 #170560。
回复

使用道具 举报

207

主题

3329

回帖

1万

积分

元老级技术达人

积分
10980
金钱
7429
HASS币
80
发表于 2026-7-15 16:58:11 | 显示全部楼层
其实ha不应该用实体id做id,应该在底层在关联个纯id,类似qq号码这样的纯数字做底层id,这个不可以修改,自动化和脚本这些代码里还是显示实体id,可读性强,如果修改了实体id,ha系统就触发全局替换,因为之前做了强关联匹配,这样应该好点
公众号:Home Assistant分享
回复

使用道具 举报

20

主题

534

回帖

4659

积分

论坛UI达人

积分
4659
金钱
4095
HASS币
60
 楼主| 发表于 2026-7-15 17:02:51 | 显示全部楼层
bugensui 发表于 2026-7-15 16:58
其实ha不应该用实体id做id,应该在底层在关联个纯id,类似qq号码这样的纯数字做底层id,这个不可以修改,自 ...

unique_id  就是你说的 纯ID,不对用户开放。
entity_id 这个属于用户层 ID,表示实体的唯一性,这东西在现有框架下,是不可或缺的。

是的,重置实体ID后能做到全局替换,这一实现,能解决很多问题。
回复

使用道具 举报

207

主题

3329

回帖

1万

积分

元老级技术达人

积分
10980
金钱
7429
HASS币
80
发表于 2026-7-15 17:09:35 | 显示全部楼层
hhh. 发表于 2026-7-15 17:02
unique_id  就是你说的 纯ID,不对用户开放。
entity_id 这个属于用户层 ID,表示实体的唯一性,这东西在 ...

系统全局替换,其实很简单,在提交修改时,查询之前的实体id记录,然后替换,就是系统架构设计的问题。好像也就那几个yaml文件里的查找替换,场景,自动化、脚本,仪表盘这些。
公众号:Home Assistant分享
回复

使用道具 举报

10

主题

101

回帖

947

积分

论坛技术达人

积分
947
金钱
826
HASS币
50
发表于 2026-7-15 17:13:16 | 显示全部楼层
怪不得,怎么名称变了,原来这个原因。
回复

使用道具 举报

20

主题

534

回帖

4659

积分

论坛UI达人

积分
4659
金钱
4095
HASS币
60
 楼主| 发表于 2026-7-15 17:21:34 | 显示全部楼层
bugensui 发表于 2026-7-15 17:09
系统全局替换,其实很简单,在提交修改时,查询之前的实体id记录,然后替换,就是系统架构设计的问题。好 ...

系统全局替换不难,但是如node-red第三方应用,就得手动修改了。
所以说,这种唯一性的字段,还是不要更改的好,或者说有更高级合理的方案来实现。
回复

使用道具 举报

207

主题

3329

回帖

1万

积分

元老级技术达人

积分
10980
金钱
7429
HASS币
80
发表于 2026-7-15 17:37:48 | 显示全部楼层
hhh. 发表于 2026-7-15 17:21
系统全局替换不难,但是如node-red第三方应用,就得手动修改了。
所以说,这种唯一性的字段,还是不要更 ...

确实如此
公众号:Home Assistant分享
回复

使用道具 举报

0

主题

8

回帖

52

积分

注册会员

积分
52
金钱
44
HASS币
0
发表于 2026-7-16 09:20:18 | 显示全部楼层
这挖坑埋雷啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian ( 晋ICP备17001384号-1 )|网站地图

GMT+8, 2026-8-7 19:30 , Processed in 0.014048 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表