Intégration HomeKit et Siri

Salut tout le monde, sur le trajet retour des vacances, j’ai travaillé sur la compatibilité de Gladys avec HomeKit (et donc avec Siri) pour les aficionados d’Apple (imaginez votre Gladys contrôlable avec votre montre). Je suis peut être naïf mais ces dernières années j’ai plus confiance en Apple, qu’en Amazon/Google pour la confidentialité des données (en particulier quand il s’agit de la reconnaissance vocale).

Pour l’instant 3 types de périphériques sont supportés :

  • les ampoules avec marche/arrêt, luminosité, couleurs et température de blanc
  • les commutateurs avec marche/arrêt
  • les capteurs de température
    Pour une première version ça devrait être suffisant, j’en ajouterai au fur et à mesure des demandes.
    Je n’ai testé que sur des périphériques virtuels j’aurai besoin d’aide pour tester sur de vrai périphériques une fois l’image docker disponible.

Techniquement parlant, l’intégration transforme Gladys en un pont de connexion compatible HomeKit (un peu comme des bridges Philips Hue, Xiaomi…), donc il suffit d’associer Gladys avec votre application Maison pour y voir tous les appareils connectés à Gladys (ceux pour l’instant compatible) dans votre réseau HomeKit. J’utilise Hap-Nodejs pour reproduire le protocole HomeKit en Nodejs (pour ceux qui connaissent le logiciel Homebridge, c’est leur librairie).

Côté code, je dois encore améliorer la structure, ajouter la partie front et vérifier que ça fonctionne bien lorsque on utilise une image docker. J’espère pouvoir vous proposer une PR rapidement mais ça s’annonce bien !

J’ai une petite question organisation pour ceux qui testent déjà des développements avec des appareils zigbee. Vous utilisez une clé zigbee à part ou vous utilisez celle de votre prod sur votre PC de test ? Et pareil pour les appareils, vous avez quelques appareils de dev en plus ou vous arrivez à utiliser vos appareils en dev et en prod en même temps ?

5 Likes

Une première version du code

Bonjour @bertrandda ,
Petite question pour tester car je n’y connais rien en Apple. Ça a toujours été un mystère pour moi et une source de frustration car je n’arrive pas à faire ce que je veux avec ‹ ça ›. :smiley:
J’ai un iPad qui traîne dans un tiroir, cela suffit-il pour tester ou ais-je besoin de quelque chose d’autre?
Belle journée !

Salut, il faut un appareil compatible iPhone, iPad ou iPod touch, dans ton cas avec l’iPad regarde si ta version de iPadOS contient l’application Maison

si c’est le cas alors tu peux tester.

Une fois dessus, je te conseil de créer un nouveau domicile virtuel, si les tests amènent à changer des trucs dans l’intégration, tu pourras supprimer complètement ce domicile virtuel en une fois et pas appareil par appareil. Regarde ici pour ajouter un domicile Ajouter d’autres domiciles avec l’iPad - Assistance Apple (FR)

Il y a une petite description dans la page intégration, mais faut encore que j’écrive une doc complète. Si tu as besoin de plus d’aide n’hésite pas.

1 Like

Mon iPad est compatible.
Par contre, est-ce possible/compliqué pour toi de me builder une image Docker de test?
Je n’ai pas la moindre idée de comment on teste une PR.
Si pas possible, j’y regarderai un plus tard, mais j’y regarderai :wink:

1 Like

Super nouvelle

Pour l’instant seul le code en mode dev fonctionne, j’ai créé une image docker il y a quelques jours mais elle n’est pas fonctionnelle. Faut que je debug tout ça, les appareils ne s’ajoutent pas sur l’application maison.

Je te préviendrai quand tout sera bon pour tester

1 Like

Salut @GBoulvin, sur quel OS veux tu tester l’image docker ? Actuellement je test depuis docker sur macos et il y a une erreur de connexion à l’ajout de Gladys dans HomeKit. Après pas mal de lecture côté homebridge et hap-nodejs il semblerai que ce soit dû au paramètre --network=host qui ne fonctionne pas sur mac/windows.
Si tu es sur un système linux, peux tu tester l’image et tenter d’associer Gladys à ton application Maison et me confirmer que ça fonctionne bien s’il te plait ? L’image est dispo sur Docker bertrandda/gladys:homekit.

Je continue d’investiguer pour faire fonctionner ça sur mac/windows via docker, d’après ce que j’ai compris ce doit être un problème de mDNS. Lorsque le protocole HomeKit rend disponible un accessoire (ici le Bridge Gladys) il est sensé envoyer une requête mDNS pour signaler aux apps HomeKit qu’il est sur le réseau. Je vois bien la requête mDNS passer sur Wireshark quand je suis en dev, mais dès que j’utilise docker, la requête mDNS ne semble pas être perçu sur le réseau local, comme si elle était bloqué dans le container. Si quelqu’un a des connaissances sur le sujet (docker ou mDNS) est il possible d’avoir un peu d’aide s’il vous plait ?

1 Like

Salut!
Mets ton cœur à l’aise, ça fonctionne!
Matériel:
RPi 2 avec son OS Bullseye 32bit de base.
Installation de l’image Docker proposée ci-avant avec succès, aucune remarque.
Testé : seulement Tasmota, prises et lampes.
Comment?

Bravo!

Edit :
Par contre, après verrouillage/déverrouillage de l’iPad, il faut une vingtaine de secondes pour que les périphériques soient reconnectés…

Edit 2 : cette latence de reconnexion n’arrive pas systématiquement. Parfois, tout est connecté directement… Bizarre…

1 Like

Super nouvelle, merci pour tes retours @GBoulvin. Il y a donc bien un soucis dû au network=host sur mac/windows. Je vais ajouter la démarche de connexion dans la documentation.

Pour l’erreur qui apparait Sans réponse, ça semble être parce que l’iPad/iPhone (quand il est en veille) ne reste pas connecté en permanence au réseau HomeKit donc il a besoin de quelques secondes pour se reconnecter. Par contre si tu a un HomePod ou une Apple TV, ils peuvent servir de concentrateur HomeKit, vu que ce sont des appareils qui restent toujours connecté à la maison, le réseau HomeKit n’est jamais interrompu (https://www.reddit.com/r/HomeKit/comments/t55bw4/comment/hz3zf9a/?utm_source=share&utm_medium=web2x&context=3).

Tant mieux si c’est normal !
Comme je te disais, Apple a toujours été un grand mystère pour moi :wink:
Super boulot en tout cas. !

1 Like

Tu peux rien faire @bertrandda docker tourne dans une VM pas de network host sur ces os malheureusement.

Génial @bertrandda ! Ca va faire plaisir à un paquet de monde ça :slight_smile:

Merci pour l’info. Donc c’est à noté, si Gladys tourne sur docker, l’intégration ne marchera que si c’est un environnement Linux.

1 Like