Powiadomienia na Android TV

Od wersji HA 2021.8.x pojawiła się do “wyklikania w GUI” integracja Notifications for Android TV / Fire TV - Home Assistant. Postanowiłem wreszcie z tego skorzystać co okazało sie naprawdę banalnie proste na Xiaomi Mi Box S i polegało na:

  • zalogowaniu się do konta Googla na urządzeniu Xiaomi

  • wyszukaniu i zainstalowaniu darmowej aplikacji Notifications for Android TV na urządzeniu

  • skonfigurowaniu aplikacji wg ustawień:
    image

  • dodaniu w HA integracji Powiadomienia dla Android TV / Fire TV i jej skonfigurowaniu, należało podać adres IP i nazwę urządzenia:

  • przetestowaniu integracji za pomocą Narzędzi Deweloperskich, pojawiła się nowa usługa notify:

Poniżej przykład testowego powiadomienia na Android TV:
w trybie interfejsu użytkownika (“wersja graficzna”)

to samo w trybie yaml z komentarzami:

service: notify.mi_box_s
data:
  title: Brama garażu
  message: Brama garażu jest otwarta od 20 minut.
  data:
    # czas wyświetlania powiadomienia na ekranie TV:
    duration: 5
    # wielkość czcionki tekstu powiadomienia:
    fontsize: large
    # pozycja powiadomienia na ekranie TV:
    position: botton-right
    # kolor tła powiadomienia:
    color: red
    # transparentnośc okienka z powiadomieniem:
    transparency: 50%

oraz efekt końcowy na TV (prawy dolny róg ekranu):

ciąg dalszy nastąpi …

7 Likes

Wspomnianej integracji używałem już dawno, z tym że całe ustawienie miałem w configuration.yaml

notify:
  - platform: nfandroidtv
    name: android_tv
    host: 192.168.1.113
    fontsize: medium
    position: bottom-right
    duration: 13
    transparency: 25%
    color: black
    interrupt: 0

Od wersji 2021.8 przeniosło się do GUI.
Moje ustawienia wyglądu powiadomienia przestały działać,
i nie bardzo wiem jak je zmienić i dostosować.
Powiadomienie ma domyślny wygląd.
Oczywiście z Narzędzi deweloperskich jak ustawiam to działa, ale nie przez Node-Red

image
image

Nie używam Node-REDa a wydaje mi się, że powinno być tak (to tylko fragment odpowiedniego kodu):

{  
    "title": msg:wiadomosc.temat,
    "message": msg.wiadomosc.tresc,
    "data":
     {
       "fontsize": "medium",
       "position": "bottom-center",
     }
}

Edit: @bartik22 ma tak samo :slight_smile:.

2 Likes

ja mam w NR tak:

dfgdfg

1 Like

Skoro umiesz już wysyłać powiadomienia na Android TV pora na praktyczne wykorzystanie tego. Możesz to wykorzystać przy naciśnięciu przycisku dzwonka przy drzwiach wejściowych w prostej automatyzacji:

  • w momencie naciśnięcia przycisku wykonywany jest snapshot z kamery przy drzwiach
  • plik z obrazem zostaje zapisany w katalogu media na HA pod nazwą outdoor_camera_20210810-110432.png (dokładny opis na Media w Home Assistant - #3 przez macek)
  • oprócz powiadomienia na komórkę, dodatkowo plik zostaje wysłany na ekran TV dzięki czemu podczas oglądania TV wiesz kto dzwoni i nie musisz szukać komórki :grin:.

Poniżej kod takiego powiadomienia:

service: notify.mi_box_s
data:
  title: Drzwi wejsciowe
  message: Ktos nacisnal dzwonek.
  data:
    duration: 10
    fontsize: large
    position: botton-right
    color: red
    transparency: 50%
    file:
      # sciezka do pliku 
      path: /media/snapshot/outdoor_camera_20210810-110432.png

oraz efekt końcowy na TV (oczywiście zdjęcie jest poglądowe bo nie mam kamery przy wejściu):

image

Historia powiadomień jest także dostępna w aplikacji na telewizorze, w szczegółach jest także data i czas powiadomienia:

Mile widziane inne, praktyczne realizacje i pomysły wykorzystania powiadomień na Android TV

4 Likes

Możemy sobie wrzucać jakieś scrapy z www, w NR
dla przykładu, nowy post z forum:

flow

[{"id":"ac267befa24862cc","type":"http request","z":"c30eff51da6ff3a2","name":"forum Artur","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://forum.arturhome.pl/posts.rss","tls":"","persist":false,"proxy":"","authType":"","x":410,"y":1280,"wires":[["b6d150cee65c6e87"]]},{"id":"aede178ed3564b17","type":"inject","z":"c30eff51da6ff3a2","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"","payloadType":"date","x":250,"y":1280,"wires":[["ac267befa24862cc"]]},{"id":"b6d150cee65c6e87","type":"string","z":"c30eff51da6ff3a2","name":"tytul","methods":[{"name":"between","params":[{"type":"str","value":"<item>"},{"type":"str","value":"</item>"}]},{"name":"between","params":[{"type":"str","value":"<title>"},{"type":"str","value":"</title>"}]},{"name":"toUpperCase","params":[]}],"prop":"payload","propout":"tytul","object":"msg","objectout":"msg","x":550,"y":1280,"wires":[["9612364e41730fab"]]},{"id":"9612364e41730fab","type":"string","z":"c30eff51da6ff3a2","name":"post","methods":[{"name":"between","params":[{"type":"str","value":"<item>"},{"type":"str","value":"</item>"}]},{"name":"between","params":[{"type":"str","value":"<description>"},{"type":"str","value":"</description>"}]},{"name":"stripTags","params":[{"type":"str","value":""}]},{"name":"collapseWhitespace","params":[]},{"name":"strip","params":[{"type":"str","value":"<![CDATA["}]},{"name":"strip","params":[{"type":"str","value":"]]>"}]}],"prop":"payload","propout":"post","object":"msg","objectout":"msg","x":670,"y":1280,"wires":[["d20725c94bef9d5c"]]},{"id":"2abffd0fa1139a63","type":"api-call-service","z":"c30eff51da6ff3a2","name":"","server":"4d0e02c9.2307bc","version":3,"debugenabled":false,"service_domain":"notify","service":"biurotv","entityId":"","data":"","dataType":"jsonata","mergecontext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","x":1250,"y":1280,"wires":[[]]},{"id":"08663c10c674b203","type":"function","z":"c30eff51da6ff3a2","name":"budowanie wiadomości","func":"msg.payload =\n{\n    \"data\":\n    {\n    \"message\": msg.post,\n    \"title\": msg.tytul,\n     \"data\":\n      { \n    \"duration\": \"30\",\n    \"fontsize\": \"max\",\n    \"color\": \"red\",\n    \"position\": \"top-right\",\n    \"transparency\": \"0%\"\n\n      }\n}\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1010,"y":1280,"wires":[["2abffd0fa1139a63"]]},{"id":"d20725c94bef9d5c","type":"rbe","z":"c30eff51da6ff3a2","name":"","func":"rbe","gap":"","start":"","inout":"out","septopics":true,"property":"post","topi":"topic","x":810,"y":1280,"wires":[["08663c10c674b203"]]},{"id":"4d0e02c9.2307bc","type":"server","name":"Asystent domowy","version":1,"legacy":false,"addon":false,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":true,"cacheJson":true}]
1 Like

Cześć, co to za nody, bo muszę je doinstalować…?

Po aktualizacji TV shield do android TV 11 integracja notification przestała łączyć się z Boxem :frowning: Macie jakiś fix ?

Sam sobie odpowiem:
Trzeba zwiększyć uprawnienia aplikacji android notification :slight_smile: W wersji 9 androida nie było tego zabezpieczenia.

U mnie na Nvidia Shield już na etapie konfiguracji Android 11 wyskoczyło abym nadał nowe uprawnienia do Powiadomień dla aplikacji.

A androidTV działa tobie ? Bo ja musiałem ręcznie zainstalować fixa -

2 Likes

Działa. Tylko po aktualizacji uruchomiłem apkę pierwszy raz ręcznie. Sprawdziłem ustawienia i powiadomienia przychodzą jak do tej pory.
EDIT:
Powiadomienia działają, ale faktycznie integracja androidtv nie działa.
To co widziałem, że działa było przez Google CAST
Dzięki zastosuję fixa.

u mnie bez zmian i problemów

zrobiłem u siebie coś podobnego ale mam problem z wyświetlaniem zdjęcia zapisanego…
oczywiście ścieżka z poziomu HA i obrazu wyświetla się prawidłowo, więc pewnie ścieżka musi być prawidłowa dla tej funkcji… ktoś przerabiał ?

service: notify.android_tv
data:
  title: Drzwi wejsciowe
  message: Ktos nacisnal dzwonek.
  data:
    fontsize: large
    position: botton-right
    transparency: 50%
    file:
      # sciezka do pliku 
      path: /local/snapshot/snapshot_camera_garage_dzwonek.jpg

konfiguracja w configuration.yaml

   allowlist_external_dirs:
     - /config
     - /config/www

Powinno być tylko:

allowlist_external_dirs:
  - "/config/www/"

Nie udostępniaj na zewnątrz (external) katalogu z konfiguracją całego HA.
Proponuję korzystanie z katalogu media do takich celów, po to została dodana ta integracja Media w Home Assistant

Słuszna uwaga jednak nie pomogła w moim przypadku - czyli jeszcze mi czegoś brakuje :frowning:
w konfiguracji już mam:


   media_dirs:
     media: /media
   allowlist_external_dirs:
     - /config/www

w folderze www:
image

w folderze www/snapshot:

z przeglądarki pod adresem widzę prawidłowo:

http://192.168.x.x:8123/local/snapshot/snapshot_camera_garage_dzwonek.jpg

jednak wywołanie usługi z komunikatem prawidłow jednak bez obrazu:

service: notify.android_tv
data:
  title: Drzwi wejsciowe
  message: Ktos nacisnal dzwonek.
  data:
    fontsize: large
    position: botton-right
    transparency: 50%
    file:
      # sciezka do pliku 
      path: /media/snapshot_camera_garage_dzwonek.jpg

Jeśli podajesz ścieżkę względną to powinno być coś takiego: ./katalog/katalog/plik.jpg - kropka na samym początku. Jeśli podajesz ścieżkę bezwzględną, czyli od korzenia drzewa katalogów to wtedy zaczynasz od /

A dla mnie to nie to samo co ja pisałem, sprawdź znak po znaku.
Druga sprawa to pomieszałeś wszystko - media, local, www - dlatego proszę dokładnie przeczytaj trzy razy Media w Home Assistant - #3 przez macek), wszystko dokładnie tam wyjaśniłem, potem zrób tak samo jak opisałem na początku tego wątku i będzie działać.

1 Like

jak zwykle miałeś rację :slight_smile: - dzięki @macek !!
pytanie dodatkowe - jak w takim razie ogarnąć rozmiar plików - poniewaz gdy usuwam linijkę:

     - /config/

image

oczywiście pochodzi to z filesize

    ######################## BLOK DANYCH DB ########################
    
    - platform: filesize
      file_paths:
        - /config/home-assistant_v2.db
        - /config/home-assistant.log

próbowałem różnie się dostać do tego pliku aby był widoczny jednak wymaga aby dodać ten folder do koniguracji, jak przenoszę ten plik gdzieś indziej to system wywala :slight_smile:

Niestety ale wtedy musisz dodać \config\ do allowlist_external_dirs, taka informacja jest w dokumentacji integracji File Size - Home Assistant.