แล็บ: ท่อ telemetry และ MQTT บน Twin
วิดีโอประกอบ
ดูบน YouTube (เปิดในแท็บใหม่)
-
BS-10: MQTT Publisher & Subscriber ผศ.ดร.สันติ นุราช (KMUTT)
วิดีโอโดย ผศ.ดร.สันติ นุราช ภาควิชาวิศวกรรมระบบควบคุมและเครื่องมือวัด คณะวิศวกรรมศาสตร์ มหาวิทยาลัยเทคโนโลยีพระจอมเกล้าธนบุรี (KMUTT) · ดูทั้งชุดใน playlist AIoT Foundation
Course 2 · Module 5
Type: Hands-on (classify · Live Data quality · MQTT pub/sub · fault injection)
Suggested time: ~3.5–4 ชั่วโมง
Read first: Lesson · Lab notes · ← Table of Contents · ← M04 · M06 →
Useful references during the lab
หัวข้อที่มีชื่อว่า “Useful references during the lab”| เอกสาร | ใช้เมื่อ |
|---|---|
| M04 lab · ex05 walkthrough | consumer Live Data พื้นฐาน |
| Course 1 M06 | MQTT บนเฟิร์มแวร์ / QoS |
Hackathon web-app/ |
ex08, ex09–ex15 |
| Bitstream Studio | Start broker · Twin publish |
Lab Goals
หัวข้อที่มีชื่อว่า “Lab Goals”- แยกและส่งแนวคิด Telemetry / State / Event อย่างละอย่างน้อยหนึ่งอย่าง
- ตรวจบน dashboard หรือ subscriber ว่าฟิลด์/หน่วยตรง
- ตั้ง MQTT broker ใน Studio แล้วทำ pub/sub อย่างน้อยหนึ่งคู่
- ทดลอง lossy / disconnect / schema break อย่างน้อยหนึ่งเคส
- กรอก telemetry-mqtt-lab-notes.md
Prerequisites
หัวข้อที่มีชื่อว่า “Prerequisites”- M04 bring-up ผ่าน (Link เสถียร · รู้ Simulator XOR Bitstream)
- โฟลเดอร์ Hackathon มี
web-app/ - รู้วิธี Serve Web App Folder over HTTP (M04)
- โฟลเดอร์
lab-notes/สำหรับหลักฐาน
Lab A — Classify & design topics (required)
หัวข้อที่มีชื่อว่า “Lab A — Classify & design topics (required)”ออกแบบ (บนกระดาษหรือใน lab notes):
- Telemetry — topic + ตัวอย่าง JSON 1 ก้อน + อัตราโดยประมาณ
- State — topic + เมื่อไรจะส่ง (เปลี่ยนโหมด / LED / Link)
- Event — topic หรือชื่อ event + เงื่อนไขสั้น ๆ
ใช้โครงตัวอย่างจากบทเรียนได้ เช่น:
device/<id>/devkit-twin/telemetrydevice/<id>/statedevice/<id>/event/<name>Pass when: เพื่อนในทีมอ่าน topic แล้วเดาชนิดข้อมูลถูกโดยไม่ต้องเดาจาก payload อย่างเดียว
Lab B — Live Data quality with ex08 (required)
หัวข้อที่มีชื่อว่า “Lab B — Live Data quality with ex08 (required)”- Link Studio (โหมดเดียว)
- Serve
web-app/→ เปิดex08_stale_and_route.html - จด
route,COM open,last origin - ทำให้เซ็นเซอร์อย่างน้อยหนึ่งตัวเข้า stale แล้วกลับ fresh
- แคป event log + pills
Pass when: อธิบายได้ว่า stale เป็น host-side Event เมื่อ telemetry ขาด — และ origin สอดคล้องโหมด Studio
Lab C — MQTT broker + ex09 subscriber (required)
หัวข้อที่มีชื่อว่า “Lab C — MQTT broker + ex09 subscriber (required)”- ใน Bitstream Studio: Start broker
- เปิด
ex09_mqtt_subscriber.html— รอconnected - Publish ไป topic ที่หน้าเว็บ subscribe (ค่าเริ่มต้น
device/devkit-twin-01/devkit-twin/telemetryหรือตาม?device=/?topic=)- แหล่ง publish: DevKit Twin MQTT tab / Sensor Studio connectivity / เครื่องมืออื่นที่มี
- ยืนยัน Last payload ตรงฟิลด์และหน่วย
- แคปคู่: แหล่ง publish + หน้า ex09
Pass when: message count ≥ 1 และ JSON อธิบายได้ว่าเป็น Telemetry (หรือชนิดที่ตั้งใจ)
Lab D — Pipeline / schema drill (recommended)
หัวข้อที่มีชื่อว่า “Lab D — Pipeline / schema drill (recommended)”เลือกอย่างน้อยหนึ่ง:
- ตัดฟิลด์จาก payload แล้วดูว่า subscriber/dashboard พังตรงไหน
- ส่งค่าหน่วยผิดโดยตั้งใจ แล้วจดว่า UI “ยังสวยแต่ผิดความหมาย”
- เปิด ex14 ลอง QoS + retain บน
lab/qos-demoแล้วให้เพื่อนเปิด subscriber (เช่น ex11) หลังคุณ retain
Pass when: มีโน้ต “สิ่งที่พัง / สิ่งที่ไม่พัง” อย่างน้อยหนึ่งบรรทัดใน lab notes
Lab E — Lossy / reconnect (recommended — part of the complete deliverable)
หัวข้อที่มีชื่อว่า “Lab E — Lossy / reconnect (recommended — part of the complete deliverable)”เลือกอย่างน้อยหนึ่งเคส แล้วกรอกตารางใน lab notes:
| เคส | ตัวอย่างการทำ |
|---|---|
| Stop / Start broker สั้น ๆ | ดู ex09 reconnecting → connected |
| หยุด publisher ชั่วคราว | ดูช่องว่าง · หรือ ex08 stale |
| ปิดแท็บ ex09 แล้วเปิดใหม่ | ถ้ามี retain บน state topic — ได้ค่าล่าสุดหรือไม่ |
Pass when: ระบุพฤติกรรมที่เห็น (drop / retry / reconnect / stale) โดยไม่เดา
Lab F — Optional ladder
หัวข้อที่มีชื่อว่า “Lab F — Optional ladder”ถ้าเหลือเวลา เลือกต่อ:
- ex10 publish จากเบราว์เซอร์
- ex12 gauges
- ex15 dashboard รวม
- Publish จากเฟิร์มแวร์จริงหลัง Wi‑Fi (C1 M06) เข้า broker ของแล็บ
Deliverables checklist
หัวข้อที่มีชื่อว่า “Deliverables checklist”- Lab A–C ผ่าน
- Lab E (หรืออย่างน้อย Lab D ถ้าเวลาไม่พอ)
- telemetry-mqtt-lab-notes.md กรอกครบ
- หลักฐานสกรีนช็อต: ex08 + ex09 (+ schema/lossy ตามที่ทำ)
Troubleshooting
หัวข้อที่มีชื่อว่า “Troubleshooting”| อาการ | แนวทาง |
|---|---|
| ex08 disconnected | Studio/bridge · Serve ถูกโฟลเดอร์ web-app/ |
| ex09 ค้าง connecting | Start broker · ตรวจ ws://127.0.0.1:8883/mqtt |
| connected แต่ Waiting for messages | ยังไม่มี publisher · topic ไม่ตรง · ตรวจ ?device= / ?topic= |
| Live Data ดี MQTT ว่าง | คนละท่อ — อย่าแก้เฟิร์มแวร์ก่อนเช็ค broker/topic |
| origin สับสน | อย่าผสม Simulator + Bitstream · เคลียร์แล้ว Link ใหม่ |
| Retain ทำให้ค่า “ค้าง” | ตรวจว่าทดลองบน topic lab ไม่ใช่ telemetry หนาแน่น |
Lesson · Lab notes · Table of Contents · M06 →
อ้างอิงบทเรียนนี้
ถ้านำบทเรียนนี้ไปสอน ทำสไลด์ หรือทำเอกสารต่อ ให้อ้างอิงด้วยข้อความนี้ ถ้าดัดแปลงเนื้อหา ให้เติม (ดัดแปลง)ต่อท้ายชื่อบทเรียน
"แล็บ: ท่อ telemetry และ MQTT บน Twin" จาก TESA Open Knowledge โดยสมาคมสมองกลฝังตัวไทย (Thai Embedded Systems Association: TESA) https://github.com/tesaiot/tesa-qualification-program สัญญาอนุญาต CC BY-NC 4.0
ข้อความอ้างอิงภาษาอังกฤษ: "Lab: Telemetry Pipeline and MQTT on Twin" 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/digital-twin/m05-telemetry-cloud/l02-lab/
บทเรียนนี้ดัดแปลงจากต้นฉบับด้านล่าง เมื่ออ้างอิงให้คงเครดิตต้นฉบับไว้ด้วย
https://github.com/drsanti/TESAIoT-Courses/blob/287c21814ba8c75f693136616dcd270349a15966/C2/M05/lab.md · Original content by Asst. Prof. Dr. Santi Nuratch (ผศ.ดร.สันติ นุราช), KMUTT. Course 2 (C2/) 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 Open Knowledge · © 2026 สมาคมสมองกลฝังตัวไทย (TESA) · CC BY-NC 4.0
เนื้อหาเผยแพร่ภายใต้ CC BY-NC 4.0 นำไปใช้ต่อในงานที่ไม่ใช่เพื่อการค้าได้ โปรดอ้างอิงสมาคมสมองกลฝังตัวไทย (TESA) ทุกครั้ง · วิธีอ้างอิง TESA