Skip to content

ระบบ IoT ​

ภาพรวมระบบ IoT FastBee

แพลตฟอร์ม IoT FastBee เป็นโซลูชัน IoT ที่มีฟังก์ชันครบถ้วน ออกแบบมาสำหรับธุรกิจขนาดกลางและขนาดเล็กรวมถึงผู้ใช้รายบุคคล แพลตฟอร์มนี้มีเครื่องมือและฟังก์ชันที่ใช้งานง่ายหลากหลาย ช่วยให้ผู้ใช้จัดการและควบคุมอุปกรณ์อัจฉริยะต่าง ๆ ได้อย่างมีประสิทธิภาพ ต่อไปนี้เป็นคำแนะนำโดยละเอียดเกี่ยวกับแพลตฟอร์ม IoT FastBee:

ภาพรวมหน้านี้ ​

เนื้อหาของหน้าคำแนะนำโดยรวมของแพลตฟอร์ม 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

แผนภาพสถานการณ์การใช้งาน FastBee

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 (สภาพแวดล้อมการพัฒนา)

อินเทอร์เฟซทั้งหมดใช้รูปแบบการตอบกลับแบบเดียวกัน:

json
{
  "code": 200,
  "msg": "ดำเนินการสำเร็จ",
  "data": { ... }
}

รูปแบบการตอบกลับของรายการแบบแบ่งหน้า:

json
{
  "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

ตัวอย่างการเข้าสู่ระบบ:

bash
POST /login
Content-Type: application/json

{
  "username": "admin",
  "password": "admin123",
  "code": "1234",
  "uuid": "xxx-xxx-xxx",
  "sourceType": 1
}
json
{
  "code": 200,
  "msg": "ดำเนินการสำเร็จ",
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs..."
  }
}

คำขอถัดไปต้องแนบส่วนหัว: Authorization: Bearer {token}

อินเทอร์เฟซอุปกรณ์ (/iot/device) ​

เมธอดเส้นทางสิทธิ์คำอธิบาย
GET/iot/device/listiot:device:listรายการอุปกรณ์แบบแบ่งหน้า
GET/iot/device/shortListiot:device:listรายการอุปกรณ์แบบย่อ (หน้าแรก)
GET/iot/device/alliot:device:listรายการย่อของอุปกรณ์ทั้งหมด
GET/iot/device/{deviceId}iot:device:queryรายละเอียดอุปกรณ์
GET/iot/device/getDeviceBySerialNumber/{sn}iot:device:queryค้นหาตามหมายเลขซีเรียล
POST/iot/deviceiot:device:addเพิ่มอุปกรณ์
PUT/iot/deviceiot:device:editแก้ไขอุปกรณ์
DELETE/iot/device/{deviceId}iot:device:removeลบอุปกรณ์
POST/iot/device/exportiot:device:exportส่งออก Excel
POST/iot/device/assignmentiot:device:assignmentจัดสรรอุปกรณ์ให้องค์กร
POST/iot/device/user/assignmentiot:device:assignmentจัดสรรอุปกรณ์ให้ผู้ใช้
POST/iot/device/recoveryiot:device:recoveryเรียกคืนอุปกรณ์
GET/iot/device/runningStatusiot: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-casedevice-edit.vue
ชื่อคอมโพเนนต์PascalCaseDeviceCard
ตัวแปร/เมธอดcamelCasedeviceList, handleQuery()
ค่าคงที่UPPER_CASEMAX_PAGE_SIZE
ไฟล์ APIcamelCasedevice.js, product.js
ชื่อคลาส CSSkebab-case.device-item

ข้อกำหนดการตั้งชื่อแบ็กเอนด์ ​

ประเภทข้อกำหนดตัวอย่าง
ชื่อแพ็กเกจตัวพิมพ์เล็กทั้งหมด คั่นด้วยจุดcom.fastbee.iot.service
ชื่อคลาสPascalCaseDeviceServiceImpl
ชื่ออินเทอร์เฟซI + PascalCaseIDeviceService
ชื่อเมธอดcamelCaselistDeviceByGroup()
ค่าคงที่UPPER_SNAKEMAX_RETRY_COUNT
ตารางฐานข้อมูลตัวพิมพ์เล็กคั่นด้วยขีดล่างiot_device
ฟิลด์ฐานข้อมูลตัวพิมพ์เล็กคั่นด้วยขีดล่างserial_number

