Работа проверена на проекторе: https://alli.pub/779y77?erid=2SDnjcn6ZTj
Существует несколько возможностей вывода уведомлений на экран Smart TV из Home Assistant. Одна программа называется Pipup, вторая Tvoverlay.
В этой статье немного расскажу про tvoverlay.
Программа tvoverlay устанавливается на smartv. Причем надо иметь ввиду, что ставится именно на android TV и что если у Вас на телевизоре обычный стоит Андроид, то приложение туда установится, но открыться не сможет. По этому только Android TV – это Важно!
Сама программа TvOverlay позволяет выводить на экран телевизора уведомления со смартфона и с умного дома. Причем с умного дома можно транслировать даже видео с камер.
Эту программу можно скачать с github проекта: https://github.com/gugutab/TvOverlay
Там можно найти как и сам APK файл, но если сложно с навигацией по github, то apkшка тут: https://github.com/gugutab/TvOverlay/releases/tag/TvOverlay
Настройка TvOverlay на Android TV:
Настройка TvOverlay на Андроид ТВ на самом деле очень простая, достаточно установить приложение, запустить его, дать разрешения, чтоб приложение могло отображаться по верх всех окон (приложение при запуске само попросит, чтоб дали ему это разрешение).
Далее настраивать можем с какой стороны экрана появляться будут уведомления: сверху, снизу, слева, справа.
Так-же настраивается прозрачность уведомлений и затемнение самого экрана.
Еще можем включать или отключать notification (уведомления). Уведомлений 2 вида: Фиксированные, которые постоянно будут показываться и те которые будут показываться на несколько секунд.
Ну и еще можно настраивать MQTT – добавив сервер Mqtt и тогда из Home Assistant все эти настройки описанные выше можно будет делать, не заходя на телевизоре в приложение.
Еще в приложении tvoverlay в правом нижнем углу, есть qrcode и адрес по которому подключаться к этому tvoverlay с помощь вашего смартфона или сервера home Assistant. У меня этот адрес 192.168.31.123:5001.
Уведомления со смартфона на Android TV:
Для смартфона есть тоже приложение tvoverlay remote. Оно устанавливается из google play. https://play.google.com/store/apps/details?id=com.tabdeveloper.tvoverlayremote&hl=en_IN
После установки потребует ввести адрес tvoverlay основной, это тот qr код 192.168.31.123:5001
И после этого сразу все уведомления со смартфона будут отображаться на телевизоре:
Ну а настройки тут такие-же как и в основном tvoverlay. Можно так-же настраивать уведомления с какой стороны будут, их прозрачность и mqtt.
Настройка TvOverlay в Home Assistant:
В Home Assistant нужно сделать 3 нотификации. Одна для обычного оповещения, вторая для фиксированного, а третья restip – для трансляции фото и видео.
Эти нотификации у меня находятся в packege и выглядят вот так:
tvoverlay:
notify:
- name: TvOverlayNotify_cabinet
platform: rest
method: POST_JSON
resource: http://192.168.31.123:5001/notify
verify_ssl: false
title_param_name: title
data:
id: "{{ data.id | default(null) }}" # string | main text | default: null
appTitle: "{{ data.appTitle | default('Home Assistant') }}" # string | extra info text | default: null
color: "{{ data.color | default('#049cdb') }}" # string | color tint for smallIcon. accepts 6 or 8 digit color hex. the '#' is optional | default: null
image: "{{ data.image | default(null) }}" # string | accepts mdi icons, image urls and Bitmap encoded to Base64 | default: null
video: "{{ data.video | default(null) }}" # string | video url. supports rtps, hls, dash, smoothstreaming | default: null
smallIcon: "{{ data.smallIcon | default(null) }}" # string | accepts mdi icons, image urls and Bitmap encoded to Base64 | default: null
largeIcon: "{{ data.largeIcon | default(null) }}" # string | accepts mdi icons, image urls and Bitmap encoded to Base64 | default: null
corner: "{{ data.corner | default(null) }}" # string | position on the screen. accept values: bottom_start, bottom_end, top_start, top_end | default: null (uses hot corner)
seconds: "{{ data.seconds | default(null) }}" # int | duration that the notification will stay visible in seconds | default: null (uses duration setting)
- name: TvOverlayNotifyFixed_cabinet
platform: rest
method: POST_JSON
resource: http://192.168.31.123:5001/notify_fixed
verify_ssl: false
title_param_name: title
data:
id: "{{ data.id | default(null) }}" # string | can be used to edit or remove the fixed notification | default: [random]
text: "{{ data.text | default(null) }}" # string | main text | default: null
icon: "{{ data.icon | default(null) }}" # string | accepts mdi icons, image urls and Bitmap encoded to Base64 | default: null
textColor: "{{ data.textColor | default(null) }}" # string | accepts 6 or 8 digit color hex. the '#' is optional | default: #FFFFFF
iconColor: "{{ data.iconColor | default(null) }}" # string | accepts 6 or 8 digit color hex. the '#' is optional | default: #FFFFFF
borderColor: "{{ data.borderColor | default(null) }}" # string | accepts 6 or 8 digit color hex. the '#' is optional | default: #FFFFFF
backgroundColor: "{{ data.backgroundColor | default(null) }}" # string | accepts 6 or 8 digit color hex. the '#' is optional | default: #66000000
shape: "{{ data.shape | default(null) }}" # string | frame style. accept values: circle, rounded, rectangular | default: "rounded"
visible: "{{ data.visible | default(true) }}" # boolean || if false, removes the fixed notification with matching id || default: true
expiration: "{{ data.expiration | default(null) }}" # string or int | when the notification will be removed. valid formats: 1695693410 (Epoch time), 1y2w3d4h5m6s (duration format) or 123 (for seconds) | default: null
rest_command:
tvoverlay_cabinet:
url: http://192.168.31.123:5001/set/overlay
method: POST
verify_ssl: false
headers:
accept: 'application/json'
content_type: 'application/json; charset=utf-8'
payload: '{{ payload }}'
где http://192.168.31.123:5001 это адрес tvoverlay на телевизоре android tv. Остальное можно оставить без изменений.
Ну и после перезагрузки Home Assistant у Вас появятся в действиях уведомления, которые можно просто использовать написав какой-то текст и он будет отправляться на телевизор:
И вот так удалось сфоткать на телевизоре (качество конечно так себе).
Ну и теперь с этими нотификациями можно выводить информацию на телевизор.
Например с фиксированным уведомлением можно выводить заряд батареи смартфона, эта автоматизация для Home Assistant будет выглядеть так:
- id: Phone battery Fixed Notification
alias: Phone battery Fixed Notification
trigger:
- platform: state
entity_id:
- sensor.pixel_9_pro_battery_level # using home assistant android app battery sensor
condition: []
action:
- service: notify.tvoverlaynotifyfixed_cabinet
data:
message: "{{ states.sensor.pixel_9_pro_battery_level.state }}%"
data:
id: "phone_battery"
expiration: "15m" #optinal, but this avoids showing outdated info if phone cannot comunicate for some reason, as leaving wifi
icon: "{{ state_attr('sensor.pixel_9_pro_battery_level', 'icon') }}"
mode: single
Тут заменить на свой сенсор sensor.pixel_9_pro_battery_level
и выглядит это так на телевизоре:
Еще например можно выводить статус включенных устройств. Например включен сейчас свет или нет.
Выглядит такая автоматизация вот так:
- id: Light on indicator
alias: Light on indicator
trigger:
- platform: state
entity_id:
- light.desk_lamp # thats a group with all home lights
condition: []
action:
- service: notify.tvoverlaynotifyfixed_cabinet
data:
message: "null"
data:
id: "light_indicator"
icon: mdi:lightbulb
iconColor: "#ff9800"
borderColor: "#ff9800"
shape: circle
visible: |-
{% if 'on' in trigger.to_state.state %}
true
{% else %}
false
{% endif %}
mode: single
Где light.desk_lamp
это объект Light которого будет отслеживаться статус, а notify.tvoverlaynotifyfixed_cabinet
это уведомление ранее созданное которое будет выводить этот статус на телевизор.
Выглядит это так:
Ну и чтоб вывести видео по нажатию на звонок aqara g4 у меня выглядит так:
- id: Отправка видео в overlay по кнопке вызова
alias: Отправка видео в overlay по кнопке вызова
initial_state: true
trigger:
- platform: state
entity_id: event.doorbell_repeater_de0b_video_doorbell
condition: []
action:
- service: camera.snapshot
data:
entity_id: camera.doorbell_repeater_de0b
filename: /config/www/cam_captures/aqara_doorbell.jpg
- delay: 00:00:05
- action: notify.TvOverlayNotify_cabinet
data:
title: Видео с камеры
message: Обнаружено движение
data:
id: tv_cabinet_notification_cam_street_2_video
smallIcon: mdi:speaker-multiple
color: "#FFF000"
largeIcon: mdi:camera
corner: top_end
seconds: 15
image: http://192.168.31.104:8123/local/cam_captures/aqara_doorbell.jpg
video: rtsp://admin:1424242442@192.168.31.278:8554/Streaming/Channels/101
enabled: true
Тут и фото и видео транслируется, нужно заменить свои rtsp ссылки и ссылку на фото.
Вывод:
К этой статье я пришёл когда готовил видео по проектору и думал, как его связать с умным домом Home Assistant. И оказалось, что эти нотификации весьма полезные. По этому мне кажется это годное решение.
Но а что касается второй программы под названием PipUP, я её не использовал, только слышал о ней. И если она Вам интересна, то попробую и о ней что-то рассказать. (она кстати не только на android tv статвится).