[RTEX] Xiaomi Gateway - mode Dev/LAN et port udp 9898

(Migration depuis l’ancien forum, posts du 23 nov. 2018 et 09 avr. 2019.)

Bonjour à tous, c’est akenad :slight_smile: ,

Aujourd’hui je vais vous présenter un retour d’expérience sur l’intégration dans Jeedom de la Xiaomi Gateway, à l’aide des plugins Xiaomi Home et Homebridge, et interrogation de l’état de capteurs Mi et Aqara par HomePod.

Les équipements et logiciels utilisés sont les suivants :

  • Xiaomi Gateway, modèle DGNWG02LM, (model=lumi.gateway.v3) passerelle Wi-Fi/ZigBee (non compatible Homekit), firmware 1.4.1_X (compatible API et MiJia). Nous l’appellerons juste « GW » dans la suite.
    /!\ ATTENTION : il ne s’agit pas de l’Aqara Hub Gateway HOMEKIT, modèle ZHWG11LM, ni du modèle DGNWG03LM pour Taïwan, ni du modèle DGNWG05LM avec prise Europe.

  • JeedomSmart Stretch, Jeedom 3.2.11

  • plugin Homebridge v1.4.5 23/11/2018, Homebridge v0.4.45

  • HomePod 12.1, iPhone IOS 12.1 et App Mi Home 4.9.2 (novembre 2018, cette version permet d’activer le mode développeur de la GW avec le paramètre de langue en Français).

  • Aqara Door and Window Sensor (capteur d’ouverture de porte), modèle MCCGQ11LM. forme rectangulaire avec « Aqara » inscrit sur la tranche.

  • Mi Temperature and Humidity Sensor (capteur de température et d’hygrométrie), modèle WSDCGQ01LM, forme ronde.

J’ai procédé en 3 étapes :

  • Installation du plugin
  • initialisation de la Xiaomi Gateway et ajouts d’appareils
  • intégration HomeBridge et HomePod

1) Installation du plugin
Classique.

2) initialisation de la Xiaomi Gateway
/!\ ATTENTION : Pour que le plugin détecte automatiquement la GW, il est indispensable dans l’App Mi Home d’activer celle-ci en mode développeur (ce qui permet d’obtenir une clé API à renseigner dans le plugin, permettant à celui-ci de communiquer avec la GW via API).

Pour ce faire :

-brancher la GW sur une prise électrique. Au bout de quelques secondes on entend une voix chinoise et la GW clignote jaune.
-Installer l’App Mi Home sur l’iPhone.
-créer un compte Mi Home.
-se connecter avec le compte Mi Home.

sur la page d’accueil,
-sélectionner « Profil » → Paramètres → Langues → Français
-sélectionner « Profil » → Paramètres → Paramètres régionaux → Chine continentale
-sélectionner « + » pour « ajouter un appareil » → Onglet Sécurité du foyer → Point daccès → Mi Control Hub

puis cocher « Voyant jaune clignotant » et bouton « suivant ».
-Sélectionner le réseau Wi-Fi existant et saisir le mot de passe Wi-Fi associé puis bouton « suivant ». (cette information va être envoyée à la GW lors de son initialisation pour qu’elle puisse se connecter ensuite au réseau Wi-Fi existant) .
-basculer l’iPhone dans Réglages Wi-Fi, choisir le réseau « lumi-gateway-xxx » puis retourner dans l’application Mi Home. (cela établit une communication wi-fi directe entre le iPhone et la GW pour effectuer son initialisation).
-sélectionner l’emplacement de l’appareil (exemple : Living room) et définir le nom de l’appareil (Défaut : Mi Control Hub).
-la GW est alors initialisé (l’anneau de la GW est éteint, ne clignote plus jaune). l’iPhone peut maintenant communiquer avec la GW via le réseau Wi-Fi existant.

-la GW devient visible sur la page d’accueil.
-cliquer sur la GW pour la sélectionner, c’est-à-dire « Mi Control Hub » (si le nom par défaut de l’appareil a été conservé)
Le message suivant s’affiche :
« La version actuelle du micrologiciel est trop ancienne. Certaines fonctionnalités peuvent ne pas … »
cliquer sur le bouton « Mettre à jour »
(au jour d’écriture de ce post, le firmware de la GW passe de v1.4.1_150.0143 à v1.4.1_159.0143).

