【华为云IoTEdge开发实战】通过Java集成IoT边缘ModuleSDK全教程
一、方案概述
通过华为云IoT边缘平台,基于ModuleSDK开发应用实现数据处理或自定义驱动,主要分为开发和使用两个部分。
开发操作 |
开发说明 |
App应用的开发 |
利用AppClient和DriverClient进行自定义的业务处理 |
App应用的使用 |
将应用打包上传至云,部署到节点。连接子设备查看应用工作。 |
二、前提条件
- 开发环境要求:已经安装JDK(版本8以上,访问Java官网)和maven(下载并安装 Maven)。
- 开发工具:IntelliJ IDEA或者eclipse。
- 下载Java版Module SDK。
三、实操步骤
1 创建工程
编辑器IDEA为例:
- 打开IDEA->file->new->New Project->选择新建maven工程
- 导入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为例:
- 选中项目->右键open Module setting
- Artifacts->单击+号>JAR->From modules with dependencies->模块选择monitor-app,选择monitorapp的Main入口类,注意MF位置选择模块根目录->单击apply。
- 单击上方build选项->选择build Artifacts->monitor-app:jar->build
- 打包完成得到monitor-app.jar文件。(如遇到错误(Invalid signature file digest for Manifest main attributes)请使用压缩文件进入metf目录删除.rsa和.mf文件)
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.查看上传结果
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.jar和start.sh一起压缩得到monitor-app.zip。
2.插件包上传。
a.开通对象存储服务OBS。
进程包上传方式需要开通对象存储服务OBS,请参考对象存储服务 OBS_快速入门
b.上传进程包。
上传方式请参照对象存储服务(OBS)。
注意:
请设置桶策略为【公开读】,如未设置请前往OBS首页->单击桶ID->访问权限控制->桶策略中设置。
4 添加应用
添加边缘应用具体请参考添加应用。
容器化部署
- 部署方式选择容器化部署。
2.软件和运行配置
选择上传到SWR服务的镜像,如未发现镜像,请检查镜像是否为公开,设置镜像为公开方式:容器镜像服务SWR->我的镜像->单击镜像ID进入详情->右上方编辑。
3.添加边缘应用-端点和部署配置
注意:
集成ModuleSDK后,在高级配置中必须挂载config卷,主机目录和容器目录均为自定义,可参考下图。模块身份等信息均由SDK存储在config卷中,如果不配置挂载config卷,会导致自定义应用重启后无法与EdgeHub成功建立Mqtt连接。
4.根据需要进行配置。
输入端点输出端点与demo中代码定义的端点对应,如monitor-app中输入与输出端点设置为input和output,则配置为:
输入端点:input
输出端点:output
说明:
输入输出端点是非必需配置的,当有数据流转时需要配置,如OT应用(数据处理)。
驱动类应用和IT应用一般不需要配置。
安装包部署
1.添加边缘应用-应用配置
部署方式选择安装包部署
2.添加边缘应用-软件和运行配置
安装包地址为{桶名/对象名}。
如桶名为edge-monitor,对象名为monitor-app.zip, 则安装包为edge-monitor/monitor-app.zip。
3.添加边缘应用-端点和部署配置同容器化部署
根据需要进行配置。
输入端点输出端点与demo中的设置对应,如monitor-app中输入与输出端点设置为input和output,则配置为:
输入端点:input。
输出端点:output。
说明:
输入输出端点是非必需配置的,当有数据流转时需要配置,如OT应用(数据处理)。
驱动类应用和IT应用一般不需要配置。
5 发布应用
应用创建之后需要发布才允许在节点部署。
操作步骤
- 访问IoT边缘,单击“立即使用”进入IoT边缘控制台。
- 选择左侧导航栏“IoT边缘 > 应用管理”,选择“应用名称”进入应用详情页。
- 单击右上角“发布”按钮。
说明:
可在创建应用时可勾选【立即发布】进行发布。
6 如何使用
OT应用使用步骤:
说明:
可以利用MQTT.fx软件模拟设备接入调试。
驱动应用使用步骤:
说明:
可以利用Modbus Slave软件模拟设备接入调试。
IT应用使用步骤:
1.注册节点,绑定工业资源包。
2.创建API网关。
3.将apigw系统组件和创建的应用部署到节点。
4.使用postman进行调试验证。
延伸阅读:【华为云IoTEdge开发实战】华为云IoT边缘插件侧开发之架构介绍
下一篇,将为大家介绍通过Java集成IoT边缘ModuleSDK相关开发教程。
- 点赞
- 收藏
- 关注作者
评论(0)