自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

2020征文-鴻蒙開發(fā)板 Onenet平臺+開發(fā)板開關(guān)燈控制

系統(tǒng)
OneNET是由中國移動打造的PaaS物聯(lián)網(wǎng)開放平臺。平臺能夠幫助開發(fā)者輕松實現(xiàn)設(shè)備接入與設(shè)備連接,快速完成產(chǎn)品開發(fā)部署,為智能硬件、智能家居產(chǎn)品提供完善的物聯(lián)網(wǎng)解決方案。

[[357778]]

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

 OneNET是由中國移動打造的PaaS物聯(lián)網(wǎng)開放平臺。平臺能夠幫助開發(fā)者輕松實現(xiàn)設(shè)備接入與設(shè)備連接,快速完成產(chǎn)品開發(fā)部署,為智能硬件、智能家居產(chǎn)品提供完善的物聯(lián)網(wǎng)解決方案。

采用Onenet平臺:多協(xié)議接入-》EDP,通過edp協(xié)議完成控制命令的下發(fā)(下發(fā)開/關(guān)燈命令)、數(shù)據(jù)流信息的上傳(燈的開/關(guān)狀態(tài))等通信流程。

EDP (Enhanced Device Protocol增強設(shè)備協(xié)議)是OneNET平臺根據(jù)物聯(lián)網(wǎng)特點專門定制的完全公開的基于TCP的協(xié)議,可以廣泛應(yīng)用到家居、交通、物流、能源以及其他行業(yè)應(yīng)用中。

整體流程大致如下:

1、Onenet平臺創(chuàng)建EDP產(chǎn)品、設(shè)備、數(shù)據(jù)流、開關(guān)燈應(yīng)用;

2、Hi3861開發(fā)板連接到EDP設(shè)備;

3、通過Onenet EDP應(yīng)用下發(fā)控制命令(開/關(guān)燈);

4、開發(fā)板解析命令做出對應(yīng)的動作(開/關(guān)燈),并且上傳燈的狀態(tài)值,更新數(shù)據(jù)流信息;

5、Onenet應(yīng)用讀取數(shù)據(jù)流的狀態(tài)值,更新展示;


參考官方文檔:https://open.iot.10086.cn/doc/multiprotocol/

Onenet平臺EDP配置

1.進(jìn)入onenet平臺控制臺https://open.iot.10086.cn/console/,選擇多協(xié)議接入-》EDP;

 2.添加產(chǎn)品led、添加設(shè)備device1;


3.添加數(shù)據(jù)流,因為我使用的三色燈擴展板,創(chuàng)建3條數(shù)據(jù)流:redled、greenled、yelloled;


4.應(yīng)用管理-》添加應(yīng)用led;

 5.編輯應(yīng)用led,添加紅綠黃三原色燈的開關(guān),調(diào)整屬性,紅燈的配置如下,EDP命令內(nèi)容“redled:{V}”(其余以此類推);

Hi3861開發(fā)板準(zhǔn)備

1.移植Onenet edp sdk,官網(wǎng)鏈接:https://open.iot.10086.cn/doc/multiprotocol/book/develop/edp/device/doc-tool.html;

移植過程中注意點(附件壓縮包中edp_c是我移植好的壓縮包):

1)增加宏定義:_LINUX;

2)可以復(fù)用源碼自帶的cJSON,在//third_party/edp_c/BUILD.gn中包含:"//third_party/cJSON/";

3)強轉(zhuǎn)for循環(huán)中的變量為有符號數(shù),在for循環(huán)里面,不能用無符號32整形數(shù)據(jù)作為判斷條件;

4)修改宏定義#define BUFFER_SIZE (0x01<<20)為#define BUFFER_SIZE 1024;本次實驗中包字節(jié)數(shù)較小,默認(rèn)申請1MB,運行時報錯內(nèi)存溢出;

5)自定義實現(xiàn)assert宏定義,因為編譯時報錯未找到原因就先自定義實現(xiàn)替代;

6)還有很多定義未使用的變量,類似這種修改“valuestring = valuestring; remain_len = remain_len;”即可;

2.根據(jù)sdk中的示例Main.c,編寫edp測試源碼(附件壓縮包中edp_test.c是測試源碼);

1)建立tcp連接,平臺EDP監(jiān)聽地址ip:183.230.40.39,port:876;

2)與平臺建立EDP連接,可以調(diào)用函數(shù)EdpPacket* PacketConnect1(const char* devid, const char* auth_key),傳入設(shè)備ID和APIKey;

  1. char src_dev[16] = "657055845"
  2.   char src_api_key[64] = "NO5yPB4JzAypKLfXzLx6V0aUxg4="
  3.  
  4.   EdpPacket* send_pkg; 
  5.   /* 利用sdk 中EdpKit.h 中PacketConnect1 方法封包連接協(xié)議 */ 
  6.   send_pkg = PacketConnect1(src_dev, src_api_key);   
  7.   /* 向設(shè)備云發(fā)送連接請求 */ 
  8.   int ret = DoSend(sockfd, (const char*)send_pkg->_data, send_pkg->_write_pos); 
  9.   if(ret <= 0) 
  10.   {    
  11.       printf("Dosend failed.\n"); 
  12.       return NULL
  13.   } 
  14.   /* 使用完后必須刪除send_pkg , 否則會造成內(nèi)存泄漏 */ 
  15.   DeleteBuffer(&send_pkg); 

  

