Esp8266 menaxhim përmes internetit me protokollin MQTT.

Esp8266 menaxhim përmes internetit me protokollin MQTT.
Përshëndetje të gjithëve! Në këtë artikull do të shpjegohet dhe demonstrohet se si mund të konfiguroni menaxhimin në distancë të modulit esp8266 me një aplikacion për Android përmes protokollit MQTT, në vetëm 20 minuta kohë të lirë.

Ideja e menaxhimit dhe monitorimit në distancë gjithmonë ka ngjallur interes në mesin e entuziastëve të elektronikës dhe programimit. Mundësia për të marrë ose dërguar të dhëna të nevojshme në çdo moment, pa marrë parasysh vendndodhjen tuaj, ofron mundësi të mëdha. Në artikujt e mi të kaluar ( Artikulli 1 dhe Artikulli 2) kam përpjekur të shqyrtoj disa variante të disponueshme dhe relativisht të thjeshta për të realizuar menaxhimin në distancë të mikro-kontrollorëve përmes internetit. Megjithatë, koha dhe bota nuk ndalojnë – progresi vazhdon të ecë përpara. Në këtë periudhë të shkurtër, moduli esp8266 ka fituar një popullaritet të gjerë, i cili falë çmimit të ulët dhe wi-fi të integruar është bërë një nga përbërësit kryesorë të "Shtëpisë Inteligjente".

Aktualisht, MQTT është protokolli më i avancuar dhe më i njohur për transferimin e të dhënave midis pajisjeve të veçanta brenda sistemeve "Shtëpia Inteligjente". Ai ka disa përfitime në krahasim me protokollet e tjera:
— konsum i ulët i trafikut;
— lidhja midis klientit dhe serverit është gjithmonë e hapur;
— nuk ngarkon kanalin e internetit;
— mungesa e vonesave në transferimin e të dhënave;
— një sistem komod për pajtim në temat;
E gjitha kjo ofron mundësinë për monitorim dhe menaxhim në kohë reale. Megjithatë, MQTT kërkon një server të vetin, i cili vepron si ndërmjetës midis klientëve të rrjetit. Këtu ka dy zgjidhje: ose të krijoni serverin tuaj, ose të përdorni shërbime të jashtme.

Sistemi i menaxhimit të përshkruar përbëhet nga dy pjesë kryesore: serveri MQTT (zakonisht vetëm një) dhe klientët, të cilët mund të jenë shumë. Në rastin tonë, si klientë do të veprojnë aplikacioni për Android dhe vetë moduli esp8266.

Algoritmi i funksionimit të sistemit është si më poshtë. Klientët lidhen me serverin dhe menjëherë pas lidhjes, secili prej tyre subscribohet në temat që i interesojnë. Çdo komunikim midis klientëve kalon nëpër server, i cili drejton të dhënat tek klientët e tjerë duke marrë parasysh pajtimet e tyre.

Serveri MQTT.

Në rastin tonë, do të përdorim një shërbim shumë të përshtatshëm www.cloudmqtt.com i cili ka një plan tarifor falas (Cute Cat), i cili do të mbulojë plotësisht nevojat për realizimin e një sistemi të vogël të "shtëpisë inteligjente".
Esp8266 menaxhim përmes internetit me protokollin MQTT.
Do të bëjmë regjistrimin në sit dhe do të marrim të dhënat e nevojshme për hyrjen në server. Gjatë konfigurimit të klientëve, duhet të përdorni Portin e zakonshëm (pa SSL dhe TLS).
Esp8266 menaxhim përmes internetit me protokollin MQTT.

Aplikacioni për Android.

Aplikacioni ynë do të veprojë si një kontrollues për mikro-kontrollorin, si dhe do të pranojë dhe shfaqë të gjitha informacionet e marra nga esp8266.

Aplikacioni quhet IoT MQTT Dashboard dhe përfaqëson një klient të gatshëm mqtt me një numër të vogël widgets shumë të përshtatshëm. Mund të shihni më shumë rreth funksionimit të aplikacionit në video.

Esp8266.

