精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

OpenHarmony Neptune開發板-MQTT連接華為IoT平臺

開發 前端
本次我修改程序,解決了CPU異常(直接不能運行)和平臺命令下發錯誤問題,并測試20~30分鐘,確保穩定運行,并將一些遇到問題做相關介紹。

[[428086]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

前言:

之前有發過Neptune開發板-MQTT連接華為IoT平臺文章,但發現寫的程序有很大BUG,導致程序運行到開發板經常發生CPU異常(直接不能運行)和平臺命令下發錯誤,在此和之前使用我寫的程序發生問題的人說一句抱歉,本次我修改程序,解決了CPU異常(直接不能運行)和平臺命令下發錯誤問題,并測試20~30分鐘,確保穩定運行,并將一些遇到問題做相關介紹。

介紹:

本示例將演示如何在Neptune開發板上使用MQTT協議連接華為IoT平臺,使用的是ATH20溫濕度傳感器模塊與Neptune開發板

本示例實現AHT20溫濕度數據上報華為IoT平臺,IoT平臺下發命令控制LED燈的開關

使用W800 SDK功能包中libemqtt來實現連接華為IoT平臺

程序設計

一、MQTT初始化

  1. void mqtt_init(mqtt_broker_handle_t* broker, const char* clientid); 

初始化要連接到代理的信息

二、寫入username與password

  1. void mqtt_init_auth(mqtt_broker_handle_t* broker, const char* username, const charpassword); 

啟用身份驗證以連接到代理。

三、建立TCP連接

編寫TCP連接函數,代碼示例如下:

  1. static int init_socket(mqtt_broker_handle_t *broker, const char *hostname, short port, int keepalive) 
  2.     int flag = 1; 
  3.     struct hostent *hp; 
  4.  
  5.     // 創建套接字 
  6.     if((socket_id = socket(PF_INET, SOCK_STREAM, 0)) < 0) 
  7.         return -1; 
  8.  
  9.     // 禁用Nagle算法 
  10.     if (setsockopt(socket_id, IPPROTO_TCP, 0x01, (char *)&flag, sizeof(flag)) < 0) 
  11.     { 
  12.         close_socket(&mqtt_broker); 
  13.         return -2; 
  14.     } 
  15.  
  16.     // 查詢主機IP啟動 
  17.     hp = gethostbyname(hostname); 
  18.     if (hp == NULL ) 
  19.     { 
  20.         close_socket(&mqtt_broker); 
  21.         return -2; 
  22.     } 
  23.  
  24.     struct sockaddr_in socket_address; 
  25.     memset(&socket_address, 0, sizeof(struct sockaddr_in)); 
  26.     socket_address.sin_family = AF_INET; 
  27.     socket_address.sin_port = htons(port); 
  28.     memcpy(&(socket_address.sin_addr), hp->h_addr, hp->h_length); 
  29.  
  30.     // 連接套接字 
  31.     if((connect(socket_id, (struct sockaddr *)&socket_address, sizeof(socket_address))) < 0) 
  32.     { 
  33.         close_socket(&mqtt_broker); 
  34.         return -1; 
  35.     } 
  36.  
  37.     // MQTT stuffs 
  38.     mqtt_set_alive(broker, mqtt_keepalive); 
  39.     broker->socketid = socket_id; 
  40.     broker->mqttsend = send_packet; 
  41.     return 0; 

四、建立MQTT連接

  1. int mqtt_connect(mqtt_broker_handle_t* broker); 

五、訂閱MQTT

編寫訂閱MQTT主題函數,代碼示例如下:

  1. static int subscribe_topic(char *topic)//訂閱主題 
  2.     unsigned short msg_id = 0, msg_id_rcv = 0; 
  3.     int packet_lengthgth = 0; 
  4.     int ret = -1; 
  5.   
  6.     if(topic == NULL) { 
  7.         return -1; 
  8.     } 
  9.      
  10.     ret = mqtt_subscribe(&mqtt_broker, topic, &msg_id); 
  11.     if( ret == -1 ) { 
  12.         close_socket(&mqtt_broker); 
  13.         return -1; 
  14.     } 
  15.     packet_lengthgth = read_packet(MQTT_DEMO_READ_TIME_SEC, MQTT_DEMO_READ_TIME_US); 
  16.     if(packet_lengthgth < 0) 
  17.     { 
  18.         printf("Error(%d) on read packet!\n", packet_lengthgth); 
  19.         close_socket(&mqtt_broker); 
  20.         return -1; 
  21.     } 
  22.   
  23.     if(MQTTParseMessageType(pcaket_buffer) != MQTT_MSG_SUBACK) 
  24.     { 
  25.         printf("SUBACK expected!\n"); 
  26.         close_socket(&mqtt_broker); 
  27.         return -2; 
  28.     } 
  29.   
  30.     msg_id_rcv = mqtt_parse_msg_id(pcaket_buffer); 
  31.     if(msg_id != msg_id_rcv) 
  32.     { 
  33.         printf("%d message id was expected, but %d message id was found!\n", msg_id, msg_id_rcv); 
  34.         close_socket(&mqtt_broker); 
  35.         return -3; 
  36.     } 
  37.   
  38.     return 0; 

數據推送與解析

采用cJSON封包與解包(使用W800 SDK功能包中cJSON實現),共有兩個封包(一個設備屬性上報,一個命令應答上報),一個解包解析IoT平臺命令,其他不過多贅述具體詳見華為IoTDA 設備接入文檔:設備接入 IoTDA 文檔

例如設備屬性上報,代碼示例如下:

  1. /*************************打包發布請求*****************/ 
  2. static int packPublishReq(char *jsonBuffer) 
  3.     cJSON *jsRet = NULL
  4.     cJSON *jsArray = NULL
  5.     int ackLen = 0; 
  6.      
  7.     jsRet = cJSON_CreateObject(); 
  8.     if(jsRet) 
  9.     {    
  10.         jsArray = cJSON_CreateArray(); 
  11.         cJSON_AddItemToObject(jsRet, "services", jsArray); 
  12.         { 
  13.             cJSON *arrayObj_1 = cJSON_CreateObject(); 
  14.             cJSON_AddItemToArray(jsArray, arrayObj_1); 
  15.             cJSON_AddStringToObject(arrayObj_1, "service_id""Temperature"); 
  16.  
  17.             cJSON *arrayObj_2 = cJSON_CreateObject(); 
  18.             cJSON_AddItemToObject(arrayObj_1, "properties", arrayObj_2); 
  19.             cJSON_AddStringToObject(arrayObj_2, "temp", Temperature.temp); 
  20.             cJSON_AddStringToObject(arrayObj_2, "humi", Temperature.humi); 
  21.             cJSON_AddStringToObject(arrayObj_2, "led",  Temperature.ON_OFF); 
  22.              
  23.             cJSON_AddStringToObject(arrayObj_1,"event_time", Temperature.timestamp); 
  24.         } 
  25.         char *databuf = cJSON_PrintUnformatted(jsRet); 
  26.         if(databuf) { 
  27.             if( jsonBuffer ) { 
  28.                 ackLen = strlen(databuf); 
  29.                 memcpy( jsonBuffer, databuf,ackLen); 
  30.             } 
  31.             tls_mem_free(databuf); 
  32.         } 
  33.         cJSON_Delete(jsRet);  
  34.     } 
  35.     return ackLen; 

數據應答(重點)

按照華為云IoT設備平臺命令下發文檔需要將

下行中的request_id={request_id} 復制到上行中,只有這樣下行與上行request_id相同才能保證平臺命令數據下發成功任務

  1. 下行 $oc/devices/{device_id}/sys/commands/request_id={request_id} 
  1. 上行:$oc/devices/{device_id}/sys/commands/response/request_id={request_id} 

這里展示一小段代碼:

  1. len = mqtt_parse_pub_topic(pcaket_buffer, topic);    //接收平臺下發的topic 
  2.         topic[len] = '\0'
  3.         len = mqtt_parse_publish_msg(pcaket_buffer, &msg); 
  4.            strncpy(request_id,topic+63,47);                         
  5.            sprintf(ACK_TOPIC,"%s%s",MQTT_DEMO_ACK_TOPIC,request_id);//復制request_id={request_id} 

 這里我出的問題就在->strncpy(request_id,topic+63,47);在我之前是topic+62 而且再我之前創建demo平臺下發成功,就沒想了,但在這幾天測試時就發現這問題故說明。

CPU中斷異常問題

由于定時器使用不當,導致CPU中斷異常,致程序崩潰(以更改)

華為IoT平臺配置

請參考:BearPi-HM_Nano開發板WiFi編程開發——MQTT連接華為IoT平臺(Demo我以導出模型)

添加華為云IoT參數:(這只是示例,無法使用)

  1. #define MQTT_DEMO_CLIENT_ID            "616268529fff74057ddd731b_202110101314_0_0_2021101006"                        //ID 
  2. #define MQTT_DEMO_DEVICE_ID            "616268529fff74057ddd731b_202110101314" 
  3. #define MQTT_DEMO_PASSWORD             "b6fd9631cd69eee9ce565a36564b93d26760a49ace05be96cbe9dfaab91f275d" 
  4. #define MQTT_DEMO_SUB_TOPIC            "$oc/devices/616268529fff74057ddd731b_202110101314/sys/commands/#"             //訂閱主題 
  5. #define MQTT_DEMO_PUB_TOPIC            "$oc/devices/616268529fff74057ddd731b_202110101314/sys/properties/report"      //發布主題 
  6. #define MQTT_DEMO_ACK_TOPIC            "$oc/devices/616268529fff74057ddd731b_202110101314/sys/commands/response/" 

 在wifi_connecter.h修改wifi熱點信息

示例代碼編譯燒錄代碼后,按下開發板的RESET按鍵:

OpenHarmony Neptune開發板-MQTT連接華為IoT平臺-鴻蒙HarmonyOS技術社區

點擊設備右側的“查看”,進入設備詳情頁面,可看到上報的數據。

OpenHarmony Neptune開發板-MQTT連接華為IoT平臺-鴻蒙HarmonyOS技術社區

在華為云平臺設備詳情頁,單擊“命令”,選擇同步命令下發,選中創建的命令屬性,單擊“確定”,即可發送下發命令控制設備。

OpenHarmony Neptune開發板-MQTT連接華為IoT平臺-鴻蒙HarmonyOS技術社區

總結:

現以解決經常發生CPU異常(直接不能運行)和平臺命令下發錯誤,同時創建使用兩個定時器,一個20秒上報AHT20數據,一個1分鐘ping一次(用以保活),使之穩定運行,支持1.0版本與1.1版本。

注意:!!!需要將libemqtt.h下!!!

  1. MQTT_CONF_USERNAME_LENGTH 修改為64 
  2. MQTT_CONF_PASSWORD_LENGTH 修改為64+8 
  3. clientid[50]修改為clientid[64] 

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-09-10 10:01:04

鴻蒙HarmonyOS應用

2021-09-13 10:03:35

鴻蒙HarmonyOS應用

2021-09-08 15:44:56

鴻蒙HarmonyOS應用

2022-04-01 15:54:01

DHCP網絡協議開發板

2021-05-10 09:40:29

鴻蒙HarmonyOS應用

2022-01-07 21:11:27

鴻蒙HarmonyOS應用

2020-11-17 12:15:36

MQTT開發

2021-09-14 10:09:33

開源MowiSeptentrio

2020-10-20 09:32:43

HiSparkWi-FiIoT

2020-12-16 10:05:48

鴻蒙開發板Onenet平臺

2022-10-14 15:55:24

環境搭建鴻蒙

2021-12-16 15:14:54

鴻蒙HarmonyOS應用

2022-03-03 19:21:50

Harmony鴻蒙操作系統

2021-12-28 16:06:15

鴻蒙HarmonyOS應用

2021-12-15 15:28:18

鴻蒙HarmonyOS應用

2022-02-24 16:39:41

OpenHarmonNiobe開發鴻蒙

2021-06-25 15:32:13

鴻蒙HarmonyOS應用

2020-12-29 09:59:01

鴻蒙HarmonyOS智能家居

2020-12-30 11:02:34

鴻蒙HarmonyOS智能家居
點贊
收藏

51CTO技術棧公眾號

亚洲精品影院在线观看| 999热视频在线观看| 精品人妻一区二区免费| 日本无删减在线| 国产精品视区| 欧美精品久久一区| 日韩 欧美 视频| 婷婷在线免费观看| 日韩av中文在线观看| 日韩中文字幕在线观看| 日本精品一二三| 成人免费毛片嘿嘿连载视频…| 亚洲女与黑人做爰| 久久综合精品一区| 国产精品视频一二区| 一区二区国产精品| 久久久精品视频成人| 无遮挡aaaaa大片免费看| 9999在线精品视频| 色8久久人人97超碰香蕉987| 中文字幕在线亚洲三区| 天天插天天干天天操| 精品在线观看免费| 欧美亚洲另类视频| 潘金莲一级黄色片| 亚洲理论电影| 日韩一级视频免费观看在线| 国产最新免费视频| fc2ppv国产精品久久| 久久久噜噜噜久噜久久综合| 超碰97人人人人人蜜桃| 中文字幕第99页| 日韩午夜免费| 欧美成人免费全部观看天天性色| 香蕉视频久久久| 国产乱论精品| 日韩欧美黄色影院| 国产精品第一页第二页第三页| 国产日韩一区在线| 久久中文字幕免费| 在线日本成人| 欧美大片在线免费观看| 亚洲欧洲综合网| 成人在线视频免费观看| 精品调教chinesegay| 91精品人妻一区二区三区四区| 亚洲tv在线| 欧美午夜不卡在线观看免费| av观看免费在线| 岛国在线视频网站| 亚洲午夜精品网| a级黄色片免费| 菠萝菠萝蜜在线视频免费观看| 国产精品天美传媒| 欧美日韩精品不卡| 精品99又大又爽又硬少妇毛片| 91丨国产丨九色丨pron| 精品一区二区三区视频日产| 欧美 日韩 国产 成人 在线 91| 国产91色综合久久免费分享| 高清国产在线一区| 亚洲第一精品网站| 国产91精品在线观看| 99理论电影网| 理论片中文字幕| 成人小视频在线观看| 国产精品国产三级欧美二区 | 国产精品色悠悠| 波多野结衣激情视频| 日韩精品一二三| 国产精品亚洲网站| 国产精品久久久国产盗摄| 国内精品第一页| 国产成人免费观看| 天天射天天操天天干| 91久色porny| 日韩欧美电影一区二区| 最新国产在线观看| 亚洲视频图片小说| 久久久久久久久影视| 国产经典三级在线| 色婷婷综合在线| 亚洲欧美日本一区二区三区| 国产不卡精品| 亚洲白虎美女被爆操| 中文字幕在线免费看线人| 国产中文精品久高清在线不| 久久久精品电影| 久久精品国产亚洲AV无码男同| 亚洲国产清纯| 国产精品福利在线观看| 国产视频第一页| 99视频国产精品| 在线观看精品视频| 久操av在线| 色哦色哦哦色天天综合| 久久成年人网站| 精品视频在线你懂得| 中文字幕不卡av| 黄网站免费在线| 蜜臀av一区二区在线免费观看| 99精品国产高清在线观看| 欧美少妇另类| 亚洲精品视频在线| 激情六月丁香婷婷| 亚洲视频精选| 在线中文字幕日韩| 日本一级淫片色费放| 奇米在线7777在线精品| 国产成人精品日本亚洲11| 91欧美在线视频| 亚洲h在线观看| 五月天激情播播| 欧美一级三级| 欧美日韩福利视频| 夜夜爽妓女8888视频免费观看| 国产成人精品免费在线| 亚洲狠狠婷婷综合久久久| av电影在线免费| 欧美日韩成人在线一区| 青青草视频成人| 狠狠色丁香久久综合频道| 国产乱人伦真实精品视频| 视频国产在线观看| 亚洲综合在线视频| 三级性生活视频| 国产麻豆一区二区三区精品视频| 久久久中精品2020中文| 国产www免费观看| 国产精品久久三| 人妻丰满熟妇av无码区app| 粉嫩一区二区三区四区公司1| 久久亚洲国产精品| 五月激情丁香网| 久久久一区二区三区捆绑**| 韩日视频在线观看| 警花av一区二区三区| 色综久久综合桃花网| 永久免费无码av网站在线观看| 国产69精品久久777的优势| 桥本有菜av在线| 欧美在线一级| 北条麻妃在线一区二区| 中文字幕在线观看免费| 亚洲国产电影在线观看| 高清一区二区视频| 狠狠色狠狠色综合婷婷tag| 欧美在线亚洲在线| 少妇激情av一区二区| 狠狠躁夜夜躁人人躁婷婷91| 精品中文字幕在线播放| 一区二区三区高清视频在线观看| 国产伦精品一区二区三区照片| 黄页网站大全在线免费观看| 亚洲成年人影院在线| 久久一二三四区| 成人美女在线观看| 热99这里只有精品| 日韩av三区| 国产成人在线一区| 成人精品一区| 91精品蜜臀在线一区尤物| 黄色香蕉视频在线观看| 国产一区二区美女诱惑| 男人日女人的bb| 久久久伦理片| 国产成人在线一区二区| 日本a级在线| 欧美一区二区成人6969| 久久久久久久久久久久久久免费看 | 久久久av毛片精品| 簧片在线免费看| 91av精品| 国产麻豆乱码精品一区二区三区| 婷婷电影在线观看| 亚洲性猛交xxxxwww| 久久久999久久久| 亚洲伦在线观看| 国产成人精品无码片区在线| 久久蜜桃精品| 一二三四中文字幕| 亚洲资源网你懂的| 国产综合香蕉五月婷在线| 色www永久免费视频首页在线 | 色综合久久久久网| 天堂网av2018| 成人动漫av在线| 波多野结衣天堂| 国产精品mm| 精品一区二区三区视频日产| 日韩成人在线电影| 91高清视频在线免费观看| bbbbbbbbbbb在线视频| 日韩欧美一级片| 国产女主播喷水视频在线观看| 日韩理论片一区二区| 久久久午夜精品福利内容| 蜜臀av在线播放一区二区三区| 久久99中文字幕| 久久中文视频| 久久久com| 视频在线亚洲| 国产91网红主播在线观看| 在线观看免费视频你懂的| 亚洲欧美变态国产另类| av一级黄色片| 欧美性xxxxxx少妇| 亚洲激情视频一区| 综合中文字幕亚洲| 37p粉嫩大胆色噜噜噜| 国产高清成人在线| 手机av在线免费| 另类激情亚洲| 国产精品成人久久电影| 91tv官网精品成人亚洲| 四虎永久国产精品| 国产精品三p一区二区| 亚洲va久久久噜噜噜| 久久久成人av毛片免费观看| 久久男人资源视频| 97影院秋霞午夜在线观看| 国产亚洲视频中文字幕视频| 神马午夜一区二区| 日韩欧美一级二级三级久久久| 国产精品久久久国产盗摄| 91福利区一区二区三区| 在线观看精品国产| 亚洲愉拍自拍另类高清精品| 成年人一级黄色片| 国产精品色婷婷| 人人爽人人爽人人片| 久久中文字幕电影| 欧洲一级黄色片| av资源网一区| 国产69视频在线观看| 国产激情一区二区三区四区| 亚洲自拍第三页| 久草精品在线观看| 久久婷五月综合| 免费成人你懂的| www午夜视频| 六月丁香婷婷久久| 三上悠亚av一区二区三区| 日本成人在线电影网| the porn av| 精品一区二区三区久久| 亚洲欧美手机在线| 国精产品一区一区三区mba视频| 亚洲欧美日韩一级| 麻豆一区二区三| 国内自拍第二页| 国产一区二区视频在线播放| www.国产视频.com| 精品系列免费在线观看| 成人在线短视频| 国产成人午夜精品影院观看视频| 熟妇女人妻丰满少妇中文字幕| 国产丶欧美丶日本不卡视频| av影片在线播放| aaa国产一区| brazzers精品成人一区| 国产婷婷一区二区| 女性裸体视频网站| 亚洲精品免费一二三区| 国产精品不卡av| 91国产免费看| 国产人妻精品一区二区三| 日韩精品最新网址| 天堂在线免费av| 在线看福利67194| 黄网站免费在线观看| 久久99视频精品| 中文字幕一区久| 国产美女久久精品香蕉69| 美女精品视频在线| 精品亚洲一区二区三区四区五区高| 啪啪亚洲精品| ijzzijzzij亚洲大全| 亚洲精品四区| 男女视频在线看| 成人一区二区三区在线观看| 美女久久久久久久久久| 中文字幕一区在线观看视频| 精品无码一区二区三区电影桃花| 黑人巨大精品欧美一区二区三区| 91国内精品视频| 精品国产乱码久久久久久牛牛| 毛片网站在线| 欧美老少配视频| 卡通欧美亚洲| 91久色国产| 国产99久久久国产精品成人免费| 中文字幕中文字幕99 | 中文字幕不卡的av| 欧美黑人猛猛猛| 91搞黄在线观看| 欧美一级性视频| 色系列之999| 亚洲校园激情春色| 99国产在线视频| 久久成人综合| av黄色在线网站| 国产精品66部| 91社区视频在线观看| 偷窥少妇高潮呻吟av久久免费| 91麻豆国产在线| 亚洲欧美资源在线| 丰满大乳少妇在线观看网站| 成人黄色免费片| 精品国产乱码久久久久久蜜坠欲下| 97超碰国产精品| 国产呦精品一区二区三区网站| 日本xxxxxxxxx18| 精品国产成人av| 北条麻妃一二三区| 北条麻妃在线一区二区| 先锋欧美三级| 久久人人爽爽人人爽人人片av| 在线成人直播| 天堂av8在线| 国产精品另类一区| 日本黄色中文字幕| 日韩电影中文字幕av| 久久大胆人体| 成人欧美一区二区三区黑人免费| 久久精品av| 麻豆一区二区三区视频| 久久亚洲一级片| 欧美一级片免费在线观看| 精品日韩在线观看| 在线网址91| 91九色对白| 欧美一区不卡| 久久久福利影院| 中文字幕一区二区5566日韩| 亚洲一区二区影视| 丝袜美腿亚洲一区二区| 国产成人精品一区二区三区在线 | 99久久久无码国产精品性波多 | 欧美一级欧美一级| 成人一级片网址| 久久精品女人毛片国产| 韩国在线视频一区| 拔插拔插海外华人免费| 成人午夜av影视| 日本在线观看中文字幕| 亚洲大胆人体av| 成年人在线网站| 国产精品免费在线播放| 9色国产精品| 人妻丰满熟妇aⅴ无码| 一本久久a久久精品亚洲| 麻豆导航在线观看| 国产成人鲁鲁免费视频a| 久久综合亚洲| 精品亚洲一区二区三区四区| 亚洲欧美在线观看| 精品欧美在线观看| 国产69精品久久久久9999| 欧美美女黄色| 久久综合久久色| 国产精品久久久久久久久免费丝袜 | 国产精品久久国产三级国电话系列 | 久久香蕉国产线看观看99| 免费污污视频在线观看| 中文字幕亚洲图片| 亚洲一区二区三区久久久| 欧美交换配乱吟粗大25p| 成人黄色在线看| 欧美超碰在线观看| 日韩中文av在线| www.久久东京| 动漫av免费观看| 亚洲乱码日产精品bd| 视频一区二区免费| 国产suv精品一区二区| 国产精品久久久久久久久久10秀 | 天天爱天天操天天干| 亚洲欧洲精品一区二区精品久久久| 国产成年妇视频| 欧美怡红院视频一区二区三区| 欧美特黄一级大片| 久久综合桃花网| 日韩欧美在线视频免费观看| 日本激情在线观看| 国产日韩一区二区| 青草国产精品久久久久久| 久久激情免费视频| 国产亚洲欧洲高清| 国产精品对白| 亚洲精品第三页| 欧美午夜电影在线| 高潮毛片在线观看| 欧美xxxx黑人又粗又长密月| 国产在线播放一区二区三区 | 666欧美在线视频| 亚洲欧美韩国| 97久久国产亚洲精品超碰热| 国产人久久人人人人爽| 国产女人爽到高潮a毛片|