Web Analytics

my-skylight-calendar

⭐ 248 stars Russian by mohesles

🌐 Язык

DIY Умный Домашний Семейный Календарь (Аналог Skylight)

Календарь Skylight DIY Skylight

📖 Введение

Мою жену недавно буквально завалили в социальных сетях рекламой умных домашних календарей (Skylight, Cozyla, Hearth), и она была готова потратить на один из них более $300. Прежде чем дать ей согласие на покупку, я попросил время, чтобы изучить этот вопрос. Я понял, что большинство предлагаемых решений имеют схожий функционал, но существенно отличаются по цене. Самое главное, я не увидел ни одной выдающейся функции, которую не смог бы реализовать в Home Assistant.

Цель: Одобренный женой (Wife Acceptance Factor), удобный для размещения на столешнице сенсорный календарь, глубоко интегрированный в наш умный дом и не требующий ежемесячных платежей.

💡 Почему DIY?

Выбор DIY-подхода с Home Assistant дал несколько преимуществ по сравнению с покупкой Skylight/Hearth дисплея:

🛠 Выбор оборудования

В данный момент система построена для отображения дашборда на любом HD (1920x1080) дисплее.

В моем случае требовалось, чтобы устройство "выглядело как" skylight, было сенсорным, стояло на столешнице, и его можно было перемещать. Поэтому я выбрал описанное ниже оборудование. Тем не менее, ваш случай может отличаться, и потребуется подстроить конфигурацию — например, если вы хотите выводить интерфейс на планшет или что-то другое.

Оборудование я выбрал исходя из вышеописанных требований, а также с расчетом расширить возможности за счет веб-камеры, динамика и микрофона. Сейчас бы я, возможно, собрал систему иначе, поскольку не успел реализовать дополнительные идеи с оборудованием.

✨ Функции

---

⚙️ Инструкция по установке

Примечание: Эта настройка использует YAML Package, который автоматически создаёт все необходимые помощники, скрипты и переменные. Создавать их вручную не потребуется.

1. Необходимые компоненты (HACS)

У вас должен быть установлен HACS. Пожалуйста, установите следующие Frontend интеграции:

*Примечание: В Настройки → Устройства и сервисы убедитесь, что Browser Mod отображается как интеграция (плитка), а не только в HACS. Если его там нет, нажмите Добавить интеграцию → Browser Mod и завершите настройку, затем перезапустите HA. Установка через HACS только загружает файлы; вы должны добавить интеграцию, чтобы HA зарегистрировал её действия/сущности.

2. Бэкенд (Мозг системы)

   homeassistant:
     packages: !include_dir_named packages
   ``
  • Создайте папку с именем packages в вашем каталоге конфигурации HA (если такой ещё нет).
  • Скачайте файл packages/family_calendar.yaml из этого репозитория.
  • Найдите строку [ #<--- UPDATE THIS ENTITY] и обновите ID сущности календаря в соответствии с вашей средой. Подробнее смотрите в разделе 3.
  • Поместите файл в вашу папку packages/.
  • Перезапустите Home Assistant.

3. Календарь

Вы можете использовать Google Календарь или Локальные календари.

#### Вариант A: Использовать имена календарей повторно (Самый простой)

  • Перейдите в Настройки > Устройства и сервисы.
  • Добавьте интеграцию Локальный календарь.
  • Создайте календари с точными именами: calendar1, calendar2, calendar3, calendar4, Family.
Если вы используете эти имена, код будет работать сразу!*

#### Вариант B: Пользовательский календарь

  • Перейдите в Настройки > Устройства и сервисы.
  • Добавьте интеграцию Локальный календарь или Google Календарь.
  • Перейдите в Конфигурация > Интеграции > Локальный календарь или Google Календарь и выберите "Добавить запись"
  • Для каждой созданной записи получите ID сущности для обновления файла dashboard.yaml.
  • Откройте dashboard.yaml.
  • Найдите строку # <--- UPDATE THIS ENTITY.
  • Обновите ID сущности в соответствии с вашей средой.
#### Настройка праздников

С последних обновлений Home Assistant праздники добавляются через интерфейс:

  • Перейдите в Настройки > Устройства и сервисы > Добавить интеграцию > Holiday.
  • Выберите свою страну.
  • Проверьте ID сущности (например, calendar.holidays). Если он отличается от стандартного, обновите его в YAML дашборда.

4. Дашборд (Внешний вид)

  • Перейдите в Настройки > Панель управления
  • Нажмите Добавить панель (выберите вариант "Новая панель с нуля", убедитесь, что выбрано "Добавить в боковую панель").
  • В левом меню выберите только что созданную панель и нажмите на значок карандаша для её редактирования.
  • Выберите значок с тремя точками и выберите "Редактор сырой конфигурации".
  • Скопируйте и вставьте код из dashboard.yaml.

Шаг 5: Тема (необязательно)

Чтобы получить нужный вид шрифта (Ovo):

  • Убедитесь, что в вашем configuration.yaml есть эта строка под frontend:
`yaml frontend: themes: !include_dir_merge_named themes `

  • Создайте папку с именем themes в вашем каталоге конфигурации.
  • Скачайте themes/skylight.yaml и поместите его в эту папку.
  • Используйте File Editor и загрузите calbackgrd.png в папку /www/, которая на панели управления отображается как /local.
  • Перезапустите Home Assistant.
  • Перейдите в свой профиль (иконка пользователя внизу слева) и измените Тему на Skylight.
ПРИМЕЧАНИЕ: Тема не является всесторонней, поэтому учитывайте это


📐 Как это работает (внутреннее устройство)

Логика фильтрации

week-planner-card не поддерживает скрытие определенных календарей в реальном времени. Для решения этой задачи я использовал Input Texts в качестве фильтров Regex.

Когда вы нажимаете кнопку пользователя, фильтр переключается между . (Показать всё) и ^$ (Не показывать ничего).

  • 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-03-08 ---