Tester une Home Key dans HomeKit sans serrure connectée

Truc totalement bidouille et inutile aujourd’hui, mais qui permet de voir un truc qui n’est pas disponible largement : un émulateur pour la fonction Home Key de HomeKit (Clés de maison en français).

C’est une technologie qui permet d’employer un iPhone ou une Apple Watch our déverouiller une serrure connectée, mais elle est rare en Europe pour le moment. Et un développeur a proposé sur GitHub un petit programme en Python qui permet d’émuler une serrue compatible. C’est assez basique, mais ça permet de voir à quoi ressemble l’interface, à défaut de vraiment déverrouiller une serrure.

Sur le coup, j’ai testé parce que le matériel nécessaire n’est pas très cher. Il faut un adaptateur USB vers UART (j’en avais un, mais sinon ça vaut une dizaine d’euros) et un kit RFID. Le programme nécessite une carte avec une puce PN532 qui se connecte en UART. J’en ai acheté un pour 11 € et il y avait une carte avec une puce NFC et un badge avec. La seule chose que j’ai dû faire, c’est souder les broches dessus, mais c’est vraiment le niveau basique en soudure.

La carte et l’adaptateur

Question branchement, il faut alimenter la carte en 5V. Ce point va dépendre de votre adaptateur UART : certains ont une broche pour le 3,3V et une pour le 5V (le cas du mien), d’autres une seule broche et un cavalier pour choisir la tension. Ensuite, il faut relier la masse à la masse, la broche TX (ou équivalent) à SCL et la broche RX à SDA.

Mes branchements

Le programme lui-même s’installe facilement sur un Mac. Vous aurez besoin du nom de l’interface série (usbserial-1460 dans mon cas) et il faudra évidemment taper quelques lignes dans le Terminal de macOS. J’ai testé sur un Mac que j’utilise régulièrement pour ce genre de choses, donc j’avais peut-être déjà installé certains trucs nécessaires avec Homebrew. Le programme fonctionne avec Python 3, donc une version récente de macOS est probablement nécessaire.

cd Downloads
git clone https://github.com/kormax/apple-home-key-reader
cd apple-home-key-reader
python3 -m venv ./venv
source ./venv/bin/activate
python3 -m pip install -r requirements.txt

Ensuite, il faut mettre le nom de votre interface série dans ce fichier, à la ligne qui commence par "port": "xxx". La page du projet donne quelques informations sur les réglages possibles.

nano configuration.json

Enfin, il faut lancer le programme, qui va demander un accès au réseau (c’est normal).

python3 main.py

Le code avec les logs

Côté iPhone

Dans le Terminal, vous devriez voir le code pour le jumelage HomeKit. Dans mon cas, je n’ai pas eu de code QR (je n’avais pas installé la bibliothèque nécessaire) mais le programme doit pouvoir le générer. Dans Maison, il suffit d’ajouter un accessoire (avec le +) et choisir Plus d’options… comme il n’y a pas de code QR. La serrure devrait apparaître dans la liste si vous êtes sur le même réseau. iOS va vous proposer d’activer le mode Toucher pour déverouiller (Express Mode), ce qui n’est pas obligatoire. Sans cette option, vous devrez valider l’ouverture avec Face ID ou Touch ID.

Il faut ajouter la serrure



La clé est ajouté dans Cartes


Le mode Express


La carte par défaut

En pratique, on a donc d’abord une carte dans l’application Cartes (le Wallet d’iOS). On peut activer (ou désactiver) le mode Express. Truc sympa, on a les reflets qui bougent en fonction dy gyroscope de l’iPhone.

Quand on approche l’iPhone du lecteur, on a une petite animation dans la Dynamic Island avec la carte, et une notification de Maison qui indique qu’on a verrouillé (ou déverrouillé) la serrure virtuelle. On peut aussi le faire manuellement depuis Maison, bien évidemment, sans passer par la connexion physique en NFC.

Parfait pour la bidouille

Le programme reste assez basique et c’est de la bidouille, mais on peut faire des choses amusantes et lier l’ouverture à automatisations HomeKit, par exemple. Et si je l’ai lancé sur un Mac, il fonctionne aussi visiblement sur un Raspberry Pi par exemple. Kormax (l’auteur) a documenté le tout et il y a même de la documentation sur GymKit. Dernier point, si vous voulez tenter de jouer avec la configuration, il faut supprimer hap.state et homekey.json pour repartir de zéro.

Quelques options


On peut choisir la couleur de la carte