本demo主要以C語言為例,介紹在Linux平台下實現設備的接入。
請確定本地已正確安裝Linux環境,cmake項目構建工具(最低2.8版本)、gcc編譯工具,本示例使用Ubuntu 14.04.3。
本Demo依賴以下第三方庫,請正確安裝,本示例預設安裝路徑為 /usr/local/:
請確定已正確創建產品及設備。
openssl-OpenSSL_1_0_2q,paho.mqtt.c-1.3.0(編譯paho時需打開PAHO_WITH_SSl選項)
登入Linux虛擬機器。
下載獲取demo工程。
使用命令完成解壓,解壓後可以看到Linux本地新增OneNET-MQTT-demo-c資料夾。檔詳細信息如下:
OneNET-MQTT-demo-c
|- cert #mqtts證書所在目錄
|- certificate.pem
|- CmakeLists.txt #構建cmake工程
|- busi.h #用戶具體業務迴圈函數宣告
|- call-back.h #用戶設定connection lost、下行數據回檔聲明
|- mqtts-client.h #mqtts-client標頭檔
|- utils.h #base64編解碼、hmac_sha1、url_encode函數宣告
|- token.h #計算鑒權token的函數宣告
|- types.h #topic及dp payload format聲明
|- mqtts-sample.c #主程序
|- mqtts-client.c #mqtts-client用戶端創建、銷毀、subscribe等函數實現
|- token.c #計算鑒權token的函數實現
|- call-back.c #connection lost、下行數據回檔實現
|- busi.c #用戶具體業務實現
|- utils.c #base64編解碼、hmac_sha1、url_encode函數實現
|- types.c #topic及dp payload format定義
在通過示例代碼與物聯網平台通信之前,需要將mqtts-samples.c中的設備參數修改為你已創建成功的設備信息,完成後保存退出。
如下所示,在此處填入產品ID、設備名稱、設備key。
/*設備所屬產品*/
const char *pid = "你的產品ID";
/*設備名稱*/
const char *device_name = "你的設備名稱";
/*設備級的access key*/
const char *device_access_key ="你的設備Key";
用戶可根據需要自訂token的訪問有效期(即過期時間),本示例默認為2019-12-31日。
/*token过期时间,请按照实际具体需求计算token过期时间,本例中为从1970-1-1到2019-12-31的秒数*/
int64_t expire_time = 1577721600;
修改完成後在示例代碼目錄,執行cmake命令,生成makefile文件。
cmake .
通過make指令編譯示例程式。
make clean
make
生成的示例程式mqtts-sample存放在目前的目錄下。
運行示例程式。 在控制台顯示裝置上線。 此時,設備與物聯網平台成功連接。
./mqtts-sample
[datapoint] receive dp accepted response from OneNET...
在本示例中,除數據點上載外,也可以實現物聯網平台下發命令控制設備。你可以在設備清單中,選擇更多操作-下發命令完成設備命令的下發。
[cmd] receive cmd from OneNET
cmduuid:59aba784-ee98-4620-84b0-b8744fd4ad74
payload:54 68 69 73 69 73 61 74 65 73 74 6D 65 73 73 61 67 65 2E
[cmd] OneNET accept the cmd[59aba784-ee98-4620-84b0-b8744fd4ad74] response...