Intégration externe - Apple TV

Merci pour l’analyse :slight_smile:

Dans ce cas là l’intégration externe ne devrait pas fonctionner même quand il sont sur le même réseau ?
Ah moins que quand tu es sur le même réseau il envoie des requêtes unicast et l’explication pourrait se tenir

@valentinhttr

C’est étrange lors du second scan j’ai 1 appareil en moins trouvé quand j’ai débranché mon Apple TV

[2026-08-16T18:35:13.529Z] [INFO] [apple-tv] Gladys captured 5 AirPlay announcement(s)
[2026-08-16T18:35:13.529Z] [INFO] [apple-tv] Verifying 5 candidate address(es) with pyatv
[2026-08-16T18:35:21.531Z] [INFO] [apple-tv] Found 0 Apple TV(s)
[2026-08-16T18:35:55.134Z] [INFO] [apple-tv] Scan requested
[2026-08-16T18:36:03.139Z] [INFO] [apple-tv] Gladys captured 4 AirPlay announcement(s)
[2026-08-16T18:36:03.139Z] [INFO] [apple-tv] Verifying 4 candidate address(es) with pyatv
[2026-08-16T18:36:11.141Z] [INFO] [apple-tv] Found 0 Apple TV(s)

Est-ce qu’il y a moyen d’avoir un mode debug pour voir quel appareil il voit et potentiellement trouver pourquoi il les ajoutent pas dans la découverte :wink:

Merci, ce test est très utile : le passage de 5 à 4 après avoir débranché l’Apple TV confirme que Gladys voit bien son annonce AirPlay et récupère son IP (du moins je pense). Le blocage intervient ensuite, lorsque pyatv tente de compléter les informations par une requête mDNS directe, ignorée entre sous-réseaux.

La version `1.1.0` de l’intégration est en cours de build, elle détaille désormais dans les logs le nom, l’hôte, l’IP et le port de chaque annonce/candidate. Cela confirmera clairement quelle adresse correspond à l’Apple TV, même si le correctif réseau reste nécessaire pour récupérer les autres services requis.

Merci :slight_smile:

Voici le resultat :

[2026-08-17T18:15:52.654Z] [INFO] [apple-tv] AirPlay announcement 3/5: {"name":"Chambre._airplay._tcp.local","host":"Chambre.local","addresses":["fe80::7:3db5:2499:xxx","fdfd:9ce7:d5fe:4961:c02:da41:da37:xxxx","192.168.xx.10","fdfd:9ce7:d5fe:4961:6:fda9:17a6:xxxx"],"ipv4":["192.168.xx.10"],"port":7000}
[2026-08-17T18:15:52.655Z] [INFO] [apple-tv] Candidate address 3/5: {"address":"192.168.xx.10","sources":["AirPlay announcement","manual configuration"]}
[2026-08-17T18:15:52.655Z] [INFO] [apple-tv] Verifying 5 candidate address(es) with pyatv
[2026-08-17T18:16:00.657Z] [WARN] [apple-tv] No candidate answered pyatv's direct mDNS query: 192.168.xx.12, 192.168.xx.9, 192.168.xx.10, 192.168.xx.7, 192.168.xx.8. On routed networks or separate VLANs, Apple devices normally ignore direct mDNS queries whose source is outside their local subnet.
[2026-08-17T18:16:00.658Z] [INFO] [apple-tv] Found 0 Apple TV(s)

Etrange que l’on voit uniquement Chambre._airplay._tcp.local
Et pas Chambre._companion-link._tcp

Merci pour le retour, les logs confirment bien le diagnostic : Gladys reçoit l’annonce AirPlay et la bonne IP, mais la vérification directe de pyatv n’obtient aucune réponse entre les VLAN.

L’absence de _companion-link._tcp est actuellement normale : seul _airplay._tcp est déclaré, et Gladys parcourt jusqu’ici que le premier service mDNS d’une intégration.

@pierre-gilles J’ai proposé un correctif côté Gladys : PR #2951 qui permet de récupérer et fusionner tous les services mDNS déclarés.

