SWPF機能仕様書

← 一覧へ戻る SWPF機能仕様書

📘 SWPFプラットフォーム 機能仕様書


1. 概要

SWPFは、IoTデータ・AI・外部サービス連携を統合した イベント駆動型オートメーションプラットフォームです。

主な特徴:

  • MQTT / REST によるデータ収集
  • ルールベースの自動処理
  • プラグインによる拡張
  • AI・外部APIとの連携
  • Drupalベースの柔軟な管理

2. システム全体構成

flowchart TD A[IoTデバイス<br>ESP32 / カメラ / センサー] --> B[MQTT Broker] A --> C[REST API] B --> D[MQTT Subscriber] C --> D D --> E[IotDataHeader保存] E --> F[Trigger検知] F --> G[Rule評価] G --> H[Plugin実行] H --> I[外部連携<br>AI / SNS / Kintone] H --> J[通知 / 制御 / 保存] E --> K[履歴 / 可視化]

3. 機能一覧

機能名機能概要備考
デバイス登録・ペアリングESP32等のデバイスをシステムに登録ワンタイムコード方式
IoTデータ受信MQTT / RESTでデータ受信画像・JSON対応
IoTデータ保存データをIotDataHeaderとして保存一元管理
トリガー検知条件に応じたイベント発火LINE / MQTT / Cronなど
ルール評価RULE_JSONに基づく条件判定if/then形式
プラグイン実行処理ロジックの実行拡張性の中核
データ加工(PARAMS)rawデータを変換・マッピングraw.xxx形式
外部サービス連携Kintone / WordPress / API連携RESTベース
AI解析連携画像・データのAI処理ChatGPT / YOLO等
通知・アクション実行メール・音声・機器制御SwitchBot等
データミラーリング他サーバーへの同期APIKEY認証
スケジュール実行(Cron)定期処理の実行1分単位制御可能
キュー処理非同期処理QueueWorker
管理UIデータ・設定管理画面Drupalベース

4. 機能仕様書


■ 1. デバイス登録・ペアリング

機能概要

ESP32などのIoTデバイスを安全に登録します。

詳細仕様

sequenceDiagram participant ESP32 participant Server ESP32->>Server: pairing開始 Server-->>ESP32: ワンタイムコード表示 ESP32->>Server: コード送信 Server-->>ESP32: MQTT設定返却

入出力仕様

入力:

{
  "pairing_code": "123456"
}

出力:

{
  "device_id": "xxx",
  "mqtt": {
    "host": "xxx",
    "port": 8883,
    "user": "xxx",
    "pass": "xxx"
  }
}

主な使用例

  • 新規デバイスの初期設定

補足事項

  • MACアドレスはハッシュ化推奨
  • HMAC方式推奨

■ 2. IoTデータ受信

機能概要

MQTTまたはRESTでデータを受信します。

詳細仕様

flowchart LR A[ESP32] -->|MQTT| B[Broker] B --> C[Subscriber] A -->|REST| C

入出力仕様

{
  "t": 25,
  "h": 60,
  "image": "binary"
}

主な使用例

  • センサー値送信
  • 画像アップロード

補足事項

  • BASE64 / RAW対応
  • topic設計重要

■ 3. IoTデータ保存

機能概要

受信データを統一フォーマットで保存します。

詳細仕様

flowchart TD A[受信データ] --> B[正規化] B --> C[IotDataHeader]

入出力仕様

$context['input']['raws'] = [
  't' => 25
];

主な使用例

  • 履歴管理
  • AI分析用

補足事項

  • Headerに統合

■ 4. トリガー検知

機能概要

トリガー検知は、IotDataHeaderに保存されたデータを起点として、後続処理(Rule評価・Plugin実行)を開始するための重要な機能です。単なるイベント発火ではなく、「どの条件で処理を開始するか」を定義する役割を持ちます。トリガーは複数登録可能であり、各トリガーごとに条件が評価されます。LINE、MQTT、Cronなど複数の入力ソースに対応しているため、イベント駆動設計の中心となります。

詳細仕様

flowchart TD A[IotData保存] --> B[Trigger一覧取得] B --> C[条件ループ] C -->|一致| D[イベント生成] C -->|不一致| E[スキップ]

トリガーは「イベントの入口」として機能し、後続のRuleエンジンにデータを渡します。トリガー段階では複雑なロジックは持たず、「処理を開始するか否か」に特化しています。


■ 5. ルール評価

機能概要

RULE_JSONに基づいて条件分岐を行い、実行すべき処理(templateid)を決定します。ルールはJSON形式で記述され、ネスト・AND/OR条件など複雑なロジックをコードレスで表現可能です。これにより非エンジニアでもロジック調整が可能になります。

詳細仕様

flowchart TD A[Trigger入力] --> B[if評価] B -->|true| C[then処理] B -->|false| D[else処理]
{
  "if": [{"temp": ">30"}],
  "then": ["ACTION_1"]
}

内部的にはPARAMS_MAPを参照して評価されます。ネスト構造により最大10階層まで評価可能です。


■ 6. プラグイン実行

機能概要

プラグインは実際の処理を実行する単位であり、RULE評価結果に応じて呼び出されます。すべての処理はプラグインとして分離されるため、高い拡張性と保守性を実現します。

詳細仕様

flowchart TD A[Rule結果] --> B[Plugin選択] B --> C[execute実行] C --> D[結果返却]

プラグインはcontextを受け取り、結果を返します。ステートレス設計が推奨されます。


■ 7. データ加工(PARAMS)

機能概要

PARAMSはrawデータを論理的なキーに変換する仕組みです。これによりセンサーの差異を吸収し、RULEやPluginで統一的に扱えます。

詳細仕様

flowchart TD A[rawデータ] --> B[PARAMS_JSON] B --> C[変換処理] C --> D[params_map]
"TEMP": "raw.t"

PARAMSは評価順序が重要で、上から順に処理されます。


■ 8. 外部サービス連携

機能概要

REST APIを通じて外部システムと連携します。Kintone、WordPressなどと接続可能です。

詳細仕様

flowchart TD A[Plugin] --> B[HTTP生成] B --> C[API送信] C --> D[レスポンス処理]

認証(APIKEYなど)とリトライ設計が重要です。


■ 9. AI解析連携

機能概要

画像やデータをAIで解析する機能です。YOLOやChatGPTを利用します。

詳細仕様

flowchart TD A[データ] --> B[Queue投入] B --> C[Worker] C --> D[AI推論] D --> E[結果保存]

重い処理のため必ず非同期で実行します。


■ 10. 通知・アクション

機能概要

イベント結果をユーザー通知やデバイス制御として出力します。

詳細仕様

flowchart TD A[イベント] --> B[通知生成] B --> C[メール/LINE] A --> D[IoT制御]

即時性と信頼性が重要です。


■ 11. データミラーリング

機能概要

複数サーバ間でデータを同期します。

詳細仕様

flowchart TD A[ServerA] --> B[差分抽出] B --> C[API送信] C --> D[ServerB保存]

GET /export?last_id=xxx

冪等性設計が必須です。


■ 12. Cron

機能概要

定期的に処理を実行します。

詳細仕様

flowchart TD A[Cron起動] --> B[実行判定] B --> C[処理実行]

内部的に間引き制御を行います。


■ 13. Queue

機能概要

非同期処理の基盤です。

詳細仕様

flowchart TD A[Task] --> B[Queue登録] B --> C[Worker取得] C --> D[処理]

リトライ・分散処理が可能です。


■ 14. 管理UI

機能概要

ユーザーが設定・確認を行う画面です。

詳細仕様

flowchart TD A[ユーザー] --> B[UI] B --> C[API] C --> D[DB]

操作性と権限制御が重要です。


5. まとめ

flowchart TD A[取得層] --> B[処理層] --> C[出力層]

SWPFは「入力 → 判断 → 実行」の3層構造で構成され、すべての機能がこの流れに沿って設計されています。

 

当サイトまたはIoTカスタムモジュール、開発支援に関するお問い合わせはこちらのメールフォームからお気軽にお問い合わせください。