Вмикаємо відео на Apple TV під час повітряної тривоги за допомогою Home Assistant
Привіт! Мене звати Олександр Ющенко, я Software Engineer в ISD. Віднедавна я апгрейднув свою Home Lab до повноцінного ПК і хочу поділитись своїм досвідом з автоматизації в Home Assistant з інтеграцією різних сервісів. Коли я налаштував Home Assistant у себе вдома і додав декілька інтеграцій, вирішив подивитись, які ж ще інтеграції доступні й чим би вони були мені корисні.
Після декількох хвилин скролінгу я наткнувся на інтеграцію з Ukraine Alarm, що є обгорткою над API застосунком «Повітряна тривога». В цю ж секунду в мене промайнула ідея про налаштування автоматизації, яка б вмикала кліп на пісню «Повітряна тривога» на моєму телевізорі.
Підготовка
Обладнання та софт, що я використовував:
- HP Elitedesk 800 G4 mini
- Proxmox VE 8
- Home Assistant Core (працює як lxc контейнер)
- Вже налаштована інтеграція з Apple TV
- Plex Media Server (працює як lxc контейнер)
- Apple TV
- Plex
- Телевізор з підтримкою CEC (вмикання через сигнал по HDMI)
Далі у статті я також покрию можливі варіанти з використанням розумних телевізорів на інших ОС, а ще розповім, як теоретично можна обійтись без Plex.
Мій вибір пав на автоматизацію разом з Plex через те, що я вже використовую його як медіасервер, а також через те, що так відео хоститься локально.
Додаємо відео на Plex
Насамперед треба додати бажане відео до медіатеки Plex. Для цього я створив окрему медіатеку з типом Other Videos, вказав теку для сканування і додав в цю теку відео.
Далі відкриваємо сторінку доданого відео в Plex і копіюємо URL. Посилання містить дві потрібні змінні — Server ID та Content ID. Посилання буде виглядати приблизно так:
https://{PLEX IP OR HOSTNAME}/web/index.html#!/server/{SERVER ID}/details?key=%2Flibrary%2Fmetadata%2F{CONTENT ID}&context=source%3Acontent.library~0~0
Додаємо інтеграцію «Повітряної тривоги» до Home Assistant
Переходимо в Settings, обираємо Devices & Services і у вкладці Integration натискаємо Add Integration. Додаємо Ukraine Alarm.
Обираємо регіон і зону, до якої буде додана інтеграція.
Додаємо помічний вимикач
Щоб автоматизація не була жорстко звʼязана і щоб розбити її на кілька простіших фрагментів, додаємо віртуальний помічний вимикач.
Для цього переходимо у вкладку Helpers і натискаємо Create Helper. У меню вибираємо Toggle, задаємо назву та іконку. В моєму прикладі назва створеної сутності — Alarm, а Entity ID — input_boolean.alarm.
Вмикаємо телевізор та відео за допомогою автоматизації
В налаштуваннях переходимо до Automations & scenes і у вкладці Automations створюємо нову автоматизацію. Нижче я надаю приклад YAML-коду автоматизації. Тут слід замінити Server ID та Content ID на ті, що були отримані раніше з Plex. Крім того, назви ваших сутностей можуть відрізнятись від моїх, тому ви можете змінити їх у коді, або ж перейти назад до візуального редактора та вибрати їх з дропдаунів.
В моєму прикладі Entity ID Apple TV — media_player.apple_tv, а пульту від нього — remote.apple_tv.
Щоб перейти до YAML-редактора, треба натиснути на три крапки в верхньому правому кутку та обрати Edit in YAML.
alias: Alarm on description: Start Povitryana tryvoha on Apple TV triggers: - trigger: state entity_id: - input_boolean.alarm from: "off" to: "on" conditions: [] actions: - action: media_player.turn_on metadata: {} data: {} target: entity_id: - media_player.apple_tv - action: media_player.play_media target: entity_id: media_player.apple_tv data: media_content_id: com.plexapp.plex media_content_type: app metadata: title: Plex thumbnail: null media_class: app children_media_class: null navigateIds: - {} - media_content_type: apps media_content_id: apps - action: media_player.play_media data: media_content_type: url media_content_id: >- plex://play/?metadataKey=%2Flibrary%2Fmetadata%2F{CONTENT ID}&server={SERVER ID} target: entity_id: media_player.apple_tv mode: single
Примітка: якщо вмикання Apple TV з використанням action: media_player.turn_on працює нестабільно, як в моєму випадку — можна використовувати вмикання через пульт:
- action: remote.send_command target: entity_id: - remote.apple_tv data: num_repeats: 1 delay_secs: 0.4 hold_secs: 0 command: wakeup
Використання інших сервісів, окрім Plex
Як ви могли помітити, я не використовую інтеграцію Plex в цій автоматизації, а просто відкриваю посилання з протоколом plex, яке оброблює встановлений програвач. Це надає можливість використовувати не тільки Plex, а і Youtube, інший застосунок для відтворення відео чи аудіо. Але інші варіанти я не перевіряв на практиці. До того ж перед тим, як відкривати посилання, я спочатку відкриваю застосунок на телевізорі, щоб Apple TV не показував діалогове вікно про відкриття посилання у застосунку.
Використання телевізорів чи приставок на інших ОС
Якщо ваш телевізор підтримує інтеграцію з Home Assistant — можете спробувати зробити цю ж саму автоматизацію, просто замінивши Entity ID. Але в такому випадку є проблема — не всі телевізори можуть виходити з режиму сну і крок з вмиканням через пульт теж може не допомогти. В ідеальному випадку телевізор повинен бути підключений по дроту до локальної мережі, а в налаштуваннях — увімкнена функція Wake on LAN. В моєму телевізорі також є функція Wake on WLAN, але вона працює нестабільно і через це телевізор може вмикатись просто так.
Вимикання телевізору
Схожим чином треба додати автоматизацію на вимкнення Apple TV:
alias: Alarm off description: Stop media, return Apple TV to home and turn off triggers: - trigger: state entity_id: - input_boolean.alarm from: "on" to: "off" conditions: [] actions: - action: media_player.media_stop metadata: {} data: {} target: entity_id: media_player.apple_tv - action: remote.send_command metadata: {} data: num_repeats: 1 delay_secs: 0.4 hold_secs: 0 command: home target: entity_id: remote.apple_tv - action: media_player.turn_off metadata: {} data: {} target: entity_id: media_player.apple_tv mode: single
Автоматичне вимикання тривоги
Третя автоматизація буде автоматично вимикати допоміжний вимикач після 30 секунд, а це вимикання вже буде викликати минулу автоматизацію.
alias: Auto turn off alarm description: "" triggers: - trigger: state entity_id: - input_boolean.alarm from: "off" to: "on" conditions: [] actions: - delay: hours: 0 minutes: 0 seconds: 30 milliseconds: 0 - if: - condition: state entity_id: input_boolean.alarm state: "on" then: - action: input_boolean.turn_off metadata: {} data: {} target: entity_id: input_boolean.alarm mode: single
Вмикаємо та вимикаємо перемикач тривоги за допомогою інтеграції «Повітряна тривога»
Створюємо автоматизацію, але в цьому випадку простіше усе зробити в візуальному редакторі, бо Device ID та Entity ID «Повітряної тривоги» можуть відрізнятись. Тому додаємо тригер на повітряну тривогу та дію для вмикання нашого перемикача Alarm.
Аналогічно можна зробити для вимкнення, але раніше ми вже додали автоматизацію для вимкнення через 30 секунд.
Висновок
Таким чином ми створили автоматизації для вмикання кастомної повітряної тривоги в себе вдома. Таке використання, звісно, не виглядає корисним. Натомість ви можете отримати негативні коментарі від співмешканців, бо телевізор вмикається посеред ночі й на весь будинок лунає пісня «Повітряна тривога», що, очевидно, заважає спати.
Але водночас цей приклад може бути вашим першим кроком до більш комплексної автоматизації. Також ось кілька прикладів використання подібного кейсу, які б могли б бути корисними. Можна, наприклад:
- вмикати промо-відео в апартаментах, коли гість відчинив двері;
- увімкнути відеопривітання зі святом члена родини, коли він зайде у свою кімнату;
- запланувати вмикання фільмів та освітлення за таймером, коли ви відсутні вдома.
Я поділився своїм результатом автоматизації з групою гіків, яких порадував цей експеримент, що і надихнуло мене на написання цієї статті.
10 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів