ข้ามไปยังเนื้อหา

แล็บ: Wi-Fi, MQTT connect, publish และ subscribe

Course 1 · Module 6
Type: Hands-on lab (network + broker + device)
Suggested time: 2.5–3.5 hours

Read first: Lesson · Cheatsheet · ← Table of Contents · ← M05 · M07 BLE →

หมายเหตุ: snippet ในแล็บนี้ใช้ API ของเฟิร์มแวร์ TESAIoT Bitstream ซึ่งยังไม่เปิดซอร์ส ดูรายละเอียดและตัวอย่างเทียบใน SDK สาธารณะได้ที่หมายเหตุต้นบทเรียน MQTT และ MQTTs บนอุปกรณ์ Edge

เอกสาร ใช้เมื่อ
Lesson cm55_trigger_mqtt_*, CONFIG, topics
Hackathon MQTT pages web-app/ex09–ex15
Bitstream Studio Start broker / MQTT tools
HiveMQ MQTT Essentials ทบทวน QoS / retain

  • Join Wi‑Fi จนสถานะ CONNECTED
  • Connect MQTT ไปยัง broker ที่เลือกใช้
  • Publish ข้อความหรือ telemetry อย่างน้อยหนึ่งครั้ง
  • Subscribe (จากโฮสต์หรืออุปกรณ์) แล้วเห็นข้อความ
  • อธิบายความต่าง MQTT vs MQTTs และบันทึกค่าคอนฟิกที่ใช้
  • (แนะนำ) ดู JSON telemetry จากเซ็นเซอร์ (ต่อจาก M05)

  • ผ่าน M05 อย่างน้อยอ่านเซ็นเซอร์ได้ (สำหรับ telemetry)
  • SSID / รหัส Wi‑Fi ของห้อง (ไม่บันทึกลง Git)
  • Broker host/port ที่เลือกใช้
  • เครื่องมือ subscribe บน PC (MQTTX, mosquitto_sub, หรือ Hackathon web-app)

อย่า publish รหัสผ่านหรือใบรับรองจริงลงรายงานสาธารณะ


  1. เรียก cm55_trigger_connect หรือ example_wifi_ui_connect ตามโปรเจกต์
  2. อ่าน cm55_get_wifi_status จน IPC_WIFI_LINK_CONNECTED
  3. บันทึก SSID (ไม่ต้องบันทึกรหัสผ่าน)

Pass when: ลิงก์ Wi‑Fi พร้อมก่อนแตะ MQTT


  1. ตั้ง policy ให้ MQTT ใช้งานได้ (เช่น factory default)
  2. cm55_trigger_mqtt_connect
  3. อ่าน cm55_get_mqtt_status จน state == CONNECTED (2)
  4. จด broker_host, port, tls, effective_client_id
(void)cm55_trigger_mqtt_connect();
/* poll cm55_get_mqtt_status until connected or timeout */

Pass when: สถานะ CONNECTED และมี client id ให้จด


เลือกอย่างน้อยหนึ่งทาง:

  • เปิดเซ็นเซอร์ + policy TELEMETRY_PUBLISH
  • Subscribe บนโฮสต์ที่ topic bitstream/<MAC12>/sensors (หรือ topic ที่คุณตั้งไว้)
  • ยืนยันว่ามี JSON เข้ามา
  • ใช้เส้นทางใดเส้นทางหนึ่ง (cm33_mqtt_stack_publish หรือแผง Studio) ส่ง {"hello":1}
  • เห็นข้อความบน subscriber

Pass when: เห็น payload บนเครื่องมือโฮสต์อย่างน้อยหนึ่งครั้ง


  1. Subscribe ฝั่งอุปกรณ์ที่ topic actuators (หรือใช้คอนฟิก topic table ที่มีอยู่)
  2. จากโฮสต์ publish คำสั่งทดสอบไปยัง topic นั้น
  3. บันทึกว่าอุปกรณ์ได้รับอย่างไร (log / LED / เหตุการณ์ตามที่เฟิร์มแวร์รองรับ)

Pass when: มีหลักฐานว่าข้อความจาก cloud/โฮสต์ถึงอุปกรณ์ (หรือถึง log ของสแต็ก)


กรอกตารางเปรียบเทียบจากการทดลองหรือจากเอกสารของชุดที่ใช้: พอร์ต, tls, CA

รัน ex09–ex14 ตาม Hackathon README (broker ใน Studio ถ้าจำเป็น)

ออกแบบ JSON สำหรับ event จาก M05 (เกณฑ์อุณหภูมิ/ฟีเจอร์) แล้วลอง publish หนึ่งครั้ง

Pass when: ส่งตาราง/สกรีนช็อต/ไฟล์ออกแบบสั้น ๆ


  1. Wi‑Fi SSID (ไม่มีรหัสผ่าน)
  2. Broker host:port และ tls 0/1
  3. Client id / MAC topic ที่ใช้
  4. หลักฐาน publish + subscribe
  5. ข้อจำกัดที่สังเกต (เช่น QoS ของ telemetry, ต้องมี Wi‑Fi ก่อน)

อาการ แนวทาง
MQTT error / ไม่เชื่อม Wi‑Fi ยังไม่ขึ้น · MQTT_ENABLED ปิด · host/port ผิด
เชื่อมได้แต่ไม่มี telemetry เซ็นเซอร์ไม่ publish · ปิด TELEMETRY_PUBLISH · topic ผิด
TLS fail พอร์ตไม่ใช่ 8883 · CA ไม่ตรง broker · นาฬิกาอุปกรณ์เพี้ยน (ถ้ามีผลตรวจใบรับรอง)
Subscribe ไม่เห็นของ คนละ MAC / คนละ prefix topic · คนละ broker
Auth fail username/password ว่างหรือผิด

  • Lab A–D ผ่าน
  • Lab E อย่างน้อย 1 ข้อ
  • กรอก mqtt-cloud.md
  • รายงานสั้นไม่มีความลับ

Lesson · Cheatsheet · Table of Contents · M07 BLE →

อ้างอิงบทเรียนนี้

ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน

"แล็บ: Wi-Fi, MQTT connect, publish และ subscribe" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0

ข้อความอ้างอิงภาษาอังกฤษ: "Lab: Wi-Fi, MQTT Connect, Publish, and Subscribe" from TESA Open Knowledge by the Thai Embedded Systems Association (TESA), https://github.com/tesaiot/tesa-qualification-program, licensed under CC BY-NC 4.0

ลิงก์บทเรียน: https://tesaiot.github.io/tesa-qualification-program/courses/firmware-sdk-edge-ai/m06-mqtt/l02-lab/

บทเรียนนี้ดัดแปลงจากต้นฉบับด้านล่าง เมื่ออ้างอิงให้คงเครดิตต้นฉบับไว้ด้วย
https://github.com/drsanti/TESAIoT-Courses/blob/287c21814ba8c75f693136616dcd270349a15966/C1/M06/lab.md · Original content by Asst. Prof. Dr. Santi Nuratch (ผศ.ดร.สันติ นุราช), KMUTT. Course 1 (C1/) of drsanti/TESAIoT-Courses. TESA funded the work and holds the rights; published here under CC BY-NC 4.0. The upstream repository carries no licence file. Text kept faithful; structure, front matter, quizzes and notes added by TESA Open Knowledge.

วิธีอ้างอิง TESA ฉบับเต็ม

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0

เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA