【华为云IoTEdge开发实战】通过Java集成IoT边缘ModuleSDK全教程

举报
华为IoT云服务 发表于 2022/11/25 10:27:02 2022/11/25
【摘要】 一、方案概述通过华为云IoT边缘平台,基于ModuleSDK开发应用实现数据处理或自定义驱动,主要分为开发和使用两个部分。开发操作开发说明App应用的开发利用AppClient和DriverClient进行自定义的业务处理App应用的使用将应用打包上传至云,部署到节点。连接子设备查看应用工作。二、前提条件 开发环境要求:已经安装JDK(版本8以上,访问Java官网)和maven(下载并安装 ...

一、方案概述

通过华为云IoT边缘平台,基于ModuleSDK开发应用实现数据处理或自定义驱动,主要分为开发和使用两个部分。

开发操作

开发说明

App应用的开发

利用AppClientDriverClient进行自定义的业务处理

App应用的使用

将应用打包上传至云,部署到节点。连接子设备查看应用工作。


二、前提条件

三、实操步骤

1      创建工程

编辑器IDEA为例:

  1. 打开IDEA->file->new->New Project->选择新建maven工程
  2. 导入maven依赖

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>1.7.26</version>

</dependency>

     3.导入ModuleSDK依赖包

右键单击Open Project Structrure,选择Libraries后,单击中间框上方"+"号,选择下载好的ModuleSDK,添加到工程模块。


2      项目打包

根据您的需求进行相关代码的开发,并将项目打包,以编辑器IDEA为例:

  1. 选中项目->右键open Module setting
  2. Artifacts->单击+>JAR->From modules with dependencies->模块选择monitor-app,选择monitorappMain入口类,注意MF位置选择模块根目录->单击apply

image005.png

  1. 单击上方build选项->选择build Artifacts->monitor-app:jar->build
  2. 打包完成得到monitor-app.jar文件。(如遇到错误(Invalid signature file digest for Manifest main attributes)请使用压缩文件进入metf目录删除.rsa.mf文件)

image007.png

3      制作镜像包或插件包

jar包转换为镜像包或插件包。

镜像包打包

1.上传打包的项目。

jar文件上传到联网的linux机器上,如目录(/home/monitor)中

2.安装docker。

请确认你使用的系统已经安装docker(docker版本需要高于17.06,推荐18.06),安装参照docker 安装教程

3.制作镜像。

a.搜索基础镜像,基础镜像需要集成jre

docker search jre8

b.选择合适的镜像(镜像需要集成了jre且版本不低于8

c.  NAME                 DESCRIPTION   STARS     OFFICIAL   AUTOMATED
livingobjects/jre8   Jre8 image    4         [OK]

说明:

livingobjects/jre8镜像是docker hub第三方提供的镜像,非华为公司发布,且华为公司未提供任何官方镜像。该镜像在此仅做示例,华为对该镜像的安全性不作保证。强烈建议用户自己封装镜像!

d.拉取镜像

docker pull livingobjects/jre8

e.编写dockerfile制作镜像

dockerfile内容参照如下(具体可参考编写高效的Dockerfile 

#Version 1.0.0
FROM livingobjects/jre8  #基础镜像来源
RUN mkdir -p /opt/iot/edge/monitor / && chmod -R 777 /opt/ #授权
COPY monitor /opt/iot/edge/monitor   #复制文件到指定目录,此dockerfile文件位置:/home,jar包位置:/home/monitor
USER root     #用户名
EXPOSE 8080
CMD ["java", "-jar", "/opt/iot/edge/monitor/monitor-app.jar", "run"] #运行命令

f.构建镜像

docker build -t edge_monitor:1.0.0 /home --no-cache

g.查看打包完成的镜像

docker images

REPOSITORY      TAG      IMAGE ID       CREATED          SIZE
edge_monitor    1.0.0    93f9d964bcea   12 seconds ago   243MB

4.镜像上传。

a.上传镜像

开通容器镜像服务SWR

镜像上传需要使用SWR镜像容器服务,开通及使用请参照容器镜像服务 SWR_用户指南

b.获取SWR登录指令

请参照使用容器引擎客户端上传镜像第四节。

c.tag镜像

使用tag命令将镜像重命名以确定上传位置和组织,获取上传位置和组织前缀请参考pull/push命令

docker tag edge_monitor:1.0.0 swr.cn-north-4.myhuaweicloud.com/hw_swr/edge_monitor:1.0.0

d.上传镜像

docker push swr.cn-north-4.myhuaweicloud.com/hw_swr/edge_monitor:1.0.0

e.查看上传结果

image009.png

f.上传镜像后请在SWR将镜像设置为公开。

插件包打包

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.jarstart.sh一起压缩得到monitor-app.zip

2.插件包上传。

a.开通对象存储服务OBS

进程包上传方式需要开通对象存储服务OBS,请参考对象存储服务 OBS_快速入门

b.上传进程包。

上传方式请参照对象存储服务(OBS)

注意:

请设置桶策略为【公开读】,如未设置请前往OBS首页->单击桶ID->访问权限控制->桶策略中设置。

4      添加应用

添加边缘应用具体请参考添加应用

容器化部署

  1. 部署方式选择容器化部署。

image011.png

2.软件和运行配置

选择上传到SWR服务的镜像,如未发现镜像,请检查镜像是否为公开,设置镜像为公开方式:容器镜像服务SWR->我的镜像->单击镜像ID进入详情->右上方编辑。

image013.png

3.添加边缘应用-端点和部署配置

image015.png

注意:

集成ModuleSDK后,在高级配置中必须挂载config卷,主机目录和容器目录均为自定义,可参考下图。模块身份等信息均由SDK存储在config卷中,如果不配置挂载config卷,会导致自定义应用重启后无法与EdgeHub成功建立Mqtt连接。

image017.png

4.根据需要进行配置。

输入端点输出端点与demo中代码定义的端点对应,如monitor-app中输入与输出端点设置为inputoutput,则配置为:

输入端点:input

输出端点:output

说明:

输入输出端点是非必需配置的,当有数据流转时需要配置,如OT应用(数据处理)。

驱动类应用和IT应用一般不需要配置。

安装包部署

1.添加边缘应用-应用配置

部署方式选择安装包部署

image019.png

2.添加边缘应用-软件和运行配置

安装包地址为{桶名/对象名}

如桶名为edge-monitor,对象名为monitor-app.zip 则安装包为edge-monitor/monitor-app.zip

image021.png

3.添加边缘应用-端点和部署配置同容器化部署

根据需要进行配置。

输入端点输出端点与demo中的设置对应,如monitor-app中输入与输出端点设置为inputoutput,则配置为:

输入端点:input

输出端点:output

说明:

输入输出端点是非必需配置的,当有数据流转时需要配置,如OT应用(数据处理)。

驱动类应用和IT应用一般不需要配置。

5      发布应用

应用创建之后需要发布才允许在节点部署。

操作步骤

  1. 访问IoT边缘,单击“立即使用”进入IoT边缘控制台。
  2. 选择左侧导航栏“IoT边缘 > 应用管理,选择应用名称进入应用详情页。
  3. 单击右上角“发布”按钮。

image023.png

说明:

可在创建应用时可勾选【立即发布】进行发布。

6      如何使用

OT应用使用步骤:

  1. 将创建好的应用部署到节点。部署请参照应用部署
  2. 添加设备进行测试(添加设备请参考设备接入边缘节点)。

说明:

可以利用MQTT.fx软件模拟设备接入调试。

驱动应用使用步骤:

  1. 将创建好的应用部署到节点。部署请参照应用部署
  2. 添加网关。
  3. 添加设备进行测试(添加设备请参考设备接入边缘节点)。

说明:

可以利用Modbus Slave软件模拟设备接入调试。

IT应用使用步骤:

1.注册节点,绑定工业资源包。

2.创建API网关。

3.apigw系统组件和创建的应用部署到节点。

4.使用postman进行调试验证。

延伸阅读:【华为云IoTEdge开发实战】华为云IoT边缘插件侧开发之架构介绍

下一篇,将为大家介绍通过Java集成IoT边缘ModuleSDK相关开发教程。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。