Alibaba Cloud IoT Platform は、デバイスとプラットフォーム間の通信を確立するためのデバイス SDK を提供しています。 このトピックでは、fota_posix_demo.c サンプルプログラムを使用して、デバイス接続と OTA アップデートをシミュレートする方法について説明します。
注意事項
このトピックの手順は、一般ユーザーとして実行されます。 操作に管理者権限が必要な場合は、コマンドの前に sudo を付けます。
前提条件
プロダクトとデバイスを作成し、デバイス証明書 (ProductKey、DeviceName、DeviceSecret) を取得します。 詳細については、「プロダクトの作成」および「デバイスの作成」をご参照ください。
SDevice1 という名前のデバイスを作成します。
開発環境の準備
-
デバイス側の C SDK は Linux 上で実行されます。 64 ビットの Ubuntu 16.04 環境でコンパイルしてください。
-
必要なソフトウェア:
make 4.1 以降、gcc 5.4.0 以降。
インストールコマンド:
sudo apt-get install -y build-essential make gcc
操作手順
-
C デバイス SDK を取得します: C SDK 4.x。
-
C デバイス SDK パッケージを解凍し、
/LinkSDK/demos/fota_posix_demo.cファイル内のデバイス接続情報を変更します。SDevice1 のデバイス情報を使用します。
char *product_key = "g18***"; char *device_name = "SDevice1"; char *device_secret = "cefbebf00***"; ... ... char *url = "iot-***.mqtt.iothub.aliyuncs.com";パラメーター
例
説明
url
iot-***.mqtt.iothub.aliyuncs.comデバイス接続エンドポイントです。
-
新規パブリックインスタンス: [インスタンス詳細] ページで、[開発設定の表示] をクリックします。 エンドポイントは [開発設定] パネルに表示されます。
-
古いパブリックインスタンス: エンドポイントのフォーマットは
${YourProductKey}.iot-as-mqtt.${YourRegionId}.aliyuncs.comです。
product_key
g18***デバイス証明書情報です。 詳細については、「デバイス証明書の取得」をご参照ください。
このサンプルでは、デバイスごとの一意の証明書認証方式を使用します。
device_name
SDevice1device_secret
cefbebf00***fota_posix_demo.cファイルは、OTA アップデートのサンプルコードを提供します。 デバイスはアップデート前にバージョンを1.0.0として報告します。 本番環境では、デバイスの構成エリアから実際のバージョン番号を取得し、それを報告するロジックを実装する必要があります。 詳細については、「サンプルコードの説明」をご参照ください。cur_version = "1.0.0"; res = aiot_ota_report_version(ota_handle, cur_version); if (res < STATE_SUCCESS) { printf("aiot_ota_report_version failed: -0x%04X\r\n", -res); } -
-
Linux 仮想マシンに必要なソフトウェアをインストールします。
sudo apt-get install -y build-essential make gcc -
変更済みの
LinkSDKパッケージを、ご利用の Linux 開発環境にアップロードします。 -
SDK のルートディレクトリ
/LinkSDKで、makeコマンドを実行してサンプルプログラムをビルドします。make clean makeサンプルプログラム
fota-posix-demoは./outputディレクトリに生成されます。 -
サンプルプログラムを実行します:
./output/fota-posix-demo -
デバイスのランタイムログとステータスを表示します。
-
次のログは、デバイスの接続情報と報告されたバージョン番号を示しています。
:/opt/LinkSDK# ./output/fota-posix-demo [1630993401.977][LK-0313] MQTT user calls aiot_mqtt_connect api, connect [1630993401.977][LK-0317] SDevice1&g18xxx [1630993401.977][LK-0318] 348xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxC core_sysdep_network_establish host iot-xxx.mqtt.iothub.aliyuncs.com port 443, type 0 establish tcp connection with server(host='iot-xxx.mqtt.iothub.aliyuncs.com', port=[443]) success to establish tcp, fd=3 local port: 32776 [1630993401.988][LK-1000] establish mbedtls connection with server(host='iot-xxx mqtt.iothub.aliyuncs.com', port=[443]) [1630993401.999][LK-1000] success to establish mbedtls connection, (cost 45247 bytes in total, max used 47983 bytes) [1630993401.999][LK-0319] xxx.SDevice1|timestamp=2524608000000,_ss=1,_v=sdk-c-4.1.0,securemode=2,signmethod=hmacsha256,ext=3,_conn-tls_11| [1630993402.066][LK-0313] MQTT connect success in 86 ms AIOT_MQTTEVT_CONNECT [1630993402.066][LK-0309] pub: /ota/device/inform/g18xxx/SDevice1 [LK-030A] > 7B 22 69 64 22 3A 31 2C 20 22 70 61 72 61 6D 73 {"id":1, "params [LK-030A] > 22 3A 7B 22 76 65 72 73 69 6F 6E 22 3A 22 31 2E ":{"version":"1. [LK-030A] > 30 2E 30 22 7D 7D 0.0"}} -
ご利用のインスタンスの IoT Platform コンソールに戻ります。 左側のナビゲーションウィンドウで、 に移動します。 対象のデバイスを見つけ、そのステータスを確認します。 ステータスが オンライン の場合、デバイスが IoT Platform に接続されていることを示します。
-
次のステップ
デバイスへの OTA アップデートパッケージのプッシュ: IoT Platform はアップデートタスクをデバイスに送信します。 オンラインのデバイスはアップデート情報を受信し、OTA アップデートを実行します。