iot-engineer について
iot-engineer は、IoT 開発向けのスキルで、組み込みファームウェア、デバイス接続、システム全体の設計を扱います。電力管理、エッジ AI の導入、セキュリティ上の考慮事項も含みます。
主な機能
- 01エンドツーエンドの IoT アーキテクチャ設計
- 02ESP32、STM32、Nordic nRF 向けファームウェア
- 03MQTT v5 と無線プロトコルの選定
- 04バッテリーと消費電力の最適化
- 05TinyML の導入ガイダンス
- 06IoT セキュリティレビューの指針
活用シーン
- 01デバイスからゲートウェイ、クラウドまでの設計
- 02MQTT メッセージパターンの実装
- 03バッテリー駆動デバイスの省電力化
- 04ESP32 での異常検知モデルの導入
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill iot-engineerインストール後、Claude Code で/iot-engineerを入力して読み込まれたか確認します。
詳細
IoT エンジニア
目的
組み込みファームウェア、ワイヤレスプロトコル、クラウド連携を専門とする、モノのインターネット(IoT)開発の専門知識を提供します。MQTT、BLE、LoRaWAN、エッジコンピューティングを通じて、物理デバイスとデジタルシステムを接続するエンドツーエンドの IoT アーキテクチャを設計します。
使用するタイミング
- エンドツーエンドの IoT アーキテクチャ(デバイス → ゲートウェイ → クラウド)の設計
- マイクロコントローラー(ESP32、STM32、Nordic nRF)向けのファームウェア作成
- MQTT v5 メッセージングパターンの実装
- バッテリー寿命と消費電力の最適化
- エッジ AI モデル(TinyML)のデプロイ
- IoT フリートのセキュリティ確保(mTLS、セキュアブート)
- スマートホーム規格(Matter、Zigbee)との連携
2. 意思決定フレームワーク
接続プロトコルの選択
What are the constraints?
│
├─ **High Bandwidth / Continuous Power?**
│ ├─ Local Area? → **Wi-Fi 6** (ESP32-S3)
│ └─ Wide Area? → **Cellular (LTE-M / NB-IoT)**
│
├─ **Low Power / Battery Operated?**
│ ├─ Short Range (< 100m)? → **BLE 5.3** (Nordic nRF52/53)
│ ├─ Smart Home Mesh? → **Zigbee / Thread (Matter)**
│ └─ Long Range (> 1km)? → **LoRaWAN / Sigfox**
│
└─ **Industrial (Factory Floor)?**
├─ Wired? → **Modbus / Ethernet / RS-485**
└─ Wireless? → **WirelessHART / Private 5G**
クラウドプラットフォーム
| プラットフォーム | 最適な用途 | 主なサービス |
|---|---|---|
| AWS IoT Core | エンタープライズ規模 | Greengrass、Device Shadow、Fleet Provisioning。 |
| Azure IoT Hub | Microsoft 製品を利用する組織 | IoT Edge、Digital Twins。 |
| GCP Cloud IoT | データ分析 | BigQuery との連携(注:コアサービスは廃止/移行済みです)。 |
| HiveMQ / EMQX | ベンダーに依存しない用途 | 高性能 MQTT ブローカー。 |
エッジインテリジェンスのレベル
- テレメトリのみ: センサーの生データ(温度/湿度)を送信します。
- エッジフィルタリング: 変化があった場合のみ送信します(デッドバンド)。
- エッジ分析: FFT/RMS をローカルで計算します。
- エッジ AI: MCU 上で TFLite モデルを実行します(例:音声キーワード検出)。
危険信号 → security-engineer にエスカレーションしてください:
- ファームウェア内の WiFi パスワードまたは AWS キーのハードコード
- Over-The-Air(OTA)更新の仕組みがない
- 通信が暗号化されていない(HTTPS/MQTTS ではなく HTTP を使用)
- ゲートウェイにデフォルトのパスワード(
admin/admin)を使用
ワークフロー 2:ESP32 でのエッジ AI(TinyML)
目標: モーターの「異常」(振動)を検出します。
手順:
-
データ収集
- 「正常」状態と「異常」状態の加速度センサーデータ(XYZ)を記録します。
- Edge Impulse にアップロードします。
-
モデルのトレーニング
- 特徴量を抽出します(スペクトル分析)。
- K-Means による異常検知またはニューラルネットワークをトレーニングします。
-
デプロイ
- C++ ライブラリをエクスポートします。
- ファームウェアに統合します:
#include <edge-impulse-sdk.h> void loop() { // Fill buffer with sensor data signal_t signal; // ... // Run inference ei_impulse_result_t result; run_classifier(&signal, &result); if (result.classification[0].value > 0.8) { // Anomaly detected! sendAlertMQTT(); } }
4. パターンとテンプレート
パターン 1:デバイスシャドウ(デジタルツイン)
ユースケース: デバイスがオフラインの場合に状態(例:「ライト ON」)を同期します。
- クラウド: アプリが
desired状態を更新します:{"state": {"desired": {"light": "ON"}}}。 - デバイス: 起動し、
$aws/things/my-thing/shadow/update/deltaをサブスクライブします。 - デバイス: 差分を確認し、ライトを ON にします。
- デバイス:
reported状態を報告します:{"state": {"reported": {"light": "ON"}}}。
パターン 2:最終意志メッセージ(LWT)
ユースケース: 予期しない切断を検出します。
- 接続: デバイスが LWT トピックを設定します:
status/device-001、ペイロード:OFFLINE、保持:true。 - 正常時: デバイスが
status/device-001にONLINEをパブリッシュします。 - クラッシュ時: ブローカーがタイムアウトを検出し、LWT ペイロード(
OFFLINE)を自動的にパブリッシュします。
パターン 3:ディープスリープサイクル(バッテリー節約)
ユースケース: コイン電池で数年間稼働させます。
void setup() {
// 1. Init sensors
// 2. Read data
// 3. Connect WiFi/LoRa (fast!)
// 4. TX data
// 5. Sleep
esp_sleep_enable_timer_wakeup(15 * 60 * 1000000); // 15 mins
esp_deep_sleep_start();
}
6. 連携パターン
backend-developer:
- 引き継ぎ:IoT エンジニアが MQTT トピックにデータを送信 → バックエンド開発者が Lambda/Cloud Function を実行します。
- 共同作業:JSON スキーマ/Protobuf 定義を作成します。
- ツール:AsyncAPI。
data-engineer:
- 引き継ぎ:IoT Engineer が生のテレメトリをストリーミングし、Data Engineer が Kinesis Firehose を構築して、S3 Data Lake に送信します。
- コラボレーション:センサーからのデータ品質や外れ値に対応します。
- ツール:IoT Analytics、Timestream。
mobile-app-developer:
- 引き継ぎ:モバイルアプリが BLE 経由でデバイスに接続します。
- コラボレーション:GATT サービス/特性の UUID を定義します。
- ツール:nRF Connect。
コメント
Markdown 対応