📖 ศูนย์การเรียนรู้และการเชื่อมต่อ MeOTA Platform

เอกสารและคู่มือการใช้งานระบบ MeOTA

คู่มือการเชื่อมต่อฮาร์ดแวร์ ESP32, การติดตั้ง Library, การออก Serial Number อัตโนมัติ, การจัดกลุ่มอุปกรณ์, และ REST API Reference

1. ภาพรวมสถาปัตยกรรม MeOTA Smart-AirSync™ (Architecture Overview)

MeOTA Platform คือระบบศูนย์กลางการบริหารจัดการอุปกรณ์ IoT และระบบอัปเดตเฟิร์มแวร์ผ่านอากาศ (Over-The-Air Update) ระดับองค์กร ขับเคลื่อนด้วยสถาปัตยกรรม MeOTA Smart-AirSync™ ที่ออกแบบมาเพื่อให้อุปกรณ์ IoT ในโปรเจกต์ต่างๆ เช่น Smart Farm, ตู้ควบคุมอุตสาหกรรม, เซนเซอร์สิ่งแวดล้อม และสมาร์ทมิเตอร์ สามารถอัปเดตโค้ดเวอร์ชันใหม่ได้ทางไกลอย่างปลอดภัยและเสถียรที่สุด

🌾 รองรับ Universal IoT

แบ่งกลุ่มอุปกรณ์ตามแปลงฟาร์ม โรงเรือน หรือโรงงาน พร้อมกราฟวงกลมวิเคราะห์สัดส่วน

🛡️ ป้องกันเครื่อง Brick

สถาปัตยกรรม Dual Boot A/B ตรวจสอบ SHA-256 และถอยกลับอัตโนมัติหากโค้ดมีบั๊ก

⚡ Cloud Platform เสถียรภาพสูง

ระบบคลาวด์กระจายเฟิร์มแวร์ความเร็วสูง พร้อมการบาลานซ์การเชื่อมต่ออัตโนมัติ

เริ่มต้นด่วนใน 3 นาที

⚡ ขั้นตอนการเพิ่มอุปกรณ์เข้าระบบให้ง่ายและชัดเจนที่สุด

เพียงทำตาม 3 ขั้นตอนด้านล่างนี้ คุณก็สามารถเชื่อมต่ออุปกรณ์และพร้อมอัปเดตเฟิร์มแวร์ทางไกลได้ทันที:

1

สเต็ป 1: ลงทะเบียนในระบบ

ไปที่เมนู จัดการอุปกรณ์ (Devices) แล้วกดปุ่ม '+ ลงทะเบียนอุปกรณ์ใหม่' (สามารถกดปุ่ม '🎲 สุ่มรหัสให้อัตโนมัติ' เพื่อความสะดวกรวดเร็วได้ทันที)

2

สเต็ป 2: คัดลอกโค้ด Arduino

กดปุ่ม '💻 โค้ดเชื่อมต่อ' ในตารางอุปกรณ์ ระบบจะสร้างโค้ด Arduino C++ ที่ใส่ URL เซิร์ฟเวอร์และ Device ID ของอุปกรณ์นั้นๆ ให้เสร็จเรียบร้อยพร้อมคัดลอก

3

สเต็ป 3: อัปโหลดบอร์ด & ออนไลน์

ใส่ชื่อและรหัส Wi-Fi ของคุณ แล้วกด Upload ลงบอร์ด ESP32 เมื่อบอร์ดต่ออินเทอร์เน็ตสำเร็จ ไฟสถานะบนหน้าเว็บจะเปลี่ยนเป็นสีเขียว ออนไลน์ ทันที!

💡
ข้อแนะนำสำคัญในการตั้งค่า Arduino IDE สำหรับระบบ OTA:

ก่อนอัปโหลดโค้ด ให้ไปที่เมนู Tools ➔ Partition Scheme แล้วเลือกเป็น 'Minimal SPIFFS (1.9MB OTA with spiffs)' เพื่อให้หน่วยความจำ Flash ของบอร์ดแบ่งออกเป็น 2 พาร์ทิชัน (A/B) รองรับการสลับดาวน์โหลดเฟิร์มแวร์ใหม่ผ่านอากาศได้อย่างปลอดภัย

2. วิธีการติดตั้ง MeOTA Library ใน Arduino IDE

  1. กดปุ่มดาวน์โหลดไฟล์ MeOTA.zip
  2. เปิดโปรแกรม Arduino IDE บนคอมพิวเตอร์ของคุณ
  3. ไปที่เมนู Sketch ➔ Include Library ➔ Add .ZIP Library...
  4. เลือกไฟล์ MeOTA.zip ที่ดาวน์โหลดมา
  5. เมื่อติดตั้งสำเร็จ สามารถเปิดตัวอย่างได้ที่เมนู File ➔ Examples ➔ MeOTA ➔ ESP32_WiFi_OTA

3. ตัวอย่างโค้ดเริ่มต้น (ESP32 Wi-Fi Client)

คัดลอกโค้ดตัวอย่างด้านล่างนี้ลงใน Arduino IDE (💡 แนะนำ: คุณสามารถกดปุ่ม '💻 โค้ดเชื่อมต่อ' ในหน้าจัดการอุปกรณ์เพื่อรับโค้ดที่กรอกรหัส Device ID และ Server URL ของคุณให้เสร็จสรรพได้ทันที):

#include <WiFi.h>
#include <MeOTA.h>

const char* ssid     = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";

// MeOTA Enterprise Cloud Endpoint & Hardware ID
const char* otaServer    = "https://ota.258877.xyz";
const char* deviceId     = "FARM_NODE_01";
const char* currentFwVer = "1.0.0";

MeOTA ota;
unsigned long lastCheck = 0;

void setup() {
  Serial.begin(115200);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  // Initialize MeOTA client (Auto-provisions SN on first connect)
  ota.begin(otaServer, deviceId, currentFwVer);

  // Confirm successful boot to cancel ESP32 automatic rollback
  ota.markAppValid();

  // Send initial heartbeat (Battery 95%, Wi-Fi RSSI)
  ota.sendHeartbeat(95, WiFi.RSSI());
}

void loop() {
  // Check for firmware updates every 60 seconds
  if (millis() - lastCheck > 60000) {
    lastCheck = millis();

    MeOTAUpdateInfo update = ota.checkUpdate();
    if (update.updateAvailable) {
      Serial.printf("New version %s found! Upgrading...\n", update.targetVersion.c_str());
      ota.updateFromWiFi(update);
    } else {
      Serial.println("Firmware is up to date.");
    }
  }
}

4. ตัวอย่างการส่งค่าเซนเซอร์ & Smart Farm Telemetry

MeOTA ไม่ได้จำกัดอยู่แค่อัปเดตเฟิร์มแวร์เท่านั้น บอร์ดยังสามารถส่งค่าเซนเซอร์ขึ้นคลาวด์เพื่อมอนิเตอร์บน Dashboard ได้:

// Send farm sensor telemetry: Soil Moisture, Air Temp, Humidity, Valve Status
DynamicJsonDocument doc(256);
doc["soil_moisture"] = 65.4;
doc["temperature"]   = 28.5;
doc["humidity"]      = 74.2;
doc["valve_state"]   = "OPEN";
doc["group"]         = "Smart Farm Zone A";

String jsonString;
serializeJson(doc, jsonString);

// Push telemetry to MeOTA cloud
ota.sendTelemetryJson(jsonString);

5. ระบบ Dual-Boot A/B Safe Rollback ป้องกันอุปกรณ์ค้าง (Anti-Brick)

