apiFreeBox - Chaine de mon FreePlayer

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

Je n’avais pas eu de notification des réponses des autres utilisateurs mais ils confirment que ca fonctionne avec le freebox Player Devialet.
Donc l’intégration n’arrive pas à reprendre la main suite à mon passage de la révolution à la la Delta avec Player Devialet.
J’ai pourtant tout désinstaller et ré-installer.
Y-a-t-il d’autres fichier spécifiqus du server Home Assistant à effacer?
Ca fait longtemps mais je crois que je n’arrive pas à recevoir la notification LED de demande d’autorisation d’accès pour l’API

A mon avis oui
En essayant différentes intégrations, j’ai vu que je ne pouvais plus faire la demande d’appairage d’HA sur la Freebox
Via le module Samba et une recherche dans les fichiers de HA via l’explorer Windows, j’ai vu qu’il restait des traces des précédentes intégrations mal grès la désinstallation de celles-ci et le redémarrage de HA
Une fois ces fichiers supprimés, plus aucun problème pour appairer HA à la Freebox

personnellement j’ai fait ça avec NodeRed en partant de la pseudo intégration que j’avais fait il y’a longtemps - cf. lien ci-dessous

Et ensuite, je récupère la chaine et meme le logo de la chaine qui se trouve sur la Freebox :wink:
Et ça donne ça

il me semble qu’il y a un dossier caché dans le /config de HA qui contient le token qu’il faut virer quand il faut réapparier à une nouvelle box (dans le doute backup le quelque part)

ici : /config/.storage/freebox

Merci, ce fichier est utilisé par l’intégration Freebox Server mais pas par apiFreebox.
Ca ne me permet de redécouvrier les sensors liés a ApiFreebox

@Mikael_Lume En effet, au temps pour moi, j’ai confondu

Alors ici

/config/custom_components/apiFreebox

avec le fichier « app_auth » et peut être « freebox_root_ca.pem »

Même conseil, backup au cas où