Ceci est une ancienne révision du document !
Table des matières
Réseau MESH avec des ESP et MQtt
L'objectif était de mettre en œuvre les informations contenues dans un article paru dans HACKABLE Magazine 27 dans le contexte de l'internet des objets.
La structure est la suivante :
Choix du matériel.
Pour ce faire j'ai opté pour l'utilisation de ce type de carte : ESP8266 ESP-01 Module de relais WiFi 2 canaux Module de relais 2 canaux pour contrôleur d'application de téléphone intelligent IOT disponible en chine .
Le programmateur utilisé est celui-ci :
CH340 USB à ESP8266 série ESP-01 ESP-01S ESP01 ESP01S sans fil Wifi développement Module de carte pour Arduino programmeur adaptateur
Une carte Raspberry-PI ancien modèle avec une carte WI-FI sur Port USB – Système Raspbian BUSTER.
La carte ESP + Relais
Présentation
La carte est vendue comme pilotable en WIFI depuis un téléphone via une application, mais ce n'est pas ceci qui nous intéresse ici. Cependant ajoutée, aux limitations d'E/S de l'ESP 01 présent la structure de la carte est moins commune. Nota: A ce jour je n'ai pas trouvé le schéma de cette carte, donc la rétro-ingénierie sera restreinte.
Pour l'utilisation de cette carte, il faut retenir ceci la programmation de l'ESP est classiquement possible avec l'environnement Arduino IDE. La commande des relais se fait par envoi d'une séquence de caractères via le port série.
Programmation des relais
Deux relais sont disponibles, les instructions de commandes sont donc
- Relais 1
- * Fermeture : A0 01 01 A2
- * Ouverture : A0 01 00 A1
- Relais 2
- * Fermeture : A0 02 01 A3
- * Ouverture : A0 02 00 A2
Ce qui au niveau du code engendre ceci dans le setup()
void setup() {
delay(5000); //INIT de la liaison série pour le controle des relais Serial.begin(115200, SERIAL_8N1, SERIAL_TX_ONLY);
et pour la commande des relais là ou vous souhaitez dans le code, ici la fermeture du relais 1 :
Serial.write(0xA0); Serial.write(0x01); Serial.write(0x01); Serial.write(0xA2);
Le MESH
Le principe du mesh
D'après wikipédia : Réseau MESH
Le réseau maillé1 (ou maillage en réseau2) est une topologie de réseau (filaire et sans fil) où tous les hôtes sont connectés pair à pair sans hiérarchie centrale, formant ainsi une structure en forme de filet.
Les librairies pour ESP8266
Pour le MESH : PainlessMesh
La gestion de la communication MQTT : Lien externe|PubSubClient
Le gestionnaire de taches TaskScheduler
Premiers usages
Le MQtt
Rappels sur le protocole et les outils
APPLICATION
Configuration du RaspberryPI
Sur la PI installation de
- Mosquitto Corinne Dadat
- Node-REd Node-Red
- HostApd pour le wifi WIFI SPOT
Notes :
Par défaut je n'ai rien modifié dans la configuration de mosquitto.
Ajout du dashboard dans Node-Red.
La partie iptable n'est pas mise en oeuvre du fait d'un changement dans Buster iptables vers nftables
Autres ressources
Installation de node-red sur Raspbian ici
La passerelle MQTT <--> MESH
Réalisée avec un ESP8266. Doit se connecter au MESH et au Broker pour assurer la passerelle. Le code viendra ensuite.
Noeud du MESH
Réalisée avec un ESP8266 avec deux relais dans mon cas. Doit se connecter au MESH de manière automatique.
L'objet de la librairie PainlessMesh pour l'initialisation du MESH dans le setup(). Puis de la mise à jour du MESH dans le loop(), via mesh.update.
La fonction receivedCallback est appelé en cas de reception d'un message en provenance du MESH.
L'utilisation de l'ordonnanceur de tâches pour la gestion des opérations d'envoi des messages et de mise à jour des relais dans le setup() et son appel dans le loop() userScheduler.execute();
Le code viendra ensuite.