• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Выводим уведомления из умного дома Home Assistant на Android TV с помощью программы TvOverlay.

15 мая, 2025

 

Работа проверена на проекторе: 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 статвится).

Primary Sidebar

Поиск

Новые записи

  • Выводим уведомления из умного дома Home Assistant на Android TV с помощью программы TvOverlay.
  • Автоматизация оповещения о надвигающимся дожде в Home Assistant
  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·