MQTT پروٹوکول کے ذریعے Esp8266 انٹرنیٹ کنٹرول

MQTT پروٹوکول کے ذریعے Esp8266 انٹرنیٹ کنٹرول
سب کو ہیلو! یہ مضمون تفصیل سے بیان کرے گا اور دکھائے گا کہ صرف 20 منٹ میں ایپ کا استعمال کرتے ہوئے esp8266 ماڈیول کا ریموٹ کنٹرول کیسے ترتیب دیا جائے۔ Android MQTT پروٹوکول کے ذریعے۔

ریموٹ کنٹرول اور مانیٹرنگ کے خیال نے ہمیشہ الیکٹرانکس اور پروگرامنگ کے شوقین لوگوں کے ذہنوں کو پرجوش کیا ہے۔ بہر حال، آپ کے مقام سے قطع نظر، کسی بھی وقت ضروری ڈیٹا وصول کرنے یا بھیجنے کی صلاحیت کافی مواقع فراہم کرتی ہے۔ میرے پچھلے مضامین میں ( آرٹیکل 1 и آرٹیکل 2) میں نے انٹرنیٹ کے ذریعے مائکروکنٹرولرز کے ریموٹ کنٹرول کو لاگو کرنے کے لیے کئی قابل رسائی اور نسبتاً آسان اختیارات پر غور کرنے کی کوشش کی۔ تاہم، وقت اور پوری دنیا خاموش نہیں رہتی ہے - ترقی اپنی ناقابل برداشت حرکت کو آگے بڑھاتی ہے۔ اس مختصر وقت کے دوران، esp8266 ماڈیول نے کافی مقبولیت حاصل کی ہے، جو اس کی کم قیمت اور بلٹ ان وائی فائی کی بدولت اسمارٹ ہوم کے اہم اجزاء میں سے ایک بن گیا ہے۔

اس وقت، MQTT اسمارٹ ہوم سسٹمز کے اندر انفرادی آلات کے درمیان ڈیٹا کی منتقلی کے لیے جدید اور مقبول ترین پروٹوکول ہے۔ دوسرے پروٹوکول کے مقابلے میں اس کے بہت سے فوائد ہیں:
- کم ٹریفک کی کھپت؛
- کلائنٹ اور سرور کے درمیان کنکشن ہمیشہ کھلا رہتا ہے۔
- انٹرنیٹ چینل لوڈ نہیں کرتا؛
- ڈیٹا کی ترسیل میں کوئی تاخیر نہیں؛
- عنوانات کی رکنیت کا آسان نظام؛
یہ سب حقیقی وقت میں نگرانی اور کنٹرول کرنا ممکن بناتا ہے۔ تاہم، MQTT کو اپنے سرور کی ضرورت ہوتی ہے، جو نیٹ ورک کلائنٹس کے درمیان ایک ثالث کے طور پر کام کرتا ہے۔ یہاں دو اختیارات ہیں: یا تو اپنا سرور بنائیں یا تھرڈ پارٹی سروسز استعمال کریں۔

بیان کردہ کنٹرول سسٹم دو اہم حصوں پر مشتمل ہے: ایک MQTT سرور (عام طور پر صرف ایک) اور کلائنٹس، جن میں سے بہت کم ہوسکتے ہیں۔ ہمارے معاملے میں، کلائنٹس ایک ایپلیکیشن چل رہے ہوں گے۔ Android اور esp8266 ماڈیول خود۔

سسٹم آپریشن الگورتھم مندرجہ ذیل ہے۔ کلائنٹ سرور سے جڑ جاتے ہیں اور کنیکٹ ہونے کے فوراً بعد، ان میں سے ہر ایک اپنی دلچسپی کے موضوعات کو سبسکرائب کرتا ہے۔ کلائنٹس کے درمیان تمام مواصلات سرور کے ذریعے منتقل ہوتے ہیں، جو ڈیٹا کو ان کی سبسکرپشنز کی بنیاد پر دوسرے کلائنٹس کو بھیجتا ہے۔

MQTT سرور۔

ہمارے معاملے میں، ہم ایک انتہائی آسان سروس استعمال کریں گے۔ www.cloudmqtt.com جس میں ایک مفت ٹیرف پلان (Cute Cat) ہے، جو ایک چھوٹے سے "سمارٹ ہوم" کے نظام کو نافذ کرنے کی ضروریات کو پوری طرح پورا کرے گا۔
MQTT پروٹوکول کے ذریعے Esp8266 انٹرنیٹ کنٹرول
آئیے سائٹ پر رجسٹر ہوں اور سرور تک رسائی کے لیے ضروری ڈیٹا حاصل کریں۔ کلائنٹس کو کنفیگر کرتے وقت، آپ کو ایک باقاعدہ پورٹ (SSL اور TLS کے بغیر) استعمال کرنا چاہیے۔
MQTT پروٹوکول کے ذریعے Esp8266 انٹرنیٹ کنٹرول

