Communication MQTT entre NodeMCU et Raspberry Pi 3 B+
Utilisation de MQTT, NodeMCU, DHT22, RaspberryPi et IoT MQTT Panel pour surveiller la température et l'humidité.
Utilisation d'un Raspberry Pi 3 B+ comme courtier pour plusieurs NodeMCU avec des capteurs DHT-22 mesurant la température et l'humidité et surveillant sur l'application IoT MQTT Panel. J'ai rendu l'algorithme pour NodeMCU et Raspberry évolutif. Modifiez simplement les sujets publiés et souscrits et ajoutez l'application IoT MQTT Panel pour avoir toutes les données à portée de main à tout moment.
J'ai cherché beaucoup d'informations sur Internet car je n'ai aucune connaissance de framboise, python et MQTT. J'ai donc résumé tout ce que j'ai appris et j'ai crédité ces sites Web.
Si votre connexion Internet est perdue, vos capteurs continueront d'envoyer des données à votre courtier. Cela signifie que vous pouvez enregistrer vos données !!! (bien sûr, vous devez faire de la programmation)
Veuillez me suivre pour toute mise à jour. Bientôt, je posterai une vidéo de tout en cours d'exécution!
1. Relier les choses :
À quoi ressemblera votre réseau :
2. Programmer des choses :
Vous devez d'abord vous assurer que toutes les bibliothèques sont installées sur votre IDE Arduino et sur votre Raspberry Pi 3B+.
2.1 Arduino
Installez les bibliothèques sur votre IDE Arduino.
- MQTT – https://github.com/knolleary/pubsubclient/releases/tag/v2.7
- Bibliothèque de capteurs DHT : https://github.com/adafruit/DHT-sensor-library
- Adafruit Unified Sensor Lib : https://github.com/adafruit/Adafruit_Sensor
- Esp8266 – https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266WiFi
2.2 Raspberry Pi 3 b+
Installez les bibliothèques sur votre IDE Python.
- time – Bibliothèque native sur Python
- Paho MQTT - tapez "pip install paho-mqtt" sur votre terminal LX pour installer la bibliothèque MQTT. En cas de doute, ce site est IMPRESSIONNANT !! http://www.steves-internet-guide.com/mqtt/
2.3 Codes de téléchargement
Téléchargez les codes respectivement sur votre NodeMCU et votre Raspberry.
2.4 Explication du code – ARDUINO IDE
Ce sont les bibliothèques mentionnées avant d'être installées sur votre IDE Arduino.
#include // Bibliothèque Esp8266/NodeMCU#include // Bibliothèque MQTT#include "DHT.h" // Capteur DHT
Variables déclarées pour être utilisées dans le code :
const char* mqtt_server ="Broker_IP_Address" ; // Adresse IP du serveur MQTT
mqtt_server :pour obtenir l'adresse IP sur Raspberry pi ouvrez un écran de terminal et tapez :
[email protected] :~ $ ifconfigwlan0:flags=4163 mtu 1500 inet 192.168.1.200 netmask 255.255.255.0 diffusion 192.168.1.255
Dans cet exemple, l'adresse IP serait 192.168.1.200
const char* clientID ="room1" ; // L'identifiant client identifie le périphérique NodeMCU.
ID client :Tout nom ou numéro pour identifier le NodeMCU que vous utilisez. Dans ce cas, il sera situé à room1. Elle s'appelle donc room1.
const char* topicT ="/room1/temperature" ; // Topic temperatureconst char* topicH ="/room1/humidity"; // Thème humidité
sujetT :Sujet pour publier la température. Dans cet exemple pour la température de la pièce 1, le sujet sera "/pièce1/température".
sujetH :Sujet à publier l'humidité. Dans cet exemple pour l'humidité de la pièce1, le sujet sera "/pièce1/humidité".
const char* willTopic ="/room1/status" ; // Sujet Statusconst char* willMessage ="0"; // 0 - Déconnecté
willSujet :Sujet pour publier le testament. Cela sera utilisé pour vérifier si le NodeMCU est connecté/allumé. S'il se déconnecte, il publiera le willMessage au sujet de la volonté. Dans ce cas "/room1/status"
willMessage :Message à publier sur willTopic si le NodeMCU est déconnecté/éteint.
int willQoS =0;boolean willRetain =true;
willQoS :Utilisé pour définir la qualité du service. Dans ce cas 0.
retiendra :Utilisé pour conserver le message en cas de déconnexion. Définir sur Vrai.
int counter =0 ; // Utilisé pour se reconnecter au serveur MQTT const char* swversion ="1.0"; // Version du logiciel
compteur :compteur utilisé lors de la routine de reconnexion.
swversion :utilisé pour contrôler la révision de mon logiciel.
WiFiClient wifiClient ; Client PubSubClient (mqtt_server, 1883, wifiClient ); // 1883 est le port d'écoute pour le Broker
client wifi :crée un client qui peut se connecter à une adresse IP Internet et à un port spécifiés, tels que définis dans client.connect().
client() :Client est la classe de base pour tous les appels basés sur le client WiFi. Il n'est pas appelé directement, mais invoqué chaque fois que vous utilisez une fonction qui en dépend.
DHT dhtA(2, DHT22); // Instance DHT nommée dhtA, Pin sur NodeMCU D4 et type de capteur
DHT :crée une instance nommée dhtA et attribue la broche 2 du NodeMCU V3 (D4) du capteur DHT-22. Selon les schémas ci-dessous. Si vous souhaitez utiliser une autre broche, remplacez la valeur par la bonne broche. Avant de changer la broche utilisée, vérifiez le brochage ci-dessous pour attribuer la bonne broche.
- En utilisant la broche D2 -> GPIO4
- DHT dhtA(4, DHT22)
Si vous utilisez DHT-11, ce serait :
- En utilisant la broche D2 -> GPIO4
- DHT dhtA(4, DHT11)
REMARQUE : Si vous utilisez la même bibliothèque que moi. Si vous utilisez une bibliothèque différente, veuillez consulter la documentation de la bibliothèque pour savoir comment déclarer les broches et les capteurs utilisés.
configuration vide() :Ici, nous initialisons les choses.
void setup() {Serial.begin(9600); // Les fins de débogage vérifient si DHT et la connexion avec MQTT Broker fonctionnent.Serial.print(swversion); // Debug. Version du logicieldhtA.begin(); // Démarrage du DHT-22
Connexion au courtier MQTT.
delay(2000) ; // Délai pour autoriser la première connexion avec MQTT Broker
retard(2000) :augmente le temps si la première connexion échoue. Dans ce cas, 2000 permet au NodeMCU de se connecter au Broker.
if (client.connect(clientID,"","", willTopic, willQoS, willRetain, willMessage, true)) { // Connexion à MQTT Broker
client.connect() :expliqué ci-dessous. Extrait de : https://pubsubclient.knolleary.net/api.html#connect5
______________________________________________________________
connexion booléenne (clientID, nom d'utilisateur, mot de passe, willTopic, willQoS, willRetain, willMessage, cleanSession)
Connecte le client avec un message Will, un nom d'utilisateur, un mot de passe et un indicateur de session de nettoyage spécifiés.
Remarque :même si la cleanSession
est défini sur false
0 le client ne pas réessayez a échoué qos 1 publie. Ce drapeau n'est utile que pour maintenir les abonnements sur le courtier.
Paramètres
- clientID :l'identifiant client à utiliser lors de la connexion au serveur.
- username :le nom d'utilisateur à utiliser. Si NULL, aucun nom d'utilisateur ou mot de passe n'est utilisé (const char[])
- mot de passe :le mot de passe à utiliser. Si NULL, aucun mot de passe n'est utilisé (const char[])
- willTopic :le sujet à utiliser par le message de testament (const char[])
- willQoS :la qualité de service à utiliser par le message will (int :0,1 ou 2)
- willRetain :si le testament doit être publié avec le drapeau de rétention (int :0 ou 1)
- willMessage :la charge utile du message de volonté (const char[])
- cleanSession :s'il faut ou non connecter une session de nettoyage (booléen)
Retours
- false – la connexion a échoué.
- vrai - la connexion a réussi.
Source :Communication MQTT entre NodeMCU et Raspberry Pi 3 B+
Processus de fabrication
- Capteur de température Python et Raspberry Pi
- Capteur de température et de luminosité Raspberry Pi
- Contrôle du capteur et de l'actionneur Raspberry Pi
- NEW RASPBERRY PI 3 MODEL B + CARACTÉRISTIQUES ET ACHAT
- Créer des robots avec Raspberry Pi et Python
- Différence entre la galvanoplastie et l'anodisation
- Différence entre les métaux non ferreux et ferreux
- Différence entre le brasage et le soudage
- Différence entre forage, alésage et alésage