ESP32 มีการแบ่ง Flash Memory เป็น 2 ส่วน (ota_0 และ ota_1):

  • เมื่อดาวน์โหลดเฟิร์มแวร์ใหม่ ระบบจะเขียนลงพาร์ทิชันสำรองและสลับให้บูตจากพาร์ทิชันนั้นในสถานะ PENDING_VERIFY
  • เมื่อเครื่องบูตขึ้นมาและเชื่อมต่อเน็ตสำเร็จ ฟังก์ชัน ota.markAppValid() จะถูกเรียกเพื่อยืนยันว่าเฟิร์มแวร์ทำงานได้ปกติ
  • หากเฟิร์มแวร์ใหม่มีบั๊กหรือแครช (Boot Loop): ESP32 Hardware Bootloader จะถอยกลับ (Rollback) ไปรันเฟิร์มแวร์เวอร์ชันเดิมทันที เครื่องจึงไม่มีวันดับหรือค้าง (Anti-brick)!

6. ระบบออก Serial Number อัตโนมัติ & การจัดกลุ่มโครงการ (Fleet Grouping)

MeOTA ออกแบบมาเพื่อการบริหารจัดการอุปกรณ์ IoT เชิงพาณิชย์ขนาดใหญ่ ด้วยระบบลงทะเบียนอัตโนมัติและระบบจัดกลุ่มอุปกรณ์เต็มรูปแบบ:

🏷️ การออก Serial Number อัตโนมัติ

เมื่อบอร์ดใหม่เชื่อมต่อครั้งแรก ระบบจะออกหมายเลข Serial Number สากล เช่น SN-2026-XXXX-XXXX และบันทึก Physical MAC ให้ทันทีโดยไม่ต้องลงทะเบียนล่วงหน้า

📊 การจัดกลุ่มโครงการ & กราฟวงกลม

จัดกลุ่มอุปกรณ์ตามพื้นที่ใช้งาน เช่น แปลงฟาร์ม โรงเรือน โรงงาน พร้อมหน้าแดชบอร์ดแสดงผลกราฟวงกลมแสดงจำนวนเครื่องและเปอร์เซ็นต์ (%) เพื่อความสะดวกในการสร้างแคมเปญ OTA แยกกลุ่ม

7. REST API Reference (Clean URLs)

อุปกรณ์ฮาร์ดแวร์ทุกประเภทสามารถเชื่อมต่อผ่าน REST API มาตรฐานได้:

GET /api/ota/check?device_id={ID}&version={VER}

ตรวจสอบว่ามีแคมเปญอัปเดตเฟิร์มแวร์ใหม่สำหรับอุปกรณ์นี้หรือไม่

GET /api/ota/download?id={RELEASE_ID}&device_id={ID}

ดาวน์โหลดไฟล์ไบนารี .bin โดยรองรับ HTTP Range Request เพื่อ Resume หากเน็ตหลุด

POST /api/ota/report

รายงานผลลัพธ์การติดตั้ง (Status: success หรือ failed)

POST /api/telemetry

ส่ง Heartbeat, ค่าระดับแบตเตอรี่, ความแรงสัญญาณ และข้อมูลเซนเซอร์ในรูปแบบ JSON

8. คำถามที่พบบ่อย (Troubleshooting & FAQ)

Q: อุปกรณ์เชื่อมต่อไม่ได้ แจ้งเตือน HTTP Error 404 ทำอย่างไร?

A: ตรวจสอบว่าในโค้ด Arduino ใส่ URL ชี้มาที่ https://ota.258877.xyz โดยไม่ต้องมี slash ปิดท้าย และไม่ต้องมี .php

Q: ผู้ใช้หลายคนสามารถสมัครและแยกจัดการอุปกรณ์ของตัวเองได้หรือไม่?

A: ได้ครับ ทุกคนที่สมัครสมาชิกที่ /register จะได้รับแดชบอร์ดส่วนตัวแยกจัดการเฉพาะอุปกรณ์ของตนเองทันที และผู้ดูแลระบบ (Admin) สามารถจัดการสิทธิ์ผู้ใช้งานได้จากเมนู จัดการผู้ใช้