Вмикаємо відео на 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 секунд.
Висновок
Таким чином ми створили автоматизації для вмикання кастомної повітряної тривоги в себе вдома. Таке використання, звісно, не виглядає корисним. Натомість ви можете отримати негативні коментарі від співмешканців, бо телевізор вмикається посеред ночі й на весь будинок лунає пісня «Повітряна тривога», що, очевидно, заважає спати.
Але водночас цей приклад може бути вашим першим кроком до більш комплексної автоматизації. Також ось кілька прикладів використання подібного кейсу, які б могли б бути корисними. Можна, наприклад:
- вмикати промо-відео в апартаментах, коли гість відчинив двері;
- увімкнути відеопривітання зі святом члена родини, коли він зайде у свою кімнату;
- запланувати вмикання фільмів та освітлення за таймером, коли ви відсутні вдома.
Я поділився своїм результатом автоматизації з групою гіків, яких порадував цей експеримент, що і надихнуло мене на написання цієї статті.
Сподобалась стаття? Підписуйтесь на автора, щоб отримувати сповіщення про нові публікації на пошту.

12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів