Novembre 2017, le nombre onze était affiché sur le calendrier. La vente sur Aliexpress battait son plein, ses mains se grattaient quelque chose à acheter. Le choix s'est
porté sur la "
Lampe LED RGBW Mi-light AC86-265V Télécommande Smart Lighting ". En conséquence, deux copies de la puissance maximale, à 9 watts, et un contrôleur de concentrateur MiLight WiFi iBox ont été achetés. La livraison depuis la Chine n'a pas tardé à venir, et après 4 mois, le 13 mars 2018,
la plate-forme Yandex.Dialogs a ouvert (une plate-forme qui permet aux développeurs tiers d'ajouter des compétences à l'assistant vocal "Alice"). Ensuite, Alice apprendra à contrôler l'éclairage (et pas seulement) dans votre appartement, et nous l'aiderons avec cela, par étapes et sans une seule ligne de code.
- Configuration de la lampe intelligente Xiaomi
- Installez openHAB
- Contrôle de la lumière via openHAB
- Accès externe à openHAB
- IFTTT
- Alice
1. Configuration des lampes intelligentes de Xiaomi.
La première chose à faire est de configurer le contrôle de la lampe, au moins en utilisant l'application de Xiaomi. Si cette étape est franchie pour vous, n'hésitez pas à poursuivre la mise en place d'un serveur domestique intelligent, ou encore plus loin, directement à l'intégration d'Alice et openHAB. Mais, tout d'abord. Les lampes elles-mêmes ne se connecteront pas à votre routeur domestique, pour cela, vous avez besoin d'un concentrateur iBox qui peut contrôler jusqu'à quatre groupes de sources lumineuses. Vous devez le connecter au réseau, puis y connecter les lampes.
- Nous alimentons l' iBox en le connectant via USB, par exemple, à un chargeur pour le téléphone.
- Lors de la première connexion, vous devez réinitialiser le concentrateur, appuyez donc sur RST .
- Ensuite, installez l'application de Xiaomi pour iOS ou Android sur le téléphone. Assurez-vous que le téléphone est connecté au réseau Wi-Fi domestique.
- Ouvrez l'application Mi-Light 3.0 , cliquez sur + . Ici, nous sommes intéressés par l'onglet Smart Link .
- Saisissez le nom et le mot de passe du réseau Wi-Fi domestique auquel le téléphone est connecté et il est prévu de connecter l' iBox .
- Votre iBox doit maintenant être connectée au réseau et les indicateurs SYS et LINK doivent clignoter, lentement et rapidement, respectivement. Sinon, appuyez à nouveau sur RST .
- Si les indicateurs clignotent, cliquez dans l'application Démarrer la configuration , le processus de configuration de la connexion pour le concentrateur commencera.
- Après une dizaine de secondes, le clignotement s'arrête, puis SYS recommence à clignoter lentement et LINK reste allumé . L'application affiche Configuré . Le concentrateur est connecté au réseau. S'il ne figure pas dans la liste des appareils , cliquez simplement sur Rechercher un appareil .
Déjà, vous pouvez contrôler la couleur et la luminosité de l'iBox elle-même, mais nous devons connecter les lampes. Pour ce faire, liez les lampes à l'une des quatre zones disponibles pour le contrôle du concentrateur.
- Nous ouvrons dans l'application Mi-Light 3.0 de la liste du hub Mi-Light . Accédez à la section Couleurs .
- En haut de l'écran, sélectionnez l'une des zones, que ce soit Zone1 . Et cliquez sur l'icône d'appairage des appareils dans le coin supérieur droit. L' écran LINK / UNLINK avec des instructions apparaît .
- Maintenant, nous configurons les lampes que nous voulons lier à Zone1 , leur gestion à l'avenir se fera de manière synchrone. Pour contrôler la luminosité et la couleur de chaque lampe individuellement, elles doivent être affectées à des zones distinctes. Alors, allumez la lampe, et dans les trois premières secondes, cliquez dans l'application Link . Si la lampe clignote trois fois, alors tout va bien, la synchronisation a réussi. Vous pouvez contrôler la lampe.

Fondamentalement, à ce stade, vous disposez déjà d'une télécommande pour la télécommande de la lumière. De plus, vous pouvez écrire votre propre système de contrôle d'éclairage, car le protocole de communication avec le concentrateur est connu depuis longtemps (il était auparavant disponible sur
limitlessled.com/dev ). Il existe des bibliothèques prêtes à l'emploi en
php ,
javascript ,
python . Mais la gestion n'est possible qu'à partir du réseau local, ce qui n'est clairement pas suffisant pour Alice. Essayons de résoudre ce problème.
2. Installez openHAB
En bref, ce qui est
openHab . Il s'agit d'un serveur de gestion de maison intelligente open source. Développé par la communauté, prend en charge la gestion d'un grand nombre d'appareils. Il y a un client mobile, il y a la possibilité de gérer Alexa d'Amazon et un assistant de Google. Écrit en java, basé sur le
framework Eclipse SmartHome . Il peut donc être installé même sur un réfrigérateur, l'essentiel est que la machine virtuelle Java fonctionne sur ce réfrigérateur. Les instructions d'installation sont pour
Linux ,
Windows ,
Mac OS ,
Raspberry Pi , pour divers
Synology de stockage réseau et
QNAP . Passez rapidement en revue la première option.
- Ajouter des clés de référentiel:
wget -qO - 'https://bintray.com/user/downloadSubjectPublicKey?username=openhab' | sudo apt-key add - sudo apt-get install apt-transport-https
- Ajoutez le référentiel lui-même:
echo 'deb https://dl.bintray.com/openhab/apt-repo2 stable main' | sudo tee /etc/apt/sources.list.d/openhab2.list
- Nous mettons à jour et installons le serveur avec les modules complémentaires:
sudo apt-get update sudo apt-get install openhab2 sudo apt-get install openhab2-addons sudo apt-get install openhab2-addons-legacy
- Nous configurons le démarrage automatique du service après le redémarrage de l'appareil et le démarrons:
sudo systemctl start openhab2.service sudo systemctl status openhab2.service sudo systemctl daemon-reload sudo systemctl enable openhab2.service
- Maintenant, nous attendons dans les 15 à 20 minutes (ce n'est pas une exagération, c'est une dure réalité avec des blagues sur la vitesse de Java), pendant qu'il
http://openhab-device:8080
interface Web apparaît à l'adresse http://openhab-device:8080
. - Sur cette page, nous nous intéressons à l'article Paper UI . C'est avec ce type d'interface que nous travaillerons à l'avenir.


3. Contrôle de la lumière via openHAB
Nous avons donc un serveur domestique intelligent et des lampes de Xiaomi en état de marche avec possibilité de télécommande. Il est nécessaire de les connecter. openHAB prend en charge les classeurs (instructions pour contrôler l'électronique connectée) pour de nombreux appareils, y compris ces lampes.
- Accédez à Module complémentaire → Liaisons .
- Installez la liaison Milight .
- Pour ajouter notre appareil, cliquez sur + dans la section Configuration → Things .
- Nous sélectionnons Milight Binding , la recherche automatique de l'appareil commence.
- Je n’ai rien trouvé automatiquement, j’ai donc ajouté manuellement « Ajouter manuellement quelque chose ».
- Nous sélectionnons le hub iBox / iBox2 à ajouter.
- Sur la page qui s'ouvre, vous devez remplir les champs IP et Bridge ID (adresse mac de l'appareil connecté), vous pouvez les trouver, par exemple, dans le panneau de contrôle du routeur (mon hub est enregistré sur le réseau avec le nom du module HF-LPB100 qui y est utilisé). Ajouter.
- Très bien , iBox / iBox2 apparaît maintenant dans la liste des appareils avec l'inscription " Online ".
- Cliquez de nouveau sur + et sélectionnez Milight Binding , cette fois pour ajouter directement les lampes.
- Maintenant, vous n'avez plus besoin d'ajouter quoi que ce soit à la main, sélectionnez simplement un groupe de lampes dans la liste (dans mon cas, il s'agit de l'article Rgbww Color (Zone 1) ).
- L'élément sélectionné doit apparaître dans la liste des choses avec l'inscription " En ligne ".

