EMQX Cloud への CoAP デバイス接続ガイド

IoT 技術の進歩により、多くのスマートデバイスがネットワーク接続とデータ転送機能を獲得しています。

これらのデバイスは通常、CPU、RAM、フラッシュメモリ、ネットワーク帯域などのリソースに制限があります。特にバッテリー駆動のデバイスでは、プロトコルの消費電力と帯域幅が重要な要素となり、TCP や HTTP を直接使用してプラットフォームとのデータ交換を行うことは適切ではありません。

このようなデバイスのために設計された CoAP プロトコルを利用することで、EMQX Cloud は MQTT 消息サービスとして CoAP 対応デバイスの接続をサポートします。これにより、定義された CoAP メッセージ形式を使用してメッセージの発行、購読、受信が可能となります。

CoAP プロトコルの概要

IoT の多様なシナリオにおいて、デバイスのハードウェア条件やネットワークの安定性、トラフィック制限、消費電力、接続可能なデバイス数などにより、従来のインターネット通信とは異なる特性を持つ IoT デバイスの通信が必要となります。そのため、CoAP はリソースに制限のある IoT デバイス向けの HTTP 類似プロトコルとして設計され、RFC 7252 で詳細が規定されています。

プロトコルの特長

  • UDP ベースの軽量な通信
  • リクエスト/レスポンスモデルによる双方向通信
  • 高効率のバイナリフォーマット
  • ブロック転送や再送信による信頼性向上

EMQX Cloud への CoAP 接続方法

デプロイの作成

新しいデプロイを作成し、EMQX Cloud のデプロイメントページからパブリック IP アドレス(例:192.168.x.x)を取得します。

CoAP アクセスゲートウェイの有効化

現在ベータ版である CoAP アクセスゲートウェイを有効にするには、サポートチケットを提出します。有効化後、ゲートウェイのアドレスはデプロイメントの IP アドレス(UDP ポート 5683)になります。

デバイス接続とメッセージング

libcoap ライブラリを使用して、以下のように EMQX Cloud の CoAP ゲートウェイに接続し、メッセージを送受信します。


git clone https://github.com/coap/libcoap.git
cd libcoap
./autogen.sh
./configure --disable-documentation --disable-tests
make

メッセージの送信例

# CoAP クライアントから "hello,EMQX Cloud" メッセージを topic1 へ送信
./examples/coap-client -m put -e "hello,EMQX Cloud" "coap://192.168.x.x:5683/mqtt/topic1?c=device001&u=user&p=pass"

サブスクライブの例

# CoAP クライアントが topic1 を 20 秒間購読
./examples/coap-client -m get -s 20 "coap://192.168.x.x:5683/mqtt/topic1?c=device001&u=user&p=pass"

この間、topic1 にメッセージが投稿されると、libcoap クライアントがそれを受信します。

タグ: CoAP EMQX Cloud IoT udp MQTT

10月12日 18:08 投稿