ESP8266 Phần 3: MQTT Và Esp8266 - STKT Blog
1. Một số khái niệm cần tìm hiểu
1.1. MQTT là gì ?
Các bạn tham khảo một số tài liệu sau:
http://www.indigoo.com/dox/wsmw/1_Middleware/MQTT.pdf
https://xivila.com/talks/detail/196/giao-thuc-iot-mqtt-va-coap/
1.2. Esp8266 là gì ?
Esp8266 bản thân là SoC System on Chip tích hợp giao thức TCP/IP cho phép bất kì vi điều khiển nào kết nối vào mạng WiFi của bạn. Mỗi mudule esp8266 được nạp sẵn firmware tập lệnh AT cho phép chúng ta cấu hình cho nó kết nối vào WiFi bằng cách đơn giản nhất. Bộ xử lí đủ mạnh để giao tiếp với các loại cảm biến và các thiết bị chấp hành thông qua các cổng GPIO.
1.3. Esp8266 đứng ở đâu trong IoT ?
Tôi xin được đặt esp8266 trong mạng kết nối các thiết bị đầu cuối với Internet như sau:
Với một thiết bị bình thường không có khả năng kết nối Internet, cần có một vi điều khiển và một module không dây để truyền nhận dữ liệu IoT. Bằng cách sử dụng esp8266, chúng ta bỏ qua được vi điều khiển và module không dây vì 2 thứ đó đã tích hợp trên một module esp.
1.4. Broker MQTT ở đâu ?
Có nhiều cách triển khai MQTT broker như:
Dùng các ứng dụng opensource chạy broker trên máy tính của bạn
Dùng các dịch vụ được xây dựng sẵn
Bài này tôi sẽ dùng dịch vụ CloudMQTT https://www.cloudmqtt.com/ để nhanh chóng demo kịch bản.
Để chạy một kịch bản đơn giản giao tiếp giữa Broker với Client bạn cần chú ý một số điểm sau:
– Tất nhiên cần có tối thiểu một Client và một Broker.
– Thiết đặt Host, Port, Topic, có thể car user và password.
Client Chúng ta sẽ xây dựng bằng esp8266
Broker Chúng ta sẽ cài đặt một Broker miễn phí trên dịch vụ CloudMQTT. Vào https://www.cloudmqtt.com/plans.html, Click Try now for Free
Ở phần Sign up, bạn điền địa chỉ E-mail và Click Sign up
Vào hòm thư và Click vào đường link trong email mà CloudMQTT gửi cho bạn. Link sẽ dẫn bạn đến một trang điền thông tin cho tài khoản và nhấn Submit.
Tiếp theo, nhấn Creat để tạo MQTT broker
Điền vào ô Name, nhấn Creat.
Click Details
Tại mục Manage Users bạn điền tên user, mật khẩu password quản lí Client, nhấn Save.
Tại mục New Rule, User bạn chọn tên vừa tạo ở trên, đặt tên cho Topic, tick chọn Read Accsess và Write Accsess, click Save.
Chúng ta quan tâm đến một số thông số sau:
Server: m10.cloudmqtt.com
Port: 13407 (tùy tài khoản của bạn)
Users: esp8266
Password: xxxx
Topic: demo
Vậy là chúng ta đã cài đặt xong Broker.
2. Triển khai MQTT trên esp8266
Chúng ta cùng làm từng bước để chạy demo được một kịch bản publish/subsscribe giữa client là esp8266 và broker chạy trên dịch vụ CloudMQTT.
-Chuẩn bị lập trình cho esp8266 bằng Arduino IDE các bạn tham khảo bài viết
https://suutamkt.wordpress.com/2016/01/18/esp8266-phan-2-lap-trinh-esp8266-bang-arduino-ide/
-Add thư viện hỗ trợ chạy Client MQTT trên esp8266
https://github.com/knolleary/pubsubclient/
-Code demo chương trình Publish
/* </> */ #include <ESP8266WiFi.h> #include <PubSubClient.h> // Update these with values suitable for your network. #define ssid "xxx" #define password "xxx" #define mqtt_server "m10.cloudmqtt.com" #define mqtt_topic_pub "xxx" #define mqtt_topic_sub "xxx" #define mqtt_user "xxx" #define mqtt_pwd "xxx" const uint16_t mqtt_port = xxx; WiFiClient espClient; PubSubClient client(espClient); long lastMsg = 0; char msg[50]; int value = 0; void setup() { Serial.begin(115200); setup_wifi(); client.setServer(mqtt_server, mqtt_port); client.setCallback(callback); } void setup_wifi() { delay(10); // We start by connecting to a WiFi network Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Message arrived ["); Serial.print(topic); Serial.print("] "); for (int i = 0; i < length; i++) { Serial.print((char)payload[i]); } Serial.println(); } void reconnect() { // Loop until we're reconnected while (!client.connected()) { Serial.print("Attempting MQTT connection..."); // Attempt to connect if (client.connect("ESP8266Client",mqtt_user, mqtt_pwd)) { Serial.println("connected"); // Once connected, publish an announcement... client.publish(mqtt_topic_pub, "ESP_reconnected"); // ... and resubscribe client.subscribe(mqtt_topic_sub); } else { Serial.print("failed, rc="); Serial.print(client.state()); Serial.println(" try again in 5 seconds"); // Wait 5 seconds before retrying delay(5000); } } } void loop() { if (!client.connected()) { reconnect(); } client.loop(); long now = millis(); if (now - lastMsg > 2000) { lastMsg = now; ++value; snprintf (msg, 75, "hello world #%ld", value); Serial.print("Publish message: "); Serial.println(msg); client.publish(mqtt_topic_pub, msg); } }Bạn cần thay đổi các thông số:
ssid: tên mạng WiFi sẽ kết nối
password: mật khẩu WiFi
mqtt_server: Server
mqtt_port: Port
mqtt_topic_pub: Topic
Chương trình sẽ cấu hình kết nối esp8266 vào mạng WiFi bạn mong muốn và Publish bản tin theo chu kì 2s đến Topic đã cấu hình.
-Nạp chương trình cho esp8266
Các bạn tham khảo bài viết
https://suutamkt.wordpress.com/2016/01/18/esp8266-phan-2-lap-trinh-esp8266-bang-arduino-ide/
Bạn có thể xem kết quả được Publish lên Topic ở giao diện
https://api.cloudmqtt.com/sso/cloudmqtt/websocket
Nguồn bài viết: https://xivila.com/talks/detail/200/esp8266-phan-3-mqtt-va-esp8266/
Từ khóa » Mqtt Với Esp8266
-
MQTT Và ESP8266 | Học ARM
-
[IoT] Bài 7: ESP8266 - Arduino Ide Và Giao Thức MQTT
-
ESP8266 – MQTT - Unicloud Blogs
-
Node-red MQTT Và ESP8266 - Duy Đặng - Robot And Technology
-
Thiết Kế Hệ Thống IoT đơn Giản Dùng Giao Thức MQTT Kết Hợp PHP ...
-
ESP8266 Và Giao Thức MQTT Cơ Bản | MCA - MicroController Academy
-
KẾT NỐI VỚI MQTT SỬ DỤNG ESP8266/ESP32 - P1 - YouTube
-
ESP8266 Connects To MQTT Broker With Arduino - EMQ
-
Connect ESP8266 + Local MQTT On Window Using Mosquitto #2
-
Giao Tiếp ESP32 Với ESP8266 Qua Giao Thức MQTT | HTT Offical
-
Vấn đề Về MQTT Và ESP8266 - Programming - Dạy Nhau Học
-
Thiminhnhut/esp8266-cloud-mqtt - GitHub