configuration.yaml 並重新啟動 Home Assistant。這一步會建立下方每顆控制按鈕所呼叫的指令碼。這個儀表板由兩個來源提供資料,下面每個步驟都會用到兩者的差異。
| 來源 | 提供 |
|---|---|
投影機感測器,sensor.YOUR_PROJECTOR | 每一項讀數:電源、輸入、色彩模式、所有畫質數值、HDR 與訊號、鏡頭與幾何校正、燈泡使用時數。登入並同步後立即生效,不需要複製區塊。 |
App 同步的指令碼,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 → 開啟 App,進入設定 › 居家自動化 › 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,而這個指令碼是在您把 App 的複製區塊貼入 configuration.yaml、重新啟動 Home Assistant 並點選與 HA 同步之後,才由 App 寫入的。
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', ...) 的範本。面板頂端請擇一使用,不要兩者並用。
您在 App 中儲存的每個場景,在同步後都會成為名為 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 換成 App 同步控制清單中該場景所顯示的 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 尚未重新啟動。控制與場景按鈕所呼叫的是 App 寫入的指令碼,而這些指令碼必須在 App 的設定 › 居家自動化 › Home Assistant 已將複製區塊貼入 configuration.yaml、Home Assistant 重新啟動一次,並點選與 HA 同步之後才會存在。請先在 App 中執行測試連線:它會告訴您區塊是否存在,免得您白白去找儀表板的錯誤。
請以 projpilot 篩選,而不是完整序號,這樣更容易看到整份清單。如果您最近新增的控制或場景不見了,請再點選與 HA 同步一次;它會就地更新,不需要重新設定。如果您刪除場景後,舊的失效指令碼讓清單變得雜亂,請使用 App 中的移除孤立指令碼。
格式是固定的,中間的部分則不是。您的感測器是依您自己投影機的型號命名,而每個指令碼都帶有您自己投影機的序號,不是本頁上的預留位置。請依步驟 2 的方式,從開發者工具 › 狀態和 App 的 Home Assistant 畫面取得這兩者,並使用它們,而不是照打範例文字。
居家自動化是一次性的附加功能。沒有訂閱、沒有帳號、沒有雲端。一次購買,即可在您擁有的所有平台上解鎖。
不用。當您在 App 中點選「與 HA 同步」時,它會直接在 Home Assistant 中為您建立現成的 Projector Pilot 儀表板:包含即時的投影機感測器,以及每個控制項與場景各一顆按鈕,並以 Projector Pilot 的名稱出現在側邊欄。本頁則是教您手動打造更豐富的綠色玻璃質感版本,或自訂同步所建立的內容。
若要呈現截圖中的外觀,需要:Mushroom、button-card、card-mod 與 mini-graph-card。但這些都不是控制功能運作的必要條件,每顆按鈕都只是單純的指令碼呼叫,自訂卡片只是外觀上的加分。
只要您在 App 中登入並同步,投影機感測器就會立即發布讀數,因此資訊方塊馬上就有即時資料。至於控制與場景按鈕,所呼叫的指令碼要等您把 App 的「複製區塊」貼進 configuration.yaml、重新啟動 Home Assistant,並點選一次「與 HA 同步」之後,才會存在於 Home Assistant 中。
格式是一樣的,但實際的字元不會相同。您的投影機感測器是依投影機的型號命名,而每個指令碼則依投影機的序號命名。本頁寫著 YOUR_PROJECTOR 的地方,請填入您自己感測器的實體 ID;寫著 YOURSERIAL 的地方,請填入 App 的 Home Assistant 畫面上顯示、由序號衍生的 ID。