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

相關焦點

  • 鴻蒙HarmonyOS開發板訊飛平臺+語音控制開關燈
    .51cto.com/posts/1842通過訊飛開放平臺可以將語音實時轉換為文字,我們可以實現語音控制開關燈。大致流程如下:1、創建應用,下載sdk,編譯demo可執行程序(本文採用的Linux SDK);2、通過應用的唯一APPID,登錄到訊飛開放平臺;3、用戶輸入語音,Linux SDK程序通過麥克風接收到語音數據,上傳到訊飛開放平臺;4、平臺返回語音翻譯的文字,由Linux SDK程序通過udp socket通信的方式發送給開發板;
  • 【鴻蒙開發板試用報告】OneNet平臺+開發板實時監控溫溼度(一)
    【鴻蒙開發板試用報告】OneNet平臺+開發板實時監控溫溼度(一) OneNET是由中國移動打造的PaaS物聯網開放平臺。平臺能夠幫助開發者輕鬆實現設備接入與設備連接,快速完成產品開發部署,為智能硬體、智能家居產品提供完善的物聯網解決方案。
  • 【開發實錄】在鴻蒙開發板上使用Websocket(移植自librws庫)
    websocket client C library相關代碼可在下面下載,也可進入librws: 將librws移植到鴻蒙Hi_3861開發板上 (gitee.com)查看技術有限,如有錯誤還望不吝賜教。
  • 【飛思卡爾FRDM-K64F開發板評測】做工精良 擴展豐富的開發板...
    有幸試用的飛思卡爾FRDM-K64F開發板官網售價226 RMB,是Freedom系列開發板中的一款,擁有低功耗、高性價比、方便擴展、功能豐富等優點。Freedom系列開發板都是基於Kinetis系列MCU、搭載OpenSDA調試接口、兼容Arduino R3擴展接口等特性,工程師們只要玩轉了其中一款,那麼就能快速上手Freedom平臺其它型號的板卡,簡直是一勞永逸方便以後升級更高性能的板卡。
  • stm32開發板哪個好
    2、Discovery探索套件板   STM32 探索套件是幫助新用戶探索STM32性能的入門工具,同時為項目工程師提供快速製作樣機的開發平臺。該套件包括演示特定器件特性所需的基礎設施。藉助HAL庫和綜合軟體示例,可從器件特性和附加價值中受益。通過擴展連接器,可連接器件的大多數I/O,並有助於連接附加硬體。
  • 開發板熟悉與體驗
    我們買開發板的目的是把電腦上編寫編譯好的程序燒寫到板子上驗證學習。因此開發板一定有個燒寫口,例如JTAG燒寫口。但電腦上一般不會有JTAG口,因此需要一個USB燒寫器將兩者連接,例如Jlink、EOP。
  • 基於Arduino和Raspberry Pi開發板的嵌入式設計案例
    基於Arduino和Raspberry Pi開發板的嵌入式設計案例 Steve Leibson 發表於 2020-12-09 09:48:37 作者:Steve Leibson
  • stm32開發板開發筆記(2)-開發板jlink燒錄
    開發板上留出了jtag燒錄口,引出了TCK測試時鐘,TDI測試數據串行輸入,TMS測試模式選擇,TDO測試數據串行輸出,本文引用地址:http://www.eepw.com.cn/article/201608/296037.htm  NJTRST
  • 【板卡申請】Arduino uno R3開發板免費申請
    活動時間: 2017.5.12-2017.7.12活動對象: 電子愛好者活動板卡/數量: Arduino uno R3開發板在「熱門開發板版塊」發布新帖填寫申請理由(對申請板卡的理解或計劃進行的項目介紹),新帖標題形式:【Arduino uno R3開發板申請理由】+自擬標題;根據申請者發帖填寫的申請理由進行篩選;成功申請板卡名單將在原文頁面中公布;公布名單後第一時間將產品快遞給大家;收到板卡後,一個月內在「熱門開發板版塊」提交一個開箱報告和一個試用報告,試用報告要求
  • arm開發板與樹莓派有什麼區別
    ARM開發板和樹莓派有什麼區別   使用的處理器的內核不同。樹莓派使用的是ARM-M9內核的處理器,是ARM開發板的一種。ARM開發板不是樹莓派。   一個是固定的平臺,更像是電腦的硬體平臺,接口和引出的引腳很少,只能接屏幕,網絡等等,獨立的引腳很少,沒開發板那麼靈活   ARM更加底層,樹莓派把複雜的底層開發工作給封裝起來,所以更容易入門   樹莓派和其他 arm 開發板的本質區別   樹莓派的定位並不是一塊用來做嵌入式開發的開發板,而是一個廉價並且高性價比的可以在一定程度取代
  • Arduino和Atmel發布Arduino Zero開發板
    在創客及教育領域領先的開源硬體平臺提供商Arduino有限公司和全球微控制器(MCU)及觸摸技術解決方案領域的領導者Atmel公司(NASDAQ:ATML)日前聯合發布最新款開發板
  • arduino開發板有什麼用
    Arduino是一款便捷靈活、方便上手的開源電子原型平臺。包含硬體(各種型號的Arduino板)和軟體(Arduino IDE)。由一個歐洲開發團隊於2005年冬季開發。   總有一款適合你——Arduino開發板終極盤點。不同的Arduino開發板有不同的功能!   以下為大家介紹。
  • 用Zynq平臺開發嵌入式視覺應用,你就缺這樣一塊開發板!
    關鍵詞:Zynq-7000, 開發板, 平臺, Zybo Z7, Digilent, Xilinx公司廣受歡迎的ZYBO系列FPGA SoC開發平臺的最新成員。 此外,ZYBO Z7-20附帶SDSoC憑證,為開發者提供基於SDSoC開發環境的嵌入式 C/C++ 應用程式開發體驗,加速異構Zynq平臺的應用開發。
  • 每天AI你多一點:Arduino開發板介紹
    前幾天,小編把Micro:bit開發板做了介紹,好多朋友說想了解下Arduino平臺,本來想把人工智慧少兒編程常用的兩塊板子:Micro:bit和Arduino放到一起做下系統的比較,怎奈百家號的審核機制,把兩個板放一起比較說是「有XX信息」,很鬱悶,小編百思不得其解,今天就只能單開一篇
  • 分析ARM開發板哪家好
    打開APP 分析ARM開發板哪家好 工程師之餘 發表於 2018-10-26 14:28:54 目前市場上有許多ARM開發板生產商,市面上也有許許多多不同系列。
  • 看看這塊性價比更高的開發板吧
    前言各位電子發燒友們是不是玩厭了土裡土氣的國產山寨開發板,畫煩了那麼多傳感器電路,又恨樹莓派的功能限制不太適合智能設備的研發?極客之選發現了一款兼顧速度、功能,價格的新款智能設備開發板——UDOO Neo。相信各位一定不會失望。
  • 基於TCP控制鴻蒙3861三色燈板亮滅(附demo指導)
    demo首先把整個demo跑起來的演示視頻放上來,讓大家看看最終實現的一個效果,視頻連結(點擊可看):基於TCP來控制鴻蒙Hi3861三色燈板的燈的亮滅這玩意,說簡單也不簡單,說複雜吧也不複雜。3.Hi3861作為客戶端接受到PC端發送的相應指令來進行相應的控制三色燈板的操作。
  • FPGA初學者,回歸經典——超越者Spartan-6 FPGA開發板
    DC6~16V)1個RTC後備電池座,並帶電池1個RTC實時數字時鐘,採用PCF8563晶片1個MIC(錄音輸入)1路音頻輸入接口1路耳機輸出接口1個小揚聲器(在板子背面)1個復位按鍵,可作為FPGA程序執行的復位信號4個功能按鍵1個電容觸摸按鍵1個電源開關,控制整個開發板的電源
  • MicroPython使用MQTT協議接入OneNET雲平臺
    之前使用Arduino+ESP8266使用EDP協議成功接入了OneNET,實現了物聯網控制,本次使用板載ESP8266的ESP-MP-01 MicroPython開發板使用MQTT協議同樣成功接入,通過發布TOPIC成功實現智能設備控制。
  • 十款值得我們選擇的開源開發板
    但一些開發板也有著其獨到的設計以及基本功能升級。在這裡我們會一起看看這些已經量產或者即將投入市場的「新夥伴」。包括智能玩具、遊戲外設、家庭和工業自動化、消費類醫療器械、印表機、智能售貨機、教育終端等在內的各個領域的產品,其原型及成品就有可能從以下這些開發板中誕生。