摘要:為解決用戶自定義處理設備數據以及自定義協議設備快速接入IOT平臺的訴求,華為IoT邊緣提供ModuleSDK,用戶可通過集成SDK讓設備以及設備數據快速上雲。 本文分享自華為雲社區《【華為雲IoTEdge開發實戰】Java開發如何通過IoT邊緣ModuleSDK進行進程應用的開發》,作者: 華 ...
摘要:為解決用戶自定義處理設備數據以及自定義協議設備快速接入IOT平臺的訴求,華為IoT邊緣提供ModuleSDK,用戶可通過集成SDK讓設備以及設備數據快速上雲。
本文分享自華為雲社區《【華為雲IoTEdge開發實戰】Java開發如何通過IoT邊緣ModuleSDK進行進程應用的開發》,作者: 華為IoT雲服務。
為解決用戶自定義處理設備數據以及自定義協議設備快速接入IOT平臺的訴求,華為IoT邊緣提供ModuleSDK,用戶可通過集成SDK讓設備以及設備數據快速上雲。IoT邊緣平臺應用功能有自定義處理設備數據(即數據處理),自定義協議設備快速接入(即協議解析),IT子系統接入(即IT應用),並且支持容器化部署和安裝包部署的方式。
1 操作場景
使用ModuleSDK開發插件應用,並以進程方式跑在伺服器上。
2 代碼解析
代碼解析樣例:
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應用升級失敗會回退到原版本。