- Les appareils sont configurés, vous devez maintenant leur ajouter des contrôles. Pour ce faire, cliquez sur l'élément nouvellement ajouté.
- Une liste des paramètres de la lampe que nous pouvons contrôler à distance s'ouvre. Cliquez sur le cercle bleu Luminosité .
- Ensuite, sélectionnez le contrôle auquel nous voulons associer le paramètre de périphérique, car nous ne les avons pas encore, cliquez sur Créer un nouvel élément .
- Définissez un nom arbitraire, par exemple Light_Switcher , et changez le type de Dimmer en Switch , car Je n'ai pas besoin de régler la luminosité de la lampe, je veux juste l'allumer et l'éteindre. Nous modifions simplement la catégorie en Lumière pour que le contrôle s'affiche avec une icône dans la section Contrôle . Cliquez sur Lien .
- Accédez à la section Contrôle et profitez du fonctionnement du commutateur de luminosité sur l'appareil.

4. Accès externe à openHAB
Pour des raisons de sécurité, après les manipulations décrites ci-dessus, la gestion du serveur domestique intelligent n'est possible qu'à partir du réseau local. Ce n'est clairement pas suffisant pour notre tâche.
Il existe plusieurs options de configuration : configurer un VPN pour accéder à partir d'Internet à un réseau local, configurer un proxy inverse ou connecter votre serveur au service cloud myopenHAB sur myopenHAB.org. Étant donné qu'en Russie, le nombre d'employés de Roskomnadzor est directement proportionnel au nombre d'utilisateurs de VPN et de serveurs proxy, nous utiliserons cette dernière option.
Ne multipliez pas les choses inutilement
- Nous nous enregistrons sur le site Web myopenHAB , connectez-vous et accédez à https://myopenhab.org/account . Sur cette page, nous nous intéressons à deux domaines: openHAB UUID et openHAB Secret . Ils vous permettent d'organiser une connexion serveur. Voyons où les trouver.
- Nous allons au panneau de contrôle PaperUI openHAB .
- Ouvrez la section Configuration → Modules complémentaires → Divers .
- Installez openHAB Cloud Connector .
- Dans Configuration → Services , le module openHAB Cloud avec le mode " Notifications et accès à distance " devrait apparaître.
- Dans Configuration → Système → Gestion des modules complémentaires , le commutateur " Acceess Remote Repository " doit être activé.
- Après avoir installé l'addon, les données que nous recherchons seront dans les fichiers / var / lib / openhab2 / uuid et / var / lib / openhab2 / openhabcloud / secret ( userdata / uuid et userdata / openhabcloud / secret , si vous ne l'avez pas installé à partir du package). Nous les entrons dans les paramètres du compte sur myopenHAB et cliquez sur Mettre à jour . Si tout est correctement configuré, le mot " En ligne " devrait apparaître à gauche de votre adresse e-mail. Cela suggère que l'accès à votre maison intelligente depuis Internet est ouvert, mais Alice ne pourra pas l'utiliser immédiatement. Vous devez d'abord rendre le périphérique précédemment configuré accessible de l'extérieur.
- Accédez à Configuration → Services → openHAB Cloud → Configurer .
- Dans la liste Éléments à exposer aux applications telles que IFTTT, activez la case à cocher pour le contrôle de la luminosité et cliquez sur Enregistrer .
- Après un certain temps, nous vérifions que l'élément sélectionné est répertorié sur la page myopenhab.org/items avec le statut " ON ".