-cliquer sur les 3 points en haut à droite : “…”
(l’option « Vérifier les mises à jour du micrologiciel » permet d’avoir la version du firmware de la GW)
-cliquer sur « About »

/!\ ATTENTION : c’est maintenant le moment le plus délicat. Il s’agit d’activer le mode développeur.
(A ce stade nmap -sU -p 9898 adrip renvoie 9898/udp closed)

Sur cette page « About », sous Android il s’affiche un numéro de version sur lequel on clique mais ce numéro de version n’est pas visible sur iPhone. Avec un iPhone il faut cliquer en aveugle dans la zone blanche, 5 fois de suite rapidement et une nouvelle page apparaît avec plusieurs lignes écrites en chinois.
Cliquer sur la ligne comportant 7 idéogrammes et activer le bouton switch pour qu’il passe au vert, cliquer le bouton « OK ».
Cela active le mode développeur.
(A ce stade nmap -sU -p 9898 adrip renvoie 9898/udp open)
La clé API est indiquée (16 caractères Hexadécimales), la noter.

(La ligne comportant 4 idéogrammes permet de visualiser les différents model des appareils, en particulier pour la GW : model=lumi.gateway.v3 EDIT 25/01/2019 : et profitez en aussi pour noter la valeur de token={32 caractères Hexadécimales} nécessaire pour la mise en oeuvre du plugin XiaomiTalk pour faire parler votre Xiaomi Gateway !)

Après l’ouverture du port udp 9898, le plugin à détecté automatiquement la GW en tant qu’équipement.
Le champ « Password » de l’équipement GW à renseigner correspond à la clé API de la GW notée précédemment.
Le plugin crée automatiquement les commandes.
Le pilotage de la GW peut se faire ensuite uniquement avec le plugin.
Configurer l’IP de la GW en DHCP statique.

Ajout d’appareils :

Pour ajouter les appareils ZigBee compatible avec la GW, il y a 2 méthodes, le bouton sur la GW ou l’App Mi Home (et les équipements correspondants s’ajoutent automatiquement dans le plugin).

Pour ajouter un nouveau device sur la GW sans passer par l’App Mi Home cliquer 3 fois sur le bouton de la GW, puis appuyer sur le bouton du device quelques secondes jusqu’à ce que la led bleue clignote au moins 3 fois.

Pour ajouter un nouveau device sur la GW avec l’App Mi Home, sur la page d’accueil,
-sélectionner la GW, → Device → la GW → Add child device
-choisir le type de device dans la liste (Aqara Door and Window Sensor, Mi Temperature and Humidity Sensor …). puis appuyer sur le bouton du device quelques secondes jusqu’à ce que la led bleue clignote au moins 3 fois.

Dans le plugin donner des noms aux équipements et les affecter à des pièces (Objet parent) :
« Salle de bain » , « Sonde »
« Entrée », « Porte »

3) intégration HomeBridge et HomePod

Dans le Plugin Homebridge les objets et les types génériques des capteurs sont générés automatiquement dans les pièces correspondantes :

« Entrée », « Porte »
Nom de la commande—Type Générique
Ouverture -------------------------Info / Porte
Absence de fermeture-------------------------Aucun
Batterie--------------------Info / Batterie
Pile voltage------------------All / Ne pas tenir compte de cette commande
Rafraichir-------------------------All / Ne pas tenir compte de cette commande

« Salle de bain » , « Sonde »
Nom de la commande—Type Générique
Température -------------------------Info / Température
Humidité------------------------- Info / Humidité
Batterie--------------------Info / Batterie
Pile voltage------------------All / Ne pas tenir compte de cette commande
Rafraichir-------------------------All / Ne pas tenir compte de cette commande

Si ce n’est pas déjà le cas, cocher « Activer la pièce » et cocher l’objet pour l’Envoyer à Homebridge.
Arrêter et redémarrer le démon HomeBridge pour faire remonter les modifications dans l’App Maison.

Créer les mêmes pièces (si ce n’est pas déjà fait) dans l’App Maison sur le iPhone, « Entrée », « Salle de bain » et positionner respectivement les accessoires « Porte » et « Sonde » dedans.

Cela permet ainsi de dire au Homepod :

-« Dis SIRI quel est le taux d’humidité dans la salle de bain »
-« Dis SIRI quelle est la température dans la salle de bain »
-« Dis SIRI quelle est le niveau de la batterie de la sonde »

-« Dis SIRI quel est l’état de la porte » (→ ouvert, fermé)
-« Dis SIRI quelle est le niveau de la batterie de la porte »

Quelques documentations du développeur lunarok du plugin Xiaomi Home :

plugin xiaomi home
Xiaomi Gateway
Gamme Xiaomi Home

EDIT 09/04/2019 :
Procédure pour se connecter avec un PC Windows/Putty et un adaptateur USB-UART sur le port série console de la GW.

Je viens de recevoir et d’installer une 2ième Xiaomi Gateway avec mise à jour du micrologiciel avant d’activer le mode développeur.
Le plugin Xiaomi Home détecte automatiquement la GW.

Pour être plus précis, il s’agit toujours du modèle DGNWG02LM, et l’App Mi Home m’a proposé une première mise à jour du micrologiciel, que j’étais obligé de faire, qui l’a fait passer de v1.4.1_150.0143 à v1.4.1_167.0143.
j’ai ensuite activé le mode développeur qui a ouvert le port udp 9898,
Il m’a ensuite été proposé une 2ième mise à jour en v1.4.1_167.0158 que j’ai effectuée.

Compte tenu d’autres retours que j’ai pu lire sur le forum (problème de filtrage réseau et/ou d’activation du mode développeur),
pour le problème d’activation du mode développeur, j’ai décidé de faire des tests avec ma 1ère GW (aussi modèle DGNWG02LM) que j’avais installé en novembre 2018 et qui fonctionne bien depuis.

L’état de ma 1ère GW (qui n’a pas changé depuis novembre 2018) est le suivant :

  • GW firmware v1.4.1_159.0143
  • IOS App Mi Home v4.9.2 avec mode développeur activé (une seule fois et pas désactivé depuis)
  • le port udp 9898 de la GW est ouvert

Voici avec un peu plus de détails la procédure qui fonctionne :
-à l’arrière de la GW, enlever avec un petit tournevis plat les 3 petites rondelles blanches en caoutchouc qui cachent des vis (voir photo plus bas).
-pour dévisser utiliser un tournevis avec un embout spécial. Cet embout spécial peut être trouvé dans un grand magasin de bricolage français au sein d’une boîte métallique comportant une trentaine d’embouts spéciaux pour moins de 20 euros.

  • je conseille d’utiliser un adaptateur USB-UART avec chip Silicon Labs série CP210x.
    Celui que j’ai utilisé est sous la marque DSD TECH, modèle DS-USB-TTL01, avec chip CP2102.

  • j’ai soudé 3 petits fils sur la GW (voir photo plus bas).
    . le fil bleu est sur le GND de la GW et de l’adaptateur

  • le fil jaune est sur le TX de la GW et le RX de l’adaptateur

  • le fil vert est sur le RX de la GW et sera connecté sur le TX de l’adaptateur uniquement après la fin du boot de la GW.

  • connecter l’adaptateur au PC

  • si ce n’est pas déjà fais, installer le pilote pour l’adapteur USB-UART et configurer putty.
    La procédure détaillée est la même que celle déjà décrite ici : Odroid-C2 Armbian – Port série USB-UART - console système

  • brancher la GW sur secteur, durant le boot l’anneau de leds clignote bleu.
    -attendre la fin du boot, lancez putty et ouvrez une session sur le port COM précédemment configuré
    -connecter le fil vert (RX de la GW) sur le TX de l’adaptateur, appuyer sur la touche entrée, alors le caractère dièse « # » et éventuellement les sorties console de la GW s’affichent.

Pour mettre en évidence le problème évoqué sur le forum concernant les phénomènes constatés entre l’activation du mode développeur avec l’App Mi Home et l’ouverture effective ou non du port udp 9898 de la GW, voici quelques tests :

à l’état initial le port udp 9898 de la GW est ouvert (nmap -sU -p 9898 adrip renvoie 9898/udp open)

Dans la console de la GW, lancer la commande :
psm-get network.open_pf
on obtient :
network.open_pf = 3

La valeur 3 correspond au port 9898 ouvert.

Dans l’App Mi Home, désactiver le mode développeur.

Dans la console de la GW, lancer la commande :
psm-get network.open_pf
on obtient :
network.open_pf = 0

Dans nmap le port udp 9898 de la GW est maintenant fermé.
Dans la log du plugin en debug , la GW ne remonte plus dans le plugin.

Dans l’App Mi Home, réactiver le mode développeur.
Saisir la nouvelle clé API dans le champ password du plugin.

Dans la console de la GW, lancer la commande :
psm-get network.open_pf
on obtient :
network.open_pf = 2

Dans nmap le port udp 9898 de la GW est toujours fermé.

Dans la console de la GW, lancer la commande :
psm-set network.open_pf 3

Dans nmap le port udp 9898 de la GW est toujours fermé.
Dans la console de la GW, lancer la commande :
reboot

Dans nmap le port udp 9898 de la GW est maintenant ouvert
Dans la log du plugin en debug , la GW remonte à nouveau dans le plugin

Ensuite j’ai mis à jour IOS App Mi Home de v4.9.2 à v4.15.101 et le firmware de v1.4.1_159.0143 à v1.4.1_167.0158.
(x.0143 à x.0158 concerne le Zigbee).

Conclusion : j’ai désactivé le mode développeur sur l’App Mi Home sur une GW qui fonctionnait depuis 6 mois et lorsque j’ai réactivé le mode développeur cela n’a pas réouvert le port 9898 et j’ai été obligé de le faire au niveau de la console de la GW.
Manifestement en novembre 2018 l’activation du mode développeur avait eu pour conséquence un network.open_pf = 3 alors que cette fois ci c’est un network.open_pf = 2. Il y a un phénomène extérieur, une information provenant du cloud Xiaomi peut-être, qui provoque cette différence.
Je ne pense pas qu’il y ait à ce jour un problème matériel ou différentes versions de matériel en circulation de la Xiaomi Gateway modèle DGNWG02LM, au moins depuis réception de ma 1ère GW, c’est-à dire 6 mois.
Depuis 6 mois et Jusqu’à ce jour il semblerait que lorsque une GW sort de son emballage elle est initialement en v1.4.1_150.0143,
une première mise à jour est demandé, elle peut être réalisée et il faut faire l’activation du mode développeur juste après qui a pour effet d’ouvrir le port 9898. Par contre il suffit de désactiver une fois le mode développeur et lorsqu’on réactive le mode développeur cela n’ouvre plus le port 9898.

A noter par ailleurs que Wireshark permet de voir (lorsque ce n’est pas filtré) que la GW multicast toute les 10 secondes sur 224.0.0.50 port UDP 9898 un paquet heartbeat contenant ses paramètres (id, token, ip …). c’est ce qui doit probablement permettre au plugin Xiaomi Home de détecter automatiquement la GW.


Gateway---------USB-TTL

  1. P1
  2. RXD—vert—TXD
  3. GND—bleu—GND
  4. TXD—jaune—RXD

Voila j’espère que ce retour d’expérience sera utile aux membres Jeedom.

akenad :slight_smile:

Bonjour, Akenad et tous, merci pour ces infos constructives, j’ai appliqué sur la mienne reçue déjà en V1.4.1_176.0220 avec le port fermé, devenu ok avec la manip hard. :slightly_smiling_face: Ok jeedom. Un ami m’a demandé du coup de faire la sienne ( vu que je suis électronicien no pb ) elle est en v1.4.1_150.0143 donc d’origine.
Donc selon ce topic je pourrait faire la MAJ et ensuite activer le mode développeur par Soft. Mais je pourrait aussi activer directement la manip hard pour ouvrir le port en restant en en v1.4.1_150.0143. et faire la MAJ ensuite vu qu’il va la réclamer tout le temps de toute façon. Elle propose V1.4.1_176.0220. Quel serait le meilleur plan ?
Merci d’avis ayant 2 choix. Bonne journée ensoleillée en attendant :slightly_smiling_face: Bien cordialement

Bonjour,

Le mieux est de ne pas faire de mise à jour tant que l’on n’est pas obligé et de ne pas faire la manip hard si ce n’est pas nécessaire.

akenad :slight_smile:

Hello @akenad
Merci beaucoup pour ce tuto détaillé. J’en avais trouvé un du même genre dans le passé pour la 1ère gateway que j’avais reçue et qui refusait d’ouvrir son port, en anglais, sur la communauté OpenHab (avec un ground branché sur une vis extérieure). J’avais passé le lien sur le forum. Mais comme je suis très peu doué avec la soudure, que j’ai de gros doigts et des yeux en mauvais état, je n’avais réussi qu’à flinguer totalement la 1ère gateway reçue qui a fini à la déchetterie.
La seconde a fonctionné (sans soudures) plus d’un an jusqu’à ce que je sois contraint de la changer de réseau Wifi, et du coup, bien qu’ayant réussi péniblement après une 50aine d’essais à la réinclure, elle n’a jamais voulu réouvrir le port 9898 - comme décrit dans ton tuto - bien que j’ai utilisé un Mi Home d’il y a 2 ans.