Приложение на Android.

ہماری درخواست مائیکرو کنٹرولر کے لیے ایک کنٹرول پینل کے طور پر کام کرے گی، اور esp8266 سے موصول ہونے والی تمام معلومات بھی وصول کرے گی اور ظاہر کرے گی۔

درخواست بلائی جاتی ہے۔ IoT MQTT ڈیش بورڈ اور ایک ریڈی میڈ mqtt کلائنٹ ہے جس میں بہت ہی آسان وجیٹس کی ایک چھوٹی تعداد ہے۔ ایپلیکیشن کو استعمال کرنے کے طریقے کے بارے میں مزید تفصیلات کے لیے آپ ویڈیو دیکھ سکتے ہیں۔

Esp8266.

ماڈیول Arduino پروگرامنگ ماحول میں چمکتا ہے، لیکن میں یہ نوٹ کرنا چاہوں گا کہ ماڈیول کو Arduino کے تازہ ترین ورژن میں فرم ویئر کے ساتھ مسائل ہیں، لہذا میں ورژن 1.6.4 استعمال کرنے کی تجویز کرتا ہوں۔
مثال کے طور پر، ایک LED (8266 پن) اور ایک ds5b18 درجہ حرارت سینسر (20 پن) esp2 سے جڑے ہوئے ہیں۔
چونکہ ایل ای ڈی کو کنٹرول کرنے کے لیے ڈیٹا وصول کرنا ضروری ہے، اس لیے منسلک ہونے کے بعد esp کو متعلقہ "ٹیسٹ/لیڈ" ٹاپک کو سبسکرائب کرنا چاہیے، بصورت دیگر تمام بھیجا گیا ڈیٹا ہمارے مائیکرو کنٹرولر سے گزر جائے گا۔
درجہ حرارت کا ڈیٹا بھیجنے کے لیے، آپ کو سبسکرپشن کی ضرورت نہیں ہے، لیکن درجہ حرارت کی قدریں بھیجتے وقت، آپ کو اس موضوع کی نشاندہی کرنا چاہیے جس پر یہ ڈیٹا جائے گا۔

ذیل میں تفصیلی تبصروں کے ساتھ ایک خاکہ ہے۔

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

#شامل
#شامل
#شامل
#شامل

ONE_WIRE_BUS 2 کی وضاحت کریں۔
OneWire oneWire(ONE_WIRE_BUS)؛
ڈلاس درجہ حرارت کے سینسر (&oneWire)؛

const char *ssid = "ایئرپورٹ"؛ // وائی فائی رسائی پوائنٹ کا نام
const char *pass = "پاس ورڈ"؛ // رسائی پوائنٹ سے پاس ورڈ

const char *mqtt_server = "سرور"؛ // MQTT سرور کا نام
const int mqtt_port = 11140; // MQTT سرور سے جڑنے کے لیے پورٹ
const char *mqtt_user = "لاگ ان"؛ // سرور سے لاگز
const char *mqtt_pass = "پاس"؛ // سرور کا پاس ورڈ

# BUFFER_SIZE 100 کی وضاحت کریں۔

bool LedState = غلط؛
int tm = 300؛
فلوٹ درجہ حرارت = 0؛

// سرور سے ڈیٹا حاصل کرنے کا فنکشن

باطل کال بیک (const MQTT::Publish & pub)
{
Serial.print(pub.topic())؛ // عنوان کا نام سیریل پورٹ پر آؤٹ پٹ کریں۔
سیریل پرنٹ (" =>")؛
Serial.print(pub.payload_string())؛ // موصول شدہ ڈیٹا ویلیو کو سیریل پورٹ پر آؤٹ پٹ کریں۔

اسٹرنگ پے لوڈ = pub.payload_string();

if(String(pub.topic()) == "test/led") // چیک کریں کہ آیا ڈیٹا اس موضوع سے آیا ہے جس کی ہمیں ضرورت ہے
{
int stled = payload.toInt(); // موصول شدہ ڈیٹا کو عددی قسم میں تبدیل کریں۔
ڈیجیٹل رائٹ (5، سٹیلڈ)؛ // موصولہ ڈیٹا ویلیو کے لحاظ سے ایل ای ڈی کو آن یا آف کریں۔
}
}

