Web Analytics

my-skylight-calendar

⭐ 140 stars Vietnamese by mohesles

🌐 Ngôn ngữ

Lịch Gia Đình Thông Minh Tự Làm (Bản Sao Skylight)

Lịch Skylight DIY Skylight

📖 Giới thiệu

Gần đây vợ tôi liên tục bị quảng cáo trên mạng xã hội về các loại lịch thông minh cho gia đình (Skylight, Cozyla, Hearth) và đã sẵn sàng chi hơn 300 đô cho một chiếc. Trước khi đồng ý, tôi xin cô ấy cho tôi thời gian để nghiên cứu về chúng. Tôi nhận ra hầu hết các sản phẩm đều cung cấp chức năng tương tự nhưng giá cả lại khác biệt đáng kể. Quan trọng nhất, tôi không thấy tính năng nào nổi bật mà tôi không thể tự triển khai trên Home Assistant.

Mục Tiêu: Một lịch cảm ứng để bàn thân thiện, được vợ chấp nhận (WAF), tích hợp sâu vào hệ thống nhà thông minh mà không mất phí hàng tháng.

💡 Tại sao nên tự làm (DIY)?

Chọn hướng tự làm với Home Assistant mang lại nhiều lợi ích so với việc mua màn hình Skylight/Hearth:

🛠 Lựa chọn phần cứng

Hiện tại, hệ thống này được xây dựng để hiển thị bảng điều khiển trên bất kỳ màn hình HD (1920x1080) nào.

Trong trường hợp của tôi, yêu cầu là nó phải "trông giống" Skylight, có cảm ứng, để bàn, và có thể di chuyển đến các vị trí khác nhau. Vì vậy, tôi đã chọn phần cứng như mô tả bên dưới. Tuy nhiên, nhu cầu của bạn có thể khác và bạn sẽ cần điều chỉnh cho phù hợp, ví dụ nếu bạn muốn hiển thị trên máy tính bảng hoặc thiết bị khác.

Phần cứng tôi chọn ban đầu dựa trên các tiêu chí trên cộng với hi vọng có thể mở rộng chức năng với webcam, loa và micro. Hiện tại, nhìn lại tôi có thể sẽ làm khác đi, vì chưa có thời gian hiện thực hóa các ý tưởng phần cứng bổ sung này.

✨ Tính năng

---

⚙️ Hướng dẫn cài đặt

Lưu ý: Thiết lập này sử dụng một YAML Package để tự động tạo tất cả các helper, script, và biến cần thiết cho bạn. Bạn không cần tạo thủ công.

1. Yêu cầu tiên quyết (HACS)

Bạn phải cài đặt HACS. Vui lòng cài đặt các tích hợp Giao diện người dùng sau:

2. Backend (Bộ não xử lý)

   homeassistant:
     packages: !include_dir_named packages
   ``
  • Tạo một thư mục tên là packages trong thư mục cấu hình HA của bạn (nếu bạn chưa có).
  • Tải xuống packages/family_calendar.yaml từ kho lưu trữ này.
  • Đặt tệp vào trong thư mục packages/ của bạn.
  • Khởi động lại Home Assistant.

3. Các Lịch

Bạn có thể sử dụng Lịch Google hoặc Lịch Cục Bộ.

#### Lựa chọn A: Lịch Cục Bộ (Dễ nhất)

Lưu ý điều này chưa được kiểm thử vì tôi chỉ dùng Lịch Google

  • Vào Cài đặt > Thiết bị & Dịch vụ.
  • Thêm tích hợp Lịch Cục Bộ.
  • Tạo các lịch với tên chính xác: Alice, Bob, Charlie, Daisy, Family.
Nếu bạn sử dụng các tên này, mã sẽ hoạt động ngay lập tức!*

#### Lựa chọn B: Lịch Google

  • Mở packages/family_calendar.yaml.
  • Cuộn đến đoạn script add_google_calendar_event.
  • Cập nhật calendar_map để trỏ đến các thực thể Google thật của bạn:
`yaml calendar_map: "Alice": "calendar.alice_gmail_com" "Bob": "calendar.bob_work_account" `

#### Thiết lập Ngày nghỉ lễ

Kể từ các bản cập nhật Home Assistant, Ngày nghỉ lễ hiện được thêm qua giao diện UI:

  • Vào Cài đặt > Thiết bị & Dịch vụ > Thêm tích hợp > Holiday.
  • Chọn quốc gia của bạn.
  • Kiểm tra entity ID (ví dụ: calendar.holidays). Nếu khác với mặc định, hãy cập nhật nó trong dashboard YAML.

4. Bảng điều khiển (Giao diện)

  • Tạo một Dashboard View mới (Chọn loại View là Sections).
  • Sao chép mã từ dashboard.yaml.
  • Tùy chỉnh:
  • Tìm & Thay thế: Thay thế person.alice bằng các entity thành viên gia đình thực tế của bạn.
  • Thời tiết: Thay thế weather.home bằng nhà cung cấp thời tiết của bạn.
  • Nền: Cập nhật URL hình ảnh ở cuối yaml.

Bước 5: Chủ đề (Tùy chọn)

Để có kiểu font chữ riêng biệt (Ovo):

  • Đảm bảo file configuration.yaml của bạn có dòng này dưới frontend:
`yaml frontend: themes: !include_dir_merge_named themes `
  • Tạo một thư mục tên là themes trong thư mục cấu hình của bạn.
  • Tải về themes/skylight.yaml và đặt vào thư mục đó.
  • Khởi động lại Home Assistant.
  • Vào Hồ sơ của bạn (Biểu tượng người dùng ở góc dưới bên trái) và đổi Giao diện thành Skylight.
LƯU Ý: Giao diện này không bao quát hoàn toàn, vì vậy hãy lưu ý điều đó


📐 Cách hoạt động (Bên trong)

Logic Lọc

Thẻ week-planner-card không hỗ trợ ẩn các lịch cụ thể một cách linh động. Để giải quyết, tôi sử dụng Input Texts như bộ lọc Regex.

Khi bạn nhấn nút của một người, nó sẽ chuyển đổi bộ lọc của họ giữa . (Hiện tất cả) và ^$ (Ẩn tất cả).

  • config-template-card sẽ chèn các biến này vào thẻ lịch một cách động.

Script Tạo Sự Kiện

Cửa sổ "Thêm sự kiện" sử dụng một script duy nhất để xử lý logic cho nhiều người và nhiều loại sự kiện (Cả ngày hoặc có thời gian).

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)
``

LƯU Ý

Bài đăng gốc của tôi chỉ nhằm cung cấp cái nhìn tổng quan về cách thực hiện và cho phép mọi người điều chỉnh mã để phù hợp với tình huống cụ thể của họ.

Đặc biệt tôi làm điều này vì mỗi màn hình và nhu cầu đều khác nhau. Tôi không thể phát triển cho tất cả các kích thước màn hình, bảng điều khiển tiềm năng, v.v. Nên nó được xây dựng để hoạt động trên màn hình tôi đã đề cập hoặc bất kỳ màn hình nào (1920x1080) nhưng có thể chỉnh sửa cho các loại khác.

Nói về màn hình, ban đầu tôi gợi ý màn hình đó vì nó được giảm giá trên Woot và là cách rất kinh tế để có một màn hình cảm ứng vào thời điểm đó. Giờ có thể không còn như vậy, hãy dùng bất kỳ màn hình nào phù hợp với bạn. Máy tính bảng, màn hình cảm ứng, điện thoại, bất cứ gì. Điều chính bạn cần chỉnh sửa là bảng điều khiển.

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