コンテンツにスキップ

CoAPコネクタ

CoAP(Constrained Application Protocol)コネクタは、リソース制約のあるIoTデバイスとの通信を可能にします。CoAPは低電力デバイスと損失のあるネットワーク向けに設計された軽量プロトコルで、スマートホーム、産業IoT、センサーネットワークで一般的に使用されています。

コネクタタイプ:

  • CoapReader - CoAPエンドポイントからデータを読み取る
  • CoapWriter - CoAPエンドポイントにデータを書き込む
  • ✅ 複数のトランスポートプロトコル(UDP、TCP、DTLS)
  • ✅ DTLSによるセキュア通信
  • ✅ PSKおよび証明書ベースの認証
  • ✅ GET、POST、PUTメソッド
  • ✅ ポーリングベースのデータ取得
{
"type": "CoapReader",
"config": {
"endpoint": "192.168.1.50:5683",
"transport": "UDP",
"pollingRate": 5000,
"path": "/sensors/temperature"
}
}
{
"type": "CoapReader",
"config": {
"endpoint": "192.168.1.50:5683",
"transport": "TCP",
"pollingRate": 5000,
"path": "/sensors/all"
}
}
{
"type": "CoapWriter",
"config": {
"endpoint": "192.168.1.50:5683",
"transport": "UDP",
"path": "/actuators/valve",
"method": "PUT"
}
}
パラメータ必須説明
endpointstringCoAPサーバーアドレス(ホスト:ポート)
transportstringトランスポートプロトコル: UDPTCP、またはDTLS
pollingRateintegerポーリング間隔(ミリ秒)
pathstringCoAPリソースパス(例: /sensors/temp
dtlsConfigobjectDTLS設定(DTLSトランスポートに必要)
パラメータ必須説明
endpointstringCoAPサーバーアドレス(ホスト:ポート)
transportstringトランスポートプロトコル: UDPTCP、またはDTLS
pathstringCoAPリソースパス
methodstringHTTPメソッド: POSTまたはPUT
dtlsConfigobjectDTLS設定(DTLSトランスポートに必要)

標準CoAP over UDP(デフォルトポート5683):

{
"endpoint": "192.168.1.50:5683",
"transport": "UDP"
}

最適: 低レイテンシ、リソース制約のあるデバイス

{
"type": "CoapReader",
"config": {
"endpoint": "192.168.1.50:5684",
"transport": "DTLS",
"pollingRate": 5000,
"path": "/sensors/secure",
"dtlsConfig": {
"pskIdentity": "bXlkZXZpY2U=",
"pskKey": "c2VjcmV0a2V5MTIz"
}
}
}

注: pskIdentitypskKeyはバイト配列です(通常JSONではbase64エンコード)。

{
"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"
}
}
}
}
{
"dtlsConfig": {
"certFile": {
"mode": "base64",
"data": "<base64エンコードされた証明書>"
},
"keyFile": {
"mode": "base64",
"data": "<base64エンコードされた秘密鍵>"
},
"caCertFile": {
"mode": "base64",
"data": "<base64エンコードされたCA証明書>"
}
}
}

CoAP readerはエンドポイントからJSONレスポンスを期待します:

{
"temperature": 25.5,
"humidity": 60,
"battery": 85
}

CoAP writerはデータペイロードをJSONとして送信します:

{
"valve_position": 75,
"mode": "auto"
}

複数のセンサーエンドポイントから読み取り:

{
"type": "CoapReader",
"config": {
"endpoint": "192.168.1.50:5683",
"transport": "UDP",
"pollingRate": 10000,
"path": "/sensors/environment"
}
}

DTLSセキュリティを持つデバイスに接続:

{
"type": "CoapReader",
"config": {
"endpoint": "iot-gateway.local:5684",
"transport": "DTLS",
"pollingRate": 5000,
"path": "/api/v1/data",
"dtlsConfig": {
"pskIdentity": "Z2F0ZXdheTE=",
"pskKey": "c3VwZXJzZWNyZXQ="
}
}
}

IoTアクチュエータにコマンドを送信:

{
"type": "CoapWriter",
"config": {
"endpoint": "192.168.1.100:5683",
"transport": "UDP",
"path": "/actuators/light",
"method": "PUT"
}
}

CoAP経由でビルディングシステムを制御:

{
"type": "CoapWriter",
"config": {
"endpoint": "building-controller.local:5683",
"transport": "TCP",
"path": "/hvac/setpoint",
"method": "POST"
}
}

解決策:

  • エンドポイントアドレスとポートを確認
  • ネットワーク接続を確認
  • CoAPサーバーが実行中であることを確認
  • トランスポートプロトコルがサーバー設定と一致することを確認

解決策:

  • PSKアイデンティティとキーがサーバー設定と一致することを確認
  • 証明書の有効性と有効期限を確認
  • CA証明書が正しいことを確認
  • 暗号スイートの互換性を確認

解決策:

  • エンドポイントが有効なJSONを返すことを確認
  • リソースパスが正しいことを確認
  • コンテンツ形式がapplication/jsonであることを確認
  • サーバーログでエラーを確認

解決策:

  • ネットワークが遅い場合はタイムアウトを増加
  • ネットワーク輻輳を確認
  • デバイスが応答していることを確認
  • 信頼性の低いネットワークにはTCPの使用を検討
  1. 本番環境ではDTLSを使用: 機密データは常に暗号化
  2. 適切なポーリングレート: 鮮度とデバイスバッテリー寿命のバランスを取る
  3. タイムアウトを処理: CoAPデバイスは断続的に利用可能な場合がある
  4. 利用可能な場合はObserveを使用: リアルタイム更新用(将来の機能)
  5. リソースパス規則: RESTライクな命名に従う(/sensors/temperature
  • MQTT - 代替IoTプロトコル
  • HTTP - 高性能デバイス用REST API
  • Filter - CoAPデータをフィルタリング
  • InfluxDB - センサーデータを保存