การดู : 0

12/04/2026 18:16น.

EP.117 การเชื่อมต่อ IoT Device หลายตัวด้วย WebSocket (Real-time IoT Network)

EP.117 การเชื่อมต่อ IoT Device หลายตัวด้วย WebSocket (Real-time IoT Network)

#ระบบเรียลไทม์

#IoT

#Go

#WebSocket

ระบบ IoT สมัยใหม่ไม่ได้ประกอบด้วยแค่อุปกรณ์เดียวอีกต่อไป แต่มีหลายร้อยหรือหลายพันอุปกรณ์ที่ต้องเชื่อมต่อพร้อมกัน เช่น:

  • Sensor วัดอุณหภูมิ/ความชื้น
  • อุปกรณ์ Smart Home
  • เครื่องจักรหรือหุ่นยนต์ในโรงงาน
  • GPS Tracker และระบบติดตามรถ

 

ทุกอุปกรณ์ต้องการการสื่อสาร แบบเรียลไทม์ที่เสถียร, ประหยัดพลังงาน, และ ปลอดภัย

 

ทำไมต้องใช้ WebSocket กับ IoT?

 

WebSocket เป็นหนึ่งในเทคโนโลยีที่เหมาะกับงาน IoT แบบ Real-time มากที่สุด เพราะ:

✅ เชื่อมต่อครั้งเดียว ส่งข้อมูลได้ต่อเนื่อง
✅ Latency ต่ำระดับมิลลิวินาที
✅ ประหยัด Bandwidth
✅ รองรับ Full-duplex Communication

 

🧱 1. สถาปัตยกรรมระบบ IoT ด้วย WebSocket

 

ระบบ IoT แบบ Real-time จะมีองค์ประกอบหลัก ๆ 4 ส่วน:

1) IoT Device (Client)
อาจเป็น Sensor, ESP32, Raspberry Pi, หรือแม้แต่ Mobile App ที่ initiate การเชื่อมต่อ WebSocket

 

2) WebSocket Gateway (Server)
หน้าที่:

  • ยืนยันตัวตนอุปกรณ์
  • รับ/ส่งข้อมูลจาก Sensor
  • ส่งต่อข้อมูลไปยัง DB หรือ Message Broker
  • Broadcast ให้ Dashboard แบบเรียลไทม์

 

3) Message Broker / Data Stream Layer
เช่น Redis Pub/Sub, Kafka, หรือ NATS ใช้กระจายข้อมูลจากอุปกรณ์ไปยังหลายบริการพร้อมกัน

 

4) Monitoring Dashboard
ส่วนแสดงข้อมูลแบบ Real-time เช่น หน้าจอดูสภาพเครื่องจักรในโรงงาน

 

🔐 2. การยืนยันตัวตนอุปกรณ์ (Device Authentication)

 

Security คือสิ่งสำคัญที่สุดในระบบ IoT

 

วิธีที่นิยมใช้:

 

✅ Device Token
สร้าง token เฉพาะสำหรับแต่ละ device เช่น:

device_id: SENSOR-01  
device_secret: 98asdh9283dj29

 

✅ JWT ที่ผูกกับ Device ID
เหมาะกับระบบที่มีการจัดการขนาดใหญ่

 

✅ IP Whitelist (ใช้ร่วมกันในระบบเครือข่ายปิด)

 

📡 3. การแมปอุปกรณ์กับ Connection

 

โค้ดฝั่ง Server ต้องแมป device_id กับ websocket.Conn

var devices = make(map[string]*websocket.Conn)

type DeviceAuth struct {
    DeviceID string `json:"device_id"`
    Token    string `json:"token"`
}

func handleDevice(c *websocket.Conn) {
    var auth DeviceAuth
    c.ReadJSON(&auth)

    if !validateToken(auth.DeviceID, auth.Token) {
        c.WriteMessage(websocket.TextMessage, []byte("AUTH_FAILED"))
        c.Close()
        return
    }

    devices[auth.DeviceID] = c
    fmt.Println("Device connected:", auth.DeviceID)
}

 

📊 4. การส่งข้อมูล Sensor แบบเรียลไทม์

 

{
  "device_id": "TEMP-01",
  "temperature": 26.5,
  "humidity": 80
}
type SensorData struct {
    DeviceID    string  `json:"device_id"`
    Temperature float64 `json:"temperature"`
    Humidity    float64 `json:"humidity"`
}

func listenDevice(deviceID string, conn *websocket.Conn) {
    for {
        var data SensorData
        if err := conn.ReadJSON(&data); err != nil {
            delete(devices, deviceID)
            return
        }

        broadcastToDashboard(data) // ส่งข้อมูลไป Dashboard
    }
}

 

🔄 5. Bandwidth Management จัดการการส่งข้อมูลถี่

 

Sensor บางชนิดส่งข้อมูลทุก 100ms หากไม่ควบคุม อาจทำให้ Server ล่มได้

 

วิธีแก้ปัญหา:

  • ✅ Rate Limit ต่ออุปกรณ์ (เช่น 10 ข้อความ/วินาที)
  • ✅ Message Aggregation รวมข้อมูลหลายชุดก่อนส่ง
  • ✅ Adaptive Data Rate ปรับความถี่ตามสถานการณ์
  • ✅ Compression เช่น GZIP หรือใช้ Protobuf

 

🖥 6. ตัวอย่าง Dashboard Listener

 

func dashboardListener() {
    conn, _, err := websocket.DefaultDialer.Dial("ws://localhost:8080/dashboard", nil)
    if err != nil { panic(err) }

    for {
        _, msg, _ := conn.ReadMessage()
        fmt.Println("New Sensor Update:", string(msg))
    }
}

 

📈 7. การขยายระบบ (Scaling) รองรับ 10,000+ Device

 

  • ✅ Horizontal Scaling: รัน WebSocket หลาย instance
  • ✅ Redis Pub/Sub: กระจาย message ระหว่าง instance
  • ✅ Kubernetes + HPA: Auto-scale ตามภาระงาน
  • ✅ Sharding Device: แบ่ง device เป็นกลุ่ม เช่น shard-01, shard-02

 

🧪 ท้าให้ลอง!

 

ลองสร้างระบบ IoT Demo:

  1. เครื่องจำลอง (ESP32 หรือ Go script) ส่งอุณหภูมิทุก 1 วินาที
  2. WebSocket Server รับและบันทึกลง DB
  3. Dashboard รับข้อมูลแบบ Real-time
  4. เพิ่มระบบแจ้งเตือนเมื่ออุณหภูมิเกิน Threshold

 

นี่คือพื้นฐานของ Smart Home, Smart Factory และ Smart Farming!

 


 

🔮 EP ถัดไป การรวม AI เข้ากับ WebSocket

 

EP.118 เราจะสร้างระบบ AI + WebSocket สำหรับ IoT สอนการใช้ AI/ML ตรวจจับ Anomaly, วิเคราะห์ข้อมูล sensor, และ Predictive Maintenance แบบเรียลไทม์!

 

หากคุณทำระบบนี้ได้… แสดงว่าคุณก้าวสู่ระดับโปรของระบบ Real-time เต็มตัวแล้ว! 🎯 แล้วพบกันในตอนต่อไปครับ!