本篇文章2251字,讀完約6分鐘

阿里云國際站經(jīng)銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費開戶,代充值優(yōu)惠大,聯(lián)系客服飛機@jkkddd

Paho-MQTT C(嵌入式版)接入示例

本文介紹如何使用Paho提供的嵌入式C語言MQTT開源工程,將設(shè)備接入阿里云物聯(lián)網(wǎng)平臺,并進行消息收發(fā)。
使用前必讀
本文操作步驟以普通用戶權(quán)限為例。如果您在操作過程中涉及到管理員權(quán)限才能執(zhí)行的操作,可嘗試使用sudo命令執(zhí)行。
前提條件
已在物聯(lián)網(wǎng)平臺控制臺,對應(yīng)實例下,創(chuàng)建產(chǎn)品和設(shè)備,并獲取MQTT接入域名和設(shè)備證書信息(ProductKey、DeviceName和DeviceSecret)。具體操作,請參見:
查看實例終端節(jié)點。
創(chuàng)建產(chǎn)品。
創(chuàng)建設(shè)備。
準(zhǔn)備開發(fā)環(huán)境
本示例使用Ubuntu 16.04-LTS作為開發(fā)環(huán)境。執(zhí)行以下命令構(gòu)建開發(fā)環(huán)境。
下載C語言Paho MQTT庫
執(zhí)行以下命令,克隆C語言版本的Paho MQTT庫。
Paho嵌入式C工程提供了以下三個子項目:
MQTTPacket:提供MQTT數(shù)據(jù)包的序列化與反序列化,以及部分輔助函數(shù)。
MQTTClient:封裝MQTTPacket生成的高級別C++客戶端程序。
MQTTClient-C:封裝MQTTPacket生成的高級別C客戶端程序。
samples目錄提供FreeRTOS和Linux兩個例程,分別支持FreeRTOS和Linux系統(tǒng)。
src目錄提供MQTTClient的代碼實現(xiàn)能力,以及用于移植到FreeRTOS、cc3200和Linux的網(wǎng)絡(luò)驅(qū)動。
了解Paho MQTT的更多API細節(jié),可以查看MQTTClient.h。
接入物聯(lián)網(wǎng)平臺
單擊打開aiot_mqtt_sign.c,復(fù)制阿里云提供的計算MQTT連接參數(shù)所需的源碼,然后粘貼保存為本地的aiot_mqtt_sign.c文件。
aiot_mqtt_sign.c文件定義了函數(shù)aiotMqttSign(),函數(shù)說明如下:
原型:
int aiotMqttSign(const char *productKey, const char *deviceName, const char *deviceSecret,
char clientId[150], char username[65], char password[65]);功能:
用于計算設(shè)備接入物聯(lián)網(wǎng)平臺的MQTT連接參數(shù)username、password和clientid。
添加實現(xiàn)設(shè)備接入物聯(lián)網(wǎng)平臺的程序文件。
您需編寫程序調(diào)用aiot_mqtt_sign.c中的aiotMqttSign()函數(shù)計算MQTT連接參數(shù),實現(xiàn)接入物聯(lián)網(wǎng)平臺和通信。
開發(fā)說明和示例代碼如下:
調(diào)用aiotMqttSign()接口,生成連接MQTT服務(wù)端的三個建連參數(shù)clientId、username和password。
接入物聯(lián)網(wǎng)平臺。
需配置以下內(nèi)容:
調(diào)用NetworkInit和NetworkConnect建立TCP連接。
調(diào)用MQTTClientInit初始化MQTT客戶端。
配置MQTT建連參數(shù)結(jié)構(gòu)體MQTTPacket_connectData。
發(fā)布消息。
調(diào)用MQTTPublish()接口,向指定的自定義Topic發(fā)布自定義格式消息。
通信Topic介紹,請參見什么是Topic。
示例代碼
使用Demo代碼程序接入物聯(lián)網(wǎng)平臺。
下載Demo包,并解壓縮。
在aiot_c_demo.c中,將設(shè)備信息修改為您的設(shè)備信息。
替換以下代碼中EXAMPLE_PRODUCT_KEY、EXAMPLE_DEVICE_NAME和EXAMPLE_DEVICE_SECRET后的值為您的設(shè)備證書信息。
修改代碼char *host = EXAMPLE_PRODUCT_KEY".iot-as-mqtt.cn-shanghai.aliyuncs.com"中的值為對應(yīng)接入域名。
公共實例和企業(yè)版實例接入域名的格式說明,請參見查看實例終端信息。
將aiot_mqtt_sign.c和已修改的aiot_c_demo.c文件放到Paho工程的目錄../paho.mqtt.embedded-c/MQTTClient-C/samples/linux中。
編譯工程,并運行程序。
有兩種方法可以編譯出可執(zhí)行的程序:
使用CMake。
在/paho.mqtt.embedded-c/MQTTClient-C/samples/linux目錄下的CMakeLists.txt文件中,增加aiot_c_demo.c和aiot_mqtt_sign.c。
修改后的CMakeLists.txt文件內(nèi)容如下。
使用build.sh。
打開/paho.mqtt.embedded-c/MQTTClient-C/samples/linux目錄下的build.sh文件。
將build.sh中的stdoutsub.c替換為aiot_mqtt_sign.c aiot_c_demo.c,-o stdoutsub替換為-o aiot_c_demo,然后保存build.sh。
修改完成后,在/paho.mqtt.embedded-c/MQTTClient-C/samples/linux目錄下,執(zhí)行命令./build.sh,完成編譯。
完成編譯后,生成aiot_c_demo可執(zhí)行文件。
執(zhí)行命令./aiot_c_demo,運行程序。

標(biāo)題:阿里云國際賬號注冊,阿里云國際站

地址:http://0bc8wa.cn/kfxw/64218.html