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

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

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

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

標(biāo)題:阿里云國(guó)際賬號(hào)注冊(cè),阿里云國(guó)際站

地址:http://www.pengfei-china.com/kfxw/64218.html