Esp8266 Kontrol internet melalui protokol MQTT


Halo semuanya! Artikel ini akan menjelaskan secara rinci dan mendemonstrasikan cara mengkonfigurasi remote control modul esp8266 secara harfiah menggunakan aplikasi Android menggunakan protokol MQTT hanya dalam waktu 20 menit.

Gagasan kendali jarak jauh dan pemantauan selalu menggairahkan pikiran orang-orang yang antusias dalam bidang elektronik dan pemrograman. Lagipula, kesempatan kapan saja untuk menerima atau mengirim data yang diperlukan, terlepas dari lokasi mereka, memberikan banyak peluang. Dalam artikel sebelumnya ( Artikel 1 dan Pasal 2) Saya mencoba mempertimbangkan beberapa opsi yang terjangkau dan relatif sederhana untuk menerapkan kendali jarak jauh mikrokontroler melalui Internet. Namun, waktu dan seluruh dunia tidak berhenti - kemajuan terus bergerak maju yang tak terhindarkan. Dalam waktu singkat ini, modul esp8266 mendapatkan popularitas yang luas, yang, berkat harga murah dan wi-fi bawaannya, telah menjadi salah satu komponen utama Smart Home.

Saat ini, MQTT adalah protokol paling canggih dan paling populer untuk mentransfer data antar perangkat individu dalam kerangka sistem Smart Home. Ini memiliki sejumlah keunggulan dalam kaitannya dengan protokol lain:
- konsumsi lalu lintas rendah;
- Koneksi antara klien dan server selalu terbuka;
- tidak memuat saluran Internet;
- tidak ada keterlambatan pengiriman data;
- sistem langganan yang nyaman untuk topik;
Semua ini memungkinkan untuk memantau dan mengontrol secara real time. Namun, MQTT membutuhkan server sendiri, yang bertindak sebagai perantara antara klien jaringan. Ada dua cara untuk membuat server Anda sendiri atau menggunakan layanan pihak ketiga.

Sistem kontrol yang dijelaskan terdiri dari dua bagian utama: server MQTT (biasanya satu) dan klien, yang bisa sangat banyak. Dalam kasus kami, aplikasi Android dan modul esp8266 sendiri akan bertindak sebagai klien.

Algoritma operasi sistem adalah sebagai berikut. Klien terhubung ke server dan segera setelah menghubungkan masing-masing dari mereka berlangganan ke topik yang menarik baginya. Semua komunikasi antara klien melewati server yang mengalihkan data ke klien lain berdasarkan langganan mereka.

Server MQTT.

Dalam kasus kami, kami akan menggunakan layanan www.cloudmqtt.com yang sangat nyaman yang memiliki paket tarif gratis (Cute Cat) yang akan sepenuhnya memenuhi kebutuhan untuk mengimplementasikan sistem "rumah pintar" kecilnya sendiri.

Mari kita pergi melalui pendaftaran di situs dan dapatkan data yang diperlukan untuk mengakses server. Saat mengkonfigurasi klien, Anda harus menggunakan Port reguler (tanpa SSL dan TLS).


Aplikasi Android.

Aplikasi kita akan bertindak sebagai panel kontrol untuk mikrokontroler, dan juga akan menerima dan menampilkan semua informasi yang diterima dari esp8266.

Aplikasi ini disebut IoT MQTT Dashboard dan merupakan klien mqtt siap pakai dengan sejumlah kecil widget yang sangat nyaman. Rincian lebih lanjut tentang bekerja dengan aplikasi dapat dilihat di video.

Esp8266.

Modul ini di-flash di lingkungan pemrograman Arduino, tetapi saya ingin mencatat bahwa modul memiliki masalah dengan firmware di versi terbaru Arduino, jadi saya sarankan menggunakan versi 1.6.4.
Misalnya, LED (5 pin) dan sensor suhu ds18b20 (2 pin) terhubung ke esp8266.
Karena diperlukan untuk menerima data untuk mengontrol LED, esp setelah menghubungkan harus berlangganan ke topik yang sesuai "test / led" jika tidak semua data yang dikirim akan melewati mikrokontroler kami.
Untuk mengirim data suhu, langganan tidak diperlukan, tetapi saat mengirimkan nilai suhu, Anda harus menentukan topik tujuan data ini.

Di bawah ini adalah sketsa dengan komentar terperinci.

Sketsa 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);
}



Sebagai hasilnya, kami mendapatkan alat yang nyaman untuk kendali jarak jauh dan pemantauan data, yang cukup mudah dipelajari dan bahkan untuk pemula.

Video mendemonstrasikan pengoperasian sistem kontrol


Petunjuk pengaturan sistem video terperinci


Satu aplikasi kontrol esp8266 melalui protokol MQTT


Kontrol strip LED melalui Internet


Jika Anda memiliki pertanyaan tentang materi ini, saya sarankan Anda menonton bagian kedua dari video, di mana materi disajikan lebih jelas.

Arsip berisi sketsa dan semua perpustakaan yang diperlukan untuk menginstal mikrokontroler dengan sketsa dari contoh.
Saya menarik perhatian Anda pada kenyataan bahwa perpustakaan ESP8266WiFi.h tidak termasuk dalam arsip ini, tetapi diinstal melalui manajer Dewan di lingkungan Arduino. Server

ARCHIVE

MQTT - www.cloudmqtt.com

Tautan ke aplikasi DashT IoT MQTT - play.google.com/store/apps/details?id=com.thn.iotmqttdashboard

Terima kasih atas perhatian Anda.

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


All Articles