3)接收命令請求數(shù)據(jù),解析命令,執(zhí)行開關(guān)燈動作;例如:接收到字符串“redled:1”代表紅燈開,“redled:0”代表紅燈關(guān);

  1. * 解包 由設(shè)備云到設(shè)備的EDP協(xié)議包, 命令請求消息 */ 
  2.  
  3. UnpackCmdReq(pkg, &cmdid, &cmdid_len, &cmd_req, &cmd_req_len); 
  4.  
  5. ...... 
  6.  
  7. /* 
  8.  
  9. 根據(jù)解析出的命令,執(zhí)行燈的開/關(guān) 
  10.  
  11. GPIO_10: RED 
  12.  
  13. GPIO_11: GREEN 
  14.  
  15. GPIO_12: YELLOW */ 
  16.  
  17. if(strcmp(cmd_str, "redled") == 0) 
  18.  
  19. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_10, cmd_val); 
  20.  
  21. else if(strcmp(cmd_str, "greenled") == 0) 
  22.  
  23. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_11, cmd_val); 
  24.  
  25. else if(strcmp(cmd_str, "yellowled") == 0) 
  26.  
  27. GpioSetOutputVal(WIFI_IOT_IO_NAME_GPIO_12, cmd_val); 

 4)調(diào)用EdpPacket* PacketSavedataSimpleString(const char* dst_devid, const char* input, uint16 msg_id),組裝以分號分隔的簡單字符串形式,上傳數(shù)據(jù)到平臺,用來更新數(shù)據(jù)流(燈的開/關(guān)狀態(tài));例如:組裝字符串“,;redled,1”代表當(dāng)前紅燈亮,“,;redled,0”代表紅燈滅;

  1. /* 打包 設(shè)備到設(shè)備云的EDP協(xié)議包, 存儲數(shù)據(jù)(以分號分隔的簡單字符串形式) */ 
  2.  
  3. send_pkg = PacketSavedataSimpleString(NULL, cmd_resp, 0); //沒有轉(zhuǎn)發(fā)設(shè)備,第一個參數(shù)為NULL 
  4.  
  5. DoSend(sockfd, (const char*)send_pkg->_data, send_pkg->_write_pos); 
  6.  
  7. DeleteBuffer(&send_pkg); 

 5)采用AT命令的方式觸發(fā)edp測試,增加命令“AT+EDPTEST”,方便測試;

  1. const at_cmd_func g_at_edp_func_tbl[] = { 
  2.  
  3. {"+EDPTEST", 8, HI_NULL, HI_NULL, HI_NULL, (at_call_back_func)at_exe_edp_test_cmd}, 
  4.  
  5. }; 
  6.  
  7. void AtEdpExampleEntry(void) 
  8.  
  9.  
  10. hi_at_register_cmd(g_at_edp_func_tbl, sizeof(g_at_edp_func_tbl)/sizeof(g_at_edp_func_tbl[0])); 
  11.  

 總體測試流程

1.編譯固件,啟動開發(fā)板,首先是連接wifi,保證網(wǎng)絡(luò)暢通;

2.執(zhí)行AT+EDPTEST命令,連接Onenet平臺,連接成功設(shè)備顯示在線;


3.打開應(yīng)用led,對紅綠黃三燈進(jìn)行開關(guān),能夠看到開發(fā)板三原色燈正確亮滅;

4.串口的打印信息如下:wifi連接成功 -> AT+EDPTEST -> 接入平臺成功 -> 解析命令,控制燈亮滅 -> 上傳狀態(tài)信息,更新設(shè)備數(shù)據(jù)流;


5)手機操作更加便捷,應(yīng)用界面如下;


以上就是分享的全部內(nèi)容,謝謝觀看!

想了解更多內(nèi)容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)

https://harmonyos.51cto.com/#zz

 

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2021-01-08 10:00:53

鴻蒙訊飛平臺語音控制

2020-12-29 09:59:01

鴻蒙HarmonyOS智能家居

2020-12-15 11:57:49

Hi3861 HarmonyOS開發(fā)板

2020-11-27 11:52:40

OneNet

2020-11-26 12:02:07

OneNet平臺

2020-12-07 12:34:33

開發(fā)板鴻蒙hello world

2020-10-20 09:32:43

HiSparkWi-FiIoT

2022-04-01 15:54:01

DHCP網(wǎng)絡(luò)協(xié)議開發(fā)板

2020-12-15 09:33:40

鴻蒙Hi3861開發(fā)板

2022-10-14 15:55:24

環(huán)境搭建鴻蒙

2020-11-09 10:04:40

鴻蒙

2021-09-28 10:02:26

鴻蒙HarmonyOS應(yīng)用

2021-10-11 14:14:42

鴻蒙HarmonyOS應(yīng)用

2020-11-17 12:15:36

MQTT開發(fā)

2022-06-28 14:30:29

camera組件照片回傳

2020-12-11 12:45:04

鴻蒙Hi3861游戲

2021-05-25 14:47:43

鴻蒙HarmonyOS應(yīng)用

2022-01-07 21:11:27

鴻蒙HarmonyOS應(yīng)用

2021-12-30 16:12:07

鴻蒙HarmonyOS應(yīng)用
點贊
收藏

51CTO技術(shù)棧公眾號