@prohand En principe, si cette évolution est intégrée dans Gladys, on pourra prévoir une nouvelle version de l’intégration Apple TV qui exploitera directement ces annonces au lieu de refaire une requête mDNS depuis son conteneur. La 1.1.0 améliore donc le diagnostic, mais le support inter-VLAN nécessitera cette prochaine version.

Parfait merci :slight_smile:

Merci j’ai mis mes retours :slight_smile:

Merci, j’ai fait tourné claude dessus :+1:

Hello @valentinhttr

Vu que la PR est mergée, tu pourrai voir pour faire une nouvelle version stp ? :slight_smile:

Merci

Hello, oui c’est prévu mais à mon retour, certainement la semaine prochaine :+1:t2:

Pas de soucis :wink:
Merci

Hello @prohand
J’ai trouvé un moment pour regarder, la version 1.2.0 sera disponible dans 5min !

Dis-moi si ça fonctionne cette fois stp.

Merci :slight_smile:

Je viens de tester et il me trouve 4 Apple TV alors que j’en ai que 2 :

Voici le mappage des IPs et des appareils :

192.168.30.7 Apple HomePod Mini Entrée
192.168.30.8 Apple HomePod Mini Cuisine
192.168.30.9 Apple TV Salon
192.168.30.10 Apple TV Chambre

Je devrais normalement en avoir que 2 (192.168.30.9 et 192.168.30.10)

Soit le transfert des requetes mDNS fonctionnent entre mes réseaux avec la correction de Gladys et il ignore ce champ, soit il ne prend pas en compte le champ « Adresses IPv4 manuelles » car j’avais mis uniquement 192.168.30.10 dans ce champ :

image

Voici les logs :

