Boa tarde,
Alguem consegui utilizar a integração Android TV (https://www.home-assistant.io/integrations/androidtv/) com uma box meo android.
O problema a para aceder ao modo programador, a box pece um codigo.
Obrigado
Olá…
Sim também gostava de usar tal integração mas não estou a conseguir. Chegas-t a conseguir algo?
O máximo que consigo através do HA é controlar o volume, mudar canal, mute, ligar e desligar box.
Só está faltar Butão de esquerda, direita, cima, baixo, enter, back… e estaria as coisas mais importante a funcionar
Boa tarde,
Eu não consegui nada mais com esta box infelizmente.
Olá novamente…
Talvez tenha achado a solução, não é da minha autoria, mas parece funcionar segundo alguns utilizadores, logo vou testar a partilho aqui se correr bem…
Atualização:
Entretanto já testei e realmente funciona mesmo e é tão fácil.
Como fazer:
Na box ir ao playstore e procurar/instalar a aplicação “developer tools”
Dentro da tal aplicação ir ao separador “developer options” e activar a opção “depuração usb” ( desta forma também é ativado o menu de programador nas Definições da Box e já não é pedido o tal Pin da Meo)
Apenas fazendo isto a integração presente no HA do android tv já funciona (basta quando se meter o ip responder na janela que irá aparecer na box que permitimos para sempre)
Como indiquei antes isto não foi descoberto por mim mas por outro user a quem deixo os créditos: lemos.corp de outro fórum (não sei se posso escrever qual)
Isto funciona a perfeção. Tão facil. 30 segundos.
A unica coisa e que so ha 1 entidade. Poucas opçoes.
Obrigado
Sim realmente muito rápido lol
Sim só tens uma entidade mas sobre essa entidade podes chamar o serviço “androidtv.adb_command” e chamar as várias teclas do comando tais como
POWER
SLEEP
HOME
UP
DOWN
LEFT
RIGHT
CENTER
BACK
MENU
Verifica no site indicado por ti tens como o fazer.
E se quiseres comandos ainda mais rápidos tens opção de usar o serviço “androidtv.learn_sendevent” para aprender comandos através do comando (ainda não testei mas pelas instruções não parece difícil)
Conclusão é uma entidade mas com total controlo sobre tudo
Para activar os Developer Tools e ter acesso a essas opções não é preciso instalar nenhuma aplicação, basta ir ao menu onde estão as informações da box, ir ao build number e ir carregando (sete vezes se não estou em erro) até aparecer uma mensagem a dizer que as Developer Tools estão activas. Este “truque” existe desde as primeiras versões de Android e as opções disponíveis variam em função das características de cada equipamento.
Na box da Meo, ao fazer isso pede um PIN…
Exactamente como o Rui Peixeiro disse (aliás o Bmota também referiu no primeiro post), é mesmo obrigatório instalar a tal aplicação Developer Tools, caso contrário é pedido um pin que a Meo não fornece.
Numa box normal ou até num telemóvel seria realmente como índicas mas nesta box não é possível pois tem tal bloqueio.
Já agora aproveito para indicar ao Bmota que também já testei o serviço androidtv.learn_sendevent e a box respondeu correctamente com os comandos tal com o manual indica, fiquei assim com os comandos/códigos todos de forma mais rápida/direta (até a tecla Meo funciona)
Se bem que testei com os comandos simples por adb e, embora não tenha testado todos, até nem achei que sejam lentos… mas pronto obter os comandos por sendevent é tão simples e como indicam ser melhor dei-me ao trabalho de os obter todos.
Olá @Gatoricardo.
Podes partilhar o yaml com os botões?
Já agora, quem tem por Wi-Fi, ao desligar também vos fica indisponível e já não permite ligar pelo HA?
E se estiver por cabo, já permite ligar?
Olá @Peixeiro …
Meu código é uma mistura de yaml e nodered (pois com ele a liberdade de programar é maior) e vários addons extras de hacs e também está está em fase construção e testes, ainda não tenho tudo a funcionar… mas posso ajudar se tiveres alguma dúvida em específico de como fazer algo que ou saiba.
Quanto ao ligar a box eu também a tenho a funcionar por wireless e consigo ligar e desligar sem problema desde que tenha cuidado com uma coisa.
Se eu mandar ligar ou desligar a box directo pelo botão que é criado pela própria integração (tal como o botão de volume e outros que são criados sozinhos embora estes até funcionem bem) a minha box também por vezes se passava (até as vezes entrava no modo de media e ficava com imagem do home assistant na televisão).
Mas se for eu a criar o botão manualmente, ou seja por exemplo criar um botão que chama o serviço media_player.turn_on ou turn_off já funciona sempre (pelo menos até agora tem funcionado sempre… por isso mesmo mandei desactivar o botão que é criado automaticamente que liga ou desliga a box e uso apenas o meu)
Eu ainda estou testar algumas coisas, neste momento único stress que estou a ter, ando em testes com isso mas pelo vistos não tem ainda solução é o seguinte.
Eu criei os botões rápidos usando o serviço sendevent, box respondeu para o HA qual o comando a usar (criei para todas as teclas do comando) mas se enviar para a box pelo menos alguns comandos a box responde com um Permission denied… do que andei analisar, isto acontece com todos os dispositivos que tem android 10 ou superior, quer seja nesta box ou até mesmo num Chromecast. Segundo li neste momento só fazendo um downgrade mas isso nem todos dispositivos permitem.
De qualquer forma tudo funciona se chamar os serviço Android_TV.ADB_command e respetivo comando ou no caso de alguma teclas o serviço media_player e seu serviço corresponde (mas claro preferia o sendevent mas que eu saiba ainda ninguém encontrou solução seja qual for o dispositivo)
Obrigado pelas dicas.
Eu não uso nodered, pelo que vou tentar configurar os botões principais.
No entanto, eu nem quero controlar a box pelo HA, que sou dos que acho mais pratico o comando, no entanto há algumas coisa que gostaria de fazer pelo Google Assistant, tais como:
- desligar; ligar; aumentar e diminuir o volume;
e para ser perfeito: mudar de canal.
No comando da box, basta clicar no botão do Google Assistant e dizer “mudar para a SIC” e ele muda logo, mas a mesma instrução via telemóvel ou outro dispositivo Google Assistant não funciona, mesmo dizendo algo tipo “mudar box meo para sic”… não sei se é o meu procedimento que não é correto ou se não dá mesmo.
Quanto ao ligar a box via HA, estando esta por WIFI, fui verificar no AP e ela desliga-se mesmo do wifi, pelo que o comando nunca lá chegaria. Fiz uns testes e quando a desligo no HA ela mantêm o WIFI ligado por uns tempos, permitindo re-ligar, mas depois desconecta-se.
Eu também já tentei algo do género mas também não consegui (usando o google assistant) mas nisso realmente o comando da box é muito prático que intende muito bem por voz o que pretendemos.
Mas as vezes quando o comando não está perto da muito jeito (embora comando original acho bem melhor)
Mas também existe coisas que é muito mais rápido usando o home assistant, hoje mesmo terminei de criar um teclado (teclas de A - Z, espaço, apagar,…) numa pesquisa é muito rápido escrever uma frase do que escolher letra por letra com o comando olhando para o ecrã (por exemplo procurar algo no YouTube, aplicação Meo,…)
A minha box realmente não se desliga do router, mesmo desligada fica sempre pronta a receber comandos e responde a eles.
Já experimentas-t fazer o que está na página do android tv do home assistant? Eles falam nessa situação de algumas box se desligarem da rede passado algum tempo e indicam um programa de gestão de energia para instalar na box por exemplo o Wakelock.
Retirado do site deles (site referido pelo autor do tópico):
If your device drops off WiFi, breaking the ADB connection and causing the entity to become unavailable in Home Assistant, you could install a wake lock utility (such as [Wakelock] to prevent this from happening.
Para usar as funções do comando com o Google Assistant podem criar rotinas no Google Home.
Por exemplo, as automações e scrips aparecem no Google Home (se estiver sincronizado com o HA). Depois é criar uma rotina que chame a automação/script que pretendem, tipo “ok Google, turn on tv”.
Com scripts, não sei se com automações funciona, podem encadear comandos para por exemplo passar para um canal de dois ou três algarismos.
Obrigado pela ajuda…
No entanto esta box não permite mudar de canal usando o número (pelo menos eu não consigo). Eu até consigo enviar para a box números mas ela não interpreta esses números como mudar para o canal número x.
Tem se carregar na tecla de abrir lista de canais e escolher o canal pretendido pelo ícone.
Já se pedirmos ao google assistant (usando o comando da Meo), pelo nome do canal ele já muda de canal (indicando o número do canal por voz não experimentei mas se calhar também vai mas não existe teclas/código para tal segundo minhas pesquisas, só mesmo mudar para o próximo ou anterior canal)
Novidades fresquinhas a quem interessar e também de forma ao tópico ficar mais atualizado:
O Home Assistant lançou uma nova versão (2023.5) e além das várias novidades uma delas é a nova integração “Android TV Remote”
Isto simplifica tudo o que foi aqui falado.
Apenas é necessário aceder a tal integração que ao comunicar com a box da Meo, irá surgir no ecrã um código que temos de introduzir de volta no home assistant (a tal integração fica a espera de tal código).
A partir deste momento já podemos usar o serviço “remote.send_command” com o comando que pretendemos executar na box.
Por exemplo estes comandos:
DPAD_UP
DPAD_DOWN
DPAD_LEFT
DPAD_RIGHT
DPAD_CENTER
VOLUME_DOWN
VOLUME_UP
VOLUME_MUTE
MUTE
HOME
BACK
MEDIA_PLAY_PAUSE
0 … 9 (número do canal)
ENTER
CHANNEL_UP
CHANNEL_DOWN
ASSIST
São apenas alguns exemplos que testei a funcionar mas tem mais comandos que podem ser consultados aqui: https://github.com/tronikos/androidtvremote2/blob/main/TvKeys.txt
ou ainda mais completo aqui https://github.com/tronikos/androidtvremote2/blob/main/src/androidtvremote2/remotemessage.proto
Vantagens desta forma é que os comando são instantâneos (na forma anterior alguns eram lentos e os rápidos por sendevent não funcionavam).
E outra novidades é que desta forma também já é possível mudar de canal usando o número do canal por exemplo testei mudar com sucesso para o canal 4:
service: remote.send_command
data:
command: 4
target:
entity_id: remote.box_meo
E ainda é possível chamar programas para serem abertos, tais como youtube, netflix,… usando o serviço “remote.turn_on” e preenchendo o “activity” com o nome do activity ou url do programa que pretendemos abrir, por exemplo em yaml um dos que testei e funciona instantaneamente:
service: remote.turn_on
data:
activity: https://www.youtube.com
target:
entity_id: remote.box_meo
Toda esta informação pode ser consultada na documentação da nova integração do home assistant
Funciona muito bem esta integração!
Fica o meu exemplo rápido, ainda não testei tudo, mas já inclui atalho para a app MEO e para o Stremio.
type: vertical-stack
cards:
- type: entities
entities:
- entity: remote.box_meo
- square: true
columns: 3
type: grid
cards:
- type: button
show_icon: false
tap_action:
action: none
hold_action:
action: none
- type: button
icon: mdi:arrow-up-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_UP
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
show_icon: false
tap_action:
action: none
hold_action:
action: none
- type: button
icon: mdi:arrow-left-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_LEFT
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:circle
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_CENTER
target:
entity_id: remote.box_meo
hold_action:
action: call-service
service: remote.send_command
data:
command: DPAD_CENTER
hold_secs: 0.5
target:
entity_id: remote.box_meo
- type: button
icon: mdi:arrow-right-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_RIGHT
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:arrow-left
tap_action:
action: call-service
service: remote.send_command
data:
command: BACK
target:
entity_id: remote.box_meo
hold_action:
action: call-service
service: remote.send_command
data:
command: BACK
hold_secs: 0.5
target:
entity_id: remote.box_meo
- type: button
icon: mdi:arrow-down-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_DOWN
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:home-outline
tap_action:
action: call-service
service: remote.send_command
data:
command: HOME
target:
entity_id: remote.box_meo
hold_action:
action: call-service
service: remote.send_command
data:
command: HOME
hold_secs: 0.5
target:
entity_id: remote.box_meo
- square: false
columns: 3
type: grid
cards:
- type: button
icon: mdi:skip-previous
tap_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_PREVIOUS
target:
entity_id: remote.box_meo
hold_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_REWIND
target:
entity_id: remote.box_meo
- type: button
icon: mdi:play-pause
tap_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_PLAY_PAUSE
target:
entity_id: remote.box_meo
hold_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_STOP
target:
entity_id: remote.box_meo
- type: button
icon: mdi:skip-next
tap_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_NEXT
target:
entity_id: remote.box_meo
hold_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_FAST_FORWARD
target:
entity_id: remote.box_meo
- type: button
icon: mdi:volume-off
tap_action:
action: call-service
service: remote.send_command
data:
command: MUTE
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:volume-medium
tap_action:
action: call-service
service: remote.send_command
data:
command: VOLUME_DOWN
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:volume-high
tap_action:
action: call-service
service: remote.send_command
data:
command: VOLUME_UP
target:
entity_id: remote.box_meo
hold_action:
action: none
- square: false
columns: 4
type: grid
cards:
- type: button
icon: mdi:youtube
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://www.youtube.com
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: picture
image: >-
https://upload.wikimedia.org/wikipedia/commons/thumb/e/ee/Meo_logo_pt.png/200px-Meo_logo_pt.png
tap_action:
action: call-service
service: remote.turn_on
data:
activity: ottapp://
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: picture
image: >-
https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Amazon_Prime_Video_logo.svg/450px-Amazon_Prime_Video_logo.svg.png
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://app.primevideo.com
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: picture
image: >-
https://play-lh.googleusercontent.com/ziYggzn6bctZP1fPuuRpjJKrYtL5VglkEaBz5EmThXSnH3phTzjhw9jFT5qwN12yuQCQ=w600-h300-pc0xffffff-pd
tap_action:
action: call-service
service: remote.turn_on
data:
activity: stremio://
target:
entity_id: remote.box_meo
hold_action:
action: none
- square: false
columns: 3
type: grid
cards:
- type: button
icon: mdi:numeric-1
tap_action:
action: call-service
service: remote.send_command
data:
command: 1
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:numeric-2
tap_action:
action: call-service
service: remote.send_command
data:
command: 2
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:numeric-3
tap_action:
action: call-service
service: remote.send_command
data:
command: 3
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:numeric-4
tap_action:
action: call-service
service: remote.send_command
data:
command: 4
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:numeric-5
tap_action:
action: call-service
service: remote.send_command
data:
command: 5
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:numeric-6
tap_action:
action: call-service
service: remote.send_command
data:
command: 6
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:numeric-7
tap_action:
action: call-service
service: remote.send_command
data:
command: 7
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:numeric-8
tap_action:
action: call-service
service: remote.send_command
data:
command: 8
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:numeric-9
tap_action:
action: call-service
service: remote.send_command
data:
command: 9
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: button
icon: mdi:numeric-0
tap_action:
action: call-service
service: remote.send_command
data:
command: 0
target:
entity_id: remote.box_meo
hold_action:
action: none
- type: entity
entity: remote.box_meo
attribute: current_activity
- type: media-control
entity: media_player.box_meo
Sim muito fixe @Peixeiro …
Velocidades incríveis assim…
Mais impressionante no teu código é como é que chegas-te ao nome das app´s para usar no activites… principalmente a app da meo que abres pelo nome “ottapp” e que realmente funciona… como fazes para obter tal nome até para outras app?
Obrigado. Para obter o nome/link para a app usei o método descrito em https://community.home-assistant.io/t/android-tv-remote-app-links-deep-linking-guide/567921
Fiz o download da app (no caso da meo de uma daquelas alteradas para funcionar em qualquer box android tv) e carreguei para o site APK Decompiler online e abri lá o ficheiro resources/AndroidManifest.xml
onde aparece o link para a app. Até há outras opções, tipo search,…
Acho que assim para o essencial, já só me falta o botão dos quadrados do comando original (mas ainda não tive tempo para ver qual será) e dois ou três atalhos para rádios online. O do Google Assistant não vi interesse em colocar. O microfone está no comando, e se tenho o telemóvel na mão falo logo por aí…
Obrigado pelo esclarecimento… já percebi a mecânica…
A tal teclas que índicas é de listas os canais pelo que percebi… essa tecla tanto no método antigo como no método novo também não descobri nenhum comando para ela (resolve-se na mesma carregando na tecla back que também mostra a lista de canais embora num aspecto diferente).
No método antigo ainda tenho o envio de letras a funcionar mas neste novo envio o comando de letras parece não funcionar (números funciona, comando del funciona, enter também, … letras não consigo ) mas pronto o mais importante funciona e melhor de tudo é instantâneo