Freebox Player comment le piloter

Je cherche à piloter le Freebox Player pour l’intégrer dans une télécommande.

Exemple de ce que je voudrais faire :

  • Ajouter un bouton « Netflix » qui lancerait l’application Netflix directement :

J’ai trouvé cet utilisation Assistant Freebox Cloud qui utilise l’API Freebox pour, par exemple :

Mais pour l’instant j’ai des problèmes pour me connecter et j’ai dû mal pour le calcul du password. J’ai suivi ce message api-freebox-debutant.

Avez vous des idées, des tutos pour commencer ce projet ?
Est-ce qu’un développeur est intéressé par ce projet ?
Qu’est-ce qui serait le plus simple pour débuter le développement ?

Tout simplement non?
Ou j’ai pas compris la demande.

@tikismoke, merci pour ce lien mais j’ai déjà installé le Freebox_Player via HACS et je peux piloter mon player via une télécommande.

Ce que je recherche, c’est la possibilité d’intégrer à cette télécommande une touche Netflix qui lancera directement l’application Netflix. Et apparemment l’intégration Freebox_Player ne sait pas encore le faire (vu qu’elle utilise l’API Télécommande de Free et pas l’API Player).

Quel player ? Pop, Révolution ? mini 4k ?

Je suis parvenue a faire ce que tu demande avec le pop, sinon pour la révolution c’est beaucoup plus simple il suffis de récupéré le code d’association télécommande

exemple de bouton netflix pour player pop :

      - entity: media_player.android_tv_pop
        tap_action:
          action: call-service
          service: media_player.select_source
          service_data:
            source: Netflix
          target:
            entity_id: media_player.android_tv_pop
        type: entity-button
        name: Netflix
        icon: 'mdi:netflix'

C’est une Freebox révolution. Tu utilises quoi comme composant ?

Bonjour,

Comment fais tu pour aller sur Netflix depuis la télécommande du Freebox Player ?
(je n’ai pas de Freebox, d’où ma question :wink: )

A partir de là, je ferais un bouton qui lance un script dans lequel se trouverait la sequence de touche faite sur la télécommande.

@Sylvain_G : tu entend quoi par composant ? (désolé je suis nouveau sous HA, je nage encore dans bien des choses …)

@pepite : j’appuis sur le bouton dédié :sweat_smile:

@Dackara, est-ce que tu as installé quelque chose avec HACS ?
Dans le code que tu as donné il y a un media_player, ça vient d’un composant ?

dans configuration.yaml

media_player:
  - platform: androidtv
    name: Android_TV_POP
    host: 192.168.0.XX

il me semble que la plateform androidtv est native de HA [mais du coup ne doit pas fonctionner pour la révolution qui n’en ai pas une]

Bonjour @Dackara

Je viens de recevoir le player pop, je fais mon retour chez free :wink: mais avec pop plus de telecommande.

Comment tu pilotes donc le player pop ?
Avec l’integration android TV ?
As tu fait une télécommande ?

Désolé, je me retrouve en mode NOOB avec de player POP :wink:

On est bien d’accord que quand tu dit « plus de télécommande » tu parle bien de télécommande virtuel hein ?! non parce que il y en a une de fournis avec quand même :sweat_smile:

Sinon oui, intégration Android tv + ADB - Android Debug Bridge installer sur HA.
Il faut également activé le mode « dev » du player (en allant dans les réglage et en cliquant un certain nombre de fois sur l’onglet de version logiciel je crois)

Mais, bon courage… moi j’ai pas encore fini de tout configurer (d’autres choses ont la priorité :stuck_out_tongue: )

Salut à tous,

J’ai eu une récente mise a jour de mon player POP avec une nouvelle version d’andoidtv. Cette mise à jour semble « caser » la connexion avec l’appli « Android TV » que j’utilisais sur mon smartphone pour piloter le player.

Bref, j’ai essayé de passer par le module androidtv de HA mais sans succès.
J’ai bien mis le player en mode « dev » en cliquant 8 fois sur la version du build.

Sur HA, j’ai :

media_player:
  - platform: androidtv
    device_class: androidtv
    name: Player POP
    host: 192.168.1.xxx