[2026-09-01T18:42:59.359Z] [INFO] [apple-tv] Starting the Gladys Apple TV integration
[2026-09-01T18:42:59.366Z] [INFO] [apple-tv:pyatv] Starting the pyatv worker (/opt/pyatv/bin/python3 /app/src/pyatv_bridge.py)
[2026-09-01T18:42:59.632Z] [INFO] [gladys-sdk] connected to Gladys (http://172.30.0.1:80)
2026-09-01 20:43:00,237 INFO [pyatv-bridge] pyatv 0.18.0 bridge ready (storage: /data/pyatv.json)
[2026-09-01T18:43:07.646Z] [INFO] [apple-tv] 14 mDNS announcement(s) captured by Gladys, 5 device configuration(s) available without a direct query
[2026-09-01T18:43:15.657Z] [INFO] [apple-tv] 8 mDNS announcement(s) captured by Gladys, 3 device configuration(s) available without a direct query
[2026-09-01T18:47:09.705Z] [INFO] [apple-tv] Configuration updated
[2026-09-01T18:47:52.379Z] [INFO] [apple-tv] Scan requested
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] Gladys captured 13 mDNS announcement(s) across 3 service(s): _airplay._tcp.local, _companion-link._tcp.local, _raop._tcp.local
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 1/13: {"name":"Salon._airplay._tcp.local","service":"_airplay._tcp.local","host":"Salon.local","addresses":["fe80::403:b392:d53f:d2b1","192.168.30.7","fdfd:9ce7:d5fe:4961:6:fdf2:b5c0:fcb3","fdfd:9ce7:d5fe:4961:883:9e7e:929c:90df"],"ipv4":["192.168.30.7"],"port":7000}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 2/13: {"name":"Salle TV._airplay._tcp.local","service":"_airplay._tcp.local","host":"Sonos-542A1BD83454.local","addresses":["192.168.30.12","fe80::562a:1bff:fed8:3454"],"ipv4":["192.168.30.12"],"port":7000}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 3/13: {"name":"Salon (2)._airplay._tcp.local","service":"_airplay._tcp.local","host":"Salon-2.local","addresses":["fe80::1875:c834:3f5:7967","192.168.30.8","fdfd:9ce7:d5fe:4961:2:fded:e94a:ea67","fdfd:9ce7:d5fe:4961:1c30:ec0:9248:2524"],"ipv4":["192.168.30.8"],"port":7000}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 4/13: {"name":"Salon (3)._airplay._tcp.local","service":"_airplay._tcp.local","host":"Salon-3.local","addresses":["fe80::1c2e:7d28:59b9:4fa6","192.168.30.9","fdfd:9ce7:d5fe:4961:7:fdbc:e949:be74","fdfd:9ce7:d5fe:4961:148d:d648:7633:d52d"],"ipv4":["192.168.30.9"],"port":7000}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 5/13: {"name":"Chambre._airplay._tcp.local","service":"_airplay._tcp.local","host":"Chambre.local","addresses":["fdfd:9ce7:d5fe:4961:c02:da41:da37:6ccb","fe80::8a3:1cd5:2be8:5d1d","192.168.30.10","fdfd:9ce7:d5fe:4961:9:fda9:17a6:dc08"],"ipv4":["192.168.30.10"],"port":7000}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 6/13: {"name":"Salon._companion-link._tcp.local","service":"_companion-link._tcp.local","host":"Salon.local","addresses":["fe80::403:b392:d53f:d2b1","192.168.30.7","fdfd:9ce7:d5fe:4961:6:fdf2:b5c0:fcb3","fdfd:9ce7:d5fe:4961:883:9e7e:929c:90df"],"ipv4":["192.168.30.7"],"port":49153}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 7/13: {"name":"Salon (2)._companion-link._tcp.local","service":"_companion-link._tcp.local","host":"Salon-2.local","addresses":["fe80::1875:c834:3f5:7967","192.168.30.8","fdfd:9ce7:d5fe:4961:2:fded:e94a:ea67","fdfd:9ce7:d5fe:4961:1c30:ec0:9248:2524"],"ipv4":["192.168.30.8"],"port":49153}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 8/13: {"name":"Salon (3)._companion-link._tcp.local","service":"_companion-link._tcp.local","host":"Salon-3.local","addresses":["fe80::1c2e:7d28:59b9:4fa6","192.168.30.9","fdfd:9ce7:d5fe:4961:7:fdbc:e949:be74","fdfd:9ce7:d5fe:4961:148d:d648:7633:d52d"],"ipv4":["192.168.30.9"],"port":49153}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 9/13: {"name":"Chambre._companion-link._tcp.local","service":"_companion-link._tcp.local","host":"Chambre.local","addresses":["fdfd:9ce7:d5fe:4961:c02:da41:da37:6ccb","fe80::8a3:1cd5:2be8:5d1d","192.168.30.10","fdfd:9ce7:d5fe:4961:9:fda9:17a6:dc08"],"ipv4":["192.168.30.10"],"port":49153}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 10/13: {"name":"542A1BD83454@Salle TV._raop._tcp.local","service":"_raop._tcp.local","host":"Sonos-542A1BD83454.local","addresses":["192.168.30.12","fe80::562a:1bff:fed8:3454"],"ipv4":["192.168.30.12"],"port":7000}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 11/13: {"name":"A6C0D2CF8B73@Salon (2)._raop._tcp.local","service":"_raop._tcp.local","host":"Salon-2.local","addresses":["fe80::1875:c834:3f5:7967","192.168.30.8","fdfd:9ce7:d5fe:4961:2:fded:e94a:ea67","fdfd:9ce7:d5fe:4961:1c30:ec0:9248:2524"],"ipv4":["192.168.30.8"],"port":7000}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 12/13: {"name":"8E4D52BC66DD@Salon (3)._raop._tcp.local","service":"_raop._tcp.local","host":"Salon-3.local","addresses":["fe80::1c2e:7d28:59b9:4fa6","192.168.30.9","fdfd:9ce7:d5fe:4961:7:fdbc:e949:be74","fdfd:9ce7:d5fe:4961:148d:d648:7633:d52d"],"ipv4":["192.168.30.9"],"port":7000}
[2026-09-01T18:48:00.386Z] [INFO] [apple-tv] mDNS announcement 13/13: {"name":"DE0D0144E41D@Chambre._raop._tcp.local","service":"_raop._tcp.local","host":"Chambre.local","addresses":["fdfd:9ce7:d5fe:4961:c02:da41:da37:6ccb","fe80::8a3:1cd5:2be8:5d1d","192.168.30.10","fdfd:9ce7:d5fe:4961:9:fda9:17a6:dc08"],"ipv4":["192.168.30.10"],"port":7000}
[2026-09-01T18:48:00.387Z] [INFO] [apple-tv] Candidate address 1/5: {"address":"192.168.30.7","sources":["AirPlay announcement"]}
[2026-09-01T18:48:00.387Z] [INFO] [apple-tv] Candidate address 2/5: {"address":"192.168.30.12","sources":["AirPlay announcement"]}
[2026-09-01T18:48:00.387Z] [INFO] [apple-tv] Candidate address 3/5: {"address":"192.168.30.8","sources":["AirPlay announcement"]}
[2026-09-01T18:48:00.387Z] [INFO] [apple-tv] Candidate address 4/5: {"address":"192.168.30.9","sources":["AirPlay announcement"]}
[2026-09-01T18:48:00.387Z] [INFO] [apple-tv] Candidate address 5/5: {"address":"192.168.30.10","sources":["AirPlay announcement","manual configuration"]}
[2026-09-01T18:48:00.387Z] [INFO] [apple-tv] Verifying 5 candidate address(es) with pyatv
[2026-09-01T18:48:08.391Z] [INFO] [apple-tv] pyatv response 1/5: {"name":"Salon","address":"192.168.30.7","model":"HomePod Mini","operating_system":"tvos","is_apple_tv":true,"source":"announced"}
[2026-09-01T18:48:08.391Z] [INFO] [apple-tv] pyatv response 2/5: {"name":"Salle TV","address":"192.168.30.12","model":"Beam","operating_system":"unknown","is_apple_tv":false,"source":"announced"}
[2026-09-01T18:48:08.391Z] [INFO] [apple-tv] pyatv response 3/5: {"name":"Salon (2)","address":"192.168.30.8","model":"HomePod Mini","operating_system":"tvos","is_apple_tv":true,"source":"announced"}
[2026-09-01T18:48:08.391Z] [INFO] [apple-tv] pyatv response 4/5: {"name":"Salon (3)","address":"192.168.30.9","model":"Apple TV 4K (gen 3)","operating_system":"tvos","is_apple_tv":true,"source":"announced"}
[2026-09-01T18:48:08.391Z] [INFO] [apple-tv] pyatv response 5/5: {"name":"Chambre","address":"192.168.30.10","model":"Apple TV 4K (gen 3)","operating_system":"tvos","is_apple_tv":true,"source":"announced"}
[2026-09-01T18:48:08.391Z] [INFO] [apple-tv] 5 device(s) were rebuilt from the announcements Gladys captured, because they did not answer a direct query: Salon (192.168.30.7), Salle TV (192.168.30.12), Salon (2) (192.168.30.8), Salon (3) (192.168.30.9), Chambre (192.168.30.10). This is the expected path when Gladys and the Apple TV sit on different subnets.
[2026-09-01T18:48:08.391Z] [INFO] [apple-tv] 5 candidate address(es) did not answer a direct query: 192.168.30.7, 192.168.30.12, 192.168.30.8, 192.168.30.9, 192.168.30.10
[2026-09-01T18:48:08.391Z] [INFO] [apple-tv] Found 4 Apple TV(s)