WiFiClient wclient؛
PubSubClient کلائنٹ (wclient، mqtt_server، mqtt_port)؛

باطل سیٹ اپ () {

sensors.begin();
سیریل.بیگین (115200)؛
تاخیر (10)؛
سیریل.پرنٹلن ()؛
سیریل.پرنٹلن ()؛
پن موڈ (5 ، آؤٹ پٹ)
}

باطل لوپ () {
// وائی فائی سے جڑیں۔
اگر (WiFi.status() != WL_CONNECTED) {
سیریل پرنٹ ("کنیکٹنگ")؛
Serial.print(ssid)؛
Serial.println("...")؛
WiFi.begin(ssid، پاس)؛

اگر (WiFi.waitForConnectResult() != WL_CONNECTED)
، واپس
Serial.println("وائی فائی منسلک")؛
}

// MQTT سرور سے جڑیں۔
اگر (WiFi.status() == WL_CONNECTED) {
اگر (!client.connected()) {
Serial.println("MQTT سرور سے جڑ رہا ہے")؛
اگر (client.connect(MQTT::Connect("arduinoClient2")
.set_auth(mqtt_user, mqtt_pass))) {
Serial.println("MQTT سرور سے منسلک")؛
client.set_callback(کال بیک)؛
client.subscribe("test/led")؛ // ایل ای ڈی کے ڈیٹا کے ساتھ موضوع کو سبسکرائب کریں۔
اور} {
Serial.println("MQTT سرور سے منسلک نہیں ہو سکا")؛
}
}

اگر (client.connected()){
client.loop();
TempSend ()؛
}

}
} // مین لوپ کا اختتام

// درجہ حرارت سینسر سے ریڈنگ بھیجنے کا فنکشن
باطل TempSend(){
اگر (tm==0)
{
sensors.requestTemperatures(); // ہمیں سینسر سے درجہ حرارت کی قیمت ملتی ہے۔
float temp = sensors.getTempCByIndex(0)؛
client.publish("test/temp", String(temp))؛ // درجہ حرارت سینسر کے لیے موضوع پر درجہ حرارت کی قدر بھیجیں۔
Serial.println(temp)؛
tm = 300; // درجہ حرارت کی قدریں بھیجنے کے درمیان تقریباً 3 سیکنڈ کا وقفہ کریں۔
}
tm--;
تاخیر (10)؛
}

نتیجے کے طور پر، ہمیں ریموٹ کنٹرول اور ڈیٹا کی نگرانی کے لیے ایک آسان ٹول ملتا ہے جو سیکھنا کافی آسان ہے اور یہاں تک کہ ابتدائی افراد بھی استعمال کر سکتے ہیں۔

ویڈیو کنٹرول سسٹم کے آپریشن کو ظاہر کرتی ہے۔

ویڈیو کھیلیں

سسٹم کو ترتیب دینے کے لیے تفصیلی ویڈیو ہدایات

ویڈیو کھیلیں

MQTT پروٹوکول کے ذریعے esp8266 کنٹرول استعمال کرنے کے اختیارات میں سے ایک

ویڈیو کھیلیں

انٹرنیٹ کے ذریعے ایل ای ڈی کی پٹی کو کنٹرول کرنا

ویڈیو کھیلیں

اگر آپ کے پاس اس مواد کے بارے میں کوئی سوالات ہیں، تو میں ویڈیو کا دوسرا حصہ دیکھنے کی تجویز کرتا ہوں، جہاں مواد کو زیادہ واضح طور پر پیش کیا گیا ہے۔

آرکائیو میں ایک خاکہ اور مثال کے خاکے کے ساتھ مائیکرو کنٹرولر کو چمکانے کے لیے تمام ضروری لائبریریاں شامل ہیں۔
براہ کرم نوٹ کریں کہ ESP8266WiFi.h لائبریری اس آرکائیو میں شامل نہیں ہے؛ یہ Arduino ماحول میں بورڈز مینیجر کے ذریعے نصب کی گئی ہے۔

آرکائیو

MQTT سرور - www.cloudmqtt.com

IoT MQTT ڈیش بورڈ ایپ لنک - play.google.com/store/apps/details?id=com.thn.iotmqttdashboard&hl=en

آپ سب کی توجہ کا شکریہ۔

ماخذ: www.habr.com

DDoS تحفظ، VPS VDS سرورز والی سائٹوں کے لیے قابل اعتماد ہوسٹنگ خریدیں۔ DDoS تحفظ، VPS VDS سرورز کے ساتھ قابل اعتماد ویب سائٹ ہوسٹنگ خریدیں۔ ProHoster