Foutu pour foutu, je suis prêt a réessayer la soudure sur cette seconde gateway, mais je voudrais être totalement certain du branchement, car j’ai beau agrandir la photo au max, avec les croisements de fil et les ombres, je ne suis pas certain. Je ne vois nulle part d’indication des emplacements des GND, TX et RX sur la gateway. Donc…
Pourrais-tu me confirmer que :

  • Le fil vert (RX) est le 2e plot en haut (après l’indicateur P1, rangée de 5 plots ronds)
  • Le file bleu (GND) est le 3e plot en haut après le P1 (au milieu)
  • Le fil jaune (TX) est le 4e et avant dernier plot en haut

Ainsi si ça ne fonctionne pas, je saurai que ça vient de mes soudures pourries et pas de mes yeux fatigués.

Merci d’avance

Bonjour @phyllox,

Je te confirme.
Et fils croisés avec rxd et txd de l’usb-ttl

akenad :slight_smile:

Bonjour Akenad, j’ai effectué la modif hard sur 1 seconde gateway identique avec la même méthode, mais cela ne fonctionne pas sur celle-ci bien que identique à la première ( Même version hard DGNWG02LM et soft 1.4.1_176.0220 ) en faite l’écriture pf à 3 fonctionne ( ok avec la cde get pour le vérifier ) mais le port reste fermé ( par la cde nmap) l’écriture pf à 3 ne reste pas mémorisée :thinking: lors du reboot de la GW et interrogation consécutive, le pf revient à 1 comme initialement. J’ai effectué nbrs de fois la manip pourtant. cela a marché du premier coup sur la 1ere GW identique donc. Une idée du pourquoi du comment svp ?? Bien cordialement.

Bonjour,
Ce sujet m’interesse car le probleme ressemble un peu a celui de la lampe beside de xiaomi.
Depuis les derniers firmwares, xiaomi a décidé de supprimer le model local.
Sur un autre forum, j’ai trouvé le brochage de la console série.
Je me demandais s’il n’y aurait pas moyen de réactiver ce mode via des commandes dans la console.
Si certains auraient des infos, merci d’avance

Bonjour, oui j’avais aussi pensé à ça mais ce qui est bizarre est que les 2 GW sont identiques en Ref, Hard et Firmware fait la même manip et que ça marche sur 1 et pas sur l’autre !!! Bien cordialement

Bonsoir, autre question l’ouverture du port P9898 permet au plugin de voir la GW mais tjrs pas d 'accéder au mode développeur et donc tjrs pas au mdp qui ne peut donc être renseigné dans le plugin, c juste génant pour les configurations avancée du plugin ? il faudrait downgrader le firmware GW pour accès au mdp ? et remettre à jour ensuite ? Merci d’avis. bien cordialement

Salut Arnican02.
Est-ce que tu utilises une ancienne version de l’apk de Xiaomi Home ?
J’ai pris la 5.81 et ca me permet de relancer le mode developpeur.
Bon courage !
Mi Home update version history for Android - APK Download1slgfr2_ga*YW1wLVVLNVVFY1l4OWhJWmlNVzNTZTg3OEtVdllHYXhGRmo0dDFpcEZSbWRWUmh1NXFqaG1sRGhxZ2NFSjJPTzF6SFU.

1 « J'aime »

Salut Dejeante, oui j’avais vu que si V <6 ça pouvait, j’avais tenté mais pas vu pour autant le mode développeur, je vais re-tenter avec ta version 5.81.après le plugin marche quand même avec version actuelle. on ne peut pas renseigner le mdp dans le plugin bien sûr, qu’apporterait de plus de pouvoir le faire sinon ?
Bien cordialement.

Hello, j’ai installé la V5.8.2 sur un second tél portable et sur une seconde Gateway et j’ai accès au mode developpeur sur celle-ci, elle c bien rajoutée au plugin Xiaomi-home et j’ai donc pu renseigner le mdp dedans, cependant qu’apporte de plus cela ? sur ma gateway d’origine sans accès au mode développeur et mdp non renseigné puisque version soft actuelle, ça marche aussi correctement sans.
Est-ce uniquement pour la gestion de HA que je n’utilise pas encore ?
Merci d’infos sur ce point.
Cdlt

1 « J'aime »