Bonjour à tous,
Suite à une discussion précédante, je vous propose ce tutoriel afin de créer une antenne Bluetooth à moindre frais avec un ESP32 et l’intégrer dans Jeedom avec jMQTT.
Il n’y a que des avantages à utiliser un ESP32 pour récupérer les informations en provenance de Beacon ou devices Bluetooth : c’est très fiable, plutôt simple, ça ne consomme presque rien, ne prends pas de place et ne coute presque rien, si on compare avec une antenne sur un Raspberry PI.
Nous chargerons dans l’ESP l’excellent « Open MQTT Gateway » (qui sera maintenant abrégé OMG pour 2 raisons évidentes que je vous laisse trouver par vous même).
OMG supporte un nombre important d’équipements, l’équipe de devs est très réactive et le développeur principal est un français
Si vous avez des lacunes concernant le MQTT en règle générale allez voir ici ou là, et si ce n’est toujours pas clair, dites le, je ferais un tuto de remise à niveau sur MQTT.
Alors, avant de commencer, voici le schéma de principe de ce que je vais vous expliquer dans ce tuto :
Le but ultime étant de configurer un équipement dans jMQTT (à droite), pour qu’il reçoive les informations de temperature et d’humidité, en provenance d’un capteur Xiaomi Mijia (à gauche).
Pour arriver à ce résultat, nous allons :
- Installer jMQTT et un Broker local via jMQTT dans Jeedom,
- Flasher un ESP32 avec OMG,
- Configurer l’ESP32 (connection à votre réseau WIFI, au Broker MQTT et le topic de base),
- Créer un équipement dans jMQTT pour l’ES32 et le configurer,
- Créer un équipement dans jMQTT pour le capteur et le configurer,
- Enjoy la life (et les autres possibilités de OMG en BT sur ESP32).
On a besoin de quoi ?
- Un ordinateur avec un port USB, un navigateur et Internet,
- Eventuellement un telephone avec du wifi (pour faire la config initiale de l’ESP),
- Le nom du réseau (et son mot de passe) du wifi de votre routeur,
- Un Jeedom qui tourne (vous ne seriez pas probablement là sinon),
- Et évidement au moins 1 ESP32. Voici des liens Amazon (lot de 1/3/5) ou Aliexpress (lot de 5). Je vous recommande d’en prendre au moins 2 pour avoir au moins un ESP de test/spare en plus de l’ESP de prod, c’est pas pour les ~10€ que ça coute.
Attention :- Il FAUT un ESP32, pas un ESP8266, ces derniers ils ne font pas de Bluetooth. On reconnait un ESP32 (par ce que c’est marqué dessus) et au nombre important de broches :
- Certaines copies d’ESP32 circulent avec des régulateurs de sous-dimensionnés (4B2K) :
Les liens ci-dessus tiennent compte de vos retours (et je vous en remercie).
- Il FAUT un ESP32, pas un ESP8266, ces derniers ils ne font pas de Bluetooth. On reconnait un ESP32 (par ce que c’est marqué dessus) et au nombre important de broches :
Avec ça on a tout, il n’y a plus qu’à faire la config ! Comptez maintenant entre 30 minutes et 3 heures de votre temps, selon ce que vous avez déjà installé et vos connaissances.
Prenez le temps de lire un première fois toute le tuto avant de vous lancer dedans, ça vous fera probablement gagner du temps et vous évitera des problèmes.
1 Installation de jMQTT
→ Passez directement à l’étape 3 si vous utilisez déjà jMQTT et que vous connaissez l’adresse et le port de votre Broker.
- Rendez-vous dans le menu « Plugins> Gestion des plugins » de Jeedom,
- Allez sur le Market,
- Recherchez le plugin « jMQTT » par domochip,
- Installez la version stable,
- Rendez-vous sur la page de configuration du plugin pour la suite.
2 Configuration du Broker dans jMQTT
- Sur la page de configuration du plugin, activez le plugin,
→ Si vous utilisez déjà le plugin « MQTT » OU le plugin « MQTT Manager » OU que vous avez déjà un Broker dont vous connaissez, Alors décochez la case « Installer Mosquitto localement ».
- Installez immédiatement les dépendances, si elle ne se sont pas déjà lancées,
- Attendez quelles sont installées et que le Démon soit OK,
→ Si vous avez coché « Installer Mosquitto localement », Alors vous pouvez passer à l’étape 3, jMQTT a créé automagiquement un Broker appelé « local » pour vous.
- Passez dans la page principale de jMQTT via « Plugin> Protocole domotique> jMQTT »,
- Cliquez sur « Ajouter un broker »,
- Saisissez « local » comme nom pour le Broker (ou le nom que vous voulez),
- Activez l’équipement et passez dans l’onglet « Broker » sans sauvegarder,
- Renseignez « jMQTT » comme « Identifiant/ClientId » pour ne pas interférer avec les autres topics,
→ Si votre Broker n’est pas local, Alors renseignez « IP/Hostname du Broker » et « Port du Broker »,
- Sauvegardez l’équipement, la configuration initiale de jMQTT est terminée.
3 Installation d’OMG sur l’ESP
Enfin des choses intéressantes !
- Connectez l’ESP en USB à votre ordinateur,
- Allez sur la page Upload from the web de OpenMQTTGateway,
- Choisissez « esp32dev-ble » dans le liste, laissez la case cochée et cliquez sur Install,
→ Si aucun « CP210… » n’apparait dans le popup qui s’est ouvert, Alors téléchargez le driver CP210x pour Windows, installez le, déconnectez l’ESP de l’ordinateur et recommencez au début de l’étape 3.
- Sélectionnez le port série de l’ESP (« USB to UART Bridge Controller ») et cliquez sur Connexion,
- L’installation passe par plusieurs étapes (Initializing, Erasing device, Writing progress…) :
- Le message « All done! » est le signe que tout s’est bien passé.
→ Si vous voyez bien votre ESP avec votre téléphone dans les 3 mins, Alors passez à l’étape 4.
-
Si vous rencontrez des erreurs lors de la détection de l’ESP par le PC :
Essayez de redémarrer le PC, de changer de port USB, de câble ou de PC. -
Si vous rencontrez des problèmes lors de l’effacement ou de l’envoi d’OMG dans l’ESP :
Essayez la seconde méthode d’installation d’OMG, avec le Flash Download Tools officiel ou la version 3.8.5 dans ce zip dans le repdist/Espressif_flash_download_tool_v3.8.5/
.
4 Configuration de l’ESP32
Les explications sur la page Wifi and MQTT configuration sont assez claires, mais voici la suite :
- Connectez vous avec votre téléphone au réseau « OpenMQTTGateway_ESP32_BLE » avec le mot de passe « your_password » ou utilisez ce QR-code :
- Ouvrez un navigateur sur « http://192.168.4.1 » :
- Cliquez sur « Configure Wifi », sélectionnez le réseau sur lequel doit se connecter l’ESP et entrez le mot de passe de ce réseau Wifi :
- Mettez l’IP de votre Broker dans le champ « mqtt server » et le port dans « mqtt port » :
→ Si vous avez coché « Installer Mosquitto localement » dans jMQTT OU que vous utilisez déjà le plugin « MQTT » OU le plugin « MQTT Manager », Alors l’IP du Broker est celle de Jeedom et le port 1883 (à moins que vous ne les ayez modifié, dans ce cas, vous devriez les connaitre).
- Ne mettez rien dans « mqtt user », « mqtt pass », « mqtt broker cert » et ne cochez pas « mqtt secure », à moins que vous sachiez ce que vous ne faites,
- Je vous recommande de mettre
bt/
dans le champ « mqtt base topic » et un nom explicite dans « gateway name » (iciOMG_tuto
mais ça pourrait êtreEntree
,Atelier
,Sejour
…), afin de facilement identifier les messages en Bluetooth remontés par cet ESP dans jMQTT plus tard.
Dans le cas de ce tuto, nous retrouverons donc les messages de cet ESP dansbt/OMG_tuto/
, - Sauvegardez en cliquant sur « Save » et si tout se passe bien, le réseau Wifi « OpenMQTTGateway_ESP32_BLE » disparait et le téléphone se déconnecte de l’ESP.
5 Creation de l’équipement correspondant à l’ESP dans jMQTT
Cette étape à pour but de créer un équipement dans jMQTT représentant l’ESP lui-même, pas encore les équipements qu’il verra en Bluetooth. Ce n’est pas à nécessaire, mais c’est une bonne pratique.
- Allez sur la page du plugin jMQTT via « Plugin> Protocole domotique> jMQTT »,
- Cliquez sur « Ajouter un équipement » sur le Broker créé à l’étape 2 (ou existant) :
- Donnez-lui comme nom « gateway name » configurée à l’étape 4 (pour moi
OMG_tuto
), - Dans « Inscrit au Topic », mettez le topic de base de l’EST, suivi de la « gateway name », suivi de slash dièse (pour moi
bt/OMG_tuto/#
).#
agit comme un joker, cela permettra de recevoir tous les messages commençant parbt/OMG_tuto/
, - Cochez la case « Ajout automatique des commandes » cochée et les autres valeurs par défaut,
- Activez l’équipement et sauvegardez :
- Redémarrez l’ESP, rapidement des commandes doivent commencer à apparaitre :
- Laissez tournez 5 minutes, allez fumer un café, vous l’avez bien mérité,
- Décochez la case « Ajout automatique des commandes » et sauvegardez,
- Allez dans l’onglet Commandes, un certain nombre de commandes info ont du apparaitre :
Création d’une commande permettant de savoir si l’ESP est en vie :
- Celle qui nous intéresse particulièrement est « LWT », passez la en commande info binaire, activez « Historisez », désactivez « Afficher » et sauvegardez :
- Dans les propriétés avancées de la commande, onglet Configuration, définissez la « Formule de calcul »
#value# == "online"
, sauvegardez :
- Débranchez électriquement l’ESP, la commande passe à
0
au bout d’une dizaine de secondes.
Bravo vous avez une commande qui permets de savoir si votre ESP est en vie !
Création de commandes info « uptime », « freemem », « freestack » et « rssi » :
- Parmi les commandes découvertes, il doit aussi y en avoir « SYStoMQTT » :
- Passez en mode JSON, il y a différentes sous-commandes intéressantes :
Si vous le souhaitez, vous pouvez créer « uptime », « freemem », « freestack » et « rssi ».
Création d’une commandes action pour redémarrer l’ESP :
- OMG dispose d’un certain nombre de commandes executables directement en MQTT.
- Créez une commandes action pour redémarrer l’ESP :
(topic :bt/OMG_tuto/commands/MQTTtoSYS/config
; payload :{"cmd":"restart"}
) - Appuyez sur le bouton « Tester » de la commande,
- Constatez au bout de quelques instants que la commande « uptime » est repartie à
0
.
6 Création de l’équipement pour le capteur « Xiaomi Mi Jia »
« Ah, enfin la partie intéressante ? »
« Ce n’est pas la destination qui compte, mais le chemin ! »
Création dans jMQTT d’un équipement Bluetooth inconnu ou non-identifié :
- Créez un nouvel équipement (pas un Broker) dans jMQTT sur le Boker « local »,
- Appelez-le sobrement « Trash »,
- Inscrivez-le au Topic correspondant pour vous à
bt/OMG_tuto/BTtoMQTT/#
(oui/#
à la fin), - Cochez « Ajout automatique des commandes », « Activer », « Visible », et sauvegardez,
- De nombreux équipement sont détectés et à ajoutés cet équipement :
- On voit que les topics finissent toujours par l’adresse MAC de l’équipmeent,
- Une fois que vous avez identifié l’équipement qui vous intéresse, 2 options s’offrent à vous :
- Désactiver l’inclusion automatique, supprimer toutes les commandes inutiles ; ou
- Supprimer cet équipement et en créer un nouveau à coté.
- Voyons cette seconde méthode (partons de rien, juste la MAC ou le topic).
Création dans jMQTT d’un équipement Bluetooth connu ou identifié :
- Identifiez dans la liste les adresses MAC des équipements qui vous intéressent, si vous ne les connaissez pas (si vous avez le plugin BLEA, elle sont normalement dans la page Santé),
- Vous avez peut-être aperçu ceci dans les captures précédentes :
C’est bien ce que vous pensez que c’est ! - Créez un nouvel équipement (pas un Broker) dans jMQTT sur le Boker « local »,
- Donnez lui par exemple le nom « Xiaomi Mi Jia »,
- Inscrivez le au Topic correspondant pour vous à
bt/OMG_tuto/BTtoMQTT/582D3431FE5F
(attention, pas de/#
à la fin), avec582D3431FE5F
étant la MAC de votre équipement Bluetooth, - Laissez « Ajout automatique des commandes » désactivé,
- Cochez Activer et Visible, mais pas besoin de sauvegarder pour le moment,
- Dans l’onglet Commandes, créez une commande info « tmp » de type autre sur le topic
bt/OMG_tuto/BTtoMQTT/582D3431FE5F
et sauvegardez:
- Au bout de quelques minutes, une valeur arrive dans la commande,
- Passez alors en vue JSON et créez les commandes dont il y a besoin :
- Supprimez « tmp » qui n’est plus utile et sauvegardez :
- Ne reste plus qu’à faire la partie visuelle, car c’est un peu moche :
Mais ce sera pour une seconde partie.
Bad