Merci @prohand, la 1.2.1 est dispo, elle corrige le problème.

Tes deux HomePod mini étaient bien remontés comme des Apple TV. La raison est
un peu vicieuse : un HomePod tourne sous tvOS et annonce exactement les mêmes
services AirPlay et Companion qu’une Apple TV. Or je filtrais sur le système
d’exploitation… qui vaut donc « tvOS » pour les deux. C’est visible dans tes
logs, d’ailleurs :

{"name":"Salon","model":"HomePod Mini","operating_system":"tvos","is_apple_tv":true}

Je filtre maintenant sur le modèle matériel. J’ai rejoué ta configuration exacte
(2 HomePod mini, 2 Apple TV 4K, la Sonos Beam) : on tombe bien sur 2 Apple TV,
la Beam et les HomePod étant écartés.

Pour le champ « Adresses IPv4 manuelles » : il était bien pris en compte, ton log
le montre : 192.168.30.10 y apparaît avec les deux origines :

Candidate address 5/5: {"address":"192.168.30.10","sources":["AirPlay announcement","manual configuration"]}

Ce champ ajoute des adresses à celles que Gladys a captées, il ne les remplace
pas
: il sert à joindre un appareil dont les annonces n’arrivent pas jusqu’à
Gladys, pas à choisir laquelle garder. Chez toi il ne servait à rien de toute
façon, dans le bon sens du terme : le relais mDNS entre tes VLAN fonctionne, les
5 adresses venaient toutes des annonces. Tu peux vider le champ. J’ai reformulé
sa description, ta lecture était légitime.