Mais dans les logs, j’ai :

2021-10-26 22:07:04 WARNING (MainThread) [androidtv.adb_manager.adb_manager_async] Couldn't connect to 192.168.1.xxx:5555.  ConnectionRefusedError: Connect call failed ('192.168.1.xxx', 5555)
2021-10-26 22:07:04 WARNING (MainThread) [homeassistant.components.androidtv.media_player] Could not connect to Player POP at 192.168.1.xxx:5555 using Python ADB implementation with adbkey='/config/.storage/androidtv_adbkey'

J’ai déjà un media_player.freebox_player_pop venant de l’intégration Google Cast. Est-ce que ça peut poser problème?
Aussi dans la doc du composant androidtv, il parle d’un popup sur la télé afin de toujours autoriser la connection, je n’ai rien eu de tel.

Si jamais vous avez des idées ou des trucs à essayer pour me débloquer je suis preneur!!

1 « J'aime »

salut @Sylvain_G ,
as tu reussi a creer ta « telecommande » pour ta freebox ?
je suis justement en train de chercher a faire la meme chose …
je vois bien qu’avec l"api on peux tout faire mais comment l’integrer a home assisant ?
merci pour ton aide .

Pour l’instant, j’ai ça :

Certaines touches ne sont pas fonctionnelles comme les touches « Free », « Netflix » et « Jellyfin ».

Pour le code des cartes (j’en ai 2 dans les 2 orientations qui s’affichent en fonction de l’orientation du device) :

Pour l'orientation paysage
type: 'custom:mod-card'
card:
  type: vertical-stack
  cards:
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:volume-plus'
          tap_action:
            repeat: 500
            action: call-service
            service: freebox_player.remote
            service_data:
              code: vol_inc
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:volume-mute'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: mute
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:pan-up'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: prgm_inc
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-1'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '1'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-2'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '2'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-3'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '3'
        - type: 'custom:button-card'
          template: default
          show_entity_picture: true
          entity_picture: /local/lovelace/330px-Netflix_2015_N_logo.svg.png
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: 'netflix'
        - type: 'custom:button-card'
          template: default
          show_entity_picture: true
          entity_picture: /local/lovelace/free.png
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: home
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:power'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: power
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:volume-minus'
          tap_action:
            repeat: 500
            action: call-service
            service: freebox_player.remote
            service_data:
              code: vol_dec
        - type: 'custom:button-card'
          template: default
          color_type: icon
          color: '#A92123'
          icon: 'mdi:record-rec'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: rec
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:pan-down'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: prgm_dec
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-4'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '4'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-5'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '5'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-6'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '6'
        - type: 'custom:button-card'
          template: red
          icon: 'mdi:backspace-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: red
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:arrow-up-bold-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: up
        - type: 'custom:button-card'
          template: blue
          icon: 'mdi:card-search-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: blue
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:skip-backward-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: bwd
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:play-pause'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: play
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:skip-forward-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: fwd
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-7'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '7'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-8'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '8'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-9'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '9'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:arrow-left-bold-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: left
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:checkbox-marked-circle-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: ok
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:arrow-right-bold-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: right
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:skip-previous-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: prev
        - type: 'custom:button-card'
          color_type: blank-card
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:skip-next-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: next
        - type: 'custom:button-card'
          color_type: blank-card
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-0'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '0'
        - type: 'custom:button-card'
          template: default
          show_entity_picture: true
          entity_picture: /local/lovelace/jellyfin_logo.png
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: red,right,right,right,right,ok,down,ok
        - type: 'custom:button-card'
          template: green
          icon: 'mdi:menu-open'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: green
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:arrow-down-bold-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: down
        - type: 'custom:button-card'
          template: yellow
          icon: 'mdi:information-variant'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: yellow
style: |
  @media (orientation: portrait) {
    ha-card {
      display: none;
    }
  }
Pour l'orientation portrait
type: 'custom:mod-card'
card:
  type: vertical-stack
  cards:
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          color_type: blank-card
        - type: 'custom:button-card'
          color_type: blank-card
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:power'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: power
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-1'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '1'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-2'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '2'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-3'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '3'
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-4'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '4'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-5'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '5'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-6'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '6'
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-7'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '7'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-8'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '8'
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-9'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '9'
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          color_type: blank-card
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:numeric-0'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: '0'
        - type: 'custom:button-card'
          color_type: blank-card
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: red
          icon: 'mdi:backspace-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: red
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:arrow-up-bold-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: up
        - type: 'custom:button-card'
          template: blue
          icon: 'mdi:card-search-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: blue
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:arrow-left-bold-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: left
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:checkbox-marked-circle-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: ok
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:arrow-right-bold-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: right
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: green
          icon: 'mdi:menu-open'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: green
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:arrow-down-bold-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: down
        - type: 'custom:button-card'
          template: yellow
          icon: 'mdi:information-variant'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: yellow
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          show_entity_picture: true
          entity_picture: /local/lovelace/jellyfin_logo.png
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: red,right,right,right,right,ok,down,ok
        - type: 'custom:button-card'
          template: default
          show_entity_picture: true
          entity_picture: /local/lovelace/free.png
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: home
        - type: 'custom:button-card'
          template: default
          show_entity_picture: true
          entity_picture: /local/lovelace/330px-Netflix_2015_N_logo.svg.png
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: red,right,down,down,down,ok
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:volume-plus'
          tap_action:
            repeat: 500
            action: call-service
            service: freebox_player.remote
            service_data:
              code: vol_inc
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:volume-mute'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: mute
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:pan-up'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: prgm_inc
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:volume-minus'
          tap_action:
            repeat: 500
            action: call-service
            service: freebox_player.remote
            service_data:
              code: vol_dec
        - type: 'custom:button-card'
          template: default
          color_type: icon
          color: '#A92123'
          icon: 'mdi:record-rec'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: rec
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:pan-down'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: prgm_dec
    - type: horizontal-stack
      cards:
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:skip-backward-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: bwd
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:play-pause'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: play
        - type: 'custom:button-card'
          template: default
          icon: 'mdi:skip-forward-outline'
          tap_action:
            action: call-service
            service: freebox_player.remote
            service_data:
              code: fwd

style: |
  @media (orientation: landscape) {
    ha-card {
      display: none;
    }
  }

Et ces 2 cartes sont appelées dans une view dont voici le code :

le code de la vue
#
# Définition de la vue avec les accès autorisés
#
path: freebox_rs
icon: 'mdi:calculator'
visible: !include_dir_list ../visibility
badges: []
panel: true
cards:
  - type: 'custom:mod-card'
    card:
      type: vertical-stack
      cards:
        - !include ../cards/freebox_remote_landscape.yaml
        - !include ../cards/freebox_remote_portrait.yaml

Tu peux supprimer la ligne visibility ..., elle sert à afficher cette page pour certains utilisateurs uniquement.

le code est home et ça fonctionne très bien.

Par contre pour netflix et Jellyfin, ce n’est pas prévu dans les codes de la freebox révolution

Super merci beaucoup pour ton partage.
Je ne connaissais pas le système de vue j’ai vais regarder ça .
Encore merci. Je vais passer un bon dimanche de « bricolage ».
:pray: MERCI :pray:

Pour Netflix moi j’ai un Freebox delta … je vais tester. Sur un malentendu.

sauf que sur la delta, c’est pas la même api si je dis pas de bêtise. Donc cette télécommande ne doit pas fonctionner

Bonjour , si je confirme que la télécommande fonctionne bien sur delta .
Manque plus que le lancement d’applications et un retour sur ce qui est en cours de lecture et ce serait top. En tout cas encore merci.
Ça fonctionne sur l’interface classique par contre Juste un problème sur ui- Lovelace ( interface de matt8707)
httttt://community.home-assistant.io/t/a-different-take-on-designing-a-lovelace-ui/162594
Je voulais mètre la télécommande dans un footer bouton .
Mais j’ai l’erreur custom_card _templates default indisponible … j’ai mis le lien vers le .js un peut partout ça veux pas …

Hello,

Vous connaissez une solution pour integrer le player pop dans HA ?