Home Assistant - Mi Box S (4K) integracja przez Android TV

Home Assistant - Mi Box S (4K) integracja przez Android TV

Jak zintegrować Mi Boxa tak aby był wyświetlany prawidłowy status zasilania w Home Assistant i aby nie przechodził w stan Unavailable (niedostępności po WiFi)? Trochę mi zajęło poskładanie wszystkiego w całość - ale się udało (no prawie)! 

Urządzenie

Pełny test urządzenia dostępny tutaj: Mi Box S (S 4K) - Android TV - więc jeżeli zastanawiacie się nad zakupem tego urządzenia - ja osobiście je bardzo polecam o czym możecie przeczytać właśnie w tym artykule.

Android TV a Chromecast

Mimo tego, że niby to to samo, jednak tak w ogóle nie jest...

Chromecast generalnie nie pozwala nam zarządzać zasilaniem urządzenia - możemy je wybudzić ale wyłączyć już nie bardzo. Możemy fajnie przesłać obraz, przyciszysz itp. ale jest to Chromecast i też tak jest zarządzany.

Android TV to coś zupełnie innego, pozwala nam w pełni zarządzać urządzeniem - włącznie z wyborem źródła obrazu. W tym wypadku - aplikacji, którą włączamy w danym momencie. 

Problemy

Problemy z Mi Box S - zaczęło się od tego, że pilot jest wyłącznie bluetooth (w Mi Box 3 był też IR)i urządzenie nie ma już w ogóle IR, więc prosty sposób włączenia go z pilota (Boradlink) nawet jak jest niedostępny nie jest możliwy... myślę sobie kupię RJ45 na USB 2.0 - działało świetnie, jednak dalej statusy urządzenia potrafiły uciekać na niedostępny nie mówiąc o tym, że... aby poprawnie odczytać status Mi Boxa trzeba włączyć ADB Debbugger a wtedy... odcinane jest zasilanie na USB - nosz kurde!!!

No i tak mam przejściówkę zakupioną bez sensu i kabel rj45 sobie wisi ze ściany bez podłączenia... nie chce ktoś odkupić? Dobra jest, taka 2.0 ;) 

Urządzenie niedostępne

Mając urządzenie podłączone po WiFi - co jakiś czas ono się usypia (a wtedy usypia też WiFi - brawo dla projektanta), jak tego nie zrobimy to się będzie wieszać i żreć nam niepotrzebnie prąd. Dlatego musimy doinstalować oprogramowanie podtrzymujące WiFi: WakeLock - tylko wtedy prawie zawsze będzie dostępny Chromecast i możliwość wrzucenia czegoś na naszego MiBoxa z telefonu bez szukania pilota.

Niestety rozwiązało to problem w 90% czasu, dalej gdzieś czasami ucieka - na zagranicznych forach też sobie z tym poradzić nikt nie umie. Jednak co ciekawe - wysłanie polecenia włącz - działa prawie zawsze - czego już w ogóle nie jestem w stanie zrozumieć.

Uruchomienie ADB

na Mi Box

Uwaga: włączenie ADB odcina nam zasilanie na USB... więc musimy mieć Mi Boxa na WiFi i nie możemy mieć nic wpięte do USB, bo nie będzie działać...

Na początku, trzeba "odkryć": Developer potion - klikając wiele razy w About ->  Build / Informacje -> Kompilacja

Następnie włączyć USB debugging w Developer options -> >Dubugging / Opcje programistyczne -> Debugowanie USB

Po tej operacji możemy się połączyć z naszym Mi Boxem przez ADB Serwer

na Home Assistant

Maciek zwrócił mi uwagę, że nie trzeba korzystać z addona ADB Serwer, jednak jeżeli coś Ci nie działa, połącz się przez niego! 

Dodajemy w configuration.yaml - oczywiście podajemy IP swojego Mi Boxa

media_player:
  - platform: androidtv
    host: 192.168.0.61 #wifi
#    host: 192.168.0.70 #kabel
    name: MiBoxTV

na Mi Box

Wyskoczy nam zapytanie czy pozwalamy na dostęp ADB, musimy go zaakceptować - pamiętaj aby kliknąć aby zostało to zapamiętane [x] pod zapytaniem. 

Możliwości Android TV

Obecnie wgląda to teraz tak:

Gdy urządzenie włączymy mamy dostęp do wyboru źródła - a są to wszystkie aplikacje dostępne na urządzeniu:

Gdy mamy jako Chromecast mieliśmy tylko tak:

Jak widzicie, jest stan off, mimo, że urządzenie jest włączone - jest to stan przekazywania mediów na chromecasta, jeżeli zaczniemy coś na niego przesyłać wtedy będzie jako on.

Rozwiązanie problemu

Uruchomienie HDMI CEC zarządzania energią, powoduje, że jak włączam mój amplituner Yamaha -> włącza się automatycznie mój Mi Box i to mi wystarczy.

Podsumowanie 

Nie działa to do końca tak jak bym chciał, gubi się czasami ten zasięg, czasami Home Assistant długo ładuje urządzenie - nie wiem czym jest to spowodowane, jednak ja zrobiłem sobie fajny skrypt:

yamaha_music:
  alias: Yamaha Music
  sequence:
  - service: broadlink.send
    data:
      host: 192.168.0.29
      packet: JgBQAAABKZIVEBU1FRAVNRU1FTUVNRUQFTUVEBU1FRAVEBUQExIVNRU1FTUVEBQRFRAUERQRFBEUERQQFTUVNRU1FTUVNRUQFQAFRwABKkgVAA0FAAAAAAAAAAA=
  - service: media_player.turn_on
    data:
     entity_id: media_player.living_room_main
  - service: media_player.volume_set
    data:
     entity_id: media_player.living_room_main
     volume_level: 0.54
  - service: media_player.select_source
    data:
     entity_id: media_player.living_room_main
     source: hdmi1
  - service: media_player.turn_on
    data:
     entity_id: media_player.miboxtv
  - service: media_player.volume_set
    data:
     entity_id: media_player.miboxtv
     volume_level: 0.8
  - service: media_player.select_source
    data:
     entity_id: media_player.miboxtv
     source: Spotify
  - service: media_player.media_play
    data:
     entity_id: media_player.miboxtv

Możemy go rozszerzyć nawet o to co ma być grane (playlista) więc możliwości są naprawdę fajne! Ale mnie to nie jest potrzebne, bo co ma grać wybieram sobie już głosowo :) 

 


Chcesz wiedzieć więcej? Dołącz do naszej grupy na FB - będzie nam też miło jak polubisz nasz Fanpage!