Sous iOS, il existe de multiples solutions pour activer ou désactiver un appareil ou une scène HomeKit. Vous pouvez passer par l’app Maison bien sûr, mais il y a aussi un accès rapide depuis le centre de contrôle, vous pouvez utiliser Siri ou même l’app Raccourcis pour des automatisations plus avancées. Sous macOS Mojave, vous avez l’app Maison ou Siri et… c’est tout.
L’app Maison est directement issue de la version iPad et elle n’est pas très optimisée pour macOS, c’est le moins que l’on puisse dire. Outre son interface très proche d’iOS, elle n’est pas pensée pour être utilisée au clavier et encore moins pour être automatisée. Le meilleur moyen de contrôler HomeKit avec un Mac, c’est encore Siri, qui permet d’activer ou désactiver accessoires et scènes.
Cela fonctionne très bien, mais je cherchais une méthode plus rapide et pratique pour activer ou désactiver des accessoires HomeKit avec un Mac. Je préfère éviter d’avoir à parler à Siri à chaque fois et je voulais le faire avec un raccourci clavier, ma méthode de prédilection pour lancer des automatisations sur macOS.
J’ai réussi à le faire en utilisant Keyboard Maestro et je vais détailler comment si vous voulez en faire autant. Cet exemple me permet d’allumer une prise connectée si elle est éteinte et vice-versa, mais il est possible de l’adapter pour une scène ou pour contrôler plusieurs accessoires à la suite.
Configuration : Siri en mode textuel
Pour cette automatisation, nous allons utiliser Siri qui reste le meilleur moyen de contrôler HomeKit. À défaut de parler à l’assistant vocal d’Apple, nous allons utiliser une fonction d’accessibilité qui permet de saisir du texte. Notez que vous ne pourrez plus parler à Siri, ce qui peut être un problème si vous comptiez sur cette fonction. Pour ma part, je n’utilisais jamais l’assistant sur mon Mac, donc ce n’est pas un souci, mais à vous de voir.
Pour écrire à Siri plutôt que lui parler, ouvrez les Préférences Système, puis le panneau « Accessibilité », choisissez Siri dans la barre latérale de gauche et cochez l’option « Activer Écrire pour Siri ». Désormais, toutes les interactions avec l’assistant se feront par le clavier, vous pourrez saisir les mêmes commandes plutôt que de les dicter.
Second point important, il faut définir un raccourci clavier pour activer Siri. Cela se fait aussi dans les Préférences Système, panneau « Siri » cette fois. Le raccourci par défaut (⌘espace maintenu une seconde) posera un problème, mieux vaut choisir autre chose. N’importe quel raccourci fera l’affaire, dans mon cas j’ai choisi ⌘⌥espace, mais vous pouvez utiliser un autre raccourci.
Par ailleurs, je vous suggère de désactiver le retour vocal de Siri en cochant l’option correspondante sur ce panneau de réglage. Ce n’est pas obligatoire, mais cela vous permettra de ne pas entendre la réponse de l’assistant vocal, et je trouve que cela améliore l’automatisation.
La macro de Keyboard Maestro
Maintenant que Siri est correctement configuré, j’ai créé une macro dans Keyboard Maestro pour automatiser cette série d’actions :
- Activer Siri avec le raccourci clavier ;
- Coller une phrase qui fera l’action nécessaire dans HomeKit ;
- Valider avec la touche entrée ;
- Patienter quelques secondes, le temps que Siri fasse ce qui est nécessaire ;
- Fermer Siri avec la touche ESC.
Cette app permet de réaliser très simplement ce genre d’automatisations, mais il serait possible de faire la même chose en AppleScript, sans avoir à payer des licences, on y reviendra. En attendant, voici ce que j’ai créé dans Keyboard Maestro :
Vous pouvez télécharger directement cette macro à cette adresse, et la modifier en fonction de vos besoins. Pour vous aider, voici les explications pas à pas.
En haut du fichier, vous trouverez un champ de texte pour le nom de macro, puis une zone qui détermine comment la macro est activée. J’ai choisi un raccourci clavier (⇧F19), vous pourrez le modifier en fonction de vos préférences, ou bien choisir une activation différente, Keyboard Maestro propose des dizaines d’options différentes.
Viennent ensuite les actions qui seront exécutées. La première est le raccourci clavier qui active Siri. Modifiez-le en fonction du paramètre choisi dans les Préférences Système.
On pourrait ensuite directement coller le texte qui servira dans Siri, dans mon cas ce serait soit « Allume les enceintes », soit « Éteins les enceintes ». Mais justement, je voulais que l’automatisation fonctionne en toutes circonstances et qu’un seul raccourci clavier me permette d’allumer les enceintes si elles sont éteintes, et de les éteindre si elles sont allumées.
Ce genre de logique n’est pas prise en charge par défaut avec HomeKit. À défaut, j’utilise une des fonctions de Keyboard Maestro pour obtenir le même résultat : une variable globale. L’idée est d’enregistrer l’état de la prise dans une variable, et en fonction de la valeur, l’automatisation allumera ou éteindra la prise. Première étape, il faut créer la variable dans les préférences de l’app :
Dans la macro, on ajoute une action « If Then Else » pour introduire la condition sur le contenu de la variable. J’ai choisi de faire simple : 0 si la prise est éteinte, 1 si elle est allumée. Si la valeur est à 0, alors la macro allume la prise et enregistre la valeur 1 dans la variable ; si la valeur est à 1, alors la macro éteint la prise et enregistre 0.
Cette action permet de définir la condition, puis de définir ce qui se passe si elle est vraie, puis si elle est fausse. Dans notre cas, il y a deux actions pour chaque cas :
- l’une pour insérer un texte qui ira dans l’interface de Siri activée précédemment ;
- la deuxième pour modifier le contenu de la variable.
Le texte à saisir doit s’adapter à vos besoins, vous pouvez essayer avant de créer la macro avec Siri, pour savoir ce qui fonctionne ou pas. L’assistant n’accepte qu’une seule commande à la fois, vous ne pouvez pas écrire « Allume les enceintes et éteins la lumière », vous devrez exécuter deux fois Siri pour cela.
Dernières étapes : envoyer la commande avec la touche Entrée, puis patienter le temps que Siri s’exécute et fermer Siri avec la touche esc. J’ai mis une pause de deux secondes, elle est suffisante dans mon cas, mais vous pourrez l’allonger en cas de besoin. Vous pouvez même ne pas fermer Siri automatiquement, et laisser macOS le faire après quelques secondes d’attente.
Contrairement à ce que l’on pourrait penser, cette macro n’est pas lente. Voici le résultat, pour vous donner une idée de la rapidité du processus. J’ai laissé l’app Maison ouverte uniquement pour montrer que tout fonctionne, mais elle n’est jamais nécessaire pour l’automatisation et vous pourrez l’oublier au fond du dossier des applications une fois que tout est en place.
Alternative avec de l’AppleScript uniquement
Keyboard Maestro est un formidable outil d’automatisation, mais c’est aussi une app payante. Si vous ne voulez pas mettre les 40 € demandés par la licence, voici une alternative gratuite, en AppleScript. Vous pouvez télécharger ce fichier à cette adresse, si vous voulez l’ajuster à vos besoins.
La plus gros défaut de cette approche, c’est qu’elle ne gère pas l’état de la prise, comme je l’ai fait précédemment. Vous devrez avoir deux scripts différents, un pour allumer et un pour éteindre l’appareil, ou bien activer et désactiver la scène. On pourrait imaginer un système similaire à celui de Keyboard Maestro, en enregistrant une variable dans un fichier, mais cela devient alors nettement plus compliqué.
Pour bien faire, il faudrait qu’Apple ajoute de quoi automatiser HomeKit sur macOS, notamment en offrant la possibilité de connaître le statut d’un appareil. On imagine que ça ne se fera pas avec de l’AppleScript, mais peut-être que Raccourcis finira par arriver sur macOS ? D’ici là, mon bricolage avec Keyboard Maestro fait l’affaire et fonctionne mieux que je l’imaginais initialement…