#Test : installation et inclusion du kit Xiaomi Smart Home sur Home Assistant (HASS)

Le kit Xiaomi Smart Home est très bien pris en charge par le serveur domotique Open Source Home Assistant. Ce kit très économique est très bien adapté pour débuter en domotique. Dans ce tutoriel, nous allons configurer étape par étape les principaux appareils du kit : passerelle domotique (gateway), sonde de température et d’humidité, contacteur de porte et fenêtre, détecteur de mouvement et bouton connecté. Ce tutoriel a été mis au point un serveur Home Assistant fonctionnant sur un Orange Pi+ 2e sous Armbian. L’installation est identique sur Raspberry Pi.

Configurer les appareils et la Gateway depuis l’appli Mi Home

Avant d’ajouter les appareils Xiaomi à Home Assistant, il est nécessaire de les configurer depuis l’application mobile iOS ou Android. Pour cela, je vous invite à suivre cet article qui explique pas à pas comment faire.

Avertissement. Le kit Xiaomi Smart Home est destiné au marché Chinois. Les appareils ne sont pas certifiés CE ou FCC. Vous êtes responsable de l’utilisation des appareils Xiaomi. Projets DIY ne pourra pas être tenu pour responsable en cas d’accident, blessure ou détérioration de matériel. 

Tous les accessoires Xiaomi Mi Smart Home (ancien Aquara)

Note sur la sécurité et les données personnelles

Tout passe obligatoirement par une passerelle WiFI / Zigbee. La gateway fait le lien entre les appareils Xiaomi Mi Home (ancienne gamme Aqara) qui fonctionnent généralement en Zigbee et l’application mobile. Vous l’avez compris, tout passe obligatoirement par les serveurs de Xiaomi en Chine. Même en connectant les appareils à un serveur domotique, les données passerons obligatoirement par ces serveurs. Pour le moment, il n’existe pas encore (à ma connaissance) de hack du firmware qui permettrait de garder le contrôle des données personnelles qui transitent par la gateway (sondes, voix, vidéo, état des capteurs…).

Installer les composants pour prendre en charge les appareils Xiaomi dans Home Assistant

Il existe plusieurs projets sur GitHub pour ajouter le support des appareils Xiaomi à Home Assistant. Pour ce tutoriel, j’ai utilisé le projet de lazcad disponible ici qui est un fork du projet homeassistant-aqara de foxxy. La dénomination des produits Xiaomi n’est pas toujours très claire. Ce kit porte souvent le nom aqara (ou aquara, ou Mijia, ou MiHome !). Lazcas (http://lazcad.com) est allé plus loin que le projet initial en supportant un plus grand nombre d’appareils. En voici la liste actuelle tirée de l’analyse du code source :

  • Capteurs binaires (binary_sensor)
  • Lumière (light)
  • Capteurs (sensor)
  • Interrupteur (switch)
    • Aqara Wall Switch (Single) : interrupteur simple à encastrer (non CE, FC)
    • Aqara Wall Switch (Double) : interrupteur double à encastrer (non CE, FC)
    • Aqara Wireless Switch (Single) : interrupteur simple à poser (non CE, FC)
    • Aqara Wireless Switch (Double) : interrupteur double à poser (non CE, FC)
    • Plug : prise connecté (non CE, FC)
Avertissement. Les appareils Xiaomi sont commercialisés uniquement en Chine. Il est toutefous possible de les acheter en dehors de Chine. Certains appareils peuvent être utilisés dans le cadre du loisir ou de l’apprentissage (capteurs, sondes, boutons connectés, caméras…). D’autres appareils ne doivent pas être utilisés car ils ne sont certifiés CE, NF ou FC (en fonction de votre pays). C’est par exemple le cas pour tous les appareils qui utilisent une tension d’alimentation de 110V ou 220V (prise connectée, interrupteur connecté, ampoules connectées…), détecteur de fumées. Cette liste est non exhaustive. Vous êtes responsable de l’utilisation des appareils Xiaomi dans votre habitation. Projets DIY ne pourra pas être tenu pour responsable en cas d’accident, blessure corporelle ou détérioration de matériel.

Passons maintenant à l’installation des composants. Ouvrez un Terminal ou connectez-vous en SSH au serveur domotique. Placez vous dans un répertoire, par exemple /home/pi/Desktop puis récupérez les sources du projet

cd /home/pi/Desktop/
git clone https://github.com/lazcad/homeassistant

Ensuite copiez les fichiers dans le repertoire des composants (components) de Home Assistant. La procédure est différente en fonction de l’installation choisie.

Installation classique

Le répertoire de destination est /home/homeassistant/.homeassistant/custom_components

cp -rv /home/pi/Desktop/homeassistant/components/* /home/homeassistant/.homeassistant/custom_components
Le répertoire de destination peut évoluer (custom_components)

Le répertoire des composants peut également se trouver dans le dossier /home/USER/.local/lib/python3.5/site-packages/homeassistant/components/

Vous pouvez supprimer les fichiers source. Vous pouvez également récupérer les fichiers depuis un autre ordinateur et télécharger les fichiers en FTP.

Installation dans un environnement virtuel (depuis décembre 2016)

C’est un peu plus long car il faut commencer par changer d’utilisateur avant de procéder à la copie des fichiers

sudo su -s /bin/bash homeassistant
cp -rv /home/pi/Desktop/homeassistant/components/* /srv/homeassistant/lib/python3.5/site-packages/homeassistant/components/
Le dossier de destination pourra évoluer avec les versions de Python utilisées. Ici c’est la 3.5

Vous pouvez vous déconnecter (exit) puis supprimer les fichiers source.

Configurer la Gateway Xiaomi Mijia dans Home Assistant

La première chose à faire est de configurer la Gateway Xiaomi. Pour cela, ouvrez l’application Mi Home sur votre smartphone ou tablette et ouvrez la Gateway. Dans le tutoriel précédent, nous avons vu comment configurer des appareils sur l’application Mi Home. Maintenant, pour pouvoir les intégrer à un serveur domotique, il est nécessaire d’activer le mode développeur.

Comment activer le mode développer sur l’appli Mi Home ?

Le mode développeur va exposer les trames sur le réseau local en UDP. Pour activer le mode développeur, sélectionnez la gateway puis cliquez sur les trois points dans le coin supérieur droit de l’écran.

xiaomi mi home gateway acces developper

Cliquez sur About

 xiaomi mi home gateway acces developper about

Maintenant faites un double tap (n’hésitez pas à recommencer plusieurs fois !) pour faire apparaître les options cachées. Il m’a fallu des heures pour trouver l’astuce ! Auparavant, il fallait passer par le numéro de version présent en bas de l’écran.

 xiaomi mi home gateway acces developper double tap

Comme par magie, les options cachées s’affichent :-). Sélectionnez la 4ème ligne (ne me demandez pas la traduction exacte, c’est aussi du chinois pour moi).

xiaomi mi home gateway activate developper tools

Activez le mode développeur (1) et notez la clé (2)

xiaomi mi home gateway developper mode sid

Confirmez et ouvrez le 5ème menu. Vous obtenez un rapport technique sur la gateway (1) et les périphériques connectés à celle-ci (2).

xiaomi mi home gateway developper identifiants

Trouver les identifiants des appareils avec un script Nodejs depuis un ordinateur

Il est également possible (et plus facile pour la configuration) de récupérer les identifiants des appareils connectés à la gateway à l’aide d’un script Nodejs. Lisez cet article pour installer Nodejs sur votre ordinateur.

Récupérez le projet ici. Lancez le script listeners.js (avec la commande node listeners.js ) pour récupérer les identifiants et d’autres informations. Voici un exemple de ma configuration (certains identifiants sont tronqués). Ctrl + C pour interrompre le script. La gateway est affichée en premier (iam). On trouve ensuite la sonde de température et d’humidité (th), de détecteur d’ouverture de porte (magnet) et enfin de détecteur de mouvement (motion). Le script récupère également l’état (ou la valeur) de chaque appareil ainsi que la tension de la batterie. Si la programmation Javascript vous intéresse, c’est un bon point de départ pour en apprendre plus.

node listeners.js 
{ cmd: 'iam',
  port: '9898',
  sid: '286c078XXXXX',
  model: 'gateway',
  ip: '192.168.1.28' }
{ cmd: 'get_id_list', sid: '286c078XXXXX' }
{ cmd: 'get_id_list_ack',
  sid: '286c078XXXXX',
  token: 'D5M1ElWcNl5XXXXX',
  data: 
   [ '158d000156cbfa',
     '158d000155d2b7',
     '158d000149a352',
     '158d000159a218' ] }
th 158d000156cbfa 18.71 59.87
{ cmd: 'read_ack',
  model: 'sensor_ht',
  sid: '158d000156cbfa',
  short_id: 16853,
  data: { voltage: 2975, temperature: '1871', humidity: '5987' } }
{ cmd: 'read_ack',
  model: 'switch',
  sid: '158d000155d2b7',
  short_id: 33826,
  data: { voltage: 3142 } }
MAGNET 158d000149a352 true
{ cmd: 'read_ack',
  model: 'magnet',
  sid: '158d000149a352',
  short_id: 41765,
  data: { voltage: 3055, status: 'close' } }
motion 158d000159a218 false
{ cmd: 'read_ack',
  model: 'motion',
  sid: '158d000159a218',
  short_id: 11179,
  data: { voltage: 3055, status: 'no_motion' } }

Déclarer la gateway Xiaomi dans le fichier configuration.yaml

Maintenant, connectez vous au serveur et placez vous dans le répertoire de Home Assistant et ouvrez le fichier configuration.yaml

cd /home/homeassistant/.homeassistant/
sudo nano configuration.yaml

Collez ce bloc (à la fin par exemple) en remplaçant la valeur key par la clé développeur obtenue dans l’appli Mi Home.

#Xiaomi
xiaomi:
  gateways:
    - sid:
      key: 4057E52D9XXXXXXX

Autres paramètres

Il est possible d’ajouter les appareils directement dans le fichier configuration.yaml, mais il est plus judicieux de séparer les éléments pour faciliter la maintenance. Au fur et à mesure que la configuration évolue, le fichier peut devenir très grand, donc plus difficile à maintenir. De plus, il est plus facile d’actualiser l’interface sans avoir à redémarrer HASS à chaque fois.

Pour cela, on va indiquer à HASS qu’il doit utiliser un fichier de configuration externe pour les groupes, ajoutez cette option

group: !include group.yaml

On va faire de même pour la customization des affichages. Ajoutez cette option dans le bloc homeassistant: (le 1er bloc)

customize: !include customize.yaml

Enfin, commentez (#) l’option introduction pour désactiver le bloc d’informations affiché sur la vue principale. Enregistrez avec Ctrl + X puis O.

Création des vues et des groupes

Nous allons donc créer un fichier appelé customize.yaml. Nous verrons plus en détail le fonctionnement d’Home Assistant dans un prochain tutoriel. Ici, nous allons aller à l’essentiel. Les vues sont des onglets thématiques qui sont affichés en haut de l’écran. Par exemple, on pourra regrouper (les groupes) les éléments par pièces. Ici, on va simplement créer des groupes par types de capteurs et deux vues : Maison et Capteurs.

sudo nano customize.yaml

Pour appeler les différents appareils, on doit faire référence à son type puis lui associer son identifiant. Voici les types d’appareils. On les retrouve facilement dans le fichier xiaomi.py depuis le code source (un fichier par type de capteur).

Ce qui donne pour les principaux capteurs

  • Motion : binary_sensor.motion_sensor_XXXXXXXXXXXXXX
  • Température : sensor.temperature_XXXXXXXXXXXXXX
  • Humidité : sensor.humidity_XXXXXXXXXXXXXX
  • Switch : binary_sensor.switch_XXXXXXXXXXXXXX

Pour créer un groupe, il suffit de lui donner un étiquette et de définir son nom (name) ainsi que son contenu (entities). Par exemple, ce groupe affiche les mesures de température

temperature:
  name: Température et humidité
  entities:
    - sensor.temperature_158d000156cbfa
    - sensor.humidity_158d000156cbfa

Celui-ci l’état du détecteur de mouvement

motion_sensors:
  name: Mouvements
  entities:
    - binary_sensor.motion_sensor_158d000159a218

On peut aussi grouper par localisation. Ici les appareils présents dans le bureau

desk:
  name: Bureau
  entities:
    - light.gateway_light_286c07891571
    - sensor.temperature_158d000156cbfa
    - sensor.humidity_158d000156cbfa
    - binary_sensor.switch_158d000155d2b7  #bouton connecté

Voilà, il ne reste plus qu’à créer les vues qui contiendront les groupes. Il est possible de remplacer la vue par défaut d’HASS (default_view). Les entities peuvent contenir des groupes ou directement des mesures/états.

default_view:
  name: Maison
  view: yes
  entities:
    - sun.sun
    - group.security
    - group.desk
Remarque. Il n’est pas possible d’afficher plusieurs fois le même éléments dans une vue. Par exemple afficher la température d’une pièce dans la barre des sondes et dans un groupe.

Voici le fichier de configuration complet qu’il vous suffit de coller

#######################################
#          Views - Vues               #
#######################################
default_view:
  name: Maison
  view: yes
  entities:
    - sun.sun
    - group.security
    - group.desk

sensor_view:
  name: Capteurs
  view: yes
  icon: mdi:gauge
  entities:
    - group.temperature
    - group.motion_sensors
    - group.doors_windows
    - group.lights

#######################################
#    grouped by type of sensor        #
#######################################
temperature:
  name: Température et humidité
  entities:
    - sensor.temperature_158d000156cbfa
    - sensor.humidity_158d000156cbfa

motion_sensors:
  name: Mouvements
  entities:
    - binary_sensor.motion_sensor_158d000159a218

switchs:
  name: Commandes
  entities:
    - binary_sensor.switch_158d000155d2b7

lights:
  name: Eclairages à Led
  entities:
    - light.gateway_light_286c07891571
    #Xiaomi Gateway Led Ring

doors_windows:
  name: Portes et fenêtres
  entities:
    - binary_sensor.door_window_sensor_158d000149a352

#######################################
#   grouped by localization           #
#######################################
security:
  name: Sécurité
  entities:
    - binary_sensor.motion_sensor_158d000159a218
    - binary_sensor.door_window_sensor_158d000149a352

desk:
  name: Bureau
  entities:
    - light.gateway_light_286c07891571
    - sensor.temperature_158d000156cbfa
    - sensor.humidity_158d000156cbfa
    - binary_sensor.switch_158d000155d2b7  #bouton connecté

Modifier l’affichage des appareils (customize.yaml)

Si vous redémarrez HASS pour prendre en compte la configuration, vous allez voir que HASS utilise le nom des variables pour créer les libellés des capteurs/actionneurs. On va arranger tout ça. Créez un nouveau fichier appelé customize.yaml et collez le contenu de ce bloc

#################################################################################################################
# Xiaomi sensors customization                                                                                  #
# General settings : https://home-assistant.io/docs/configuration/customizing-devices/                          #
# device_class : https://home-assistant.io/components/binary_sensor/                                            #
# After modification, go to developer tools (phone icon) and choose homeassistant/reload_core_config then apply #
# projetsdiy.fr | diyprojects.io | May 2017                                                                     #
#################################################################################################################
sensor.temperature_158d000156cbfa:
  friendly_name: Température bureau
sensor.humidity_158d000156cbfa:
  friendly_name: Humidité bureau
  icon: mdi:water-percent
binary_sensor.motion_sensor_158d000159a218:
  friendly_name: Présence bureau
binary_sensor.door_window_sensor_158d000149a352:
  friendly_name: Porte d'entrée
  device_class: opening
binary_sensor.switch_158d000155d2b7:
  friendly_name: Bouton connecté
light.gateway_light_286c07891571:
  friendly_name: Anneau lumineux Gateway Xiaomi

Pour chaque appareil, on peut ajouter plusieurs paramètres (documentation) :

  • friendly_name : le libellé de l’appareil qui sera affiché à l’écran
  • hidden : masque ou affiche l’élément
  • entity_picture : chemin vers une image à utiliser à la place de l’icône
  • icon : icône à utiliser. Il faut mettre un préfixe. Par exemple mdi:home. Compatible avec les icônes Material Design de Google
  • device_class : permet de changer le libellé en fonction du type de capteur. La liste complète ici et
  • assumed_state : lorsqu’un capteur renvoi un état connu. Par exemple un interrupteur allumé/fermé

Actualisation de la configuration

Tout est prêt. Pour prendre en compte la configuration, il est possible de re-démarrer HASS depuis le Terminal

sudo systemctl restart home-assistant

Le premier démarrage va prendre un peu de temps car ASS va récupérer et installer les dépendances nécessaires (pycrypto notamment).

C’est aussi possible depuis l’interface en allant à l’onglet Configuration. Vous pouvez recharger la configuration (reload core ou reload groups) ou relancer le serveur (restart).

hass home assistant reload configuration restart server

En cas d’erreur, n’hésitez pas à redémarrer le serveur avant de vous lancer dans les recherches.

Voilà, tout est parfaitement fonctionnel. Ici l’écran d’accueil.

home assistant xiaomi smart home mijia aqara default view

Et l’écran (la vue) des capteurs

home assistant xiaomi smart home mijia aqara sensor view

Vous pouvez même allumer et changer la couleur et l’intensité de l’anneau lumineux de la Gateway Xiaomi.

 home assistant xiaomi smart home mijia aqara led ring gateway

La configuration de Home Assistant peut paraître compliquée. C’est vrai que par rapport aux autres serveurs (Domotoicz, Jeedom…) que l’on peut entièrement (ou presque) configurer à la souris, c’est un peu déroutant. HASS est entièrement gratuit (y compris les plugins). Le kit Xiaomi est très facile à intégrer dans Home Assistant. Disponible en ligne en direct de Chine, il est souvent en promo chez Gearbest ou Aliexpress (à partir de 62€ sans prise commandée). Dans le prochain tutoriel, nous verrons comment gérer les événements.

Print Friendly, PDF & Email

Inscrivez-vous à la newsletter hebdomadaire

Aucun spam et aucun autre usage ne sera fait de votre email. Vous pouvez vous désinscrire à tout moment.

Comparateur de prix

Bons plans

Les offres suivantes se terminent bientôt. Utilisez le coupon indiqué pour profiter du prix promo

Tags:

Domotique et objets connectés à faire soi-même