📘 SWPFプラットフォーム 機能仕様書
1. 概要
SWPFは、IoTデータ・AI・外部サービス連携を統合した イベント駆動型オートメーションプラットフォームです。
主な特徴:
- MQTT / REST によるデータ収集
- ルールベースの自動処理
- プラグインによる拡張
- AI・外部APIとの連携
- Drupalベースの柔軟な管理
2. システム全体構成
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デバイスを安全に登録します。
詳細仕様
入出力仕様
入力:
{
"pairing_code": "123456"
}
出力:
{
"device_id": "xxx",
"mqtt": {
"host": "xxx",
"port": 8883,
"user": "xxx",
"pass": "xxx"
}
}
主な使用例
- 新規デバイスの初期設定
補足事項
- MACアドレスはハッシュ化推奨
- HMAC方式推奨
■ 2. IoTデータ受信
機能概要
MQTTまたはRESTでデータを受信します。
詳細仕様
入出力仕様
{
"t": 25,
"h": 60,
"image": "binary"
}
主な使用例
- センサー値送信
- 画像アップロード
補足事項
- BASE64 / RAW対応
- topic設計重要
■ 3. IoTデータ保存
機能概要
受信データを統一フォーマットで保存します。
詳細仕様
入出力仕様
$context['input']['raws'] = [
't' => 25
];
主な使用例
- 履歴管理
- AI分析用
補足事項
- Headerに統合
■ 4. トリガー検知
機能概要
トリガー検知は、IotDataHeaderに保存されたデータを起点として、後続処理(Rule評価・Plugin実行)を開始するための重要な機能です。単なるイベント発火ではなく、「どの条件で処理を開始するか」を定義する役割を持ちます。トリガーは複数登録可能であり、各トリガーごとに条件が評価されます。LINE、MQTT、Cronなど複数の入力ソースに対応しているため、イベント駆動設計の中心となります。
詳細仕様
トリガーは「イベントの入口」として機能し、後続のRuleエンジンにデータを渡します。トリガー段階では複雑なロジックは持たず、「処理を開始するか否か」に特化しています。
■ 5. ルール評価
機能概要
RULE_JSONに基づいて条件分岐を行い、実行すべき処理(templateid)を決定します。ルールはJSON形式で記述され、ネスト・AND/OR条件など複雑なロジックをコードレスで表現可能です。これにより非エンジニアでもロジック調整が可能になります。
詳細仕様
{
"if": [{"temp": ">30"}],
"then": ["ACTION_1"]
}
内部的にはPARAMS_MAPを参照して評価されます。ネスト構造により最大10階層まで評価可能です。
■ 6. プラグイン実行
機能概要
プラグインは実際の処理を実行する単位であり、RULE評価結果に応じて呼び出されます。すべての処理はプラグインとして分離されるため、高い拡張性と保守性を実現します。
詳細仕様
プラグインはcontextを受け取り、結果を返します。ステートレス設計が推奨されます。
■ 7. データ加工(PARAMS)
機能概要
PARAMSはrawデータを論理的なキーに変換する仕組みです。これによりセンサーの差異を吸収し、RULEやPluginで統一的に扱えます。
詳細仕様
"TEMP": "raw.t"
PARAMSは評価順序が重要で、上から順に処理されます。
■ 8. 外部サービス連携
機能概要
REST APIを通じて外部システムと連携します。Kintone、WordPressなどと接続可能です。
詳細仕様
認証(APIKEYなど)とリトライ設計が重要です。
■ 9. AI解析連携
機能概要
画像やデータをAIで解析する機能です。YOLOやChatGPTを利用します。
詳細仕様
重い処理のため必ず非同期で実行します。
■ 10. 通知・アクション
機能概要
イベント結果をユーザー通知やデバイス制御として出力します。
詳細仕様
即時性と信頼性が重要です。
■ 11. データミラーリング
機能概要
複数サーバ間でデータを同期します。
詳細仕様
GET /export?last_id=xxx
冪等性設計が必須です。
■ 12. Cron
機能概要
定期的に処理を実行します。
詳細仕様
内部的に間引き制御を行います。
■ 13. Queue
機能概要
非同期処理の基盤です。
詳細仕様
リトライ・分散処理が可能です。
■ 14. 管理UI
機能概要
ユーザーが設定・確認を行う画面です。
詳細仕様
操作性と権限制御が重要です。
5. まとめ
SWPFは「入力 → 判断 → 実行」の3層構造で構成され、すべての機能がこの流れに沿って設計されています。