Статья

Android TV BOX, интеграция в Home Assistant и Yandex Алису

В тематических чатах по Home Assistant ребята часто спрашивают об одних и тех же интеграциях, на портале есть статьи, но для новичков они написаны очень сложно и не понятно. Вот я и решил написать статью от лица новичка.
У меня Android TV Box ZTE B866 (с прошивкой от МТС).

Начну:

  1. Нужно настроить ADB (аддон ADB - Android Debug Bridge больше не работает).
  2. Установить кастомный компонент Yandex_smart_home.

Зайдите в Home Assistant configuration.yaml и введите данные медиаплеера.

media_player: - platform: androidtv name: AndroidBox host: 192.168.1.1 # Тут должен быть IP вышей приставки

Теперь нужно настроить TV Box, а именно, открыть права разработчика.

На моем TV Box нужно зайти в технические настройки (приставку предоставил МТС).
Заходим в "Настройки устройства".
"Об устройстве".
Листаем вниз до "Сборка", после чего кликаем 8 раз, пока не появится надпись, что режим разработчика включен.
Выходим в меню настройки устройства и листаем вниз до пункта "Для разработчика".
Ищем пункт "Отладка по USB", включаем, оставляем как есть, переходим к настройки Home Assistant.

После того как откроете права разработчика, нужно перезагрузить Home Assistat.

Для тех, у кого не настроен "ui-lovelace.yaml", компонент сразу появится во вкладке "Обзор". Для тех, у кого он настроен, его не будет в "Обзоре" и его необходимо добавить.

Ниже будет код на добавление медиаплеера и функциональных кнопок в "ui-lovelace.yaml". Прежде чем добавить, надо настроить скрипт на функциональные кнопки, которые отсутствуют, а именно, кнопка вверх, вниз, влево, вправо и т.д. Все настройки взял на сайте Home Assistant // Android TV.

Основные функции, которые можно добавить в скрипт:

POWERSLEEPHOMEUPDOWN

LEFTRIGHTCENTERBACKMENU

С дополнительными можно ознакомиться на GitHub. Так как у меня не получилось их победить, не буду о них писать, а просто оставлю ссылку на GitHub.

# scripts.yaml box_home: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: HOME box_power: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: POWER box_sleep: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: SLEEP box_up: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: UP box_down: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: DOWN box_left: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: LEFT box_right: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: RIGHT box_center: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: CENTER box_back: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: BACK box_menu: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: MENU box_mute: sequence: - service: androidtv.adb_command data: entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера command: MUTE kinopoisk: sequence: - service: androidtv.adb_command entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера data: command: am start -a android.intent.action.VIEW -d -n ru.kinopoisk.tv/ru.kinopoisk.tv.presentation.splash.SplashActivity

# scripts.yaml hdbox: sequence: - service: androidtv.adb_command entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера data: command: am start -a android.intent.action.VIEW -d -n dkc.video.hdbox/com.dkc.fs.ui.activities.SplashActivity

# scripts.yaml megogo: sequence: - service: androidtv.adb_command entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера data: command: am start -a android.intent.action.VIEW -d -n com.megogo.application/net.megogo.tv.main.MainActivity

# scripts.yaml ivi: sequence: - service: androidtv.adb_command entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера data: command: am start -a android.intent.action.VIEW -d -n ru.ivi.client/ru.ivi.client.activity.MainActivity

# scripts.yaml okko: sequence: - service: androidtv.adb_command entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера data: command: am start -a android.intent.action.VIEW -d -n tv.okko.androidtv/ru.okko.tv.app.presentation.RootActivity

# scripts.yaml wink: sequence: - service: androidtv.adb_command entity_id: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера data: command: am start -a android.intent.action.VIEW -d -n ru.rt.video.app.tv/com.rostelecom.zabava.ui.splash.SplashActivity

Скрипт для КиноПоиска и остальным сервисам мне помог сделать Даманин Леонид, за что ему огромное спасибо (как добавить остальные сервисы, я пока не знаю, как только раскрою эту тайну, напишу статью и добавлю ссылку).Для TV Box сделал отдельный пульт для проверки функционирования кнопок в "ui-lovelace.yaml", перед интеграцией в Yandex Алису.

# ui-lovelace.yaml title: Home Assistant - сервер views: - title: Пульт cards: - type: vertical-stack title: Пульт cards: - type: horizontal-stack cards: - type: button entity: script.box_power name: ' ' icon: mdi:power tap_action: action: toggle - type: button - type: button entity: script.box_sleep name: ' ' icon: mdi:sleep tap_action: action: toggle - type: button entity: script.box_menu name: ' ' icon: mdi:menu tap_action: action: toggle - type: button entity: script.box_home name: ' ' icon: mdi:home tap_action: action: toggle - type: horizontal-stack cards: - type: button - type: button - type: button entity: script.box_up name: ' ' icon: mdi:arrow-up tap_action: action: toggle - type: button - type: button - type: horizontal-stack cards: - type: button entity: script.box_mute name: ' ' icon: mdi:volume-off tap_action: action: toggle - type: button entity: script.box_left name: ' ' icon: mdi:arrow-left tap_action: action: toggle - type: button entity: script.box_center name: ' ' icon: mdi:pokeball tap_action: action: toggle - type: button entity: script.box_right name: ' ' icon: mdi:arrow-right tap_action: action: toggle - type: button entity: script.kinopoisk name: 'Кинопоиск' icon: mdi:video-minus tap_action: action: toggle - type: horizontal-stack cards: - type: button - type: button - type: button entity: script.box_down name: ' ' icon: mdi:arrow-down tap_action: action: toggle - type: button - type: button entity: script.box_back name: ' ' icon: mdi:backspace tap_action: action: toggle - type: horizontal-stack cards: - type: media-control entity: media_player.AndroidBox # Это имя которое вы указали в настройках медеа плеера

Для корректной интеграции в Yandex Алису, осталось добавить то, что не будет отображаться, и то, что будет.

- exclude_entities отвечает за то, что не будет отображаться.

- entity_config отвечает за то, что отображается.

В исключение желательно добавить такие скрипты:

- script.box_power - Включение
- script.box_sleep - Сон

- script.box_menu - Меню (на ваше усмотрение)

- script.box_home - Домой (на ваше усмотрение)

- script.box_mute - Отключить звук

Включение приставки, сон и отключение звука будут уже автоматически добавлены в медиаплеер, не вижу смысла их дублировать.

Добавляем нужное в "configuration.yaml" и перезагружаем Home Assistant.

yandex_smart_home: filter: exclude_entities: # Скрипты которы не отображаются в Yandex Алисе - script.box_power - script.box_sleep - script.box_menu - script.box_home - script.box_mute entity_config: # Скрипты которы отображаются в Yandex Алисе media_player.AndroidBox: # Это имя которое вы указали в настройках медеа плеера name: Приставка script.box_up: name: Вверх script.box_down: name: Вниз script.box_left: name: Влево script.box_right: name: Вправо script.kinopoisk: name: Кинопоиск script.box_center: name: Применить

Последний шаг. Переходим в Yandex Алису и добавляем новые устройства.
Если у вас уже есть интеграция с Home Assistant, то нужно обновить список устройств, если нет - добавляем новые устройства.
После того, как устройства добавились, осталось назначить комнату.

media_player: - platform: androidtv name: AndroidBox host: 192.168.1.1 # Ваш IP приставки apps: mobi.azon: "Зона" YouTube: "YouTube" Play Store: "Play Store" Google Cast: "Google Cast"

Если будут вопросы, пишите в комментариях! Спасибо, что дочитали до конца =)


Лойс, собственно это может выступать наглядным мануалом для интеграции любого Гугло-девайса. Например Xiaomi TV у меня интегрирован ровно точно так же.

Антон, подскажите плиз, Вы научились открывать любую нужную вкладку в приложении через медиа плеер?

Привет! Не совсем понял, о каких вкладках идёт речь?

например зайти открыть приложение и выбрать меню настроек

Ммм, нет таким не задавался, выбором задавался аппликухи, что бы был вменяемый список из уже существующих андроиндо-сервисов, что либо конкретно выбирать внутри аппы, честно сказать задача не стояла у меня. А приведи пример, какой кейс?

