Skip to content

IoT システム ​

FastBee IoT システム概要図

FastBee IoT プラットフォームは、中小企業と個人ユーザー向けに設計された機能豊富な IoT ソリューションです。使いやすいツールと機能を幅広く提供することで、ユーザーがさまざまなスマートデバイスを効果的に管理・制御できるようにします。以下は FastBee IoT プラットフォームの詳細な紹介です。

ページガイド ​

ページ内容FastBee IoT プラットフォームの全体紹介:プロジェクトの背景、システム機能、技術スタック、応用シーン、システムアーキテクチャ。
対象シーン商用版プラットフォームの機能とアーキテクチャを初めて知る読者が、製品の全体像を把握するのに適しています。
前提条件なし。その後は推奨パスに従ってアーキテクチャ設計とインストール・デプロイの章を読み進めてください。

バージョン比較 ​

FastBee はオープンソース版、商用版、クラスター版の 3 つのバージョンを提供しています。主な違いは以下のとおりです。完全なライセンスポリシーと機能ごとの一覧は商用ライセンスを参照してください。

観点オープンソース版商用版クラスター版
ライセンスAGPL v3、無料、非商用用途に限定永続的な商用ライセンス(インストール証明書)永続的な商用ライセンス(インストール証明書)
ソースコードと更新ソースコード公開、Gitee/GitHub で更新ライセンス取得後に Git プライベートサーバーで更新、1 年間のソースコード更新付き商用版と同じ
デプロイ形態Docker Compose による単機ワンクリックデプロイ単機デプロイ(Docker Compose によるクイックインストールをサポート)FMQ サービスクラスター + Web クラスター。Kafka とロードバランサーで高可用性を実現
接続プロトコルMQTT、GB/T 28181(ライブのみ)TCP、UDP、CoAP、HTTP、Modbus、JT808 などのプロトコルを追加商用版と同じ
機能範囲製品/デバイス/モノモデル、ルールスクリプト、権限管理などの中核機能可視化大画面、アラームセンター、マルチテナント、OTA ファームウェアアップグレード、データブリッジ、ワークオーダー管理、IoT SIM カード管理などを追加(Web コンフィギュレーション、スマートスピーカーはオプションモジュール)商用版と同じ機能、対応デバイス数が異なる
対象シーン個人学習と非商用利用中小企業の商用プロジェクトデバイス接続規模が大きく高可用性が求められる商用プロジェクト

1. プラットフォーム概要 ​

  • プロジェクトの背景:旧称は物美智能(wumei-smart)で、その後、蜂信物联(FastBee)に改称されました。この変更はブランドの更新を反映するだけでなく、IoT 分野での発展とサービス範囲の拡大を示しています。
  • 主なサポート:プラットフォームのバックエンドは Spring Boot フレームワークを採用し、フロントエンドは Vue 技術などを使用しています。これらの技術選択により、プラットフォームの使いやすさと優れたユーザーエクスペリエンスが確保されています。

2. システム機能 ​

  • 製品管理:製品詳細、モノモデル、分類、デバイス認証などの機能をサポートし、企業がスマート製品をより効果的に整理・管理するのに役立ちます。
  • デバイス管理:デバイス詳細、グループ化、ログ記録、リアルタイム状態監視などの管理機能を提供し、デバイス運用の効率と安全性を確保します。
  • モノモデル管理:デバイスの属性、機能、イベントを定義でき、デバイスとクラウド間の効果的な通信を実現します。
  • ルールエンジン:Groovy(構文は Java と同じ)ベースのルール記述をサポートし、システムが複雑なビジネスロジックを自動的に処理できるようにします。
  • シーン連携:直接設定またはビジュアル設定による自動化シーンをサポートし、スマートデバイス間のシームレスな連携を実現します。
  • アラームセンター:音声、SMS、WeCom(企業微信)などの複数の通信方式に対応し、デバイスの異常や故障をタイムリーに通知して迅速な対応を保証します。
  • マルチテナントシステム:データ分離と独立した設定をサポートし、マルチテナント環境に適しており、システムの柔軟性とセキュリティを高めます。
  • ビデオ監視接続:GB/T28181 プロトコルの監視デバイスをサポートし、ライブ、録画再生、PTZ 制御機能を提供し、セキュリティ監視のニーズに対応します。
  • シーン管理:複数デバイスの集約表示をサポートし、入力行変数や演算型変数の拡張も可能で、複雑なデータ演算に対応します。
  • データブリッジ:外部データシステムとの橋渡しとして、データの入出力などの機能をサポートします。
  • データセンター:データレポートの生成、履歴データの閲覧、デバイスのデータ分析をサポートします。
  • 通信プロトコル:Mqtt、Modbus、Tcp、GB28182、Http、Coap などの豊富なデバイス通信プロトコルをサポートします。
  • IoT SIM カード:デバイス接続の SIM カードを管理し、さまざまな販売代理店プラットフォームとの連携をサポート。カード状態や通信量を確認でき、通信量アラートもサポートします。
  • ワークオーダー管理:デバイスや資産の保守、修理、点検などのタスクを、自動化・スマート化・全工程管理でサポートします。

3. 技術スタック ​

  • バックエンド技術:Spring Boot、MyBatis、Spring Security、Jwt、Redis、TDengine などを含み、バックエンドサービスの安定性と高効率を確保しています。
  • フロントエンド技術:ES6、ES7、Vue、Vuex、uView、H5 などのモダンなフロントエンド技術を使用し、ユーザーインターフェースのインタラクティブ性と視覚体験を向上させています。
  • モバイルサポート:WeChat ミニプログラム、Android、iOS などの複数のモバイルプラットフォームをサポートし、Uniapp によるクロスプラットフォームアプリ開発で、ユーザーがさまざまなデバイスで操作・管理しやすくしています。

4. 応用シーン ​

FastBee はスマートホーム、スマートオフィス、スマートコミュニティ、農業モニタリング、水利モニタリング、産業制御などのさまざまなシーンに適用できます。これらの応用シーンは家庭から産業レベルまでの幅広いニーズをカバーし、IoT 分野における FastBee の幅広い応用可能性を示しています。

FastBee 応用シーンの概略図

5. システムアーキテクチャ ​

┌──────────────────────────────────────────────────────────────────┐
│                        Browser / Mobile                          │
│         Vue2 Web (PC)    +    Vant (H5 / Mini Program)           │
└───────────────────────────────┬──────────────────────────────────┘
                                │ HTTP REST / WebSocket(MQTT)
                                ▼
┌──────────────────────────────────────────────────────────────────┐
│                       Nginx (Reverse Proxy)                      │
│           /  → static frontend assets    /prod-api/ → backend    │
└───────────────────────────────┬──────────────────────────────────┘
                                │
                                ▼
┌──────────────────────────────────────────────────────────────────┐
│                  Spring Boot Service (8080)                      │
│  ┌────────────────────────────────────────────────────────────┐  │
│  │                fastbee-open-api (Controller layer)         │  │
│  │  device / product / ruleEngine / media / system / ...     │  │
│  └────────────────────────┬───────────────────────────────────┘  │
│  ┌─────────────────────────▼──────────────────────────────────┐  │
│  │               fastbee-service (Service layer)              │  │
│  │     IotService / SceneService / NotifyService / ...        │  │
│  └────────────────────────┬───────────────────────────────────┘  │
│  ┌─────────────────────────▼──────────────────────────────────┐  │
│  │               fastbee-server (protocol access)             │  │
│  │   MQTT Broker(1883) / HTTP(8081) / CoAP(5683) / TCP(8888) │  │
│  └────────────────────────────────────────────────────────────┘  │
└───────────┬──────────────────┬────────────────────┬──────────────┘
            │                  │                    │
         MySQL              Redis              TDengine
     (metadata/config)   (cache/real-time)  (time-series history)

6. コード構造 ​

fastbee/
├── vue/                        ← フロントエンド Vue2 プロジェクト
│   ├── src/
│   │   ├── api/                ← 各モジュールの API リクエスト関数
│   │   ├── assets/             ← 静的リソース(画像/アイコン/スタイル)
│   │   ├── components/         ← グローバル共通コンポーネント(28 個)
│   │   ├── directive/          ← グローバルカスタムディレクティブ
│   │   ├── lang/               ← 国際化言語パック
│   │   ├── 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 インターフェース層(IoT 業務 Controller)
│   ├── 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 をサブスクライブし、オンライン/オフライン状態をリアルタイム更新
デバイス QR コードバインディング用 QR コードを生成、印刷をサポート
OTA ファームウェアアップグレードバージョン管理 + アップグレードタスクの配信
指令の送信モノモデル属性の送信 / 機能呼び出し
シャドウモードデバイスがオフラインのとき、シャドウが最新値をキャッシュ

ページルート:/iot/device/list → views/iot/device/index.vue

製品管理 ​

機能説明
製品テンプレートデバイスタイプとモノモデルを定義
モノモデル属性(Property)/ 機能(Function)/ イベント(Event)の 3 要素
プロトコル設定MQTT / HTTP / CoAP / TCP / Modbus / JT808
製品公開公開後、デバイスはモノモデルを変更できなくなります
ドラッグ&ドロップエディタデバイス稼働状態パネルをビジュアルに設定

ルールエンジン ​

機能説明
シーン連携トリガー → 条件 → アクション のビジュアルオーケストレーション(LiteFlow 駆動)
デバイスアラームしきい値/範囲/ブールによるトリガー、サイレント時間をサポート
ルールスクリプトGroovy/JavaScript スクリプトで生データを処理
ワンクリックトリガーシーン連携の手動トリガー

データセンター ​

機能説明
リアルタイムデータデバイスが最新に送信したモノモデル値(Redis キャッシュ)
履歴データ期間指定のクエリ(TDengine 時系列データベース)
データレポート定期的に Excel を生成、メール通知をサポート
データエクスポート履歴データのダウンロード

ビデオ監視 ​

機能説明
デバイス接続GB28181(SIP)プロトコルをサポート
リアルタイム再生RTMP / RTSP / FLV / HLS / WebRTC
録画再生期間指定で履歴録画を検索(ZLMediaKit)
PTZ 制御PTZ 指令の送信
音声インターコムSIP TCP アクティブ方式

通知サービス ​

サポートチャネル:SMS(Alibaba Cloud/Tencent)、メール、WeChat 公式アカウント、WeCom(企業微信)、DingTalk、HTTP プッシュ、MQTT プッシュ。

システム管理 ​

ユーザー/ロール/組織(マルチテナント)/ メニュー/辞書/ログ/システム監視/コード生成。

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/loginSMS 認証コードでログイン
GET/auth/login/{loginId}サードパーティソーシャルログイン
POST/auth/ssoLoginSSO シングルサインオン

ログイン例:

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:exportExcel のエクスポート
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モノモデルのリアルタイム値
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=製品のコピー

モノモデルインターフェース(/iot/thingsModel) ​

メソッドパス説明
GET/iot/thingsModel/listモノモデルリスト
POST/iot/thingsModelモノモデルの新規追加
PUT/iot/thingsModelモノモデルの変更
DELETE/iot/thingsModel/{modelId}モノモデルの削除
POST/iot/thingsModel/syncデバイスへの同期

ルールエンジンインターフェース(/iot/scene) ​

メソッドパス説明
GET/iot/scene/listシーン連携リスト
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
API ファイルcamelCasedevice.js, product.js
CSS クラス名kebab-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 になる?

.env.development の VUE_APP_SERVER_API_URL がバックエンドを正しく指しているか確認し、バックエンドが起動していることを確認してください。

Q:Element UI のダイアログ(MessageBox)がポップアップしない?

コンポーネントがグローバルに登録されているか確認してください。プロジェクトでは main.js で Vue.use(Element) による登録が完了しており、個別にインポートする必要はありません。

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
// ✅ 正しい方法(デフォルトインポート)
import vueQr from 'vue-qr';
// ❌ 誤った方法(名前付きインポートは失敗します)
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. application-dev.yml の taos データソース設定を確認
  3. 時系列データベースが不要な場合は、taos.enabled: false でスキップできます

Q:ルールエンジンがトリガーされない?

  1. シーン連携の状態が「有効」であることを確認
  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 で変更可能)。