Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
あるデバイスから IoT Hub に接続するにあたり、デバイスに搭載するモジュールのサイズを極力小さくする必要があるため、Azure IoT SDK などを使うことができない場合があります。
このような場合、Azure IoT Hub は、AMQP も MQTT もいずれもネイティブでサポートしているため、例えば、C のAMQP (もしくは MQTT) ライブラリをご利用いただけます。
IoT Hub に対するその他のプロトコルのサポート
/ja-jp/azure/iot-hub/iot-hub-protocol-gateway
Azure IoT Hub は MQTT、AMQP、および HTTP プロトコルを介した通信をネイティブでサポートします。
AMQP, MQTT それぞれの方法は以下の通りです。
■ AMQP の場合
手順を示すドキュメントはありませんが、AMQP 1.0 のための C ライブラリとして、uAMQP をオープンソースで公開しています。
uAMQP
https://github.com/Azure/azure-uamqp-c
uAMQP is a general purpose C library for AMQP 1.0.
例えば、以下のような、IoT Hub への接続のサンプルもありますので、ご参照いただければ幸いです。
https://github.com/Azure/azure-uamqp-c/blob/master/samples/mssbcbs_sample/main.c
/* This sample connects to an IoTHub, authenticates using a CBS token and sends one message */
/* Replace the below settings with your own.*/
#define IOT_HUB_HOST "<<<Replace with your own IoTHub host (like myiothub.azure-devices.net)>>>"
#define IOT_HUB_DEVICE_NAME "<<<Replace with your device Id (like test_Device)>>>"
#define IOT_HUB_DEVICE_SAS_TOKEN "<<<Replace with your own device SAS token (needs to be generated)>>>"
■ MQTT の場合
手順を示すドキュメントとして、以下があります。
MQTT プロトコルを使用した IoT Hub との通信
/ja-jp/azure/iot-hub/iot-hub-mqtt-support
「MQTT プロトコルの直接使用」の項目からご確認ください。
AMQP とMQTT のいずれを選択するかは、以下もご参考となりましたら幸いです。
なお各プロトコル用の通信ライブラリの実装にも依存しますが、AMQP よりもMQTT ライブラリの方がフットプリントは小さくなる見込みです。
リファレンス- 通信プロトコルの選択
/ja-jp/azure/iot-hub/iot-hub-devguide-protocols
リソースの少ないデバイス。MQTT およびHTTP ライブラリのフットプリントは、AMQP ライブラリの場合より小さくなります。
そのため、リソースが限られたデバイス(RAM が1 MB 未満など) の場合、MQTT とHTTP/1 が実装可能な唯一のプロトコルとなります。
MQTT のC 言語用ライブラリも複数実装はございますが、Eclipse Paho MQTT が比較的有名です。
MQTT C Client for Posix and Windows
https://www.eclipse.org/paho/clients/c/
Python バージョンのPaho MQTT ライブラリを使った実装例が上記 “MQTT プロトコルを使用した IoT Hub との通信” にもありますため、こちらもご参考ください。
上記の内容がお役に立てば幸いです。
Azure IoT 開発サポートチーム 津田