记HomeAssistant的面板制作

#default

在之前,我的Home Assistant的作用只是连接美的的热水器,然后通过巴法云,让小爱可以控制。但现在,我准备从小米转投VIVO(手机),因此,需要把所有小米实体部署到HA上,再通过VIVO Bridge连接到VIVO,达成原生级别的体验。

HA自带的面板实在有点丑,因此,我决定使用MushRoom自建面板。

当然,我们是不可能自己一条一条yaml写的,这太伤神了。

因此,我用了OpenCode,让GLM-5.1帮我写。

具体做法是,在HA后台建立一个长期API Token,把URL和Key给它,然后告诉它我要做MushRoom面板。它会自动拉取所有实体,然后按房间生成配置。

面板结构

整个过程就是跟AI反复拉扯。先生成一版,看看效果,再告诉它哪些实体分错了房间、哪些卡片类型不对,让它改。

最终的面板按房间分了8个视图:首页、书房、厨房、电梯间、客厅、次卧、客卫、主卫,每个视图用tab切换。

首页

首页放了chips卡片做全局概览:天气、室内温湿度、人体感应状态,然后是快捷控制区——灯、空调、风扇、热水器、晾衣架、小爱音箱,基本就是日常最常用的设备。

房间视图

每个房间视图的开头都是一组chips,展示该房间的温湿度、人体感应、光照度等环境数据。然后按类别分组:灯光、温控(空调+风扇)、开关、其他设备。

一些设计上的选择:

  • 温湿度chips: 用Jinja2模板动态变色,温度>30°C显示红色,<18°C显示蓝色,其余绿色
  • 人体感应: 有人时图标亮绿、显示"有人",无人时灰显、显示"无人"
  • 灯光卡片: 支持亮度和色温调节
  • 风扇卡片: 显示百分比控制
  • 小爱音箱: 用media-player卡片,带播放控制和音量调节
  • 空调: 用climate卡片,支持所有模式

踩到的坑

  1. 实体ID太长。小米米家的实体ID是xiaomi_cn_xxxxx这种格式,又臭又长,一不小心就写错。好在让AI自己从API拉取就不会手误。

  2. HA的区域注册表读不到。本来想让AI直接读取HA的area assignment来自动归类实体,但试了/api/areas/api/config/area_registry、Jinja模板的area_id属性,全部404或返回空值。最后只能人工逐个修正。

  3. 房间搞混了。一开始AI把"客厅"和"书房"的实体分反了,后来手动纠正。有些墙壁开关长得一样(Topwit RZW25),光靠entity_id看不出属于哪个房间,需要一个个核对。

  4. 冷暖风扇fan.shhf_cn_573259910_sfla12_s_8_fan这个风扇实体外,还关联了灯和氛围灯两个light实体:light.shhf_cn_573259910_sfla12_s_2_lightlight.shhf_cn_573259910_sfla12_s_9_ambient_light,这种一对多的情况需要自己留意。

最终效果

677行yaml,覆盖8个房间视图,所有小米设备都上了面板。接下来就是在HA里编辑Dashboard,选择YAML模式,把配置粘进去即可。

如果HA的区域功能配好了,理论上可以做到实体的自动归类。但现在看来,人工确认+AI生成已经是比较靠谱的方案了。