2020徵文-鴻蒙開發板 Onenet平臺+開發板開關燈控制

2020-12-17 51cto

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

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

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

OneNET是由中國移動打造的PaaS物聯網開放平臺。平臺能夠幫助開發者輕鬆實現設備接入與設備連接,快速完成產品開發部署,為智能硬體、智能家居產品提供完善的物聯網解決方案。

採用Onenet平臺:多協議接入-》EDP,通過edp協議完成控制命令的下發(下發開/關燈命令)、數據流信息的上傳(燈的開/關狀態)等通信流程。

EDP (Enhanced Device Protocol增強設備協議)是OneNET平臺根據物聯網特點專門定製的完全公開的基於TCP的協議,可以廣泛應用到家居、交通、物流、能源以及其他行業應用中。

整體流程大致如下:

1、Onenet平臺創建EDP產品、設備、數據流、開關燈應用;

2、Hi3861開發板連接到EDP設備;

3、通過Onenet EDP應用下發控制命令(開/關燈);

4、開發板解析命令做出對應的動作(開/關燈),並且上傳燈的狀態值,更新數據流信息;

5、Onenet應用讀取數據流的狀態值,更新展示;


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

Onenet平臺EDP配置

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

2.添加產品led、添加設備device1;


3.添加數據流,因為我使用的三色燈擴展板,創建3條數據流:redled、greenled、yelloled;


4.應用管理-》添加應用led;

5.編輯應用led,添加紅綠黃三原色燈的開關,調整屬性,紅燈的配置如下,EDP命令內容「redled:{V}」(其餘以此類推);

Hi3861開發板準備

1.移植Onenet edp sdk,官網連結:https://open.iot.10086.cn/doc/multiprotocol/book/develop/edp/device/doc-tool.html;

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

1)增加宏定義:_LINUX;

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

3)強轉for循環中的變量為有符號數,在for循環裡面,不能用無符號32整形數據作為判斷條件;

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

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

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

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

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

2)與平臺建立EDP連接,可以調用函數EdpPacket* PacketConnect1(const char* devid, const char* auth_key),傳入設備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 方法封包連接協議 */ 
  6.   send_pkg = PacketConnect1(src_dev, src_api_key);   
  7.   /* 向設備雲發送連接請求 */ 
  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 , 否則會造成內存洩漏 */ 
  15.   DeleteBuffer(&send_pkg); 

  

3)接收命令請求數據,解析命令,執行開關燈動作;例如:接收到字符串「redled:1」代表紅燈開,「redled:0」代表紅燈關;

  1. * 解包 由設備雲到設備的EDP協議包, 命令請求消息 */ 
  2.  
  3. UnpackCmdReq(pkg, &cmdid, &cmdid_len, &cmd_req, &cmd_req_len); 
  4.  
  5. ...... 
  6.  
  7. /* 
  8.  
  9. 根據解析出的命令,執行燈的開/關 
  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)調用EdpPacket* PacketSavedataSimpleString(const char* dst_devid, const char* input, uint16 msg_id),組裝以分號分隔的簡單字符串形式,上傳數據到平臺,用來更新數據流(燈的開/關狀態);例如:組裝字符串「,;redled,1」代表當前紅燈亮,「,;redled,0」代表紅燈滅;

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

5)採用AT命令的方式觸發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.編譯固件,啟動開發板,首先是連接wifi,保證網絡暢通;

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


3.打開應用led,對紅綠黃三燈進行開關,能夠看到開發板三原色燈正確亮滅;

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


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


以上就是分享的全部內容,謝謝觀看!

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

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

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

【編輯推薦】

點讚 0

相關焦點

  • MCU開發板局限——沒有一家真正在做平臺
    1、黎明MCU開發板大規模出現以前是沒有人願意做MCU開發板的,因為都是C51內核硬體資源、軟體資源有限(用彙編語言開發的誰會用)用的人也少。後來隨著算力向嵌入式IC演進,以及網際網路發展帶來的信息交流便利,MCU開發板大行其道。
  • 基於Arduino和Raspberry Pi開發板的嵌入式設計案例
    基於Arduino和Raspberry Pi開發板的嵌入式設計案例 Steve Leibson 發表於 2020-12-09 09:48:37 作者:Steve Leibson
  • 安信可科技WiFi/WiFi+BLE開發板產品清單
    具體參數可參考ESP32-CAM規格書(官網下載)3.應用場景智能家居監控樓宇安防監控工業無線控制開發板僅需一根micro USB數據線,就可以連接電腦進行配置。開發板將全部的I/O口引出至兩側的排針,讓開發者可以根據自己的需求連接外設。
  • arduino開發板有什麼用
    Arduino是一款便捷靈活、方便上手的開源電子原型平臺。包含硬體(各種型號的Arduino板)和軟體(Arduino IDE)。由一個歐洲開發團隊於2005年冬季開發。   總有一款適合你——Arduino開發板終極盤點。不同的Arduino開發板有不同的功能!   以下為大家介紹。
  • 物聯網開發板評測:梳理易犯錯的細節
    前不久,EDN姊妹論壇麵包板的同事Vcher送給我一塊富芮坤(FREQCHIP)基於FR8016H BLE5.0 SoC的物聯網開發板,說是有網友申請後未能做評測而退回來的,就拿給我玩玩——在此首先表示感謝。
  • 5G NB-IoT中國連接數破億,DFRobot推出TinkerNode系列開發板助推...
    年4月,開源硬體和創客教育供應商DFRobot(上海智位機器人)發布新品TinkerNode系列物聯網開發板。該系列第一款產品TinkerNode NB-IoT物聯網開發板現已同步登陸DFRobot創客商城。  據供應商DFRobot介紹,TinkerNode 是基於ESP32,支持Wi-Fi、藍牙和LPWAN低功耗廣域無線通信的物聯網開發板系列。
  • 從51系列單片機到Arduino UNO開發板
    總結網購可以找到開發板(5V或3.3V),價位普遍比發電機(380V)要合算很多。(小編買的時候是考慮好多個月……先把店家商品介紹的免費資料視頻看著學一學,然後感覺自己能按學習資料弄出來實驗,最後才下單。
  • 基於Arduino UNO開發板無線連接伺服電機方案設計
    基於Arduino UNO開發板無線連接伺服電機方案設計 風箏 發表於 2021-01-09 11:47:36 在機器人中使用伺服電機進行精確控制很常見。
  • Curiosity PIC32MZ EF 2.0開發板用戶指南
    Curiosity PIC32MZ EF 2.0開發板用戶指南 > Microchip Curiosity PIC32MZ EF 2.0 開發板(DM320209)集成了編程器和調試器,無需其他硬體即可開始使用。
  • 基於Arduino Uno開發板的藥物提醒系統
    打開APP 基於Arduino Uno開發板的藥物提醒系統 風箏 發表於 2020-12-13 11:53:57 為了簡單起見,我們使用Arduino開發板做了一個簡單的醫學提醒器,提醒每天服用1次或2次或3次藥物。可以使用按鈕選擇時隙。此外,它顯示當前日期和時間。我們將在未來的文章中將其進一步擴展到物聯網項目,其中將向用戶發送電子郵件或SMS通知。該藥物提醒器還可以與患者監測系統集成。
  • 迅為迅為iTOP-i.MX6ULL 開發板-Mqtt 移植教程
    本文轉自迅為IMX6ULL開發板教程第第八十八章  移植環境 Ubuntu:迅為提供的 ubuntu16.04 編譯器:gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 硬體平臺
  • 2020徵文-鴻蒙開發板6.WiFi IoT智能家居套件 - 溫度傳感器和OLED實
    想了解更多內容,請訪問:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com/#zz這是一份遲來的文章,代碼寫好幾天了,由於太忙,一直沒來得及上傳。
  • 海思HI3559和海思HI3559A的區別以及Hi3559c開發板
    Hi3559A集成了海思獨有的SVP平臺,提供了高效且豐富的計算資源,支撐客戶開發各種計算機視覺應用,如無人機、機器人等消費類應用和行業類應用。Hi3559A集成了雙核A73和雙核A53,獨創性的大小核架構和雙作業系統,使得功耗和啟動時間達到均衡。關鍵參數:8K30/4K120 編碼:支持8KP30+1080P30 或者4KP120+1080P30,H.265編碼。
  • 迅為i.MX6ULL 開發板開機進度條修改文檔
    轉自:迅為IMX6ULL開發板使用手冊第七十一章硬體平臺:迅為i.MX6ULL 開發板本章節介紹的是iTOP-iMX6ULL-修改開機進度條的顯示和修改步驟,使用的資料已經放到了開發板網盤資料中路徑為「11_Linux系統開發進階\71_章節_修改開機進度條修改文檔使用資料」。
  • 基於netX90晶片實現PROFINET從站開發(二)
    上期為大家介紹了netX90作為單晶片解決方案的實例,對於客戶來說,單晶片解決方案最直觀的優勢就是節約成本,不需要額外配一個MCU,單個晶片就可以實現PROFINET從站開發。當然,netX90也可以作為配有HOST CPU的通訊協處理器,僅實現通訊功能。
  • 友善發布新一代Nanopi M4物聯網開發板,性能升級、秒樹莓派……
    等了許久友善終於發布新一代Nanopi_M4物聯網開發板NanoPi M4是基於RK3399 SoC設計的一款接口尺寸與樹莓派3兼容的嵌入式ARM計算機。它非常適用於基於機器視覺和人工智慧的門禁系統,深度計算,自主機器人,工業控制,工業相機,廣告機,遊戲機,區塊鏈等方面的應用。
  • 國產RISC-V開發板RV-STAR初體驗
    RV-STAR開發板初體驗本文引用地址:http://www.eepw.com.cn/article/202006/414399.htm在芯來科技的公眾號上看到,他們出了一塊RISC-V的開發板,趕緊入手了一塊,雖然武漢現在疫情很嚴重
  • EPM7128QC100-10F_altera開發板手冊ep2c35
    EPM7128QC100-10F_altera開發板手冊ep2c35本文導讀:2015年12月28日,Intel宣布以167億美元完成對Altera的收購,Altera作為Intel的可編程解決方案事業部運營,簡稱IntelPSG,公司品牌不再保留。
  • 2020徵文-手機圖解鴻蒙Feature Ability和AbilitySlice的關係
    2020徵文-手機圖解鴻蒙Feature Ability和AbilitySlice的關係 當我們在DevEco Studio中創建一個鴻蒙項目時,如果選擇的設備是手機,並且選擇的模板是Empty Feature Ability(Java),如下圖所示,那麼自動生成的Hello World
  • 「2020電機控制先進技術研討會」圓滿落幕
    2020年11月20日,由全球電子科技領域專業媒體舉辦2020電機控制先進技術研討會在深圳成功召開,上海靈動微電子股份有限公司、KEYSIGHT、國民技術、Qorvo、意法半導體、日本電產、泰克、兆易創新、峰岹科技等知名企業專家針對電機行業的解決方案及市場趨勢做了精彩分享。