Salut à tous,
Pour ceux qui ne connaissent pas les produits Xiaomi Home, c'est tout une gamme domotique composé d'un gateway Wi-Fi connecté à la box internet, et d'un ensemble de périphériques eux connectés en Zigbee au gateway. Le même combo que les ampoules Philips Hue en quelques sortes. Leurs gros avantage, c'est que non seulement la technologie est robuste, a une bonne portée, n'est pas énergivore pour les devices, mais en plus c'est low-cost ! On parle de quelques euros pour chaque capteur.
Et je suis heureux de vous annoncer qu'une première version de ce module Xiaomi Home est maintenant disponible !
Le Hardware
Voilà pour l'instant le hardware que je supporte. Notez que le gateway est indispensable, et ensuite c'est à vous de voir en fonction de votre installation.
- Xiaomi Gateway - 24€
- Xiaomi Aqara Capteur d'humidité + Température - 7€
- Xiaomi bouton connecté - 6€
- Xiaomi Aqara détecteur ouverture porte et fenêtre - 6€
Mon grand favori étant le bouton Xiaomi qui vous permet de détecter 4 pressions différentes et de déclencher des scénarios en conséquence, comme par exemple le fameux mode romantique qui m'avait valu un article sur le site de la fondation Raspberry Pi 😃
Installation
Le module est disponible sur GitHub.
- Téléchargez l'app Mi Home sur le Play Store ou l'App Store
- Lors de la création de votre compte, définissez votre région à "Mainland China" pour pouvoir utiliser ces produits (sinon vous ne pourrez pas utiliser les produits Xiaomi Home ). Vous pouvez changer cette région dans "Settings" -> "Locale" sinon.
- Suivez la configuration dans l'app, connectez votre Xiaomi Gateway, et installez tous vos périphériques Xiaomi selon leur manuel d'installation.
- Mettez à jour le gateway à la dernière version
- Passez le Gateway Xiaomi en mode développeur de la façon suivante :
- Cliquez sur le gateway :
- Puis cliquez sur les trois petits points :
- Cliquez sur "About" :
- Cliquez plusieurs fois sur la zone suivante afin d'afficher les menus cachés :
- Cliquez sur le menu en chinois suivant :
- Enfin, activez le mode développeur :
Configuration de Xiaomi Home dans Gladys
Connectez vous au Raspberry Pi chez vous (en SSH ou sur un écran), et exécutez la commande suivante :
git clone https://github.com/gladysassistant/gladys-xiaomi-home
Déplacez vous dans le dossier :
cd gladys-xiaomi-home
Puis installez les dépendances :
yarn install
Ensuite, éditez le fichier config.js
:
nano config.js
Remplacez localhost
par l'IP de votre instance Gladys et your-gladys-token
par un token de sécurité Gladys. Pour rappel, vous pouvez récupérer ce token dans l'onglet "Paramètres" => "Sécurité" de votre dashboard Gladys.
Enfin, lancez Gladys Xiaomi Home :
pm2 start /home/pi/gladys-xiaomi-home/app.js --name gladys-xiaomi-home
Cela va lancer le programme en arrière plan grâce à PM2, et si votre Raspberry Pi redémarre le programme redémarrera au démarrage aussi.
Pour rappel, si vous voulez suivre les logs, vous pouvez faire :
pm2 logs gladys-xiaomi-home
Afin que vos périphériques apparaissent dans Gladys, il faut désormais qu'il remonte une information, ils seront automatiquement créé dans Gladys à la volée. Par exemple pour le bouton Xiaomi, il faut le presser au moins une fois pour le voir dans l'interface.
Utiliser Xiaomi Home avec Gladys
Bon, afin d'apprendre à utiliser le Xiaomi Home, nous allons mettre en place ensemble le mode romantique que j'ai montré en vidéo !
D'abord, assurez-vous que vos périphériques apparaissent bien dans Gladys :
Créez le script romantique
Puis, créez un script correspondant à l'action de votre mode romantique dans l'onglet "Script" du dashboard Gladys :
Pour le contenu du script, voilà le mien mais il est complètement lié à mon installation. Je vais le disséquer avec vous pour apprendre à en faire un pour chez vous :
gladys.music
.setVolume({ room: 1, volume: 40 }) // on met le volume de la Sonos à 40
.then(() => {
gladys.music.playPlaylist({
room: 1,
identifier: "file:///jffs/settings/savedqueues.rsq#9",
}); // on lance la playlist romantique
gladys.deviceType.exec({ devicetype: 10, value: 56 }); // on baisse la luminosité à 56 sur une lampe
gladys.deviceType.exec({ devicetype: 6, value: 40 }); // on baisse la luminosité à 40 sur la lampe principal
gladys.deviceType.exec({ devicetype: 7, value: 900 }); // on change la "hue" à 900
gladys.deviceType.exec({ devicetype: 8, value: 180 }); // on change la "saturation" à 180
});
La musique avec MP3-Player
Si vous n'avez pas d'enceintes Sonos et que vous voulez jouer un son sur le Raspberry Pi directement, vous pouvez utiliser le module Gladys MP3-Player. Suivez les instructions d'installation.
Ensuite, dans un script, pour lancer de la musique, vous pouvez faire :
gladys.music.play({room: 1});
En remplaçant "1" par l'ID de la pièce dans laquelle vous avez placer le device MP3 Player dans Gladys (en gros, la pièce où est votre Raspberry Pi)
Si vous voulez faire pause sur la musique dans le script, faites :
gladys.music.pause({room: 1});
Si vous voulez spécifier quelle musique jouer, faites :
gladys.music.play({room: 1, uri: '/home/pi/music/romantic.mp3'});
Vous pouvez même jouer une URL distante:
gladys.music.play({room: 1, uri: 'https://www.mfiles.co.uk/mp3-downloads/Beethoven-Symphony5-1.mp3'});
(Oui, cette commande fonctionne vraiment, testez chez vous :D Je précise que la musique est libre de droit, c'est du classique)
La musique avec Sonos
Si vous avez une Sonos et que vous voulez récupérer l'identifier d'une playlist de chez vous, rendez-vous à l'URL "/music/playlist" de votre Raspberry Pi. Vous devriez tomber sur ça =>
Récupérer l'URI correspondant à votre playlist, et pour jouer la musique dans le script mettez :
gladys.music.playPlaylist({room: 1, identifier: 'REPLACE_HERE'});
Pensez là aussi à remplacer le "1" par l'ID de votre pièce où est située votre Sonos dans Gladys.
Les lumières
Pour les lumières, que vous utilisiez des Philips Hue, des Milight, c'est plus ou moins pareil !
Cela peut-être géré soit dans un script, soit directement dans le scénario.
Pour le faire dans le script, il n'y a qu'une commande à connaître :
gladys.deviceType.exec({devicetype: 10, value: 40});
Cette commande va passer la valeur du deviceType d'ID "10" à 40 (ici, la luminosité). Comment connaitre l'ID du deviceType ? Pour cela, rendez-vous dans l'onglet "Devices" puis "Mes Devices". Cliquez sur "Edit" du device de votre choix, exemple ici pour ma lampe de salon :
Je récupère l'ID "10" de mon deviceType "brightness", et comme je peux le voir la luminosity s'exprime de 0 à 100. Ici pour passer la luminosité à 40% je fais donc :
gladys.deviceType.exec({devicetype: 10, value: 40});
Simple, non ? :)
Créez le scénario
Maintenant, il faut créer un scénario qui se lance lors de l'appui sur le bouton Xiaomi.
Tout d'abord, allez dans l'onglet "Scenario" et cliquez sur "Nouveau" :
Ensuite, cliquez sur "Device", vous devriez arriver sur un écran comme ci-dessous. Sélectionnez votre bouton Xiaomi, et sélectionnez quelle valeur vous voulez surveiller.
La valeur 1 correspond à un clic simple. La valeur 2 correspond à un double clic. La valeur 3 correspond à une longue pression. La valeur 4 correspond à une longue pression puis relâchement.
Skippez la partie "condition", et passez directement aux "Actions". Cliquez sur "Exécuter un script" :
Enfin, sélectionnez le script que nous avons créé précedemment et cliquez sur "Enregistrer".
C'est bon, votre script est prêt !
Vous pouvez le tester en appuyant sur votre bouton.
Et BAM !
Conclusion
Bien entendu, tout ça n'est qu'un exemple de ce qui est possible de faire avec un peu d'imagination et ces périphériques Xiaomi. Je vous les recommande vraiment!
Fun fact, le bouton Xiaomi est assez sensible, et il m'est arrivé de déclencher plusieurs fois le mode par erreur juste en déposant des feuilles sur mon bureau, ou en posant le bouton autre part. Afin d'arrêter d'embêter mes colocs avec ce mode, j'ai fini par créer un mode "abort" qui se déclenche lorsque je double clic sur le bouton 😂
Si vous avez d'autres idées/questions/remarques, n'hésitez pas en commentaire!
PS: J'organise un meetup Gladys sur Paris le Mercredi 13 Décembre, pour s'inscrire c'est ici ! N'hésitez pas à me contacter si vous souhaitez un talk Gladys dans votre entreprise/établissement/conférence.