Esp8266 Contrôle Internet via le protocole MQTT


Bonjour à tous! Cet article décrira en détail et montrera comment configurer littéralement le contrôle à distance du module esp8266 à l'aide de l'application Android en utilisant le protocole MQTT en seulement 20 minutes de temps libre.

L'idée de la télécommande et de la surveillance a toujours excité l'esprit des passionnés d'électronique et de programmation. Après tout, la possibilité à tout moment de recevoir ou d'envoyer les données nécessaires, quel que soit leur emplacement, offre de nombreuses opportunités. Dans ses articles antérieurs ( article 1 et article 2) J'ai essayé d'envisager plusieurs options abordables et relativement simples pour implémenter le contrôle à distance des microcontrôleurs via Internet. Cependant, le temps et le monde entier ne s'arrêtent pas - les progrès continuent leur inexorable progression. Dans ce court laps de temps, le module esp8266 a acquis une grande popularité, qui, grâce à son prix bas et à son Wi-Fi intégré, est devenu l'un des principaux composants de la Smart Home.

À l'heure actuelle, MQTT est le protocole le plus avancé et le plus populaire pour le transfert de données entre des appareils individuels dans le cadre des systèmes Smart Home. Il présente un certain nombre d'avantages par rapport à d'autres protocoles:
- faible consommation de trafic;
- La connexion entre le client et le serveur est toujours ouverte;
- ne charge pas le canal Internet;
- aucun retard dans la transmission des données;
- système pratique d'abonnement aux sujets;
Tout cela permet de surveiller et de contrôler en temps réel. Cependant, MQTT nécessite son propre serveur, qui sert d'intermédiaire entre les clients du réseau. Il existe deux façons de créer votre propre serveur ou d'utiliser des services tiers.

Le système de contrôle décrit se compose de deux parties principales: le serveur MQTT (il en est généralement un) et les clients, ce qui peut être beaucoup. Dans notre cas, l'application Android et le module esp8266 lui-même feront office de clients.

L'algorithme de fonctionnement du système est le suivant. Les clients se connectent au serveur et immédiatement après avoir connecté chacun d'eux s'abonne à des sujets qui l'intéressent. Toutes les communications entre les clients passent par un serveur qui redirige les données vers d'autres clients en fonction de leurs abonnements.

Serveur MQTT.

Dans notre cas, nous utiliserons le service extrêmement pratique www.cloudmqtt.com qui a un plan tarifaire gratuit (Cute Cat) qui couvrira complètement les besoins de mise en œuvre de son propre petit système de «maison intelligente».

Passons en revue l'inscription sur le site et obtenons les données nécessaires pour accéder au serveur. Lors de la configuration des clients, vous devez utiliser un port standard (sans SSL et TLS).


Application Android.

Notre application servira de panneau de contrôle pour le microcontrôleur, et recevra et affichera également toutes les informations reçues de esp8266.

L'application s'appelle IoT MQTT Dashboard et est un client mqtt prêt à l'emploi avec un petit nombre de widgets très pratiques. Plus de détails sur l'utilisation de l'application peuvent être vus dans la vidéo.

Esp8266.

Le module est flashé dans l'environnement de programmation Arduino, mais je tiens à noter que le module a des problèmes avec le firmware dans les dernières versions d'Arduino, donc je recommande d'utiliser la version 1.6.4.
Par exemple, une LED (5 broches) et un capteur de température ds18b20 (2 broches) sont connectés à l'esp8266.
Puisqu'il est nécessaire de recevoir des données pour contrôler la LED, en particulier, après la connexion, il faut souscrire au sujet approprié «test / led» sinon toutes les données envoyées passeront par notre microcontrôleur.
Pour envoyer des données de température, un abonnement n'est pas nécessaire, mais lors de la transmission des valeurs de température, vous devez spécifier le sujet auquel ces données iront.

Voici un croquis avec des commentaires détaillés.

Sketch Esp8266_mqtt.ino
// 5
// ds18b20 2

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

const char *ssid = "AIRPORT"; //
const char *pass = "PASSWORD"; //

const char *mqtt_server = "server"; // MQTT
const int mqtt_port = 11140; // MQTT
const char *mqtt_user = "Login"; //
const char *mqtt_pass = "Pass"; //

#define BUFFER_SIZE 100

bool LedState = false;
int tm=300;
float temp=0;

//

void callback(const MQTT::Publish& pub)
{
Serial.print(pub.topic()); //
Serial.print(" => ");
Serial.print(pub.payload_string()); //

String payload = pub.payload_string();

if(String(pub.topic()) == "test/led") //
{
int stled = payload.toInt(); // integer
digitalWrite(5,stled); //
}
}

WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);

void setup() {

sensors.begin();
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
pinMode(5, OUTPUT);
}

void loop() {
// wi-fi
if (WiFi.status() != WL_CONNECTED) {
Serial.print("Connecting to ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);

if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println("WiFi connected");
}

// MQTT
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Connecting to MQTT server");
if (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Connected to MQTT server");
client.set_callback(callback);
client.subscribe("test/led"); //
} else {
Serial.println("Could not connect to MQTT server");
}
}

if (client.connected()){
client.loop();
TempSend();
}

}
} //

//
void TempSend(){
if (tm==0)
{
sensors.requestTemperatures(); //
float temp = sensors.getTempCByIndex(0);
client.publish("test/temp",String(temp)); //
Serial.println(temp);
tm = 300; // 3
}
tm--;
delay(10);
}



En conséquence, nous obtenons un outil pratique pour le contrôle à distance et la surveillance des données, qui est assez facile à apprendre et sera efficace même pour les débutants.

Vidéo montrant le fonctionnement du système de contrôle


Instructions détaillées de configuration du système vidéo


Une application du contrôle esp8266 via le protocole MQTT


Contrôle de bande LED via Internet


Si vous avez des questions sur ce matériel, je vous recommande de regarder la deuxième partie de la vidéo, où le matériel est présenté plus clairement.

L'archive contient l'esquisse et toutes les bibliothèques nécessaires pour flasher le microcontrôleur avec l'esquisse de l'exemple.
J'attire votre attention sur le fait que la bibliothèque ESP8266WiFi.h n'est pas incluse dans cette archive; elle est installée via le gestionnaire de cartes dans l'environnement Arduino. Serveur

ARCHIVE

MQTT - www.cloudmqtt.com

Lien vers l'application IoT MQTT Dashboard - play.google.com/store/apps/details?id=com.thn.iotmqttdashboard

Merci à tous pour votre attention.

Source: https://habr.com/ru/post/fr393277/


All Articles