Java開發如何通過IoT邊緣ModuleSDK進行進程應用的開發?

来源:https://www.cnblogs.com/huaweiyun/archive/2022/12/23/17001187.html
-Advertisement-
Play Games

摘要:為解決用戶自定義處理設備數據以及自定義協議設備快速接入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 註冊節點

註冊節點,請參照註冊邊緣節點

設備建模&發放

請參照設備建模&發放

項目打包

將集成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文件)

製作插件包

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。

註意:

  1. 插件包升級時,會刪除運行目錄的所有文件,註意持久化文件的存儲。插件包的運行路徑為{installer_dir}/IoTEdge/downloaded-job/run/{moduleId}/{appVersion}/。
  2. 當前插件包的大小限製為最大500M。
  3. 程式內對於文件的訪問使用相對目錄訪問(因為程式的安裝目錄是不確定的)。
  4. 程式不允許包含後臺運行的程式,可以包含多級進程,所有程式均為start.sh的子進程。
  5. 進程壓縮包命名規範:英文字母或者數字或者“_”,”.” ,長度不超過64,不允許出現空格。

說明:

  1. 插件包為一層壓縮結構,即插件包的壓縮包解壓之後直接為start.sh腳本所在目錄的結構形式,不能多一層目錄。
  2. start.sh腳本為必須腳本,啟動時預設調用該腳本進行啟動,當前支持root用戶以及非root用戶(固定為1000用戶,非root需要確定是否能夠成功依賴系統庫)啟動,用戶可以在start.sh腳本中自由修改自己的啟動方式以及環境變數的修改等。
  3. stop.sh為非必須的腳本,但是用戶如果需要優雅停止的話,需要在改腳本中書寫自己進程的停止方式(文件監控、介面調用等)。如果沒有該腳本的話,預設對進程組先發送SIGTERM信號,如果進程組對該信號沒有處理,達到最大等待時間則發送SIGKILL信號強制停止。整個停止的最大周期為10s。

2.插件包上傳。

a.開通對象存儲服務OBS。

進程包上傳方式需要開通對象存儲服務OBS,請參考對象存儲服務 OBS_快速入門。

b.上傳進程包。

上傳方式,請參照對象存儲服務(OBS)。

註意:

請設置桶策略為【公開讀】,如未設置請前往“OBS首頁 > 單擊桶ID > 訪問許可權控制 > 桶策略中設置”。

添加應用

以安裝包部署方式為例,將應用程式打包成安裝包文件,並上傳到對象存儲服務(OBS)。

1.在IoT邊緣單擊創建應用,進入軟體部署配置、運行配置,並確認發佈。

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

部署應用

在邊緣節點安裝成功後可部署邊緣應用。

操作步驟

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應用升級失敗會回退到原版本。

 

點擊關註,第一時間瞭解華為雲新鮮技術~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 大家好,我是3y,一年CRUD經驗用十年的markdown程式員👨🏻‍💻常年被譽為職業八股文選手 我又又又又被吐槽了,隨之而來,我的消息推送平臺開源項目Austin又又又又更新啦,迭代自己的項目多是一件美事啊。 源碼Gitee鏈接:gitee.com/austin 01、可插拔 我的項目逐漸成 ...
  • 案例介紹 歡迎來到我的小院,我是霍大俠,恭喜你今天又要進步一點點了!我們來用Java編程實戰案例,做一個動態調色板。案例界面會出現三個滑動組塊以及對應的數值,通過移動滑塊可以改變顏色區域的顯示。通過實戰我們將學會組件的使用以及新的事件介面ChangeListener。 案例演示 界面開始顯示的是調色 ...
  • 在日常的開發工作中,為了保證落庫數據的完整性,參數校驗絕對是必不可少的一部分,本篇文章就來講解下在項目中該如何優雅的校驗參數。 假設有一個新增學員的介面,一般第一步我們都會先校驗學員信息是否正確,然後才會落庫,簡單起見,假設新增學員時只有2個欄位:姓名、年齡。 @Data public class ...
  • 如果說電子游戲是第九藝術,那麼,編程技術則配得上第十藝術的雅稱。藝術發展的普遍規律就是要給與人們對於藝術作品的更高層感受,而Matz的Ruby語言則正是這樣一件藝術品。 無論是語法還是理念,都讓Ruby開發者感受到款待,如此,Ruby代碼就像活了過來,它們時而高聲,卻藏不住優雅,時而細語,卻意外地鏗 ...
  • 大家好,我是棧長。 今天給大家通報一則框架更新消息,時隔 2021.x 版本發佈一年,Spring Cloud 2022.0.0 最新版發佈了,來看下最新的 Spring Cloud 版本情況: Spring Cloud 無疑是現在 Java 微服務事實上的標準,完全基於 Spring Boot 構 ...
  • 前幾篇博文中介紹了Transformer,由於其優越的性能表現,在工業界使用的越來越廣泛,同時,配合遷移學習理論,越來越多的Transformer預訓練模型和源碼庫逐漸開源,Huggingface就是其中做的最為出色的一家機構。Huggingface是一家在NLP社區做出傑出貢獻的紐約創業公司,其所... ...
  • 歷時9個月的時間,對iNeuOS工業互聯網操作系統進行全面重構,發佈內部測試版本。重構的主要目的:工程化的框架優化,更好的聚焦工業領域業務發展。重構也是保障產品能夠可持續發展的重要手段,同時兼顧產品的安全性和穩定性。 ...
  • 目錄 一、什麼是dapper 二、實現問題與思路 & 源碼參考 三、小結 一、什麼是dapper dapper是個組件,一個dll文件,可以通過NuGet下載。 作用:快速訪問資料庫並自動完成資料庫表對象到C#類對象的欄位映射。 應用:對於要完成簡單的查詢、報表之類的應用是非常快捷、方便的。 比較: ...
