Skip to content

fix: add migration step for config entry#972

Open
caibinqing wants to merge 2 commits intoXiaoMi:mainfrom
caibinqing:migrate
Open

fix: add migration step for config entry#972
caibinqing wants to merge 2 commits intoXiaoMi:mainfrom
caibinqing:migrate

Conversation

@caibinqing
Copy link
Copy Markdown
Contributor

#953 的一处变更修改了部分实体的 unique_id ,这里添加一个迁移步骤,避免用户需要重新配置大量界面自动化等。

这里有大段代码(L379-L426) 我是复制自上方的 async_setup_entry,或许可以整理优化一下。

@SusanPhevos
Copy link
Copy Markdown
Contributor

I don't think it is urgent or neccessary. Maybe we can keep it as a patch and do not merge it into the main branch.

@caibinqing
Copy link
Copy Markdown
Contributor Author

👌

@FuJuntao
Copy link
Copy Markdown

I don't think it is urgent or neccessary. Maybe we can keep it as a patch and do not merge it into the main branch.

Why is it not necessary? Feels like a pretty annoying bug to me

@tufeikafei
Copy link
Copy Markdown

tufeikafei commented Apr 27, 2025

感谢大佬修复,不过 官方 不知道是不是没用过ha?
这么大的bug,竟然说没必要,实体ID可是等于身份证的东西,这个随便一遍,设备多的 如果用了这个集成,并且配置了自动化的,估计要哭晕在厕所了。。。。
不知道咱开发是不是 自己没有那么多设备?没配置过对应的? 造孽~!!!

@maodun96
Copy link
Copy Markdown

官方就给个链接,咋弄也没说...也是有点离谱

@caibinqing
Copy link
Copy Markdown
Contributor Author

caibinqing commented Apr 28, 2025

注意:这不是一个临时一次性使用的补丁,使用之后不能直接删除补丁代码(就是指不能直接还原到主线版本,需要一些额外操作)。

使用方法:
如果你已经升级到了0.3.0,需要

  1. 先回退到0.2.4重启
  2. 然后删除所有(0.3.0创建出来的)不可用的实体 (可以批量删除的)

(就是要还原到更新前的状态,如果没更新就从这里开始)

  1. 更新到0.3.0并合并这个PR
  2. 再重启就迁移完成了。

因为这里修改了config_entry的版本号,直接切换回主线版本会报错。
先临时提供一个手动操作的步骤,可以帮你在使用这个PR迁移完成之后 切换回主线版本。

  1. 集成代码切换回主线版本(先不要重启)
  2. 前往你的HA配置目录(假设是/config),打开 /config/.storage/core.config_entries 文件
  3. 找到 "domain":"xiaomi_home" 的那行
  4. 把它的 "version":2 修改成 "version":1
  5. 重启HA

@375088843
Copy link
Copy Markdown

375088843 commented Apr 28, 2025

注意:这不是一个临时一次性使用的补丁,使用之后不能直接删除补丁代码(就是指不能直接还原到主线版本)。

使用方法: 如果你已经升级到了0.3.0,需要

  1. 先回退到0.2.4重启
  2. 然后删除所有(0.3.0创建出来的)不可用的实体

(就是要还原到更新前的状态,如果没更新就从这里开始)

  1. 然后更新到0.3.0并合并这个PR
  2. 再重启就迁移完成了。

因为这里修改了config_entry的版本号,直接切换回主线版本会报错。 先临时提供一个手动操作的步骤,可以帮你在使用这个PR迁移完成之后 切换回主线版本。

  1. 集成代码切换回主线版本
  2. 前往你的HA配置目录(假设是/config),打开 /config/.storage/core.config_entries 文件
  3. 找到 "domain":"xiaomi_home" 的那行
  4. 把它的 "version":2 修改成 "version":1
  5. 重启HA

按这个操作后,是否就可以切换到main版本再解决下面这个问题?
image
@ @caibinqing

@caibinqing
Copy link
Copy Markdown
Contributor Author

按这个操作后,是否就可以切换到main版本再解决下面这个问题? image @ @caibinqing

我不确定你这个 Unknown error occurred 是什么问题。。

我上面的后半部分的第1步就已经切换回主线版本了

@heiye07
Copy link
Copy Markdown

heiye07 commented May 1, 2025

118个实体不可用 好好好

@zy900906
Copy link
Copy Markdown

这个方案是不是只适用于HA里的自动化,如果是HA+Node-RED是不是没效果?

@caibinqing
Copy link
Copy Markdown
Contributor Author

这个方案是不是只适用于HA里的自动化,如果是HA+Node-RED是不是没效果?

不,应该都有意义的。这个就是为了保持 entity_id 不变,原地更新 unique_id

@Dami19971
Copy link
Copy Markdown

补丁打上后 提示HA迁移失败

@caibinqing
Copy link
Copy Markdown
Contributor Author

补丁打上后 提示HA迁移失败

如果之前升级过 0.3 ,需要先回退到0.2.4重启,然后手动删除所有0.3创建出来的实体(在实体里筛选不可用的批量删除)
然后再升级0.3同时合并补丁

@phase-Nine
Copy link
Copy Markdown

主線都升到0.3.2了,這個補釘整合進去了嗎?

@PerryLayne
Copy link
Copy Markdown

我觉得这不紧急也不必要。或许我们可以把它保留为一个补丁,不合并到主分支。

能不能把这个补丁整合进去120多个设备,让我重新弄?
这不是搞我心态吗。
我不明白官方出于什么觉得没必要的
卡在0.24,希望能把这个补丁整合进去

@MarcPolaris
Copy link
Copy Markdown

主線都升到0.3.3了,這個補釘整合進去了嗎?

@phase-Nine
Copy link
Copy Markdown

主線都升到0.3.3了,這個補釘整合進去了嗎?

應該還沒有,不知道官方團隊有沒有想要處理!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.