есть приложение ru.mts.mtstv, внутри есть несколько кнопок(ссылок): главная, ТВ, фильмы, сериалы, приложения.
я хочу без плясок с бубном зайти в ТВ и выбрать ТВ каналы.
Сейчас у меня прописан скрипт который проходит по этому не легкому пути чтобы включить ТВ сигнал

Ну скрипт я так понимаю, через использования стрелок?

Это сделал, выглядит как костыль )) хочется по другому, но не понимаю как (

Ну почему же костыль, прямое повторение мануальных действий. Тут вопрос в том, что я не уверен, что можно уже будучи в аппликухе, что-то слать ей, что бы она открывала или сеттинги или прочее, шорт-карты какие-то, хз, но не задавался вопросом, но твой вариант выглядит как на меня добротным, особенно если он отрабатывает на 100% всегда. ;)

Это точно возможно. Делал с

dkc.video.hdbox Самому бы вспомнить как)))
Команда похожа на те, что приведены выше am start ...
У каждой странички есть свой путь, так сказать. В плей маркете есть специальные приложения для диагностики запросов внутри других приложений. (с его помощью поверх приложения отображаются строчки текста с данными). Узнав путь можно его в команду


Activity launcher, у меня не получилось запустить, если вспомните как делать, дайте знать, дополню этой информацией статью

Нашел старые записи.

am start --user -3 -a android.intent.action.VIEW -d "hdvb://hd.vb/film/kinopoisk/?id=931677" dkc.video.hdbox
am start --user -3 -a android.intent.action.VIEW -d "hdvb://hd.vb/browse/9" dkc.video.hdbox
am start --user -3 -a android.intent.action.VIEW -d "hdvb://hd.vb/film/kinopoisk/?id=931677?tab=video" dkc.video.hdbox
am start --user -3 -a android.intent.action.VIEW -d "hdvb://hd.vb/search/?q=Dunkirk" dkc.video.hdbox
am start --user -3 -a android.intent.action.VIEW -d "hdvb://hd.vb/browse/1" dkc.video.hdbox
Вот такие команды работали с год назад.
Основывался на вот этой информации https://github.com/hdvbplayer/hdvb_integrations">https://github.com/hdvbplayer/...

Если разберетесь как запустить  следующую серию из последнего просмотренного сериала буду очень рад ознакомиться с этой информацией))) Также хотелось бы сделать оповещения из приложения, если появляется новая серия (в той озвучке и с какого ресурса постоянно смотришь) сериала, который добавлен в избранное. Но это кажется более сложным в реализации.

Ошибка в конфигурацииНАЧАТЬ ПРОВЕРКУ


Component error: box_right - Integration 'box_right' not found.


Component error: box_power - Integration 'box_power' not found.


Component error: box_sleep - Integration 'box_sleep' not found.


Component error: box_down - Integration 'box_down' not found.


Component error: box_mute - Integration 'box_mute' not found.


Component error: box_center - Integration 'box_center' not found.


Component error: box_back - Integration 'box_back' not found.


Component error: box_home - Integration 'box_home' not found.


Component error: box_left - Integration 'box_left' not found.


Component error: box_menu - Integration 'box_menu' not found.


Component error: box_up - Integration 'box_up' not found.

Скиньте пожалуйста скрипт, как вы его прописали

Добрый вечер. Подскажите, через adb у вас включается телевизор? 

У меня Android tv zte b866

нужно настроить поддержку CEC HDMI на приставке чтоб приставка могла командровать вкл/выкл телеку. Там, если я не ошибаюсь, не все телеки и не все порты HDMI поддерживают это. У меня так подписан только один порт HDMI

У них принципиальное отличие? 

на сколько я смог понять, приставка/тв уходит в сон и не управляется через adb. Для себя нашёл единственное решение, ir пульт. Вдруг не туда смотрел)

У меня спокойно приставка включается, не засыпает. Посмотрю завтра может есть спящий режим 
Я свой глупый ТВ подключил через СЕС и теперь все одновременно включается.  



Я заморочился темой управления приставками через Алису и для ряда автоматизаций мне нужен статус приставки (idle, play, pause и др.) Но у каждого плеера могут быть свои особенности, которые можно прописать в секции state_detection_rules. Но для кинопоиска я так и не смог выяснить/подобрать корректные настройки. Приставка упорно считает, что видео paused, несмотря на то, что Кинопоиск воспроизводит видео. У кого-то получилось его побороть?


