写点什么

Java 开发如何通过 IoT 边缘 ModuleSDK 进行进程应用的开发

  • 2022-12-23
    中国香港
  • 本文字数:2232 字

    阅读完需:约 7 分钟

Java开发如何通过IoT边缘ModuleSDK进行进程应用的开发

本文分享自华为云社区《【华为云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。


注意:


  1. 插件包升级时,会删除运行目录的所有文件,注意持久化文件的存储。插件包的运行路径为{installer_dir}/IoTEdge/downloaded-job/run/{moduleId}/{appVersion}/。

  2. 当前插件包的大小限制为最大 500M。

  3. 程序内对于文件的访问使用相对目录访问(因为程序的安装目录是不确定的)。

  4. 程序不允许包含后台运行的程序,可以包含多级进程,所有程序均为 sh 的子进程。

  5. 进程压缩包命名规范:英文字母或者数字或者“_”,”.” ,长度不超过 64,不允许出现空格。


说明:


  1. 插件包为一层压缩结构,即插件包的压缩包解压之后直接为 sh 脚本所在目录的结构形式,不能多一层目录。

  2. sh 脚本为必须脚本,启动时默认调用该脚本进行启动,当前支持 root 用户以及非 root 用户(固定为 1000 用户,非 root 需要确定是否能够成功依赖系统库)启动,用户可以在 start.sh 脚本中自由修改自己的启动方式以及环境变量的修改等。

  3. 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 应用升级失败会回退到原版本。

点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 3
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
Java开发如何通过IoT边缘ModuleSDK进行进程应用的开发_开发_华为云开发者联盟_InfoQ写作社区