このトピックでは、オープンソースのPaho MQTTプロジェクトfor Cを使用してデバイスをIoT Platformに接続し、メッセージングを有効にする方法について説明します。
使用状況ノート
このトピックでは、共通ユーザーの権限を使用してすべての操作を実行します。 管理者権限を必要とする特定の操作を実行する場合は、sudo
コマンドを実行します。
前提条件
プロダクトとデバイスは、IoT Platformコンソールのインスタンスに作成されます。 デバイス証明書とMQTTエンドポイントが取得されます。 証明書情報には、ProductKey、DeviceName、およびDeviceSecretが含まれます。 詳細については、以下のトピックをご参照ください。
開発環境の準備
この例では、Ubuntu 16.04-LTSを開発環境として使用します。 次のコマンドを実行して、開発環境を構築します。
sudo apt-getアップデート
sudo apt-get install build-essential git sed cmake
Paho MQTTライブラリのダウンロード
次のコマンドを実行して、C用のPaho MQTTライブラリを複製します。
git clone https://github.com/eclipse/paho.mqtt.c.git
説明このトピックでは、masterブランチを使用してサンプルコードを開発します。
コミットID
はf7799da95e347bbc930b201b52a1173ebbad45a7
です。次のコマンドを実行して、Paho MQTT for Cライブラリをコンパイルおよびインストールします。
mkdirビルド cmake .. make -j sudo make install cd .. rm -rfビルド
デバイスをIoT Platformに接続する
デモパッケージからデモパッケージをダウンロードし、パッケージをディレクトリに解凍します。 ディレクトリに含まれるファイルを次の表に示します。
ファイル
説明
CMakeLists.txt
プロジェクトの構成ファイル。
src/samples/MQTTAsync_publish.c
このファイルには、デバイスをIoT Platformに接続して通信を有効にするために使用されるロジックコードが含まれています。
src/samples/aiot_mqtt_sign.c
このファイルには、MQTT接続パラメータを取得するために使用されるコードが含まれます。
aiot_c_demo.c
ファイルを実行すると、aiotMqttSign() 関数が呼び出され、username、password
、およびclientIdパラメーターの値が取得されます。src /サンプル /CMakeLists.txt
デモプロジェクトの構成ファイル。
src/samples/MQTTAsync_publish.c
ファイルで、ProductKey、DeviceName、およびDeviceSecretをデバイス証明書情報に置き換えます。#define「製品のProductKey」 # definite EXAMPLE_DEVICE_NAME「デバイスのDeviceName」 # define「デバイスのDeviceSecret」
src/samples/MQTTAsync_publish.c
ファイルでは、tcp:// iot-0 ************ l.mqtt.iothub.aliyuncs.com:443
がエンドポイントを示します。説明パブリックインスタンスおよびEnterprise Editionインスタンスのエンドポイントとエンドポイントの形式の詳細については、「インスタンスのエンドポイントの表示」をご参照ください。
#define ADDRESS "tcp:// iot-0 ************ l.mqtt.iothub.aliyuncs.com:443"
このトピックの「Download the Paho MQTT library for C」に記載されているファイルを、ファイルが格納されているディレクトリに基づいて、手順1で説明されているファイルに置き換えます。
次のコマンドを実行して、プロジェクトをコンパイルします。
mkdir build // プロジェクトのルートディレクトリでコマンドを実行します。 cdビルド cmake .. make -j
プロジェクトをコンパイルした後、
build
ディレクトリで次のコマンドを実行してプログラムファイルを実行します。. /src/samples/MQTTAsync_publish
プログラムファイルを実行すると、次のローカルログが生成されます。
clientid: ty *** 1&a1 **** kc | timestamp=2524608000000、_v=paho-c-standard-1.0.0、securemode=3、signmethod=hmacsha256、lan=C | ユーザー名: ty *** 1&a1 **** kc パスワード: 1BB ************************************************** 3621 Hello Worldの公開を待っています! トピック /sys/a1 ***** kc/ty ******** 1/thing/event/property/post for client 成功した接続 トークン値1のメッセージ配信確認 成功した切断