ข้อกำหนดการออกแบบ API ​

  • สไตล์ RESTful ชื่อทรัพยากรใช้คำนามพหูพจน์
  • คำนำหน้าเส้นทางแบบเดียวกัน: /iot/ (โมดูล IoT), /system/ (โมดูลระบบ)
  • Controller สืบทอด BaseController ใช้ @PreAuthorize ตรวจสอบสิทธิ์
  • ใช้คำอธิบายประกอบ @Log บันทึกล็อกการทำงาน
  • การส่งกลับใช้ AjaxResult.success() / getDataTable() แบบเดียวกัน
java
@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 ติดตั้งไม่สมบูรณ์หรือปัญหาแคช

bash
# ล้างแคชและติดตั้งใหม่
rm -rf node_modules package-lock.json
npm cache clean --force
npm install

Q: อินเทอร์เฟซในสภาพแวดล้อมการพัฒนาตอบ 404?

ตรวจสอบว่า VUE_APP_SERVER_API_URL ใน .env.development ชี้ไปยังแบ็กเอนด์ถูกต้อง และยืนยันว่าแบ็กเอนด์เริ่มทำงานแล้ว

Q: กล่องโต้ตอบ Element UI (MessageBox) ไม่แสดง?

ยืนยันว่าคอมโพเนนต์ลงทะเบียนแบบโกลบอลแล้ว ในโปรเจกต์ลงทะเบียนผ่าน Vue.use(Element) ใน main.js ไม่ต้องนำเข้าแยก

Q: เชื่อมต่อ MQTT ไม่สำเร็จ?

  1. ยืนยันว่าการกำหนดค่า VUE_APP_MQTT_SERVER_URL ถูกต้อง (สภาพแวดล้อมการพัฒนา ws://localhost:8083/mqtt)
  2. ยืนยันว่า Broker ในตัวเริ่มทำงานแล้ว (server.broker.enabled: true + server.broker.websocket-port: 8083)
  3. ตรวจสอบว่า Token ยังใช้ได้ (mqttTool ใช้ Token เป็นรหัสผ่าน MQTT)

Q: vue-treeselect เกิดความขัดแย้งของเวอร์ชัน?

โปรเจกต์ใช้ @riophae/vue-treeselect@0.4.0 แบบเดียวกัน อย่าใช้เวอร์ชันอื่นปนกัน

Q: นำเข้าคอมโพเนนต์ vue-qr แล้วเกิดข้อผิดพลาด?

javascript
// ✅ วิธีที่ถูกต้อง (นำเข้าแบบ default)
import vueQr from 'vue-qr';
// ❌ วิธีที่ผิด (การนำเข้าแบบ named จะล้มเหลว)
import { VueQr } from 'vue-qr';

แบ็กเอนด์ ​

Q: เริ่มทำงานแล้วเกิดข้อผิดพลาดเกี่ยวกับ license?

กำหนดค่าเส้นทางใบรับรองที่ถูกต้องใน application-dev.yml:

yaml
license:
  subject: common
  licensePath: classpath:license.lic

ขอไฟล์ใบรับรอง (license.lic) จากทางการ แล้ววางไว้ในไดเรกทอรี resources

Q: TDengine แจ้งการเชื่อมต่อหมดเวลา?

  1. ยืนยันว่า TDengine เริ่มทำงานแล้ว (พอร์ตเริ่มต้น 6041)
  2. ตรวจสอบการกำหนดค่าแหล่งข้อมูล taos ใน application-dev.yml
  3. หากไม่ต้องการฐานข้อมูลอนุกรมเวลา สามารถตั้ง taos.enabled: false เพื่อข้าม

Q: Rule Engine ไม่ถูกกระตุ้น?

  1. ยืนยันว่าสถานะ Scene Linkage เป็น "เปิดใช้งานแล้ว"
  2. ตรวจสอบเงื่อนไขทริกเกอร์ (ช่วงค่า ตัวดำเนินการเปรียบเทียบ)
  3. ดูเส้นทางการทำงานของ LiteFlow ในล็อก

Q: อุปกรณ์ออนไลน์แล้วแต่ฝั่งจัดการไม่เห็นสถานะออนไลน์?

  1. ตรวจสอบการยืนยันตัวตน MQTT (การกำหนดค่า EMQX Webhook)
  2. ยืนยันว่า serialNumber ของอุปกรณ์ตรงกับที่บันทึกในระบบ
  3. ดูว่าล็อกแบ็กเอนด์มีบันทึกการประมวลผลสถานะอุปกรณ์หรือไม่

Q: จะสลับระหว่าง EMQX กับ Broker ในตัวอย่างไร?

yaml
# 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)