Web Analytics

my-skylight-calendar

⭐ 140 stars Traditional Chinese by mohesles

🌐 語言

DIY 智慧家庭行事曆(Skylight 仿製版)

Sklylight calendar DIY Skylight

📖 介紹

最近我太太在社群媒體上頻繁看到智慧家庭行事曆(Skylight、Cozyla、Hearth)的廣告,甚至準備花超過 300 美元購買一台。在給她同意購買之前,我提出讓我先研究這些產品的機會。 我發現大多數產品雖然功能相似,但價格差異很大。最重要的是,我沒有看到任何我無法在 Home Assistant 中實現的突出功能。

目標: 一個通過老婆認可(WAF)、適合放在檯面上的觸控式行事曆,可深度整合至我們的智慧家庭,且無需每月付費。

💡 為什麼選擇自製?

選擇用 Home Assistant 自己動手做,有幾個優點勝過購買 Skylight/Hearth 顯示器:

🛠 硬體選擇

目前設計是讓儀表板可在任何 HD(1920x1080)顯示器上顯示。

我的需求是它「看起來像」skylight、要有觸控、適合放在檯面上,且能隨時搬動。因此我選用了下述硬體。不過你的情況可能不同,或許需要調整,例如你想放在平板上或其他設備。

我當初選擇的硬體,除了上述原因外,也希望將來可利用網路攝影機、喇叭和麥克風擴充功能。現在回想起來,如果重來一次我會有所不同,因為我還沒時間實現這些額外硬體構想。

✨ 功能

---

⚙️ 安裝指南

注意:本教學使用 YAML 套件,自動為你建立所有必要的輔助工具、腳本和變數。你不需手動建立它們。

1. 先決條件(HACS)

您必須安裝 HACS。請安裝以下 前端 整合:

2. 後端(大腦)

   homeassistant:
     packages: !include_dir_named packages
   ``
  • 在你的 HA 配置目錄中建立一個名為 packages 的資料夾(如果尚未存在)。
  • 從此儲存庫下載 packages/family_calendar.yaml
  • 將該檔案放入你的 packages/ 資料夾內。
  • 重新啟動 Home Assistant

3. 行事曆

你可以使用 Google 行事曆本地行事曆

#### 選項 A:本地行事曆(最簡單)

請注意,這是未經測試的,因為我只使用 Google 行事曆

  • 前往 設定 > 裝置與服務
  • 新增 本地行事曆 整合。
  • 建立名稱完全相符的行事曆:AliceBobCharlieDaisyFamily
如果你使用這些名稱,程式碼可以直接運作!*

#### 選項 B:Google 行事曆

  • 開啟 packages/family_calendar.yaml
  • 滾動至 add_google_calendar_event 腳本。
  • 更新 calendar_map 指向你真正的 Google 實體:
`yaml calendar_map: "Alice": "calendar.alice_gmail_com" "Bob": "calendar.bob_work_account" `

#### 設定假期

由於 Home Assistant 已更新,假期現在可透過 UI 新增:

  • 前往 設定 > 裝置與服務 > 新增整合 > Holiday
  • 選擇你的國家。
  • 檢查實體 ID(例如 calendar.holidays)。如果與預設不同,請在 dashboard YAML 內更新。

4. 控制面板(外觀設定)

  • 建立新的控制面板檢視(將檢視類型設為 Sections)。
  • dashboard.yaml 複製程式碼。
  • 自訂:
  • 搜尋並取代:person.alice 換成你實際的家庭成員實體。
  • 天氣:weather.home 換成你的天氣提供者。
  • 背景: 在 yaml 最底部更新圖片網址。

步驟 5:主題(可選)

如需取得特定字型(Ovo)效果:

  • 請確認你的 configuration.yamlfrontend: 下方有此行:
`yaml frontend: themes: !include_dir_merge_named themes `
  • 在你的設定目錄中建立一個名為 themes 的資料夾。
  • 下載 themes/skylight.yaml 並將其放入該資料夾中。
  • 重新啟動 Home Assistant。
  • 前往你的個人檔案(左下角的使用者圖示)並將 主題 更改為 Skylight
注意:此主題並不全面,請注意這一點


📐 運作原理(底層解析)

篩選邏輯

week-planner-card 本身並不支援即時隱藏特定日曆。為了解決這個問題,我使用了作為 Regex 篩選器的 Input Texts

當你點擊某人的按鈕時,會在 .(顯示全部)和 ^$(顯示無)之間切換其篩選器。

  • config-template-card 會動態地將這些變數注入到日曆卡片中。

事件建立腳本

「新增事件」彈窗使用單一腳本,負責處理多個人員及事件類型(全天與定時)。

yaml

Simplified Logic Example

target_calendar: "{{ calendar_map.get(states('input_select.calendar_select')) }}"

choose:

  • conditions: "All Day Event is ON"
action: calendar.create_event (start_date, end_date)
  • conditions: "All Day Event is OFF"
action: calendar.create_event (start_date_time, end_date_time)
``

注意事項

我最初的貼文只是為了提供一個高層次的概述,讓大家能夠根據自己的特定情境調整程式碼以使其運作。

特別是我這麼做的原因是因為每個顯示器和需求都不同。我無法為所有可能尺寸的顯示器、儀表板等進行開發。因此這套方案是為我所提到的顯示器或任何(1920x1080)設計,但應該可以編輯以適用於其他顯示器。

談到顯示器,我最初推薦那款是因為它當時在 Woot 特價,是取得觸控顯示器非常經濟的方式。現在可能不是如此,所以請使用任何適合你的顯示器。平板、觸控螢幕、手機都可以。你主要需要編輯的是儀表板。

--- Tranlated By Open Ai Tx | Last indexed: 2026-01-14 ---