บทเรียน 5.2 — แล็บ: ท่อ telemetry และ MQTT บน Twin

ออกแบบ topic ตรวจคุณภาพ Live Data ด้วย ex08 ตั้ง broker แล้ว subscribe ด้วย ex09 และทดลอง lossy/reconnect

พัฒนาเฟิร์มแวร์ร่วมกับ TESA Digital Twin บน VS Code — โมดูล 5 · แล็บ

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

เป้าหมาย

เมื่อทำครบ คุณจะ

  1. ออกแบบ topic สำหรับ Telemetry/State/Event และตรวจฟิลด์กับหน่วยบน dashboard
  2. ตั้ง broker ใน Studio แล้วทำ pub/sub ได้อย่างน้อยหนึ่งคู่
  3. ทดลอง lossy / disconnect / schema break อย่างน้อยหนึ่งเคสและบันทึกผล
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ก่อนเริ่ม

  • [ ] Lab โมดูล 4 bring-up ผ่าน (Link เสถียร · รู้ Simulator XOR Bitstream)
  • [ ] โฟลเดอร์ Hackathon มี web-app/
  • [ ] รู้วิธี Serve Web App Folder over HTTP (จากโมดูล 4)
  • [ ] โฟลเดอร์ lab-notes/ สำหรับหลักฐาน
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ดูของจริงก่อน — เกณฑ์ผ่านของแต่ละบล็อก

บล็อก เกณฑ์ผ่าน
Lab A — Classify & design topics เพื่อนในทีมอ่าน topic แล้วเดาชนิดข้อมูลถูก
Lab B — Live Data quality with ex08 อธิบายได้ว่า stale เป็น host-side Event และ origin สอดคล้องโหมด
Lab C — MQTT broker + ex09 message count ≥ 1 และ JSON ตรงชนิดที่ตั้งใจ
Lab E — Lossy / reconnect (แนะนำ) ระบุพฤติกรรมที่เห็นโดยไม่เดา
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ฝึกเติม/แล็บ (1) — Lab A: Classify & design topics

ออกแบบ (บนกระดาษหรือใน lab notes):

  1. Telemetry — topic + ตัวอย่าง JSON 1 ก้อน + อัตราโดยประมาณ
  2. State — topic + เมื่อไรจะส่ง (เปลี่ยนโหมด / LED / Link)
  3. Event — topic หรือชื่อ event + เงื่อนไขสั้น ๆ
device/<id>/devkit-twin/telemetry
device/<id>/state
device/<id>/event/<name>
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ฝึกเติม/แล็บ (2) — Lab B: Live Data quality with ex08

  1. Link Studio (โหมดเดียว)
  2. Serve web-app/ → เปิด ex08_stale_and_route.html
  3. จด route, COM open, last origin
  4. ทำให้เซ็นเซอร์อย่างน้อยหนึ่งตัวเข้า stale แล้วกลับ fresh
  5. แคป event log + pills
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ฝึกเติม/แล็บ (3) — Lab C: MQTT broker + ex09

  1. ใน Bitstream Studio: Start broker
  2. เปิด ex09_mqtt_subscriber.html — รอ connected
  3. Publish ไป topic ที่หน้าเว็บ subscribe (ค่าเริ่มต้น device/devkit-twin-01/devkit-twin/telemetry)
  4. ยืนยัน Last payload ตรงฟิลด์และหน่วย
  5. แคปคู่: แหล่ง publish + หน้า ex09
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ฝึกเติม/แล็บ (4) — Lab D: Pipeline / schema drill (แนะนำ)

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

  • ตัดฟิลด์จาก payload แล้วดูว่า subscriber/dashboard พังตรงไหน
  • ส่งค่าหน่วยผิดโดยตั้งใจ แล้วจดว่า UI "ยังสวยแต่ผิดความหมาย"
  • เปิด ex14 ลอง QoS + retain บน lab/qos-demo แล้วให้เพื่อนเปิด subscriber หลังคุณ retain
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ฝึกเติม/แล็บ (5) — Lab E: Lossy / reconnect (แนะนำ)

เลือกอย่างน้อยหนึ่งเคส แล้วกรอกตารางใน lab notes:

เคส ตัวอย่างการทำ
Stop / Start broker สั้น ๆ ดู ex09 reconnecting → connected
หยุด publisher ชั่วคราว ดูช่องว่าง · หรือ ex08 stale
ปิดแท็บ ex09 แล้วเปิดใหม่ ถ้ามี retain บน state topic — ได้ค่าล่าสุดหรือไม่
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

เช็กความเข้าใจ — ไล่อาการก่อนขอความช่วยเหลือ

ถ้าติดปัญหา ให้ตอบตัวเองก่อนว่าน่าจะตรงแถวไหน:

  1. ex09 ค้าง connecting — ควรตรวจอะไรก่อน
  2. connected แต่ Waiting for messages — สาเหตุที่พบบ่อยคืออะไร
  3. Live Data ดี MQTT ว่าง — ควรแก้อะไรก่อน (เฟิร์มแวร์หรือ broker/topic)
  4. origin สับสน — เกิดจากอะไร
TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

ไปต่อ

ก่อนส่งงาน ตรวจกับตัวเองว่ามีครบ:

  • [ ] Lab A–C ผ่าน
  • [ ] Lab E (หรืออย่างน้อย Lab D ถ้าเวลาไม่พอ)
  • [ ] telemetry-mqtt-lab-notes.md กรอกครบ
  • [ ] หลักฐานสกรีนช็อตของคุณเอง: ex08 + ex09 (+ schema/lossy ตามที่ทำ)

พร้อมแล้ว ไปต่อ โมดูล 6 — การรวมระบบและการทดสอบ

บทเรียนโมดูล 6 →

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0

แหล่งที่มา

"บทเรียน 5.2 — แล็บ: ท่อ telemetry และ MQTT บน Twin" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย
(Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program
สัญญาอนุญาต CC BY-NC 4.0

เนื้อหาต้นฉบับโดย ผศ.ดร.สันติ นุราช ภาควิชาวิศวกรรมระบบควบคุมและเครื่องมือวัด คณะวิศวกรรมศาสตร์
มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี (KMUTT) (https://github.com/drsanti) ภายใต้การสนับสนุนของสมาคมสมองกลฝังตัวไทย (TESA)
นำเข้าจาก drsanti/TESAIoT-Courses — C2 (commit 287c218) ภายใต้สัญญาอนุญาต CC BY 4.0

ไม่มีภาพจากบุคคลที่สามในสไลด์ชุดนี้

TESA Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · ดัดแปลงจากงานของ ผศ.ดร.สันติ นุราช (KMUTT) · CC BY-NC 4.0