Esp8266 rheoli rhyngrwyd trwy brotocol MQTT

Esp8266 rheoli rhyngrwyd trwy brotocol MQTT
Helô bawb! Bydd yr erthygl hon yn esbonio'n fanwl ac yn dangos sut i sefydlu rheolaeth o bell ar y modiwl esp8266 gan ddefnyddio ap mewn dim ond 20 munud o amser rhydd. Android trwy brotocol MQTT.

Mae'r syniad o reolaeth o bell a monitro bob amser wedi cyffroi meddyliau pobl sy'n angerddol am electroneg a rhaglennu. Wedi'r cyfan, mae'r gallu i dderbyn neu anfon y data angenrheidiol ar unrhyw adeg, waeth beth fo'ch lleoliad, yn darparu digon o gyfleoedd. Yn fy erthyglau blaenorol Erthygl 1 и Erthygl 2) Ceisiais ystyried sawl opsiwn fforddiadwy a chymharol syml ar gyfer gweithredu rheolaeth bell ar ficroreolyddion trwy'r Rhyngrwyd. Fodd bynnag, nid yw amser a'r byd i gyd yn aros yn ei unfan - mae cynnydd yn parhau â'i symudiad di-ildio ymlaen. Yn ystod yr amser byr hwn, mae'r modiwl esp8266 wedi ennill poblogrwydd eang, sydd, diolch i'w bris isel a'i wi-fi adeiledig, wedi dod yn un o brif gydrannau'r Cartref Clyfar.

Ar hyn o bryd, MQTT yw'r protocol trosglwyddo data datblygedig a mwyaf poblogaidd rhwng dyfeisiau unigol o fewn systemau Cartref Clyfar. Mae ganddo nifer o fanteision dros brotocolau eraill:
— defnydd isel o draffig;
- mae'r cysylltiad rhwng y cleient a'r gweinydd bob amser ar agor;
- nid yw'n llwytho'r sianel Rhyngrwyd;
— absenoldeb oedi wrth drosglwyddo data;
— system gyfleus o danysgrifiadau i bynciau;
Mae hyn i gyd yn ei gwneud hi'n bosibl monitro a rheoli mewn amser real. Fodd bynnag, mae angen ei weinydd ei hun ar MQTT, sy'n gweithredu fel cyfryngwr rhwng cleientiaid rhwydwaith. Mae dwy ffordd i naill ai greu eich gweinydd eich hun neu ddefnyddio gwasanaethau trydydd parti.

Mae'r system reoli a ddisgrifir yn cynnwys dau brif ran: gweinydd MQTT (fel arfer dim ond un) a chleientiaid, y gall fod cryn nifer ohonynt. Yn ein hachos ni, bydd y cleientiaid yn gymhwysiad sy'n rhedeg ar Android a'r modiwl esp8266 ei hun.

Mae algorithm gweithredu'r system fel a ganlyn. Mae cleientiaid yn cysylltu â'r gweinydd ac yn syth ar ôl cysylltu, mae pob un ohonynt yn tanysgrifio i'r pynciau sydd o ddiddordeb iddo. Mae'r holl gyfathrebu rhwng cleientiaid yn mynd trwy'r gweinydd, sy'n ailgyfeirio data i gleientiaid eraill yn seiliedig ar eu tanysgrifiadau.

gweinydd MQTT.

Yn ein hachos ni, byddwn yn defnyddio gwasanaeth hynod gyfleus www.cloudmqtt.com sydd â chynllun tariff rhad ac am ddim (Cute Cat) a fydd yn cwmpasu'n llawn yr anghenion ar gyfer gweithredu system cartref smart fach fewnol.
Esp8266 rheoli rhyngrwyd trwy brotocol MQTT
Gadewch i ni gofrestru ar y wefan a chael y data angenrheidiol i gael mynediad i'r gweinydd. Wrth ffurfweddu cleientiaid, rhaid i chi ddefnyddio Porthladd rheolaidd (heb SSL a TLS).
Esp8266 rheoli rhyngrwyd trwy brotocol MQTT

Cais ymlaen Android.

Bydd ein cais yn gweithredu fel panel rheoli ar gyfer y microreolydd, a bydd hefyd yn derbyn ac yn arddangos yr holl wybodaeth a dderbyniwyd gan yr esp8266.

Gelwir y cais Dangosfwrdd IoT MQTT ac mae'n gleient mqtt parod gyda nifer fach o widgets defnyddiol iawn. Gallwch wylio'r fideo am fwy o fanylion ar sut i ddefnyddio'r ap.

Esp8266.

Mae'r modiwl wedi'i fflachio yn amgylchedd rhaglennu Arduino, fodd bynnag, rwyf am nodi bod gan y modiwl broblemau gyda'r firmware yn y fersiynau diweddaraf o Arduino, felly rwy'n argymell defnyddio fersiwn 1.6.4.
Er enghraifft, mae LED (8266 pin) a synhwyrydd tymheredd ds5b18 (20 bin) wedi'u cysylltu â'r esp2.
Gan fod angen derbyn data i reoli'r LED, ar ôl cysylltu, rhaid i esp danysgrifio i'r pwnc “prawf / dan arweiniad” cyfatebol, fel arall bydd yr holl ddata a anfonir yn cael ei basio gan ein microreolydd.
Nid oes angen tanysgrifiad arnoch i anfon data tymheredd, ond wrth anfon gwerthoedd tymheredd, rhaid i chi nodi'r pwnc y bydd y data hwn yn mynd iddo.

Isod mae braslun gyda sylwadau manwl.

Braslun Esp8266_mqtt.ino// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину

#cynnwys
#cynnwys
#cynnwys
#cynnwys

#diffinio BWS_UN_GWIFREN 2
UnWire unWire(BWS_UN_WIRE);
Synwyryddion tymheredd Dallas (&oneWire);

const char *ssid = "MAES AWR"; // Enw'r pwynt mynediad WiFi
const char *pass = "CYFRINAIR"; // Cyfrinair o'r pwynt mynediad

const char *mqtt_server = "gweinydd"; // enw ​​gweinydd MQTT
const int mqtt_port = 11140; // Porthladd i gysylltu â gweinydd MQTT
const char *mqtt_user = "Mewngofnodi"; // Logiau o'r gweinydd
const char *mqtt_pass = "Pas"; // Cyfrinair y gweinydd

#diffinio MAINT_BYFFER 100

bool LedState = ffug;
int tm=300;
tymheredd arnofio=0;

// Swyddogaeth ar gyfer derbyn data o'r gweinydd

galwad yn ôl gwag (constant MQTT::Publish& pub)
{
Serial.print(pub.topic()); // allbynnu enw'r pwnc i'r porthladd cyfresol
Cyfresol.argraffu(" => ");
Serial.print(pub.payload_string()); // allbynnu'r gwerth data a dderbyniwyd i'r porthladd cyfresol

Llinyn llwyth tâl = pub.payload_string();

os(String(pub.topic()) == "test/led") // gwirio a ddaeth y data o'r pwnc sydd ei angen arnom
{
int stled = payload.toInt(); // trosi'r data a dderbyniwyd i fath cyfanrif
digitalWrite(5,stled); // trowch y LED ymlaen neu i ffwrdd yn dibynnu ar y gwerthoedd data a dderbynnir
}
}

Cleient WiFi wcleient;
Cleient PubSubClient(wclient, mqtt_server, mqtt_port);

setup gwag () {

synwyryddion.dechrau();
Serial.begin (115200);
oedi (10);
Serial.println ();
Serial.println ();
pinMode (5, ALLBWN);
}

dolen gwag () {
// cysylltu â wi-fi
os (WiFi.status() != WL_CONNECTED) {
Serial.print("Yn cysylltu â");
Cyfresol.argraffu(ssid);
Cyfresol.println("...");
WiFi.begin(ssid, pasio);

os (WiFi.waitForConnectResult() != WL_CONNECTED)
dychwelyd;
Serial.println("WiFi wedi'i gysylltu");
}

// cysylltu â gweinydd MQTT
os (WiFi.status() == WL_CONNECTED) {
os (!cleient.connected()) {
Serial.println("Cysylltu â gweinydd MQTT");
os (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("Wedi'i gysylltu â gweinydd MQTT");
cleient.set_alwad_yn_ôl(galwad_yn_ôl);
client.subscribe("prawf/led"); // tanysgrifiwch i'r pwnc gyda data ar gyfer y LED
} {Arall
Serial.println("Methwyd cysylltu â gweinydd MQTT");
}
}

os (cleient.connected()){
cleient.loop();
Anfon Dros Dro();
}

}
} // diwedd y brif ddolen

// Swyddogaeth ar gyfer anfon darlleniadau o synhwyrydd tymheredd
gwag Anfon Dros Dro() {
os (tm==0)
{
sensors.requestTemperatures(); // rydym yn cael y gwerth tymheredd o'r synhwyrydd
tymheredd arnofio = sensors.getTempCByIndex(0);
client.publish("prawf/temp",Llinyn(temp)); // anfon y gwerth tymheredd i'r pwnc ar gyfer y synhwyrydd tymheredd
Serial.println(dros dro);
tm = 300; // saib rhwng anfon gwerthoedd tymheredd tua 3 eiliad
}
tm--;
oedi (10);
}

O ganlyniad, rydym yn cael offeryn cyfleus ar gyfer rheoli o bell a monitro data, sy'n eithaf hawdd i'w ddysgu a bydd hyd yn oed dechreuwyr yn gallu ei wneud.

Fideo yn dangos gweithrediad y system reoli

Chwarae fideo

Cyfarwyddiadau fideo manwl ar gyfer sefydlu'r system

Chwarae fideo

Un o'r opsiynau ar gyfer defnyddio rheolaeth esp8266 trwy'r protocol MQTT

Chwarae fideo

Rheolaeth rhyngrwyd o stribed LED

Chwarae fideo

Os oes gennych unrhyw gwestiynau am y deunydd hwn, yna rwy'n argymell gwylio ail ran y fideo, lle cyflwynir y deunydd yn gliriach.

Mae'r archif yn cynnwys y braslun a'r holl lyfrgelloedd angenrheidiol ar gyfer fflachio'r microreolydd gyda'r braslun o'r enghraifft.
Sylwch nad yw llyfrgell ESP8266WiFi.h wedi'i chynnwys yn yr archif hon, fe'i gosodir trwy reolwr y Byrddau yn amgylchedd Arduino.

ARCHIF

gweinydd MQTT - www.cloudmqtt.com

Dolen i Ap Dangosfwrdd IoT MQTT − play.google.com/store/apps/details?id=com.thn.iotmqttdashboard&hl=ru

Diolch i chi gyd am eich sylw.

Ffynhonnell: hab.com

Prynu gwesteio dibynadwy ar gyfer gwefannau sydd â diogelwch DDoS, gweinyddwyr VPS VDS 🔥 Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster