PicoMQTT เป็นไลบรารี MQTT ที่มีน้ำหนักเบา (lightweight) สำหรับ Arduino/PlatformIO เหมาะสำหรับนำใช้งานกับ ESP8266 และ ESP32, รองรับโหมด MQTT Client และโหมด MQTT Broker ซึ่งทำให้ ESP8266 หรือ ESP32 สามารถเปลี่ยนเป็นเกตเวย์ MQTT แทน Raspberry Pi หรืออุปกรณ์เกตเวย์ IoT
ไลบรารีนี้เป็นไปตามข้อกำหนดของ MQTT 3.1.1 รองรับการ Publish และการใช้ส่งข้อความที่มีขนาดใดก็ได้ สามารถส่งข้อความเป็นพันต่อวินาที และรองรับการใช้งานร่วมกับกับไลบรารี ArduinoJson เพื่อ publish และใช้งานข้อความ JSON
ตัวอย่างโคัด MQTT Broker:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
#include <Arduino.h> #include <PicoMQTT.h> PicoMQTT::Server mqtt; void setup() { // Usual setup Serial.begin(115200); WiFi.mode(WIFI_STA); WiFi.begin("MyWiFi", "password"); // Subscribe to a topic pattern and attach a callback mqtt.subscribe("#", [](const char * topic, const char * payload) { Serial.printf("Received message in topic '%s': %s\n", topic, payload); }); // Start the broker mqtt.begin(); } void loop() { // This will automatically handle client connections. By default, all clients are accepted. mqtt.loop(); if (random(1000) == 0) mqtt.publish("picomqtt/welcome", "Hello from PicoMQTT!"); } |
การใช้งานมีข้อจำกัดบางประการเนื่องจากทรัพยากรค่อนข้างจำกัดใน ESP8266 และ ESP32 โดยเฉพาะอย่างยิ่ง:
- Client รองรับเฉพาะ MQTT QoS ระดับ 0 และ 1
- Broker รองรับเฉพาะ MQTT QoS ระดับ 0, ไม่รับประกันว่าข้อความจะถูกส่งถึงผู้รับใดๆ เลยหรือไม่, ถ้าไม่มีผู้รับข้อความอาจเก็บข้อความไว้หรือลบทิ้งก็ได้
ข้อเสียอีกอย่างที่นักพัฒนาได้เน้นคือรองรับเฉพาะบอร์ด ESP8266 และ ESP32
นักพัฒนาซอฟต์แวร์ Michał Leśniewski บอกกับ Hackster.ioว่า PicoMQTT ไม่มีฟีเจอร์ทั้งหมดที่ Mosquitto มี และช้ากว่า Raspberry Pi มาก แต่ก็เพียงสำหรับอุปกรณ์ไม่กี่ตัวที่ไม่ได้ส่งข้อความจำนวนมาก เขาพบว่าการตั้งค่าของตัวเองกับบอร์ด ESP สองสามตัวนั้นเสถียรมาก สามารถหา source code, คู่มือการใช้งาน และตัวอย่าง benchmark บน GitHub ทั้งหมดอยู่ภายใต้ License GNU LGPLv3
การทดสอบ Benchmark ประกอบด้วยบอร์ด ESP ในโหมด Broker และเครื่องคอมพิวเตอร์พีซีส่งข้อความจำนวนมากพร้อมพารามิเตอร์ที่แตกต่างกัน สิ่งที่แปลกจริงๆ คือ ESP8266 สามารถจัดการข้อความจำนวนหลายพันข้อความต่อวินาทีสำหรับ payload ขนาดเล็ก (<=10 ไบต์) โดยใช้ consumer สูงสุด 5 คน แต่ ESP32 เจอปัญหามากกว่าและสามารถจัดการข้อความได้หลายร้อยข้อความต่อวินาที หรือน้อยกว่านั้น ภายใต้เงื่อนไขเดียวกัน
แปลจากบทความภาษาอังกฤษ : PicoMQTT – An MQTT Client/Broker library for ESP8266 and ESP32
บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT