CoAPコネクタ
CoAP(Constrained Application Protocol)コネクタは、リソース制約のあるIoTデバイスとの通信を可能にします。CoAPは低電力デバイスと損失のあるネットワーク向けに設計された軽量プロトコルで、スマートホーム、産業IoT、センサーネットワークで一般的に使用されています。
コネクタタイプ:
CoapReader- CoAPエンドポイントからデータを読み取るCoapWriter- CoAPエンドポイントにデータを書き込む
- ✅ 複数のトランスポートプロトコル(UDP、TCP、DTLS)
- ✅ DTLSによるセキュア通信
- ✅ PSKおよび証明書ベースの認証
- ✅ GET、POST、PUTメソッド
- ✅ ポーリングベースのデータ取得
CoAP Reader(UDP)
Section titled “CoAP Reader(UDP)”{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5683", "transport": "UDP", "pollingRate": 5000, "path": "/sensors/temperature" }}CoAP Reader(TCP)
Section titled “CoAP Reader(TCP)”{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5683", "transport": "TCP", "pollingRate": 5000, "path": "/sensors/all" }}CoAP Writer
Section titled “CoAP Writer”{ "type": "CoapWriter", "config": { "endpoint": "192.168.1.50:5683", "transport": "UDP", "path": "/actuators/valve", "method": "PUT" }}設定パラメータ
Section titled “設定パラメータ”Reader設定
Section titled “Reader設定”| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
endpoint | string | ✅ | CoAPサーバーアドレス(ホスト:ポート) |
transport | string | ✅ | トランスポートプロトコル: UDP、TCP、またはDTLS |
pollingRate | integer | ✅ | ポーリング間隔(ミリ秒) |
path | string | ✅ | CoAPリソースパス(例: /sensors/temp) |
dtlsConfig | object | ❌ | DTLS設定(DTLSトランスポートに必要) |
Writer設定
Section titled “Writer設定”| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
endpoint | string | ✅ | CoAPサーバーアドレス(ホスト:ポート) |
transport | string | ✅ | トランスポートプロトコル: UDP、TCP、またはDTLS |
path | string | ✅ | CoAPリソースパス |
method | string | ✅ | HTTPメソッド: POSTまたはPUT |
dtlsConfig | object | ❌ | DTLS設定(DTLSトランスポートに必要) |
トランスポートプロトコル
Section titled “トランスポートプロトコル”標準CoAP over UDP(デフォルトポート5683):
{ "endpoint": "192.168.1.50:5683", "transport": "UDP"}最適: 低レイテンシ、リソース制約のあるデバイス
信頼性のある配信のためのCoAP over TCP:
{ "endpoint": "192.168.1.50:5683", "transport": "TCP"}最適: 信頼性のある接続、大きなペイロード
DTLS暗号化によるセキュアCoAP(デフォルトポート5684):
{ "endpoint": "192.168.1.50:5684", "transport": "DTLS", "dtlsConfig": { "pskIdentity": "device1", "pskKey": "c2VjcmV0a2V5" }}最適: 信頼できないネットワーク上のセキュア通信
DTLSセキュリティ設定
Section titled “DTLSセキュリティ設定”Pre-Shared Key(PSK)
Section titled “Pre-Shared Key(PSK)”{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5684", "transport": "DTLS", "pollingRate": 5000, "path": "/sensors/secure", "dtlsConfig": { "pskIdentity": "bXlkZXZpY2U=", "pskKey": "c2VjcmV0a2V5MTIz" } }}注: pskIdentityとpskKeyはバイト配列です(通常JSONではbase64エンコード)。
証明書ベースの認証
Section titled “証明書ベースの認証”{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5684", "transport": "DTLS", "pollingRate": 5000, "path": "/sensors/secure", "dtlsConfig": { "certFile": { "mode": "path", "data": "/certs/client.crt" }, "keyFile": { "mode": "path", "data": "/certs/client.key" }, "caCertFile": { "mode": "path", "data": "/certs/ca.crt" } } }}証明書ファイル(Base64)
Section titled “証明書ファイル(Base64)”{ "dtlsConfig": { "certFile": { "mode": "base64", "data": "<base64エンコードされた証明書>" }, "keyFile": { "mode": "base64", "data": "<base64エンコードされた秘密鍵>" }, "caCertFile": { "mode": "base64", "data": "<base64エンコードされたCA証明書>" } }}Readerレスポンス
Section titled “Readerレスポンス”CoAP readerはエンドポイントからJSONレスポンスを期待します:
{ "temperature": 25.5, "humidity": 60, "battery": 85}Writerペイロード
Section titled “Writerペイロード”CoAP writerはデータペイロードをJSONとして送信します:
{ "valve_position": 75, "mode": "auto"}一般的なユースケース
Section titled “一般的なユースケース”1. センサーネットワーク監視
Section titled “1. センサーネットワーク監視”複数のセンサーエンドポイントから読み取り:
{ "type": "CoapReader", "config": { "endpoint": "192.168.1.50:5683", "transport": "UDP", "pollingRate": 10000, "path": "/sensors/environment" }}2. セキュアデバイス通信
Section titled “2. セキュアデバイス通信”DTLSセキュリティを持つデバイスに接続:
{ "type": "CoapReader", "config": { "endpoint": "iot-gateway.local:5684", "transport": "DTLS", "pollingRate": 5000, "path": "/api/v1/data", "dtlsConfig": { "pskIdentity": "Z2F0ZXdheTE=", "pskKey": "c3VwZXJzZWNyZXQ=" } }}3. アクチュエータ制御
Section titled “3. アクチュエータ制御”IoTアクチュエータにコマンドを送信:
{ "type": "CoapWriter", "config": { "endpoint": "192.168.1.100:5683", "transport": "UDP", "path": "/actuators/light", "method": "PUT" }}4. スマートビルディング統合
Section titled “4. スマートビルディング統合”CoAP経由でビルディングシステムを制御:
{ "type": "CoapWriter", "config": { "endpoint": "building-controller.local:5683", "transport": "TCP", "path": "/hvac/setpoint", "method": "POST" }}トラブルシューティング
Section titled “トラブルシューティング”解決策:
- エンドポイントアドレスとポートを確認
- ネットワーク接続を確認
- CoAPサーバーが実行中であることを確認
- トランスポートプロトコルがサーバー設定と一致することを確認
DTLSハンドシェイク失敗
Section titled “DTLSハンドシェイク失敗”解決策:
- PSKアイデンティティとキーがサーバー設定と一致することを確認
- 証明書の有効性と有効期限を確認
- CA証明書が正しいことを確認
- 暗号スイートの互換性を確認
無効なレスポンス
Section titled “無効なレスポンス”解決策:
- エンドポイントが有効なJSONを返すことを確認
- リソースパスが正しいことを確認
- コンテンツ形式がapplication/jsonであることを確認
- サーバーログでエラーを確認
リクエストタイムアウト
Section titled “リクエストタイムアウト”解決策:
- ネットワークが遅い場合はタイムアウトを増加
- ネットワーク輻輳を確認
- デバイスが応答していることを確認
- 信頼性の低いネットワークにはTCPの使用を検討
ベストプラクティス
Section titled “ベストプラクティス”- 本番環境ではDTLSを使用: 機密データは常に暗号化
- 適切なポーリングレート: 鮮度とデバイスバッテリー寿命のバランスを取る
- タイムアウトを処理: CoAPデバイスは断続的に利用可能な場合がある
- 利用可能な場合はObserveを使用: リアルタイム更新用(将来の機能)
- リソースパス規則: RESTライクな命名に従う(
/sensors/temperature)