Le contrôle des lampes est désormais possible depuis Internet, via l'API openHAB Cloud, qui prend en charge l'autorisation OAuth2. Mais, malheureusement, les clients sont prédéterminés à l'avance, ce sont Alexa, Google Assistant et le service IFTTT. Alice n'est pas encore dans cette liste. Mais ce n'est pas un problème!
5. IFTTT
Si c'est le cas alors.
Un service qui vous permet de construire une chaîne d'actions à partir de plusieurs services. Répondez sous condition par une action dans un service si un déclencheur pour un événement dans un autre service a fonctionné. IFTTT prend en charge un grand nombre de services, y compris myopenHAB qui nous intéresse. Mais ne prend pas en charge Alice. En général, n'importe qui peut créer un module pour son service là-bas, tout d'abord, vous devez contacter le service commercial et connaître le montant de votre paiement annuel en faveur de l'IFTTT. Notre objectif est d'utiliser le service gratuitement afin de pouvoir rediriger les demandes d'Alice vers openHAB.
- Nous nous inscrivons sur le site Web ifttt.com et allons dans Applets → New Applet .
- Après avoir cliqué sur + ceci , vous devez sélectionner le service dans lequel l'événement sera un déclencheur. Parce que Le service d'Alice n'est pas sur la liste, nous devons choisir quelque chose qui peut recevoir des commandes d'elle. Il s'agit d'un service Webhooks . Cliquez sur Connecter .
- Ensuite, sélectionnez le déclencheur " recevoir la demande Web " dans la liste avec un élément.
- Spécifiez le nom de l'événement, par exemple light_on , puis cliquez sur Créer .
- Maintenant, nous devons sélectionner la réponse, cliquez sur + ça . Notre choix de openHAB , plug.
- Dans la fenêtre qui s'ouvre, l'autorisation OAuth2 mentionnée précédemment, cliquez sur Autoriser .
- La seule réponse de commande d'envoi est disponible.
- Dans la liste déroulante, sélectionnez le contrôle de la lampe (par exemple, Light_Switcher), et comme commande pour allumer la lumière, spécifiez le mot " ON ". Nous créons.
Pour vérifier, nous devons appeler un déclencheur sur le service Webhooks. Comment faire Envoyez une demande POST.
- Nous recherchons le service Webhooks sur le site Web IFTTT et accédons à la documentation qui lui est associée.
- Sur la page qui s'ouvre, il y a une commande que nous devons exécuter, en remplaçant {event} par light_on .
- Après avoir cliqué sur Test It , votre lampe devrait s'allumer.
Il reste à créer une recette similaire pour l'événement light_off, qui enverra la commande OFF à la commande d'éclairage. Et puis apprenez à Alice à appeler ces déclencheurs à notre demande.

6. Alice
Dans mon ordre, dans mon désir, Alice allumera la lumière si vous utilisez la plateforme
Yandex.Dialogs . La plateforme a ouvert ses portes en mars de cette année et permet à quiconque d'ajouter des compétences à Alice en écrivant le code approprié. À l'heure actuelle, un grand nombre de compétences sont déjà présentées
dans le catalogue . Le développement des compétences fait l'objet d'un article séparé sur Habré, et nous avons ici «
sans une seule ligne de code ». Nous allons donc utiliser les développements disponibles.
- Nous installons la version bêta de l'application de recherche Yandex , seule elle prend actuellement en charge les compétences des utilisateurs .
- Nous disons qu'Alice " active les sorts magiques ". C'est la capacité des sorts magiques / sorts magiques qui nous permettra d'effectuer des requêtes POST aux serveurs IFTTT .
- Cliquez sur Ajouter et spécifiez l'adresse pour allumer la lumière du formulaire:
https://maker.ifttt.com/trigger/light_on/with/key/{user_id}
- L'étape suivante consiste à prononcer une phrase ou un mot auquel Alice répondra en remplissant une demande à l'adresse spécifiée (mon Alice répond «allume la lumière»).
Si vous cliquez maintenant sur le bouton correspondant ou exprimez la proposition, la demande des serveurs Yandex ira au serveur de compétences, de là à IFTTT, puis à myopenHAB, qui transférera les données à votre instance locale avec un accès direct au concentrateur de la lampe et la lumière s'allumera. Nous ajouterons immédiatement une commande similaire pour éteindre l'éclairage.
Vous devez comprendre que simplement allumer Alice et dire «
allumer la lumière » ne suffit pas. Yandex ne sait rien de nos équipes pour les maisons intelligentes, les données les concernant sont stockées dans la base de données de la compétence "
sorts magiques ". Par conséquent, vous devez d'abord appeler la compétence en disant «
allumez les sorts magiques », puis seulement allumez et éteignez la lumière avec votre voix.
PS
L'approche avec l'intégration d'Alice et openHAB via IFTTT ne limite pas votre imagination. Vous pouvez utiliser la capacité "
sorts magiques " pour contrôler n'importe quoi dans votre voix de maison intelligente. Par exemple, openHAB a des classeurs pour Samsung SmartTV, qui vous permettent de contrôler le son et les canaux du téléviseur. L'interaction d'Alice et de Webhooks est la mise en œuvre d'une interface vocale pour tous les services IFTTT, des «
sorts magiques » vous permettent d'exécuter la commande de n'importe lequel d'entre eux. Ou vous ne pouvez pas utiliser Alice du tout et écrire votre interface, par exemple, une application mobile qui exécutera les requêtes IFTTT via les mêmes Webhooks. Oui, et IFTTT n'est pas nécessaire pour utiliser, par analogie, vous pouvez configurer les "
sorts magiques " pour répondre aux demandes de votre serveur.