CoAP (IoT)
Constrained Application Protocol (RFC 7252) — 低消費電力 IoT デバイス向けの RESTful 通信規格。UDP ベースのため、パケットが小さく消費電力も少なくて済みます。ゲートウェイは デバイスのリソース URI に GET / PUT でアクセスします。
| 状況 | どのカードを使うか |
|---|---|
| 低消費電力 IoT デバイス (LoRa-WAN gateway の背後、電池式センサ) | CoAP (このページ) |
| 一般的な IoT ゲートウェイ (HTTP API) | HTTP |
| 産業用 PLC | Modbus/TCP, OPC-UA, MELSEC |
| MQTT broker 経由 | MQTT Client |
登録フォームの入力値
| 入力欄 | 何を入力するか | 例 |
|---|---|---|
| IP アドレス | CoAP デバイス / ゲートウェイのホスト | device.local, 10.20.30.40 |
| ポート | CoAP 標準 5683 (平文) / 5684 (DTLS) | 5683 |
| 収集周期 | ポーリング周期 (ms) | 5000 (電池式デバイスは長めに) |
タグの PLC アドレス表記 — リソースパス
タグの PLC アドレス = CoAP リソース URI パス。
| 形式 | 動作 |
|---|---|
/sensors/temperature | デバイスの coap://host:5683/sensors/temperature に GET — 応答テキストを返す |
/actuators/led | write 時に PUT (text/plain) — value が payload |
sensors/multi/T1 | 先頭の / がない場合は自動補正 |
read 呼び出しは synchronous GET — ポーリングサイクルごとにデバイスへ直接リクエストします。 電池式デバイスの場合はポーリングサイクルを長め (5000~60000 ms) に設定し、デバイスの sleep を解除する頻度を減らしてください。
よく使う事例
| 事例 | 方法 |
|---|---|
| Eclipse Californium デモサーバ | coap.me / 5683 + /test, /.well-known/core (リソースディスカバリ) |
| LoRa-WAN gateway → CoAP proxy | gateway の CoAP API ポート + デバイスごとのリソースパス |
| 産業用 IoT センサ | メーカーマニュアル記載のリソースパス (/sensor/X) — 通常はテキスト応答 |
write (PUT)
タグページまたは REST API から値を書き込むと、デバイスへ PUT リクエスト (mediaType text/plain) が送信されます。
plc_address = /actuators/led
value = ON
→ PUT coap://host:5683/actuators/led payload="ON" Content-Format: text/plain
応答が success (2.04 Changed など) であれば write 成功です。
よくある問題と対処
| 症状 | 原因 | 対処 |
|---|---|---|
| 値が入ってこない (read が空文字列) | デバイスがリソースに未対応 | coap-client -m get coap://host:5683/.well-known/core でリソース一覧を確認 (libcoap-bin パッケージ) |
| read が非常に遅い | ネットワークの packet loss + CoAP retransmit | ポーリングサイクルを長くする、congestion を確認 |
| DTLS が必要なデバイス | ドライバは平文 CoAP のみ対応 | デバイスの前段に DTLS 終端ゲートウェイを配置し、ゲートウェイの平文側を読み取ってください。dtls オプションやポート 5684 の指定では解決しません |