Controlar Box Meo com HA

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.

1 Curtiu

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)

2 Curtiram

Isto funciona a perfeção. Tão facil. 30 segundos.

A unica coisa e que so ha 1 entidade. Poucas opçoes.

Obrigado

1 Curtiu

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

1 Curtiu

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.

2 Curtiram

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)

1 Curtiu

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.

1 Curtiu

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

2 Curtiram

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
		
2 Curtiram

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 :slight_smile:


Copyright © 2017-2021. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade