apiFreeBox - Chaine de mon FreePlayer

de mon coté tout fonctionne bien

Arfff, je vais tenter la réinitialisation de l’auth (même si elle parait OK) et/ou la réinstalle de l’intégration.

merci pour l’info.

Bonsoir,

désinstallation + réinstallation, rien n’y fait il ne me demande même plus la validation sur la freebox.
On a moyen de lancer le process à la main ?

Hello @saniho
Tu continue ton dev sur la freebox ou pas ?

Bonjour,

Est-ce que l’intégration fonctionne désormais avec le player Pop ?

Merci d’avance pour votre réponse.

Hello @Jezza ,je continue si besoin … mais pas d’evolution dernierement …des besoins identifiés ?

Au derniere nouvelle, la pop ne permettait pas d’avoir le détail…mais si tu veux je peux te donner un process pour voir si cela pourrait fonctionner …

Salut,
Je n’arrive pas à faire fonctionner cette intégration.
Player Revolution
Par API j’ai bien les infos


mais pas dans le sensor, je n’ai que l’état

Je n’ai pas trouvé de logs, vous auriez une piste ?

as-tu bien activer l’autorisation sur freebox os pour qu’il puisse avoir accès à la config du player :

oui, c’est bien autorisé.
pour faire un essai j’ai supprimé l’intégration et l’accès sur la freebox, remis, ré-autorisé sur la box puis ajouter les droits player et ça ne donne toujours rien, à part le statut « running » ou « éteinte »

par l’API je vois bien les infos que je cherche :

{"success":true,"result":{"foreground_app":{"package_id":33,"cur_url":"tv:\/\/?bouquetId=40&channel=8","context":{},"package":"fr.freebox.tv"},"player":{"state":{"duration_ms":0,"playback_state":"playing","position_ms":-196},"capabilities":{"shuffle":false,"select_srt_track":true,"seek_forward":true,"play":true,"select_stream":true,"start_over":true,"select_audio_track":true,"repeat_all":false,"next":false,"record_stop":true,"repeat_one":false,"stop":true,"seek_to":true,"seek_backward":true,"record":true,"pause":true,"prev":false},"name":"Freebox TV","last_activity":1670877326},"power_state":"running"}}

Il y a des logs dans lesquels je pourrais trouver une piste ?

Je pense que free à rendu obligatoire l’authentification
essaye cette url : http://mafreebox.freebox.fr/api/v6/player
si tu as necessite l’authenfication, peux-tu te connecter à l’os freebox et ensuite remettre l’url ?

avec l’adresse que tu indiques, en http, je n’arrive pas à m’authentifier, ça boucle et ça ne m’authentifie pas.
en https, c’est bon, et ensuite je peux accéder à l’url :
{"success":true,"result":[{"mac":"xx:xx:xx:xx:xx:xx","stb_type":"stb_v6","id":1,"last_time_reachable":1670880387,"api_available":true,"device_name":"Freebox Player","device_model":"fbx6hd","reachable":true,"uid":"1ee4369b8e9b3c8543a585cbfbd279e7","api_version":"10.0","lan_gids":["ether-xx:xx:xx:xx:xx:xx"]}]}

Bonjour, de mon côté j’ai l’erreur suivante dans les log de HA:

Error while setting up apiFreebox platform for sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 281, in _async_setup_platform
    await asyncio.shield(task)
  File "/usr/local/lib/python3.10/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/config/custom_components/apiFreebox/sensor.py", line 95, in setup_platform
    add_entities([myFreeBoxPlayer(session, name, update_interval, host, port, monPlayer["id"] )], True)
KeyError: 'id'

j’ai essayé en modifiant le fichier python et en forçant « 1 » à la place de l’id, le sensor est bien créé mais il reste toujours à eteinte même allumé. Je précise que j’ai une freebox player pop et qu’il me semble qu’il n’y a pas d’id de renvoyé.
Merci.

Bonjour,
Est-ce que apiFreeBox ffonctionne aussi avec le player Delta Devialet?
Merci

Bonjour,

je ré-insiste si apiFreebox fonctionne sur Freebox Delta player. Il tournait nickel sur mon player Révolution avant ma migration récente sur Delta.
Maintenant, je n’arrive plus à l’intégrer sur Delta (je ne peux pas avoir la demande d’autorisation du player) et pourtant en tapant la commande dans le navigateur avec Id: 17 au lieu de 1, j’ai bien mon retour d’info sur le statut du player Delta et la chaine:

Merci pour ton retour

@saniho , je me permets de tagger comme j ne sais pas si il y’a des notifications

n’ayant pas de player devalet, je ne peux pas tester ;( et donc faire l’integration
après si tu as un exemple d’url et du retour, je peux essayer de faire cela en aveugle

Perso sur la delta (pas allumé pour le moment )je récupère ça :

sensor.myfreeboxplayer_17:

attribution: ''
version: 1.0.2.0
LastSynchro: '2023-09-08T18:51:10.297637'
info: '{''power_state'': ''eteinte''}'
unit_of_measurement: ''
friendly_name: myFreeBoxPlayer.17

Une fois allumé sous tension ça donne:

attribution: 
version: 1.0.2.0
lastSynchro: 2023-09-08T19:37:10.378861
power_stat: running
package: fr.freebox.overlayhome
package_id: 26
channel: 
out: fr.freebox.overlayhome ???
info: {'power_state': 'running', 'foreground_app': {'package_id': 26, 'cur_url': '', 'context': {'pip': {'widgets': [{'_index': 0, 'type': 'none_pip', 'name': 'Aucun', 'uuid': 'none', 'locatable': False, 'sizeable': False, 'icon': 'file:///usr/share/fbxqmlapps/overlayhome/widgets/top_part/items/icon_none.png', 'priv': {}}, {'_index': 1, 'type': 'audio_config_pip', 'name': 'Config. audio', 'uuid': 'audioconfigPip', 'locatable': True, 'sizeable': False, 'icon': 'file:///usr/share/fbxqmlapps/overlayhome/widgets/top_part/items/audio_config/icon.png', 'priv': {}}, {'_index': 2, 'type': 'tv_pip', 'name': 'Télévision', 'uuid': 'tvPip', 'locatable': True, 'sizeable': True, 'icon': 'file:///usr/share/fbxqmlapps/overlayhome/widgets/top_part/items/tv/icon.png', 'priv': {}}], 'channel': 0, 'location': 'top/right', 'pinned': False, 'currentWidgetIndex': 1, 'size': 'big'}}, 'package': 'fr.freebox.overlayhome'}}
unit_of_measurement: 
friendly_name: myFreeBoxPlayer.17

En mode lecture d’une chaine de base:

attribution: ''
version: 1.0.2.0
lastSynchro: '2023-09-08T19:39:10.382992'
power_stat: running
package: fr.freebox.tv
package_id: 34
channel: 2
out: tv
info: >-
  {'foreground_app': {'package_id': 34, 'cur_url': '', 'context': {'player':
  {'source':
  'rtsp://rtsp-server/fbxtv_priv/stream?namespace=1&service=1321&flavour=hd',
  'duration': 0, 'livePos': '1694194749482', 'playbackState': 'play',
  'audioIndex': 0, 'audioList': [{'samplerate': 48000, 'type': 'Main', 'pid':
  230, 'channelCount': 2, 'bitrate': '0', 'codec': 'AAC', 'adAvailable': False,
  'uid': 0, 'codecId': 'Aac', 'language': 'fra', 'metadataId': 'None'},
  {'samplerate': 0, 'type': 'Description', 'pid': 231, 'channelCount': 0,
  'bitrate': '0', 'codec': 'AAC', 'adAvailable': False, 'uid': 1, 'codecId':
  'Aac', 'language': 'qad', 'metadataId': 'None'}, {'samplerate': 0, 'type':
  'Main', 'pid': 232, 'channelCount': 0, 'bitrate': '0', 'codec': 'AAC',
  'adAvailable': False, 'uid': 2, 'codecId': 'Aac', 'language': 'qaa',
  'metadataId': 'None'}], 'curPos': '1694194749482', 'subtitleIndex': -1,
  'videoIndex': 0, 'metadata': {}, 'videoList': [{'bitrate': '0', 'codec':
  'H264', 'pid': 220, 'height': 1080, 'framerate': {'den': 1, 'num': 25}, 'uid':
  0, 'width': 1920}], 'subtitleList': [{'codec': 'Teletext subtitle', 'pid':
  250, 'uid': 0, 'language': 'fra', 'type': 'HearingImpaired'}, {'codec':
  'Teletext subtitle', 'pid': 250, 'uid': 1, 'language': 'fra', 'type':
  'Normal'}], 'position': 0, 'mediaState': 'ready', 'sourceHidden': False,
  'minPos': '1694194749482', 'maxPos': '1694194749482'}, 'channel': {'services':
  [{'timeshifting': True, 'id': 379, 'typeLabel': 'ADSL', 'qualityName':
  'hdplus', 'url':
  'rtsp://rtsp-server/fbxtv_priv/stream?namespace=1&service=1321&flavour=hd',
  'name': 'France 2 (HD+)', 'qualityLabel': 'HD+', 'sortInfo': 0, 'pvr':
  'public', 'typeName': 'iptv', 'priv': {'iptv': {'bandwidth': 15000,
  'udpmsg3_namespace': 1, 'udpmsg3_service': 1321, 'rash': False, 'lan_stream':
  False}, 'type': 'iptv'}}, {'timeshifting': True, 'id': 376, 'typeLabel':
  'ADSL', 'qualityName': 'hd', 'url':
  'rtsp://rtsp-server/fbxtv_priv/stream?namespace=1&service=201&flavour=hd',
  'name': 'France 2 (HD)', 'qualityLabel': 'HD', 'sortInfo': 2, 'pvr': 'public',
  'typeName': 'iptv', 'priv': {'iptv': {'bandwidth': 6000, 'udpmsg3_namespace':
  1, 'udpmsg3_service': 201, 'rash': False, 'lan_stream': True}, 'type':
  'iptv'}}, {'timeshifting': True, 'id': 377, 'typeLabel': 'ADSL',
  'qualityName': 'sd', 'url':
  'rtsp://rtsp-server/fbxtv_priv/stream?namespace=1&service=201&flavour=sd',
  'name': 'France 2 (standard)', 'qualityLabel': 'Standard', 'sortInfo': 3,
  'pvr': 'public', 'typeName': 'iptv', 'priv': {'iptv': {'bandwidth': 2900,
  'udpmsg3_namespace': 1, 'udpmsg3_service': 201, 'rash': False, 'lan_stream':
  True}, 'type': 'iptv'}}, {'timeshifting': True, 'id': 378, 'typeLabel':
  'ADSL', 'qualityName': 'ld', 'url':
  'rtsp://rtsp-server/fbxtv_priv/stream?namespace=1&service=201&flavour=ld',
  'name': 'France 2 (bas débit)', 'qualityLabel': 'Bas débit', 'sortInfo': 4,
  'pvr': 'public', 'typeName': 'iptv', 'priv': {'iptv': {'bandwidth': 2400,
  'udpmsg3_namespace': 1, 'udpmsg3_service': 201, 'rash': False, 'lan_stream':
  True}, 'type': 'iptv'}}, {'timeshifting': True, 'id': 380, 'typeLabel':
  'ADSL', 'qualityName': 'auto', 'url':
  'rtsp://rtsp-server/fbxtv_priv/stream?namespace=1&service=201', 'name':
  'France 2 (auto)', 'qualityLabel': 'Automatique', 'sortInfo': 5, 'pvr':
  'public', 'typeName': 'iptv', 'priv': {'iptv': {'bandwidth': 0,
  'udpmsg3_namespace': 1, 'udpmsg3_service': 201, 'rash': False, 'lan_stream':
  True}, 'type': 'iptv'}}], 'isTimeShifting': False, 'videoIsVisible': True,
  'channelName': 'France 2', 'channelNumber': 2, 'channelType': 'regular',
  'bouquetName': 'favoris', 'currentServiceIndex': '0', 'channelUuid':
  'uuid-webtv-201', 'bouquetType': 'ubouquet', 'bouquetId': 103,
  'channelSubNumber': 0}}, 'package': 'fr.freebox.tv'}, 'player': {'state':
  {'duration_ms': 0, 'playback_state': 'playing', 'position_ms': 0},
  'capabilities': {'shuffle': False, 'select_srt_track': True, 'seek_forward':
  True, 'play': True, 'select_stream': True, 'start_over': True,
  'select_audio_track': True, 'repeat_all': False, 'next': False, 'record_stop':
  True, 'repeat_one': False, 'stop': True, 'seek_to': True, 'seek_backward':
  True, 'record': True, 'pause': True, 'prev': False}, 'name': 'Freebox TV',
  'last_activity': 1694194698}, 'power_state': 'running'}
unit_of_measurement: ''
friendly_name: myFreeBoxPlayer.17
channelName: France 2

Netflix en attente:

attribution: ''
version: 1.0.2.0
lastSynchro: '2023-09-08T19:41:10.386428'
power_stat: running
package: com.netflix
package_id: 2
channel: Netflix
out: Netflix
info: >-
  {'foreground_app': {'package_id': 2, 'cur_url': '', 'context': {}, 'package':
  'com.netflix'}, 'player': {'state': {'duration_ms': 0, 'playback_state':
  'unknown', 'position_ms': 0}, 'capabilities': {'shuffle': False,
  'select_srt_track': True, 'seek_forward': True, 'play': True, 'select_stream':
  False, 'start_over': True, 'select_audio_track': False, 'repeat_all': False,
  'next': True, 'record_stop': False, 'repeat_one': False, 'stop': True,
  'seek_to': True, 'seek_backward': True, 'record': False, 'pause': True,
  'prev': True}, 'name': 'netflix', 'last_activity': 1694194831}, 'power_state':
  'running'}
unit_of_measurement: ''
friendly_name: myFreeBoxPlayer.17
channelName: Netflix

Netflix en cours de lecture pas de différence

Amazon prime en attente :

attribution: ''
version: 1.0.2.0
lastSynchro: '2023-09-08T19:44:10.393497'
power_stat: running
package: com.primevideo
package_id: 6
channel: Prime
out: Prime
info: >-
  {'power_state': 'running', 'foreground_app': {'package_id': 6, 'cur_url': '',
  'context': {}, 'package': 'com.primevideo'}}
unit_of_measurement: ''
channelName: Prime
friendly_name: myFreeBoxPlayer.17

Amazon primse en cours de lecture:

version: 1.0.2.0
lastSynchro: '2023-09-08T19:45:10.393812'
power_stat: running
package: com.primevideo
package_id: 6
channel: Prime
out: Prime
info: >-
  {'foreground_app': {'package_id': 6, 'cur_url': '', 'context': {}, 'package':
  'com.primevideo'}, 'player': {'state': {'duration_ms': 0, 'playback_state':
  'unknown', 'position_ms': 0}, 'capabilities': {'shuffle': False,
  'select_srt_track': False, 'seek_forward': False, 'play': True,
  'select_stream': False, 'start_over': False, 'select_audio_track': False,
  'repeat_all': False, 'next': True, 'record_stop': False, 'repeat_one': False,
  'stop': True, 'seek_to': False, 'seek_backward': True, 'record': False,
  'pause': True, 'prev': True}, 'name': 'Amazon vidéo', 'last_activity':
  1694195098}, 'power_state': 'running'}
unit_of_measurement: ''
friendly_name: myFreeBoxPlayer.17
channelName: Prime

Etc etc du coup pour moi c’est 100% fonctionnel.
Juste dommage que ce ne soit pas tout mis en commun, là on se retrouve avec 3 intégrations une pour piloter, une pour avoir le retour d’état et une officielle.
Ce n’est pas une critique :slight_smile: J’ai moi même développer des trucs et je sais ce que ça représente (notamment en terme d’investissement personnel sur son temps).

Voilà donc bref avec le devialet ça marche nickel.

2 « J'aime »

Bonjour,

Cela fonctionne parfaitement chez moi avec une Devialet
Merci

1 « J'aime »

Bonjour @saniho et merci pour cette intégration !

L’intégration semble fonctionner avec le Devialet, j’ai bien le retour de stats indiquant que le player est éteint (bien qu’il soit techniquement en veille, mais ce n’est qu’un détail)

Cepandant,

J’ai à priori 2 erreurs dans les logs de HA

Error while setting up apiFreebox platform for sensor
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 359, in _async_setup_platform
    await asyncio.shield(task)
  File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/apiFreebox/sensor.py", line 95, in setup_platform
    add_entities([myFreeBoxPlayer(session, name, update_interval, host, port, monPlayer["id"] )], True)
                                                                              ~~~~~~~~~^^^^^^
KeyError: 'id'

ET

apiFreebox: Error on device update!
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 573, in _async_add_entity
    await entity.async_device_update(warning=False)
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 938, in async_device_update
    await hass.async_add_executor_job(self.update)
  File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/__init__.py", line 190, in wrapper
    result = method(*args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/apiFreebox/sensor.py", line 137, in _update
    fbx_connection_xdsl_details = fbx.connection.get_xdsl_stats()
                                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/apiFreebox/connection.py", line 35, in get_xdsl_stats
    return self._access.get('connection/xdsl')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/apiFreebox/access.py", line 26, in get
    raise exceptions.HttpRequestError(resp['error_code'])
custom_components.apiFreebox.exceptions.HttpRequestError: service_down