configuration.yaml 并重启 Home Assistant 之后,依次进入“设置” › “家庭自动化” › “Home Assistant” › 与 HA 同步。正是这一步创建了下面每个控制按钮所调用的脚本。这个仪表盘有两个数据来源,下面每一步都要区分清楚。
| 来源 | 提供 |
|---|---|
投影机传感器 sensor.YOUR_PROJECTOR | 所有读数。电源、信号源、色彩模式、全部画面数值、HDR 与信号、镜头与几何校正、灯泡使用时长。登录并同步后立即生效,无需复制代码块。 |
应用同步的脚本 script.projpilot_YOURSERIAL_... | 所有控件。电源、信号源、色彩模式、镜头记忆以及您的场景。只有粘贴了复制代码块、重启了 Home Assistant 并轻点了“与 HA 同步”之后,它们才会存在。 |
这四个都在 HACS 默认商店中。在 Home Assistant 中:HACS › 前端 › 探索 & 下载存储库,搜索名称,点击下载,然后刷新浏览器。
| 搜索 | 用途 | 如果跳过 |
|---|---|---|
| Mushroom | 所有信息图块、控制按钮和场景图块 | 改用普通的 button 卡片。能用,只是外观更方正。 |
| button-card | 顶部主视觉及其实时标签 | 使用 entity 卡片,或使用细节较少的 Mushroom 模板卡片。 |
| card-mod | 绿色玻璃背景、边框和渐变 | 所有功能照常工作,只是少了发光效果。 |
| mini-graph-card | “维护”下的激光使用时间历史记录 | 改用内置的 history-graph 卡片。 |
本页的每段代码都用到两个占位符。先把你的找出来,剩下的就是复制粘贴。
sensor.YOUR_PROJECTOR → 在 Home Assistant 的“开发者工具” › “状态”中,筛选 projector_pilot。大致会是 sensor.projector_pilot_epson_qb1000b_qb1000w 这样的形式。YOURSERIAL → 打开应用,进入设置 › 家庭自动化 › Home Assistant。由序列号派生的 ID 就显示在那里,它也是每个同步脚本名称的中间部分:script.projpilot_YOURSERIAL_power_on、script.projpilot_YOURSERIAL_input_hdmi1,以此类推。在完成第 1 步的复制代码块和同步之后,您还可以在“开发者工具” › “状态”中筛选 projpilot,一次看到整个同步控件列表。
如果您想自己输入,视图本身的设置如下:
title: Projector Pilot views: - title: Projector Pilot path: projector-pilot icon: mdi:projector cards: []
先从一个只读取数据的开始,这样在发送任何命令之前,您就能确认实体 ID 是否正确。只要投影机传感器存在,这个图块就是实时的,无需复制代码块,也无需同步。添加卡片,选择在 YAML 中编辑,然后粘贴:
type: custom:mushroom-template-card
primary: Brightness
secondary: '{{ state_attr(''sensor.YOUR_PROJECTOR'',''brightness'') }}'
icon: mdi:brightness-6
icon_color: green
layout: vertical
fill_container: true
card_mod:
style: 'ha-card { background: rgba(18,26,20,0.60); border: 1px solid rgba(61,220,107,0.20);
border-radius: 16px; box-shadow: 0 6px 22px rgba(0,0,0,0.32); backdrop-filter: blur(8px);
min-height: 104px; }'
同样的写法可以读取传感器携带的 ~80 个属性中的任意一个:把 brightness 换成 contrast、gamma、color_temp、hdr_pq、lamp_hours,或任何您想放到图块上的属性。
保存。如果出现了真实的数字或文字,说明您的实体 ID 正确,下面的所有内容都能正常工作。如果显示空白,请返回第 2 步。
单纯的标题只是空白占位。这是一张 markdown 卡片,带有 card-mod 提供的渐变背景,正是它把一堆图块变成了有名称的分区。面板上的每个分区都以这样的一张卡片开头,只是标签和表情符号不同。
type: markdown
content: '🔌 **POWER & SOURCE**'
card_mod:
style: 'ha-card { background: linear-gradient(135deg, rgba(61,220,107,0.30), rgba(16,120,60,0.30));
border: 1px solid rgba(61,220,107,0.45); border-radius: 14px; box-shadow: 0 6px 20px rgba(0,0,0,0.3); }
ha-markdown { padding: 12px 20px !important; } ha-markdown p { margin: 0 !important;
letter-spacing: 3px; color: #eafff0; font-size: 14px; font-weight: 700; }'
修改表情符号代码和标签文字即可;每个分区的 card-mod 代码块都完全相同。
这个按钮会发送命令,而不只是读取数值,所以脚本必须先存在。它调用 script.projpilot_YOURSERIAL_power_on,而应用只有在您把复制代码块粘贴到 configuration.yaml、重启 Home Assistant 并轻点与 HA 同步之后,才会写入这个脚本。
type: custom:mushroom-template-card
primary: Power On
icon: mdi:power
icon_color: green
layout: vertical
fill_container: true
tap_action:
action: call-service
service: script.projpilot_YOURSERIAL_power_on
card_mod:
style: 'ha-card { background: linear-gradient(135deg, rgba(61,220,107,0.16), rgba(16,90,46,0.20));
border: 1px solid rgba(61,220,107,0.34); border-radius: 16px; box-shadow: 0 6px 22px rgba(0,0,0,0.32);
min-height: 92px; }'
关机、画面遮蔽、HDMI 1、HDMI 2、A/V 静音、某个色彩模式或某个镜头记忆,都使用同一张卡片:只需修改标签、图标和 service。
面板顶部的主视觉是一个 button-card:醒目的电源状态、综合多个属性生成的单行摘要,以及作用于整张卡片而不仅仅是边框的绿色玻璃效果。
type: custom:button-card entity: sensor.YOUR_PROJECTOR name: Epson QB1000 show_state: true show_label: true size: 48px state_display: '[[[ return entity.state==''on'' ? ''Powered on'' : ''Standby''; ]]]' label: '[[[ var a=entity.attributes; return (a.input||''-'')+'' • ''+(a.color_mode||''-'')+ '' • ''+(a.video_range||''-'')+'' • ''+(a.lamp_hours||0)+'' h''; ]]]' styles: card: - height: 176px - background: linear-gradient(135deg, rgba(61,220,107,0.32), rgba(11,64,34,0.6)) - border: 1px solid rgba(61,220,107,0.5) - border-radius: 22px - box-shadow: 0 12px 36px rgba(0,0,0,0.42) - padding: 20px state: - color: '[[[ return entity.state==''on'' ? ''#3ddc6b'' : ''#8a9'' ]]]'
这里只保留了每次安装会变化的部分。完整的卡片还会设置图标、名称和标签的网格位置,完整内容请参阅第 10 步中的下载文件。
更喜欢更纤薄的横条?mushroom-chips-card 用一行小标签就能完成同样的工作:电源状态、信号源、色彩模式、视频范围和灯泡使用时长,每个都是读取 state_attr('sensor.YOUR_PROJECTOR', ...) 的模板。面板顶部二选一,不要同时使用。
您在应用中保存的每个场景,在同步后都会成为一个名为 script.projpilot_YOURSERIAL_scene_<id> 的脚本,而场景图块就是第 6 步中的同一张控制按钮卡片,换上场景名称和图标即可。
type: custom:mushroom-template-card
primary: Movie Night
icon: mdi:movie-open
icon_color: green
layout: vertical
fill_container: true
tap_action:
action: call-service
service: script.projpilot_YOURSERIAL_scene_YOURSCENE1
card_mod:
style: 'ha-card { background: linear-gradient(135deg, rgba(61,220,107,0.16), rgba(16,90,46,0.20));
border: 1px solid rgba(61,220,107,0.34); border-radius: 16px; box-shadow: 0 6px 22px rgba(0,0,0,0.32);
min-height: 92px; }'
把 YOURSCENE1 替换为应用同步控件列表中该场景显示的 ID。每个场景一个图块,放在 horizontal-stack 中。
投影机传感器和其他传感器一样会被 Home Assistant 记录,所以 lamp_hours 天然带有历史数据。无需额外传感器,无需辅助实体,也无需预先配置,放在“维护”分区下即可。
type: custom:mini-graph-card
entities:
- entity: sensor.YOUR_PROJECTOR
attribute: lamp_hours
name: Laser hours
name: Laser hours
icon: mdi:lightbulb-on-outline
line_color: '#3ddc6b'
line_width: 4
hours_to_show: 336
points_per_hour: 0.5
height: 96
animate: true
card_mod:
style: 'ha-card { background: rgba(18,26,20,0.60); border: 1px solid rgba(61,220,107,0.20);
border-radius: 16px; box-shadow: 0 6px 22px rgba(0,0,0,0.32); backdrop-filter: blur(8px); }'
336 小时即两周。激光和灯泡使用时长是稳步增长的,不会忽高忽低,所以两周的窗口通常足以看出趋势,同时图表又不会显得过于平坦。
完整视图包含本页顶部截图中的所有分区和所有卡片,其中用占位符代替了实体 ID。
YOUR_PROJECTOR 替换为第 2 步中得到的投影机传感器实体 ID,把 YOURSERIAL 替换为第 2 步中得到的由序列号派生的 ID。YOURSCENE1、YOURSCENE2 和 YOURSCENE3 替换为您自己的三个场景 ID,或者根据您实际拥有的场景数量添加或删除图块。configuration.yaml、重启 Home Assistant 并轻点“与 HA 同步”,否则不会有反应。请对照传感器实际携带的属性名称进行检查:打开“开发者工具” › “状态”,找到您的 sensor.YOUR_PROJECTOR 实体并查看其属性列表。像 HDR PQ 或 HDR HLG 这类读数,只有在投影机正在接收对应类型的信号时才会有值,所以这两项显示未知可能是正常的,而不是出了故障。如果整个传感器的数据都很少,请唤醒投影机:待机中的设备发布的信息非常少。
您可能还没有粘贴复制代码块,或者粘贴之后没有重启 Home Assistant。控制和场景按钮调用的是应用写入的脚本,而这些脚本只有在应用的设置 › 家庭自动化 › Home Assistant中,复制代码块已粘贴到 configuration.yaml、Home Assistant 已重启一次,并且轻点了与 HA 同步之后才会存在。请先在应用中运行测试连接,它会告诉您代码块是否存在,免得您去排查并不存在的仪表盘错误。
请筛选 projpilot,而不是完整序列号,这样更容易看到整个列表。如果您最近添加的控件或场景缺失,请再次轻点与 HA 同步;它会就地更新,无需重新设置。如果删除场景后,列表里残留着失效的旧脚本,请使用应用中的移除孤立脚本。
命名规律是固定的,但中间部分不是。您的传感器以您自己投影机的型号命名,每个脚本都带有您自己投影机的序列号,而不是本页面上的占位符。请像第 2 步那样,从“开发者工具” › “状态”和应用的 Home Assistant 界面获取这两项,并使用它们,而不是照抄示例文本。
家庭自动化是一次性购买的附加组件。无需订阅,无需账号,无需云端。一次购买,即可在您拥有的所有平台上解锁。
不需要。当您在应用中轻点“与 HA 同步”时,它会直接在 Home Assistant 中为您构建一个现成的 Projector Pilot 仪表盘:包含实时的投影机传感器,以及每个控件和场景对应的按钮,并以 Projector Pilot 的名称出现在侧边栏中。本页面适用于手动打造更丰富的绿色玻璃风格版本,或自定义同步创建的内容。
要还原截图中的外观,需要安装:Mushroom、button-card、card-mod 和 mini-graph-card。不过底层控制功能并不依赖它们:每个按钮都只是一次普通的脚本调用,自定义卡片只是外层的样式。
您在应用中登录并同步后,投影机传感器就会立即发布读数,所以信息图块马上就有实时数据。而控制和场景按钮调用的脚本,需要您把应用的复制代码块粘贴到 configuration.yaml、重启 Home Assistant,并轻点一次“与 HA 同步”之后,才会存在于 Home Assistant 中。
命名规律是一样的,但具体字符不会一样。您的投影机传感器以投影机的型号命名,每个脚本则以投影机的序列号命名。本页面凡是写着 YOUR_PROJECTOR 的地方,请填入您自己传感器的实体 ID;凡是写着 YOURSERIAL 的地方,请填入应用 Home Assistant 界面上显示的、由序列号派生的 ID。