Tu peux mettre à jour et relancer un scan stp ? Tu devrais ne voir que Salon (3) et
Chambre. Et si l’appairage se passe bien à travers tes VLAN, ça m’intéresse
beaucoup de le savoir : c’est le cas d’usage de la 1.2.0 et tu es le premier à
le tester en vrai.

Merci c’est ok pour moi :slight_smile:

Hello @valentinhttr

J’ai vu que ce message pourri un peu les logs ^^ :

[2026-09-25T11:12:28.686Z] [WARN] [apple-tv] Could not connect to Apple TV Chambre: No Apple TV answered at 192.168.xx.xx. Check that it is powered on and reachable from the Gladys host.

En effet l’apple tv n’est pas tout le temps allumé et c’est normal quand on la regarde pas ^^

Tu penses que l’on peut faire quelque chose ?

Merci

Hello :waving_hand:

La version 2.0.0 de l’intégration Apple TV est disponible !

Au programme :

  • Un widget Lecture pour afficher le média en cours et contrôler la lecture.
  • Un widget Favoris pour lancer jusqu’à quatre applications depuis le dashboard.
  • Un correctif des logs : lorsqu’une Apple TV est hors ligne, les tentatives de reconnexion ne remplissent plus les logs. Un message signale l’indisponibilité, puis un autre son retour en ligne. La reconnexion reste automatique.

:warning: Cette version nécessite Gladys 5.1 minimum.

N’hésitez pas à partager vos retours sur les nouveaux widgets, je n’ai pas pu tester :slightly_smiling_face:

Merci pour cette version :slight_smile:

Bonjour, me concernant, je n’arrive pas à passer la barrière des réseaux ; Gladys est sur un réseau en 192.168.1.x et mes Apple sont sur un réseau Wi-Fi Mesh (Tapo BE25) en 192.168.68.x.

Je comprends bien que le problème de non-découverte vient de là, mais je ne sais pas comment m’en sortir ; mon routeur Wi-Fi ne semble pas proposer le mDNS… Help.

En revanche, une « Apple TV Free Player » remonte, effectivement sur le même réseau que Gladys. Cependant, pourquoi mon player Delta de chez Free remonte-t-il, et surtout avec ce nommage ?

Si vous avez une idée, ça m’intéresse, car je pense que ne pas être sur le même sous-réseau me génère quelques difficultés sur d’autres appareils, comme les lampes Govee.

Bon week

Bonjour @JKBS64, la séparation en deux sous-réseaux explique probablement la non-détection : les annonces mDNS ne passent normalement pas de l’un à l’autre. Cela pourrait aussi expliquer certaines difficultés avec les Govee.

Pour le Free Player, il remonte probablement via AirPlay/AirMedia. Le préfixe « Apple TV » est ajouté par l’intégration, mais il faut vérifier pourquoi il passe le filtre des modèles.

Peux-tu relancer Découverte → Scanner, puis aller dans Journaux, actualiser et copier les lignes contenant pyatv response, notamment celle du Free Player ? Ajoute aussi la version de l’intégration indiquée dans Supervision.

PS : Selon ChatGPT, si c’est bien un TP-Link Deco BE25, tu pourrais le passer en mode point d’accès pour que la Freebox et les appareils Wi-Fi partagent le même réseau, tout en conservant le mesh. Je ne connais pas assez ta configuration pour te garantir que ce changement est adapté et sans impact chez toi, mais c’est une piste à vérifier : procédure TP-Link.

Bon week-end !