摘要:為解決用戶自定義處理設備資料以及自定義協議設備快速接入IOT平臺的訴求,華為IoT邊緣提供ModuleSDK,用戶可通過集成SDK讓設備以及設備資料快速上云,
本文分享自華為云社區《【華為云IoTEdge開發實戰】Java開發如何通過IoT邊緣ModuleSDK進行行程應用的開發》,作者: 華為IoT云服務,
為解決用戶自定義處理設備資料以及自定義協議設備快速接入IOT平臺的訴求,華為IoT邊緣提供ModuleSDK,用戶可通過集成SDK讓設備以及設備資料快速上云,IoT邊緣平臺應用功能有自定義處理設備資料(即資料處理),自定義協議設備快速接入(即協議決議),IT子系統接入(即IT應用),并且支持容器化部署和安裝包部署的方式,
1 操作場景
使用ModuleSDK開發插件應用,并以行程方式跑在服務器上,
2 代碼決議
代碼決議樣例:
- 資料處理代碼決議
- 工業子系統接入代碼決議
- 協議轉換代碼決議
- OT數采代碼決議
3 注冊節點
注冊節點,請參照注冊邊緣節點,
4 設備建模&發放
請參照設備建模&發放,
5 專案打包
將集成ModuleSDK進行專案打包,
根據您的需求進行相關代碼的開發,并將專案打包,以編輯器IDEA為例:
1.選中專案->右鍵open Module setting
2.Artifacts->單擊+號>JAR->From modules with dependencies->模塊選擇monitor-app,選擇monitorapp的Main入口類,注意MANIFEST.MF位置選擇模塊根目錄->單擊apply,

3.單擊上方build選項->選擇build Artifacts->monitor-app:jar->build
4.打包完成得到monitor-app.jar檔案,(如遇到錯誤(Invalid signature file digest for Manifest main attributes)請使用壓縮檔案進入metf目錄洗掉.rsa和.mf檔案)

6 制作插件包
1.插件包制作,
a.插件包格式要求如下:
插件包僅支持.tar.gz 、.tar或者 .zip格式,
插件包結構如下:
app.zip ├── ****.jar //可執行jar檔案,必須 ├── start.sh //啟動腳本 必須檔案 當前不提供引數方式啟動 └── stop.sh //停止腳本 非必須
b.構建插件包,
以monitor-app為例,在專案打包后得到monitor-app.jar
在monitor-app.jar檔案的同目錄下創建start.sh,內容如下:
function log(){ echo "`date "+%Y-%m-%d %T"`: $1" } log "[INFO] start execut process." #除錯時可打開,確認sdk需要的環境能被獲取 #echo "${device_id}" > test_enviroment.file pwd #更新環境變數,防止找不到java命令, source /etc/profile #運行檔案在/var/IoTEdge/downloaded-job/run下面 java -jar ./monitor-app.jar > monitor_running.log 2>&1
將monitor-app.jar和start.sh一起壓縮得到monitor-app.zip,
注意:
- 插件包升級時,會洗掉運行目錄的所有檔案,注意持久化檔案的存盤,插件包的運行路徑為{installer_dir}/IoTEdge/downloaded-job/run/{moduleId}/{appVersion}/,
- 當前插件包的大小限制為最大500M,
- 程式內對于檔案的訪問使用相對目錄訪問(因為程式的安裝目錄是不確定的),
- 程式不允許包含后臺運行的程式,可以包含多級行程,所有程式均為start.sh的子行程,
- 行程壓縮包命名規范:英文字母或者數字或者“_”,”.” ,長度不超過64,不允許出現空格,
說明:
- 插件包為一層壓縮結構,即插件包的壓縮包解壓之后直接為start.sh腳本所在目錄的結構形式,不能多一層目錄,
- start.sh腳本為必須腳本,啟動時默認呼叫該腳本進行啟動,當前支持root用戶以及非root用戶(固定為1000用戶,非root需要確定是否能夠成功依賴系統庫)啟動,用戶可以在start.sh腳本中自由修改自己的啟動方式以及環境變數的修改等,
- stop.sh為非必須的腳本,但是用戶如果需要優雅停止的話,需要在改腳本中書寫自己行程的停止方式(檔案監控、介面呼叫等),如果沒有該腳本的話,默認對進程組先發送SIGTERM信號,如果行程組對該信號沒有處理,達到最大等待時間則發送SIGKILL信號強制停止,整個停止的最大周期為10s,
2.插件包上傳,
a.開通物件存盤服務OBS,
行程包上傳方式需要開通物件存盤服務OBS,請參考物件存盤服務 OBS_快速入門,
b.上傳行程包,
上傳方式,請參照物件存盤服務(OBS),
注意:
請設定桶策略為【公開讀】,如未設定請前往“OBS首頁 > 單擊桶ID > 訪問權限控制 > 桶策略中設定”,
7 添加應用
以安裝包部署方式為例,將應用程式打包成安裝包檔案,并上傳到物件存盤服務(OBS),
1.在IoT邊緣單擊創建應用,進入軟體部署配置、運行配置,并確認發布,

2.在左側導航欄,單擊“應用管理”,選擇“應用名稱”進入頁面,查看應用為“已發布”狀態,

8 部署應用
在邊緣節點安裝成功后可部署邊緣應用,
操作步驟
1.訪問IoT邊緣,單擊“立即使用”進入IoT邊緣控制臺,
2.選擇左側導航欄“IoT邊緣 > 邊緣節點”進入頁面,
3.選擇您的邊緣節點,單擊“節點名稱”進入節點詳情頁,
4.在左側導航欄選擇“應用模塊 > 模塊管理”頁簽,單擊“部署應用”,
圖1 部署邊緣應用

5.根據頁面提示填寫引數資訊后,單擊“確認”,
圖2 部署應用


6.彈出“操作成功”對話框,再單擊“確認”回傳部署邊緣應用串列,
圖3 確認

7.單擊“重繪”,當應用的實體狀態由“部署中”轉為“運行中”表示部署成功,

只有應用版本是多部署的時候,且運行配置的網路型別是埠映射后,可在部署應用時,或應用后添加埠映射,
運行配置,請參考端點和部署配置,


注意:
- 標準版默認部署sys_edge_hub和sys_edge_agent,高級版默認部署sys_edge_hub,
- 標準版和輕量版默認部署$edge_omagent,在注冊節點程序中可選擇是否自動部署,
- 只有已發布的應用版本允許被部署,
- 如果應用添加時配置了支持多模塊部署 同一個節點下是允許部署多次的,
- 應用支持的架構和邊緣節點架構相同才能夠部署成功,
- 如果應用需要AI加速卡,邊緣節點沒有AI加速卡將部署失敗,
- 部署應用模塊支持升級操作,可選擇高版本也可選擇低版本,目前只有Agent應用升級失敗會回退到原版本,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/540568.html
標籤:嵌入式