一周排行
    -Advertisement-
    Play Games
  • Dapr Outbox 是1.12中的功能。 本文只介紹Dapr Outbox 執行流程,Dapr Outbox基本用法請閱讀官方文檔 。本文中appID=order-processor,topic=orders 本文前提知識:熟悉Dapr狀態管理、Dapr發佈訂閱和Outbox 模式。 Outbo ...
  • 引言 在前幾章我們深度講解了單元測試和集成測試的基礎知識,這一章我們來講解一下代碼覆蓋率,代碼覆蓋率是單元測試運行的度量值,覆蓋率通常以百分比表示,用於衡量代碼被測試覆蓋的程度,幫助開發人員評估測試用例的質量和代碼的健壯性。常見的覆蓋率包括語句覆蓋率(Line Coverage)、分支覆蓋率(Bra ...
  • 前言 本文介紹瞭如何使用S7.NET庫實現對西門子PLC DB塊數據的讀寫,記錄了使用電腦模擬,模擬PLC,自至完成測試的詳細流程,並重點介紹了在這個過程中的易錯點,供參考。 用到的軟體: 1.Windows環境下鏈路層網路訪問的行業標準工具(WinPcap_4_1_3.exe)下載鏈接:http ...
  • 從依賴倒置原則(Dependency Inversion Principle, DIP)到控制反轉(Inversion of Control, IoC)再到依賴註入(Dependency Injection, DI)的演進過程,我們可以理解為一種逐步抽象和解耦的設計思想。這種思想在C#等面向對象的編 ...
  • 關於Python中的私有屬性和私有方法 Python對於類的成員沒有嚴格的訪問控制限制,這與其他面相對對象語言有區別。關於私有屬性和私有方法,有如下要點: 1、通常我們約定,兩個下劃線開頭的屬性是私有的(private)。其他為公共的(public); 2、類內部可以訪問私有屬性(方法); 3、類外 ...
  • C++ 訪問說明符 訪問說明符是 C++ 中控制類成員(屬性和方法)可訪問性的關鍵字。它們用於封裝類數據並保護其免受意外修改或濫用。 三種訪問說明符: public:允許從類外部的任何地方訪問成員。 private:僅允許在類內部訪問成員。 protected:允許在類內部及其派生類中訪問成員。 示 ...
  • 寫這個隨筆說一下C++的static_cast和dynamic_cast用在子類與父類的指針轉換時的一些事宜。首先,【static_cast,dynamic_cast】【父類指針,子類指針】,兩兩一組,共有4種組合:用 static_cast 父類轉子類、用 static_cast 子類轉父類、使用 ...
  • /******************************************************************************************************** * * * 設計雙向鏈表的介面 * * * * Copyright (c) 2023-2 ...
  • 相信接觸過spring做開發的小伙伴們一定使用過@ComponentScan註解 @ComponentScan("com.wangm.lifecycle") public class AppConfig { } @ComponentScan指定basePackage,將包下的類按照一定規則註冊成Be ...
  • 操作系統 :CentOS 7.6_x64 opensips版本: 2.4.9 python版本:2.7.5 python作為腳本語言,使用起來很方便,查了下opensips的文檔,支持使用python腳本寫邏輯代碼。今天整理下CentOS7環境下opensips2.4.9的python模塊筆記及使用 ...