Rodzinny Kalendarz Smart Home DIY (Kopia Skylight)

📖 Wprowadzenie
Moja żona ostatnio była zasypywana w mediach społecznościowych reklamami inteligentnych kalendarzy domowych (Skylight, Cozyla, Hearth) i była gotowa wydać ponad 300 dolarów na jeden z nich. Zanim dałem jej zielone światło, poprosiłem o szansę, by je zbadać. Zdałem sobie sprawę, że większość oferowanych urządzeń miała podobną funkcjonalność, ale znacząco różniła się ceną. Co najważniejsze, nie zauważyłem żadnej wyjątkowej funkcji, której nie mógłbym zaimplementować w Home Assistant.
Cel: Urządzenie z aprobatą WAF (Wife Acceptance Factor), przyjazny dla blatu ekran dotykowy z kalendarzem, głęboko zintegrowany z naszym inteligentnym domem, bez miesięcznych opłat.
💡 Dlaczego DIY?
Wybór rozwiązania DIY z Home Assistant przyniósł kilka korzyści w porównaniu do kupna wyświetlacza Skylight/Hearth:
- Brak miesięcznych opłat: Unikasz subskrypcji za „premium” funkcje.
- Płynna integracja: Komunikuje się z naszymi światłami, zadaniami (Grocy) i czujnikami obecności.
- Stary sprzęt: Przeznaczyłem ponownie Mini PC oraz standardowy monitor.
- Prywatność: Brak uzależnienia od dostawcy i ryzyka zamknięcia firmy.
🛠 Wybór sprzętu
Obecnie system jest zbudowany tak, by wyświetlać pulpit na dowolnym ekranie HD (1920x1080).
W moim przypadku wymogiem było, by „wyglądało jak” skylight, było dotykowe, stawiane na blacie, z możliwością przenoszenia w różne miejsca. Dlatego wybrałem sprzęt opisany poniżej. Jednak Twój przypadek może być inny i wymagać dostosowania, np. jeśli chcesz wyświetlać to na tablecie lub innym urządzeniu.
Sprzęt, którego pierwotnie użyłem, wybrałem w oparciu o powyższe kryteria oraz z nadzieją na rozszerzenie funkcjonalności przy użyciu kamery, głośnika i mikrofonu. Obecnie z perspektywy czasu zbudowałbym to inaczej, ponieważ nie miałem czasu na realizację tych dodatkowych pomysłów.
- Monitor: HP Engage 15-calowy ekran dotykowy. Wybrałem go zamiast typowych monitorów przenośnych, ponieważ ma wbudowane głośnik, kamerę i mikrofon, co pozwala na przyszłe sterowanie głosem lub rozmowy wideo.
- Komputer: Stary Mini PC (NUC/Tiny PC) z Windows/Linux w trybie Kiosk, lub Raspberry Pi 4.~~
✨ Funkcje
- Widok rodzinny i indywidualny: Przełączanie kalendarzy poszczególnych członków rodziny.
- Dwukierunkowa synchronizacja: Edytuj wydarzenia na ekranie lub na telefonach (Google Calendar).
- Popup „Dodaj wydarzenie”: Niestandardowy interfejs do dodawania wydarzeń bezpośrednio do wybranych kalendarzy z ekranu.
- Pogoda i data: Piękny, czytelny nagłówek.
- Responsywność: Automatyczne dostosowanie liczby dni do szerokości ekranu (Mobile vs Desktop).
⚙️ Przewodnik instalacji
Uwaga: Ta konfiguracja używa pakietu YAML, który automatycznie utworzy wszystkie potrzebne pomocniki, skrypty i zmienne. Nie musisz ich tworzyć ręcznie.
1. Wymagania wstępne (HACS)
Musisz mieć zainstalowany HACS. Zainstaluj następujące integracje Frontend:
week-planner-cardbubble-cardconfig-template-cardcard-modbetter-moment-cardweather-cardbrowser_mod(Wymagane do działania popupów)layout-card(Wymagane dla widoku Sekcje)button-card(Wymagane do popupu dodawania wydarzenia)
2. Backend (Mózg systemu)
- Otwórz plik
configuration.yamlw Home Assistant. - Upewnij się, że pod
homeassistant:masz dodaną tę linię, aby włączyć pakiety:
homeassistant:
packages: !include_dir_named packages
``
- Utwórz folder o nazwie
packages w katalogu konfiguracyjnym HA (jeśli jeszcze go nie masz).
Pobierz plik packages/family_calendar.yaml z tego repozytorium.
Wyszukaj ciąg [ #<--- UPDATE THIS ENTITY] i zaktualizuj identyfikator encji kalendarza, aby odpowiadał Twojemu środowisku. Zobacz sekcję 3 po więcej szczegółów.
Umieść plik w folderze packages/.
Zrestartuj Home Assistant. 3. Kalendarze
Możesz użyć Kalendarzy Google lub Kalendarzy Lokalnych.
#### Opcja A: Ponowne użycie nazw kalendarzy (najprostsze)
- Przejdź do Ustawienia > Urządzenia i usługi.
- Dodaj integrację Kalendarz lokalny.
- Utwórz kalendarze o dokładnych nazwach:
calendar1, calendar2, calendar3, calendar4, Family.
Jeśli użyjesz tych nazw, kod zadziała od razu!*#### Opcja B: Własny kalendarz
- Przejdź do Ustawienia > Urządzenia i usługi.
- Dodaj integrację Kalendarz lokalny lub Kalendarz Google.
- Przejdź do Konfiguracja > Integracje > Kalendarz lokalny lub Kalendarz Google i wybierz "Dodaj wpis"
- Dla każdego utworzonego wpisu pobierz identyfikator encji do zaktualizowania w pliku dashboard.yaml.
- Otwórz
dashboard.yaml.
Wyszukaj # <--- UPDATE THIS ENTITY.
Zaktualizuj identyfikator encji odpowiedni dla Twojego środowiska
#### Konfiguracja świąt
Od czasu aktualizacji Home Assistant, święta dodawane są teraz przez interfejs UI:
- Przejdź do Ustawienia > Urządzenia i usługi > Dodaj integrację > Holiday.
- Wybierz swój kraj.
- Sprawdź identyfikator encji (np.
calendar.holidays). Jeśli różni się od domyślnego, zaktualizuj go w pliku dashboard YAML.4. Dashboard (Wygląd)
- Przejdź do Ustawienia > Dashboard
- Kliknij Dodaj Dashboard (Wybierz opcję "Nowy dashboard od podstaw", upewnij się, że zaznaczono "Dodaj do paska bocznego").
- W menu po lewej wybierz nowo utworzony dashboard i kliknij ikonę ołówka, aby go edytować.
- Wybierz ikonę z trzema kropkami i wybierz "Edytor konfiguracji surowej".
- Skopiuj i wklej kod z dashboard.yaml.
Krok 5: Motyw (Opcjonalnie)
Aby uzyskać określony wygląd czcionki (Ovo):
- Upewnij się, że w pliku
configuration.yaml znajduje się ta linia pod frontend:
`yaml
frontend:
themes: !include_dir_merge_named themes
`
- Utwórz folder o nazwie
themes w swoim katalogu konfiguracyjnym.
Pobierz themes/skylight.yaml i umieść go w tym folderze.
Użyj Edytora Plików i wgraj calbackgrd.png do folderu /www/, co jest wewnętrznie tłumaczone na /local na pulpicie.
Zrestartuj Home Assistant.
Przejdź do swojego Profilu (ikona użytkownika na dole po lewej) i zmień Motyw na Skylight.
UWAGA: Motyw nie jest kompleksowy, miej to na uwadze
📐 Jak to działa (pod maską)
Logika filtrowania
week-planner-card nie obsługuje natywnie ukrywania konkretnych kalendarzy w locie. Aby to obejść, użyłem Input Texts działających jako filtry Regex. Gdy klikniesz przycisk osoby, przełącza on jej filtr między
. (Pokaż wszystko) a ^$ (Nie pokazuj nic).
config-template-card dynamicznie wstrzykuje te zmienne do karty kalendarza.Skrypt tworzenia wydarzenia
Okno "Dodaj wydarzenie" korzysta z jednego skryptu obsługującego logikę dla wielu osób i typów wydarzeń (Całodniowe vs Czasowe).
yaml
Simplified Logic Example
target_calendar: "{{ calendar_map.get(states('input_select.calendar_select')) }}"choose:
- conditions: "All Day Event is ON"
- conditions: "All Day Event is OFF"
UWAGI
Mój oryginalny post miał na celu jedynie przedstawienie ogólnego zarysu jak to zrobić oraz umożliwienie użytkownikom dostosowania kodu do własnych, specyficznych scenariuszy.
Zrobiłem to w szczególności dlatego, że każdy wyświetlacz i potrzeba są inne. Nie mogę opracować rozwiązania dla wszystkich możliwych rozmiarów wyświetlaczy, pulpitów itp. Zostało to więc zbudowane tak, aby działało na wyświetlaczu, o którym wspomniałem, lub dowolnym innym (1920x1080), ale powinno być edytowalne dla pozostałych.
Jeśli chodzi o wyświetlacz, pierwotnie zaproponowałem właśnie ten, ponieważ był w promocji na Woot i był bardzo ekonomicznym sposobem na zdobycie ekranu dotykowego w tamtym czasie. Teraz może to już nie być aktualne, więc użyj dowolnego wyświetlacza, który Ci odpowiada. Tablet, ekran dotykowy, telefon, cokolwiek. Główną rzeczą, którą będziesz musiał edytować, jest dashboard.
--- Tranlated By Open Ai Tx | Last indexed: 2026-03-08 ---