Кстати, Xiaomi MiBox уходят в глубокий сон и не просыпаются, есть возможность не давать им засыпать (отключать экран) через меню разработчика, но это решение мне не нравится. А для автоматического переподключения adb после того как устройство проснётся (включится) прописал скрипт в cron.


Ниже пример моего пульта

https://sprut.ai/static/media/cache/00/82/15/5/8096357/77206/1000x_image.jpg?1618387635" alt="1000x_image.jpg?1618387635" />

Во всей статье всё оч интересно и всё работает. 

а вот самый трудный вопрос как разбудить xiaomi Tv с ble  пультом нигде на просторах инета не могу найти. Кто может подскажет? 

А телеканалы так можно добавить на Android tv телевизоре, что бы скажем Алиса могла переключить из любого источника сразу на нужный телеканал? (Как это реализовано в родной интергации Алисы таликов LG)

Если мне память не изменяет и LG своя операционка webos, это так?

Да, своя

попробуйте это

;t=267s

https://www.youtube.com/watch?v=f0i2R1cMWBg&t=267s">Настройка WebOS (гиперссылка)

Эх, заходя сюда надеялся что Алису научились ставить внутрь самого Android TV, заместо гуглосистента. Но нет(

This add-on is in a deprecated state!


This add-on was created at the time, that the best solution for communicating with an Android device from Home Assistant, was using an Android Debug Bridge.


However, the time has changed. Right now, the Home Assistant project recommends using built-in Python implementation, which renders this add-on obsolete.


Additionally, this add-on will become problematic to maintain in the future, as the packages used are stalled.


Therefore, this add-on is now deprecated.

Тоже интересует как управлять тв каналами. Например хочу сделать будильник чтобы ТВ бок запускал приложение sweet tv  и включался определённый тв канал

Это можно сделать через скрипт и автоматизацию , думаю скоро дополню статью 

Буду ждать

Прошу прощения, не  ещё новостей?) Может подсказку дадите?)

Только собрался добавить свою тв приставку, как компонент ADB - Android Debug Bridge был полностью и безвозвратно удален с магазина НА, считается устаревшим решение по интеграции андроид устройств )). Жаль, отличная и интересная была статья.



Доброе утро! Можно и без этого приложения сделать. Делайте все тоже самое но в конфигуратор пропишите вот так ( как на картинке)

https://sprut.ai/static/media/cache/00/07/73/5/8535915/78453/1000x_image.jpeg?1621758427" alt="1000x_image.jpeg?1621758427" />
Ip соответственно ваш должен быть 

ООО спасибо, попробую.

У меня xiaomi TV. Команды навигации и громкости отрабатываю, как и команда SLEEP, но после из сна телевизор уже не выходит командами. Кто-нибудь знает как побороть?

data:
command: am start -a android.intent.action.VIEW -d -n ru.kinopoisk.tv/ru.kinopoisk.tv.presentation.splash.SplashActivity

Подскажите, а как такое сделать для Perfect Player и HDREZKA?

monkey -p имя.пакета.на приставке -c android.intent.category.LAUNCHER 1


запуск приложения на приставке через adb!
command: am start -a android.intent.action.VIEW -d -n ru.kinopoisk.tv/ru.kinopoisk.tv.presentation.splash.SplashActivity

Подскажите, не срабатывает команда для Кинопоиска. 
Стрелки, домой, выключить звук... отлично отрабатывают. Но кинопоиск не стартует.
Может после обновления приложения Кинопоиск Activity изменились?

у меня на mibox работает, на tox1 нет )

а для запуска ottplayer есть у кого команда?

Почему во всех статьях код автоматизаций (или любой другой) указан сплошной портянкой, без переносов? При попытке разобраться где что и как - мозг взрывается просто )))
Добрый вечер. Очень интересна данная тема. У меня приставка ugoos x4q. Хочу пристаку настроить по данной инструкции. Но сталкнулся с рядом вопросов. На первом пункте стало ясно, что я в этом вообще ничего не понимаю. Прошу оказать содействие или описать чуть поподробнее иди поделиться ссылками на мат часть, что нужно изучить для решения данного вопроса.
Здравствуйте, а есть готовый configuration.yaml?

Вернуться назад

Устройства


Вернуться назад