Comment se faire des amis Alice et HomeBridge

image

UPD 08/06/2019: C'est arrivé, il est devenu possible de demander à Alice elle-même d'allumer la lumière . Le projet est sur le github . Vérifié sur son homebridge, tout fonctionne. Je considère qu'un soutien supplémentaire de mes compétences n'est pas approprié.

Je recherche depuis longtemps, en plus de la maison intelligente, un assistant vocal qui comprend et parle le russe. En conséquence, j'ai décidé de tenter ma chance et de prendre une nouvelle colonne brute Yandex.Station avec une jeune, mais déjà très aimée Alice. La première impression a été excellente, mais quand j'ai entendu beaucoup de blagues et parlé suffisamment, j'ai commencé à apprendre le côté pratique de la colonne. Surtout, je m'intéressais à la question de l'interaction d'Alice avec la maison intelligente.

Description du problème
Ma maison est basée sur un serveur HomeBridge . Beaucoup d'articles ont été écrits sur sa configuration et son utilisation sur le Habré et d'autres ressources ( une , deux , trois ), donc je ne m'attarderai pas là-dessus. N'ayant pas étudié la question à fond, j'étais sûr que le catalogue de compétences d'Alice avait déjà de nombreuses solutions pour interagir avec les systèmes de contrôle de la maison intelligente. Il s'est avéré qu'au moment de la rédaction de ce document, la plupart des compétences sur le sujet de la «maison intelligente» nécessitent un appareil avec un écran de travail, qui ne convient pas à la station. La seule compétence qui semblait répondre aux exigences et savoir comment travailler sans écran était Alfred . La compétence ne me convenait pas car elle est liée à un service - IFTTT. Supposons que je veuille créer un commutateur virtuel qui fonctionne dans un système domestique intelligent et vous permet de lier des scripts à son état actuel. Alfred utilise le service WebHook pour IFTTT avec lequel vous ne pouvez agir que sur le déclencheur créé dans l' applet IFTTT, mais il n'y a aucun moyen d'obtenir l'état actuel de l'applet (vous pouvez activer ou désactiver le commutateur, mais vous ne pouvez pas savoir dans quel état le commutateur est maintenant).

Pour résoudre le problème ci-dessus, le service Alice-HomeBridge a été créé, conçu pour connecter l'assistant vocal Yandex.Alice et divers systèmes de contrôle de la maison intelligente. De plus, comme exemple de paramètres, nous considérerons la configuration de HomeBridge, mais cette approche est également applicable à d'autres systèmes tels que Home Assistant , openHAB et autres.

Le service permet aux utilisateurs, après leur inscription sur le site, de créer des commutateurs virtuels.



Vous pouvez modifier ou connaître l'état des commutateurs à l'aide d'une demande de service GET spécialement générée.



Afin que le service interagisse avec l'assistant vocal "Alice", la compétence "Lazy Jimmy" a été créée.

Jimmy paresseux
Dites à Alice: «Exécutez la compétence paresseux Jimmy» et il vous proposera de vous informer du code d'activation, que vous pouvez trouver dans votre compte personnel .



Après l'activation, vous pouvez modifier l'état de vos commutateurs à l'aide des commandes Activer ou Désactiver. Par exemple, si vous dites «Allumer la lumière», l'état du commutateur «Lumière» devient positif. Si vous dites simplement «Light», l'état de l'interrupteur changera à l'opposé.

Pour que le dialogue semble plus naturel, il est possible de créer des commutateurs avec des noms plus compréhensibles, par exemple, "Avec Utrechk", alors vous pouvez dire à Alice "Tell Jimmy With Utrechk" et l'état du commutateur changera.

Reste à configurer HomeBridge. Par exemple, nous utiliserons l'extension cmdswitch2 . Créez un commutateur pour HomeKit appelé «Alice Button 1».

{ "platform": "cmdSwitch2", "name": "CMD Switch", "switches": [ { "name": "Alice Button 1", "on_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=true\"", "off_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=set&val=false\"", "state_cmd": "curl --silent \"http://alicehomebridge.org/alice/switches.php?switch=34&hb=ADB7BYBT728O&state=get\" | grep -oh \"true\"", "polling": true, "interval": 2 } ] } 

Afin de ne pas surcharger le serveur avec des demandes inutiles, définissez le paramètre d'intervalle sur au moins 2 secondes.

Tout est prêt.



Maintenant, si vous dites «Alice dit au paresseux Jimmy avec le mot du matin», le commutateur «Alice Button 1» changera d'état. Voici une démonstration de la façon dont tout fonctionne conjointement avec les scripts HomeKit personnalisés:


Version complète du fichier de configuration HomeBridge

PS La plupart des systèmes de gestion domestique intelligents, tels que HomeKit, prennent en charge les scripts. Vous pouvez créer un script que vous souhaitez utiliser dans une situation spécifique, par exemple, lorsque vous vous réveillez et affectez son appel à l'événement «Turn On the Utrechok Switch».

PS Mon service ne fait que se développer et est encore, pour le moins, loin d'être idéal. Mais Alice refuse également d'accepter certaines phrases de temps en temps. Par exemple, elle transmet parfaitement l'expression «Allumez la lumière» à la compétence, mais elle ne passera pas l'expression «Bonjour». J'espère que Yandex connaît le problème et le réglera bientôt. En attente de vos commentaires.

Source: https://habr.com/ru/post/fr434184/


All Articles