Moduli programohet në ambientin e programimit Arduino, megjithatë dua të theksoj se moduli ka probleme me programimin në versionet e fundit të Arduino, prandaj rekomandoj të përdorni versionin 1.6.4.
Si shembull, në esp8266 janë lidhur një LED (pin 5) dhe një sensor temperature ds18b20 (pin 2).
Duke qenë se për të menaxhuar LED-in është e nevojshme të marrëni të dhëna, esp pas lidhjes duhet të abonehet në temën përkatëse "test/led", ndryshe të gjitha të dhënat që dërgohen do të kalojnë përjashtim nga mikro-kontrollori ynë.
Për dërgimin e të dhënave të temperaturës, abonimi nuk është i nevojshëm, por gjatë dërgimit të vlerave të temperaturës është e nevojshme të especificohet tema në të cilën këto të dhëna do të dërgohen.

Më poshtë është sketçi me komente të detajuara.

Sketci 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"; // Emri i pikës së qasjes WiFi
const char *pass = "PASSWORD"; // Fjalëkalimi i pikës së qasjes

const char *mqtt_server = "server"; // Emri i serverit MQTT
const int mqtt_port = 11140; // Porta për lidhen me serverin MQTT
const char *mqtt_user = "Login"; // Llogaritë nga serveri
const char *mqtt_pass = "Pass"; // Fjalëkalimi nga serveri

#define BUFFER_SIZE 100

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

// Функция получения данных от сервера

void callback(const MQTT::Publish& pub)
{
Serial.print(pub.topic()); // printo në portin serial emrin e temës
Serial.print(" => ");
Serial.print(pub.payload_string()); // printo në portin serial vlerën e të dhënave të marra

String payload = pub.payload_string();

if(String(pub.topic()) == "test/led") // verifikojmë nëse të dhënat kanë ardhur nga tema e duhur
{
int stled = payload.toInt(); // transformojmë të dhënat e marra në tipin integer
digitalWrite(5,stled); // aktivizojmë ose fikim LED-in në varësi të vlerave të marra
}
}

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("Duke duke në ");
Serial.print(ssid);
Serial.println("...");
WiFi.begin(ssid, pass);

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

// подключаемся к MQTT серверу
if (WiFi.status() == WL_CONNECTED) {
if (!client.connected()) {
Serial.println("Duke u lidhur me serverin MQTT");
if (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("I lidhur me serverin MQTT");
client.set_callback(callback);
client.subscribe("test/led"); // subscribohet në temën me të dhëna për LED-in
} else {
Serial.println("Nuk mund të lidhem me serverin MQTT");
}
}

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

}
} // fundi i ciklit kryesor

// Функция отправки показаний с термодатчика
void TempSend(){
if (tm==0)
{
sensors.requestTemperatures(); // marrim vlerën e temperaturës nga sensori
float temp = sensors.getTempCByIndex(0);
client.publish("test/temp",String(temp)); // dërgojmë në temën për sensorin e temperaturës vlerën e temperaturës
Serial.println(temp);
tm = 300; // pauza ndërmjet dërgimeve të vlerave të temperaturës është rreth 3 sekonda
}
tm--;
delay(10);
}

Si rezultat, ne kemi një mjet të përdorshëm për menaxhimin nga distanca dhe monitorimin e të dhënave, i cili është mjaft i lehtë për t'u mësuar dhe do t'i përshtatet edhe fillestarëve.

Video me demonstruese e funksionit të sistemit të menaxhimit

Luaj videon

Udhëzimi i detajuar me video për konfigurimin e sistemit

Luaj videon

Një nga variantet e përdorimit të menaxhimit të esp8266 nëpërmjet protokollit MQTT

Luaj videon

Menaxhimi i dritave LED përmes internetit

Luaj videon

Nëse keni pyetje mbi këtë material, ju rekomandoj të shihni pjesën e dytë të videos, ku materiali është paraqitur më qartë.

Në arkiv ndodhen skica dhe të gjitha bibliotekat e nevojshme për të flashuar mikrokontrollerin me skicën nga shembulli.
Vërej se biblioteka ESP8266WiFi.h nuk është përfshirë në këtë arkiv, ajo instalohet përmes menaxherit të bordit në ambientin Arduino.

ARKIV

Serveri MQTT — www.cloudmqtt.com

Linku në aplikacionin IoT MQTT Dashboard — play.google.com/store/apps/details?id=com.thn.iotmqttdashboard&hl=sq

Faleminderit të gjithëve për vëmendjen.

Burimi: habr.com

Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS 🔥 Bleni hostim të besueshëm për faqe me mbrojtje nga DDoS, serverë VPS VDS | ProHoster