ระบบ IoT

แพลตฟอร์ม IoT FastBee เป็นโซลูชัน IoT ที่มีฟังก์ชันครบถ้วน ออกแบบมาสำหรับธุรกิจขนาดกลางและขนาดเล็กรวมถึงผู้ใช้รายบุคคล แพลตฟอร์มนี้มีเครื่องมือและฟังก์ชันที่ใช้งานง่ายหลากหลาย ช่วยให้ผู้ใช้จัดการและควบคุมอุปกรณ์อัจฉริยะต่าง ๆ ได้อย่างมีประสิทธิภาพ ต่อไปนี้เป็นคำแนะนำโดยละเอียดเกี่ยวกับแพลตฟอร์ม IoT FastBee:
ภาพรวมหน้านี้
การเปรียบเทียบเวอร์ชัน
FastBee มีสามเวอร์ชัน: รุ่นโอเพนซอร์ส รุ่นเชิงพาณิชย์ และรุ่นคลัสเตอร์ ความแตกต่างหลักมีดังนี้ นโยบายใบอนุญาตฉบับสมบูรณ์และรายการฟังก์ชันรายรายการดูได้ที่ใบอนุญาตเชิงพาณิชย์
| มิติ | รุ่นโอเพนซอร์ส | รุ่นเชิงพาณิชย์ | รุ่นคลัสเตอร์ |
|---|---|---|---|
| สัญญาอนุญาต | AGPL v3 ฟรี จำกัดการใช้งานที่ไม่ใช่เชิงพาณิชย์ | ใบอนุญาตเชิงพาณิชย์ถาวร (ติดตั้งใบรับรอง) | ใบอนุญาตเชิงพาณิชย์ถาวร (ติดตั้งใบรับรอง) |
| ซอร์สโค้ดและการอัปเดต | ซอร์สโค้ดเปิดเผย อัปเดตผ่าน Gitee/GitHub | หลังได้รับอนุญาต อัปเดตผ่าน Git ส่วนตัว พร้อมอัปเดตซอร์สโค้ดฟรีหนึ่งปี | เหมือนรุ่นเชิงพาณิชย์ |
| รูปแบบการปรับใช้ | ปรับใช้เครื่องเดียวแบบคลิกเดียวด้วย Docker Compose | ปรับใช้เครื่องเดียว (รองรับการติดตั้งด่วนด้วย Docker Compose) | คลัสเตอร์บริการ FMQ + คลัสเตอร์เว็บ ทำงานร่วมกับ Kafka และโหลดบาลานเซอร์เพื่อความพร้อมใช้งานสูง |
| โปรโตคอลการเชื่อมต่อ | MQTT, GB/T 28181 (เฉพาะถ่ายทอดสด) | เพิ่มโปรโตคอล TCP, UDP, CoAP, HTTP, Modbus, JT808 และอื่น ๆ | เหมือนรุ่นเชิงพาณิชย์ |
| ขอบเขตฟังก์ชัน | ความสามารถหลัก เช่น ผลิตภัณฑ์/อุปกรณ์/Thing Model, Rule Script, การจัดการสิทธิ์ | เพิ่มจอภาพขนาดใหญ่ ศูนย์แจ้งเตือน หลายผู้เช่า อัปเกรดเฟิร์มแวร์ OTA, Data Bridging การจัดการใบงาน การจัดการซิม IoT และอื่น ๆ (Web SCADA และลำโพงอัจฉริยะเป็นโมดูลเสริม) | ฟังก์ชันเหมือนรุ่นเชิงพาณิชย์ รองรับจำนวนอุปกรณ์ต่างกัน |
| สถานการณ์ที่เหมาะสม | การเรียนรู้ส่วนบุคคลและการใช้งานที่ไม่ใช่เชิงพาณิชย์ | โครงการเชิงพาณิชย์ของธุรกิจขนาดกลางและขนาดเล็ก | โครงการเชิงพาณิชย์ที่มีอุปกรณ์เชื่อมต่อจำนวนมากและต้องการความพร้อมใช้งานสูง |
1. แนะนำแพลตฟอร์ม
- พื้นหลังโปรเจกต์: เดิมชื่อ wumei-smart (物美智能) ต่อมาเปลี่ยนชื่อเป็น FastBee (蜂信物联) การเปลี่ยนแปลงนี้ไม่เพียงสะท้อนการปรับปรุงแบรนด์ แต่ยังเป็นสัญญาณของการพัฒนาและการขยายขอบเขตบริการในด้าน IoT
- การสนับสนุนหลัก: แบ็กเอนด์ของแพลตฟอร์มใช้เฟรมเวิร์ก Spring Boot ส่วนฟรอนต์เอนด์ใช้เทคโนโลยี Vue และอื่น ๆ การเลือกเทคโนโลยีเหล่านี้ช่วยให้แพลตฟอร์มใช้งานง่ายและมีประสบการณ์ผู้ใช้ที่ดี
2. ฟังก์ชันระบบ
- การจัดการผลิตภัณฑ์: รองรับรายละเอียดผลิตภัณฑ์ Thing Model หมวดหมู่ และการอนุญาตอุปกรณ์ ช่วยให้องค์กรจัดระเบียบและจัดการผลิตภัณฑ์อัจฉริยะได้ดียิ่งขึ้น
- การจัดการอุปกรณ์: มีฟังก์ชันการจัดการ เช่น รายละเอียดอุปกรณ์ การจัดกลุ่ม การบันทึกล็อก และการตรวจสอบสถานะแบบเรียลไทม์ เพื่อให้มั่นใจว่าอุปกรณ์ทำงานอย่างมีประสิทธิภาพและปลอดภัย
- การจัดการ Thing Model: อนุญาตให้กำหนดคุณสมบัติ ฟังก์ชัน และเหตุการณ์ของอุปกรณ์ เพื่อให้อุปกรณ์โต้ตอบกับระบบคลาวด์ได้อย่างมีประสิทธิภาพ
- Rule Engine: รองรับการเขียนกฎด้วย Groovy (ไวยากรณ์เหมือน Java) ทำให้ระบบประมวลผลตรรกะทางธุรกิจที่ซับซ้อนได้โดยอัตโนมัติ
- Scene Linkage: รองรับการกำหนดค่าฉากอัตโนมัติแบบตรงหรือแบบภาพ เพื่อให้อุปกรณ์อัจฉริยะทำงานร่วมกันอย่างไร้รอยต่อ
- ศูนย์แจ้งเตือน: เชื่อมต่อช่องทางการสื่อสารหลากหลาย เช่น เสียงพูด SMS และ WeChat Work เพื่อแจ้งความผิดปกติหรือข้อขัดข้องของอุปกรณ์ทันที และตอบสนองได้อย่างรวดเร็ว
- ระบบหลายผู้เช่า: รองรับการแยกข้อมูลและการกำหนดค่าอิสระ เหมาะกับสภาพแวดล้อมหลายผู้เช่า เพิ่มความยืดหยุ่นและความปลอดภัยของระบบ
- การเชื่อมต่อการเฝ้าดูวิดีโอ: รองรับอุปกรณ์เฝ้าดูตามโปรโตคอล GB/T28181 มีฟังก์ชันถ่ายทอดสด บันทึกและเล่นย้อนหลัง และควบคุม PTZ เหมาะกับความต้องการด้านการเฝ้าดูความปลอดภัย
- การจัดการฉาก: รองรับการรวมอุปกรณ์หลายตัวเพื่อแสดงผล ขยายตัวแปรแบบป้อนข้อมูลและแบบคำนวณได้ รองรับการคำนวณข้อมูลที่ซับซ้อน
- Data Bridging: ทำหน้าที่เป็นสะพานเชื่อมกับระบบข้อมูลภายนอก รองรับการนำเข้าและส่งออกข้อมูล
- ศูนย์ข้อมูล: รองรับการสร้างรายงานข้อมูล ดูข้อมูลย้อนหลัง และวิเคราะห์ข้อมูลอุปกรณ์
- โปรโตคอลการสื่อสาร: รองรับโปรโตคอลการสื่อสารอุปกรณ์ที่หลากหลาย ได้แก่ Mqtt, Modbus, Tcp, GB28182, Http, Coap และอื่น ๆ
- ซิม IoT: จัดการซิมการ์ดที่อุปกรณ์ใช้เชื่อมต่อ รองรับการเชื่อมต่อกับแพลตฟอร์มตัวแทนจำหน่ายต่าง ๆ ดูสถานะและปริมาณข้อมูลของซิมได้ รองรับการแจ้งเตือนปริมาณข้อมูล
- การจัดการใบงาน: รองรับการจัดการงานบำรุงรักษา ซ่อมแซม และตรวจสอบอุปกรณ์หรือสินทรัพย์แบบอัตโนมัติ อัจฉริยะ และครบวงจร
3. เทคโนโลยีที่ใช้
- เทคโนโลยีแบ็กเอนด์: ได้แก่ Spring Boot, MyBatis, Spring Security, Jwt, Redis, TDengine และอื่น ๆ เพื่อความเสถียรและประสิทธิภาพของบริการแบ็กเอนด์
- เทคโนโลยีฟรอนต์เอนด์: ใช้เทคโนโลยีฟรอนต์เอนด์สมัยใหม่ เช่น ES6, ES7, Vue, Vuex, uView, H5 เพิ่มความโต้ตอบและประสบการณ์ภาพของส่วนติดต่อผู้ใช้
- การสนับสนุนมือถือ: รองรับหลายแพลตฟอร์มมือถือ เช่น มินิโปรแกรม WeChat, Android และ iOS พัฒนาแอปข้ามแพลตฟอร์มผ่าน Uniapp ช่วยให้ผู้ใช้ใช้งานและจัดการบนอุปกรณ์ต่าง ๆ ได้สะดวก
4. สถานการณ์การใช้งาน
FastBee เหมาะกับหลากหลายสถานการณ์ เช่น บ้านอัจฉริยะ สำนักงานอัจฉริยะ ชุมชนอัจฉริยะ การเฝ้าสังเกตการเกษตร การเฝ้าสังเกตทรัพยากรน้ำ และการควบคุมทางอุตสาหกรรม สถานการณ์เหล่านี้ครอบคลุมความต้องการตั้งแต่ระดับครัวเรือนถึงระดับอุตสาหกรรม แสดงให้เห็นศักยภาพการใช้งานที่กว้างขวางของ FastBee ในด้าน IoT

5. สถาปัตยกรรมระบบ
┌──────────────────────────────────────────────────────────────────┐
│ 浏览器/移动端 │
│ Vue2 Web(PC) + Vant(H5 / 小程序) │
└───────────────────────────────┬──────────────────────────────────┘
│ HTTP REST / WebSocket(MQTT)
▼
┌──────────────────────────────────────────────────────────────────┐
│ Nginx(反向代理) │
│ / → 静态前端资源 /prod-api/ → 后端 │
└───────────────────────────────┬──────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────┐
│ Spring Boot 服务(8080) │
│ ┌────────────────────────────────────────────────────────────┐ │
│ │ fastbee-open-api(Controller 层) │ │
│ │ device / product / ruleEngine / media / system / ... │ │
│ └────────────────────────┬───────────────────────────────────┘ │
│ ┌─────────────────────────▼──────────────────────────────────┐ │
│ │ fastbee-service(Service 层) │ │
│ │ IotService / SceneService / NotifyService / ... │ │
│ └────────────────────────┬───────────────────────────────────┘ │
│ ┌─────────────────────────▼──────────────────────────────────┐ │
│ │ fastbee-server(协议接入) │ │
│ │ MQTT Broker(1883) / HTTP(8081) / CoAP(5683) / TCP(8888) │ │
│ └────────────────────────────────────────────────────────────┘ │
└───────────┬──────────────────┬────────────────────┬──────────────┘
│ │ │
MySQL Redis TDengine
(元数据/配置) (缓存/实时值) (时序历史数据)6. โครงสร้างโค้ด
fastbee/
├── vue/ ← โปรเจกต์ฟรอนต์เอนด์ Vue2
│ ├── src/
│ │ ├── api/ ← ฟังก์ชันเรียก API ของแต่ละโมดูล
│ │ ├── assets/ ← ทรัพยากรสแตติก (รูปภาพ/ไอคอน/สไตล์)
│ │ ├── components/ ← คอมโพเนนต์ส่วนกลาง (28 ตัว)
│ │ ├── directive/ ← directive กำหนดเองระดับโกลบอล
│ │ ├── lang/ ← แพ็กเกจภาษาสำหรับ i18n
│ │ ├── layout/ ← เลย์เอาต์เฟรมหลัก
│ │ ├── plugins/ ← การลงทะเบียนปลั๊กอิน Vue
│ │ ├── router/ ← การกำหนดค่าเส้นทาง
│ │ ├── store/ ← การจัดการสถานะ Vuex
│ │ ├── utils/ ← ฟังก์ชันอรรถประโยชน์ (request/mqttTool และอื่น ๆ)
│ │ └── views/ ← วิวหน้าธุรกิจ
│ ├── package.json
│ └── vue.config.js
│
├── springboot/ ← โปรเจกต์แบ็กเอนด์ Spring Boot แบบหลายโมดูล
│ ├── fastbee-admin/ ← คอนโทรลเลอร์ฝั่งผู้ดูแล + การกำหนดค่า
│ ├── fastbee-open-api/ ← ชั้นอินเทอร์เฟซ Open API (Controller ธุรกิจ IoT)
│ ├── fastbee-service/ ← ชั้นบริการธุรกิจ (iot-service / system-service)
│ ├── fastbee-server/ ← บริการเชื่อมต่อโปรโตคอล
│ │ ├── iot-server-core/ ← ตรรกะบริการหลักของ IoT
│ │ ├── mqtt-broker/ ← Netty MQTT Broker ในตัว
│ │ ├── http-server/ ← การเชื่อมต่ออุปกรณ์ผ่าน HTTP
│ │ ├── coap-server/ ← การเชื่อมต่ออุปกรณ์ผ่าน CoAP
│ │ ├── sip-server/ ← การเชื่อมต่อวิดีโอผ่าน SIP
│ │ └── boot-strap/ ← จุดเริ่มต้นการรัน
│ ├── fastbee-protocol/ ← การแยกวิเคราะห์โปรโตคอล (Modbus/กำหนดเอง)
│ ├── fastbee-mq/ ← การผสานคิวข้อความ
│ ├── fastbee-notify/ ← บริการแจ้งเตือน (SMS/อีเมล/WeChat และอื่น ๆ)
│ ├── fastbee-plugs/ ← ปลั๊กอิน (OSS/OAuth/Quartz/สร้างโค้ด)
│ ├── fastbee-iot-data/ ← การประมวลผลข้อมูล IoT
│ ├── fastbee-record/ ← บริการบันทึกวิดีโอ
│ ├── fastbee-common-extend/ ← ส่วนขยายเครื่องมือส่วนกลาง
│ └── sql/ ← สคริปต์เริ่มต้น/อัปเกรดฐานข้อมูล
│
├── docker/ ← ไฟล์ปรับใช้ Docker Compose
└── sdk/ ← SDK ฝั่งอุปกรณ์7. คำอธิบายโมดูลฟังก์ชัน
การจัดการอุปกรณ์
| ฟังก์ชัน | คำอธิบาย |
|---|---|
| ลงทะเบียน/นำเข้าอุปกรณ์ | เพิ่มอุปกรณ์ด้วยตนเองหรือนำเข้าจำนวนมากผ่าน Excel |
| จัดสรร/เรียกคืนอุปกรณ์ | จัดสรรอุปกรณ์ตามมิติองค์กร/ผู้ใช้ รองรับการเรียกคืน |
| รีเฟรชสถานะแบบเรียลไทม์ | อัปเดตสถานะออนไลน์/ออฟไลน์แบบเรียลไทม์ผ่านการสมัครรับ MQTT /+/{sn}/status/post |
| คิวอาร์โค้ดอุปกรณ์ | สร้างคิวอาร์โค้ดสำหรับผูกอุปกรณ์ รองรับการพิมพ์ |
| อัปเกรดเฟิร์มแวร์ OTA | การจัดการเวอร์ชัน + การส่งงานอัปเกรดลง |
| ส่งคำสั่งลง | ส่งค่าคุณสมบัติ Thing Model ลง / เรียกฟังก์ชัน |
| โหมด Shadow | เมื่ออุปกรณ์ออฟไลน์ เก็บค่าล่าสุดไว้ใน Shadow |
เส้นทางหน้าเว็บ: /iot/device/list → views/iot/device/index.vue
การจัดการผลิตภัณฑ์
| ฟังก์ชัน | คำอธิบาย |
|---|---|
| เทมเพลตผลิตภัณฑ์ | กำหนดประเภทอุปกรณ์และ Thing Model |
| Thing Model | สามองค์ประกอบ: คุณสมบัติ (Property) / ฟังก์ชัน (Function) / เหตุการณ์ (Event) |
| การกำหนดค่าโปรโตคอล | MQTT / HTTP / CoAP / TCP / Modbus / JT808 |
| การเผยแพร่ผลิตภัณฑ์ | หลังเผยแพร่ อุปกรณ์จะแก้ไข Thing Model ไม่ได้อีก |
| ตัวแก้ไขแบบลากวาง | กำหนดค่าแผงสถานะการทำงานของอุปกรณ์แบบภาพ |
Rule Engine
| ฟังก์ชัน | คำอธิบาย |
|---|---|
| Scene Linkage | จัดวางแบบภาพ: ทริกเกอร์ → เงื่อนไข → การกระทำ (ขับเคลื่อนด้วย LiteFlow) |
| การแจ้งเตือนอุปกรณ์ | ทริกเกอร์ตามค่าขีดจำกัด/ช่วง/บูลีน รองรับช่วงเวลาเงียบ |
| Rule Script | สคริปต์ Groovy/JavaScript ประมวลผลข้อมูลดิบ |
| ทริกเกอร์แบบคลิกเดียว | ทริกเกอร์ Scene Linkage ด้วยตนเอง |
ศูนย์ข้อมูล
| ฟังก์ชัน | คำอธิบาย |
|---|---|
| ข้อมูลแบบเรียลไทม์ | ค่า Thing Model ล่าสุดที่อุปกรณ์รายงาน (แคช Redis) |
| ข้อมูลย้อนหลัง | ค้นหาตามช่วงเวลา (ฐานข้อมูลอนุกรมเวลา TDengine) |
| รายงานข้อมูล | สร้าง Excel ตามกำหนดเวลา รองรับการแจ้งเตือนทางอีเมล |
| ส่งออกข้อมูล | ดาวน์โหลดข้อมูลย้อนหลัง |
การเฝ้าดูวิดีโอ
| ฟังก์ชัน | คำอธิบาย |
|---|---|
| การเชื่อมต่ออุปกรณ์ | รองรับโปรโตคอล GB28181 (SIP) |
| เล่นสด | RTMP / RTSP / FLV / HLS / WebRTC |
| เล่นวิดีโอย้อนหลัง | ค้นหาวิดีโอย้อนหลังตามช่วงเวลา (ZLMediaKit) |
| ควบคุม PTZ | ส่งคำสั่ง PTZ ลง |
| สนทนาเสียง | วิธี SIP TCP แบบเชิงรุก |
บริการแจ้งเตือน
ช่องทางที่รองรับ: SMS (Alibaba Cloud/Tencent), อีเมล, บัญชีสาธารณะ WeChat, WeChat Work, DingTalk, HTTP Push, MQTT Push
การจัดการระบบ
ผู้ใช้/บทบาท/องค์กร (หลายผู้เช่า)/เมนู/พจนานุกรม/ล็อก/การตรวจสอบระบบ/การสร้างโค้ด
8. เอกสารอินเทอร์เฟซ API
เอกสารอินเทอร์เฟซฉบับสมบูรณ์เข้าถึงได้ผ่าน Swagger:
http://localhost:8080/swagger-ui/index.html(สภาพแวดล้อมการพัฒนา)
อินเทอร์เฟซทั้งหมดใช้รูปแบบการตอบกลับแบบเดียวกัน:
{
"code": 200,
"msg": "ดำเนินการสำเร็จ",
"data": { ... }
}รูปแบบการตอบกลับของรายการแบบแบ่งหน้า:
{
"code": 200,
"msg": "ดำเนินการสำเร็จ",
"rows": [ ... ],
"total": 100
}อินเทอร์เฟซการยืนยันตัวตน
| เมธอด | เส้นทาง | คำอธิบาย |
|---|---|---|
| POST | /login | เข้าสู่ระบบด้วยบัญชีและรหัสผ่าน |
| POST | /register | ลงทะเบียนผู้ใช้ |
| POST | /logout | ออกจากระบบ |
| GET | /getInfo | ดึงข้อมูลผู้ใช้ปัจจุบัน |
| GET | /captchaImage | ดึงรหัสยืนยันแบบภาพ |
| POST | /auth/sms/login | เข้าสู่ระบบด้วยรหัสยืนยัน SMS |
| GET | /auth/login/{loginId} | เข้าสู่ระบบผ่านโซเชียลของบุคคลที่สาม |
| POST | /auth/ssoLogin | เข้าสู่ระบบครั้งเดียว SSO |
ตัวอย่างการเข้าสู่ระบบ:
POST /login
Content-Type: application/json
{
"username": "admin",
"password": "admin123",
"code": "1234",
"uuid": "xxx-xxx-xxx",
"sourceType": 1
}{
"code": 200,
"msg": "ดำเนินการสำเร็จ",
"data": {
"token": "eyJhbGciOiJIUzI1NiIs..."
}
}คำขอถัดไปต้องแนบส่วนหัว: Authorization: Bearer {token}
อินเทอร์เฟซอุปกรณ์ (/iot/device)
| เมธอด | เส้นทาง | สิทธิ์ | คำอธิบาย |
|---|---|---|---|
| GET | /iot/device/list | iot:device:list | รายการอุปกรณ์แบบแบ่งหน้า |
| GET | /iot/device/shortList | iot:device:list | รายการอุปกรณ์แบบย่อ (หน้าแรก) |
| GET | /iot/device/all | iot:device:list | รายการย่อของอุปกรณ์ทั้งหมด |
| GET | /iot/device/{deviceId} | iot:device:query | รายละเอียดอุปกรณ์ |
| GET | /iot/device/getDeviceBySerialNumber/{sn} | iot:device:query | ค้นหาตามหมายเลขซีเรียล |
| POST | /iot/device | iot:device:add | เพิ่มอุปกรณ์ |
| PUT | /iot/device | iot:device:edit | แก้ไขอุปกรณ์ |
| DELETE | /iot/device/{deviceId} | iot:device:remove | ลบอุปกรณ์ |
| POST | /iot/device/export | iot:device:export | ส่งออก Excel |
| POST | /iot/device/assignment | iot:device:assignment | จัดสรรอุปกรณ์ให้องค์กร |
| POST | /iot/device/user/assignment | iot:device:assignment | จัดสรรอุปกรณ์ให้ผู้ใช้ |
| POST | /iot/device/recovery | iot:device:recovery | เรียกคืนอุปกรณ์ |
| GET | /iot/device/runningStatus | iot:device:query | สถานะการทำงาน |
| GET | /iot/device/thingsModelValue/{deviceId} | iot:device:query | ค่าแบบเรียลไทม์ของ Thing Model |
| GET | /iot/device/statistic | - | สถิติข้อมูลการตรวจสอบ |
อินเทอร์เฟซผลิตภัณฑ์ (/iot/product)
| เมธอด | เส้นทาง | คำอธิบาย |
|---|---|---|
| GET | /iot/product/list | รายการผลิตภัณฑ์แบบแบ่งหน้า |
| GET | /iot/product/shortList | รายการผลิตภัณฑ์แบบย่อ |
| GET | /iot/product/{productId} | รายละเอียดผลิตภัณฑ์ |
| POST | /iot/product | เพิ่มผลิตภัณฑ์ |
| PUT | /iot/product | แก้ไขผลิตภัณฑ์ |
| DELETE | /iot/product/{productId} | ลบผลิตภัณฑ์ |
| PUT | /iot/product/status | เผยแพร่/ถอดเผยแพร่ผลิตภัณฑ์ |
| POST | /iot/product/copy?productId= | คัดลอกผลิตภัณฑ์ |
อินเทอร์เฟซ Thing Model (/iot/thingsModel)
| เมธอด | เส้นทาง | คำอธิบาย |
|---|---|---|
| GET | /iot/thingsModel/list | รายการ Thing Model |
| POST | /iot/thingsModel | เพิ่ม Thing Model |
| PUT | /iot/thingsModel | แก้ไข Thing Model |
| DELETE | /iot/thingsModel/{modelId} | ลบ Thing Model |
| POST | /iot/thingsModel/sync | ซิงโครไนซ์ไปยังอุปกรณ์ |
อินเทอร์เฟซ Rule Engine (/iot/scene)
| เมธอด | เส้นทาง | คำอธิบาย |
|---|---|---|
| GET | /iot/scene/list | รายการ Scene Linkage |
| POST | /iot/scene | เพิ่มฉาก |
| PUT | /iot/scene | แก้ไขฉาก |
| DELETE | /iot/scene/{sceneId} | ลบฉาก |
| POST | /iot/scene/trigger/{sceneId} | ทริกเกอร์ด้วยตนเอง |
อินเทอร์เฟซศูนย์ข้อมูล (/iot/datacenter)
| เมธอด | เส้นทาง | คำอธิบาย |
|---|---|---|
| GET | /iot/datacenter/latestData | ข้อมูลล่าสุด |
| GET | /iot/datacenter/historyData | ข้อมูลย้อนหลัง |
9. ข้อกำหนดการพัฒนา
ข้อกำหนดการตั้งชื่อฟรอนต์เอนด์
| ประเภท | ข้อกำหนด | ตัวอย่าง |
|---|---|---|
| ไฟล์/ไดเรกทอรี | kebab-case | device-edit.vue |
| ชื่อคอมโพเนนต์ | PascalCase | DeviceCard |
| ตัวแปร/เมธอด | camelCase | deviceList, handleQuery() |
| ค่าคงที่ | UPPER_CASE | MAX_PAGE_SIZE |
| ไฟล์ API | camelCase | device.js, product.js |
| ชื่อคลาส CSS | kebab-case | .device-item |
ข้อกำหนดการตั้งชื่อแบ็กเอนด์
| ประเภท | ข้อกำหนด | ตัวอย่าง |
|---|---|---|
| ชื่อแพ็กเกจ | ตัวพิมพ์เล็กทั้งหมด คั่นด้วยจุด | com.fastbee.iot.service |
| ชื่อคลาส | PascalCase | DeviceServiceImpl |
| ชื่ออินเทอร์เฟซ | I + PascalCase | IDeviceService |
| ชื่อเมธอด | camelCase | listDeviceByGroup() |
| ค่าคงที่ | UPPER_SNAKE | MAX_RETRY_COUNT |
| ตารางฐานข้อมูล | ตัวพิมพ์เล็กคั่นด้วยขีดล่าง | iot_device |
| ฟิลด์ฐานข้อมูล | ตัวพิมพ์เล็กคั่นด้วยขีดล่าง | serial_number |
ข้อกำหนดการออกแบบ API
- สไตล์ RESTful ชื่อทรัพยากรใช้คำนามพหูพจน์
- คำนำหน้าเส้นทางแบบเดียวกัน:
/iot/(โมดูล IoT),/system/(โมดูลระบบ) - Controller สืบทอด
BaseControllerใช้@PreAuthorizeตรวจสอบสิทธิ์ - ใช้คำอธิบายประกอบ
@Logบันทึกล็อกการทำงาน - การส่งกลับใช้
AjaxResult.success()/getDataTable()แบบเดียวกัน
@PreAuthorize("@ss.hasPermi('iot:device:add')")
@Log(title = "设备", businessType = BusinessType.INSERT)
@PostMapping
@ApiOperation("新增设备")
public AjaxResult add(@Validated @RequestBody Device device) {
return toAjax(deviceService.insertDevice(device));
}10. คำถามที่พบบ่อย
ฟรอนต์เอนด์
Q: หลัง npm install เริ่มทำงานแล้วเกิดข้อผิดพลาดเกี่ยวกับ patch-package?
สาเหตุ: node_modules ติดตั้งไม่สมบูรณ์หรือปัญหาแคช
# ล้างแคชและติดตั้งใหม่
rm -rf node_modules package-lock.json
npm cache clean --force
npm installQ: อินเทอร์เฟซในสภาพแวดล้อมการพัฒนาตอบ 404?
ตรวจสอบว่า VUE_APP_SERVER_API_URL ใน .env.development ชี้ไปยังแบ็กเอนด์ถูกต้อง และยืนยันว่าแบ็กเอนด์เริ่มทำงานแล้ว
Q: กล่องโต้ตอบ Element UI (MessageBox) ไม่แสดง?
ยืนยันว่าคอมโพเนนต์ลงทะเบียนแบบโกลบอลแล้ว ในโปรเจกต์ลงทะเบียนผ่าน Vue.use(Element) ใน main.js ไม่ต้องนำเข้าแยก
Q: เชื่อมต่อ MQTT ไม่สำเร็จ?
- ยืนยันว่าการกำหนดค่า
VUE_APP_MQTT_SERVER_URLถูกต้อง (สภาพแวดล้อมการพัฒนาws://localhost:8083/mqtt) - ยืนยันว่า Broker ในตัวเริ่มทำงานแล้ว (
server.broker.enabled: true+server.broker.websocket-port: 8083) - ตรวจสอบว่า Token ยังใช้ได้ (mqttTool ใช้ Token เป็นรหัสผ่าน MQTT)
Q: vue-treeselect เกิดความขัดแย้งของเวอร์ชัน?
โปรเจกต์ใช้ @riophae/vue-treeselect@0.4.0 แบบเดียวกัน อย่าใช้เวอร์ชันอื่นปนกัน
Q: นำเข้าคอมโพเนนต์ vue-qr แล้วเกิดข้อผิดพลาด?
// ✅ วิธีที่ถูกต้อง (นำเข้าแบบ default)
import vueQr from 'vue-qr';
// ❌ วิธีที่ผิด (การนำเข้าแบบ named จะล้มเหลว)
import { VueQr } from 'vue-qr';แบ็กเอนด์
Q: เริ่มทำงานแล้วเกิดข้อผิดพลาดเกี่ยวกับ license?
กำหนดค่าเส้นทางใบรับรองที่ถูกต้องใน application-dev.yml:
license:
subject: common
licensePath: classpath:license.licขอไฟล์ใบรับรอง (license.lic) จากทางการ แล้ววางไว้ในไดเรกทอรี resources
Q: TDengine แจ้งการเชื่อมต่อหมดเวลา?
- ยืนยันว่า TDengine เริ่มทำงานแล้ว (พอร์ตเริ่มต้น 6041)
- ตรวจสอบการกำหนดค่าแหล่งข้อมูล
taosในapplication-dev.yml - หากไม่ต้องการฐานข้อมูลอนุกรมเวลา สามารถตั้ง
taos.enabled: falseเพื่อข้าม
Q: Rule Engine ไม่ถูกกระตุ้น?
- ยืนยันว่าสถานะ Scene Linkage เป็น "เปิดใช้งานแล้ว"
- ตรวจสอบเงื่อนไขทริกเกอร์ (ช่วงค่า ตัวดำเนินการเปรียบเทียบ)
- ดูเส้นทางการทำงานของ LiteFlow ในล็อก
Q: อุปกรณ์ออนไลน์แล้วแต่ฝั่งจัดการไม่เห็นสถานะออนไลน์?
- ตรวจสอบการยืนยันตัวตน MQTT (การกำหนดค่า EMQX Webhook)
- ยืนยันว่า
serialNumberของอุปกรณ์ตรงกับที่บันทึกในระบบ - ดูว่าล็อกแบ็กเอนด์มีบันทึกการประมวลผลสถานะอุปกรณ์หรือไม่
Q: จะสลับระหว่าง EMQX กับ Broker ในตัวอย่างไร?
# application.yml
server:
broker:
enabled: true # true = Netty Broker ในตัว
# false = ใช้ EMQX ภายนอก (ต้องกำหนดค่า spring.mqtt.host-url)Q: การแยกข้อมูลหลายผู้เช่าทำงานอย่างไร?
แพลตฟอร์มแยกข้อมูลผ่านฟิลด์ tenant_id (ID องค์กร) ชั้น Controller ดึงข้อมูลองค์กรของผู้ใช้ที่เข้าสู่ระบบปัจจุบันจาก SecurityUtils.getLoginUser() และชั้น Service จะกรองโดยอัตโนมัติเมื่อค้นหา
Q: จะเข้าถึงหน้าตรวจสอบ Druid อย่างไร?
เปิด http://localhost:8080/druid/index.html ในเบราว์เซอร์ บัญชีและรหัสผ่านเริ่มต้นเป็น fastbee ทั้งคู่ (แก้ไขได้ใน application.yml)


