> 文档中心 > 技术分享 | EdgeX Deep Dive

技术分享 | EdgeX Deep Dive

技术分享 | EdgeX Deep Dive在这里插入图片描述关于2022 EdgeX中国挑战赛
2022 EdgeX中国挑战赛暨中关村国际前沿科技创新大赛EdgeX专题赛正式拉开帷幕。大赛由北京市科委、中关村管委会指导,由Linux基金会主办,由阿里云、百度智能云、EMQ、GSMA 5G IN、英特尔、InnoSpace、中科创达、VMware、紫竹ET孵化器等联合承办单位共同支持,将在线上线下同步开赛。
本次大赛分设两大赛道:医疗、教育、消费行业赛道和能源、工业、供应链赛道大赛致力于构建一个物联网及边缘计算的学习和分享平台,基于EdgeX Foundry,针对不同赛道的多个应用场景,以共享技术投资解决行业技术问题。除了40w+人民币总奖励,参赛者还可以获得技术、资本、市场等一系列参赛回报。

为帮助参赛选手更好地了解并运用相关技术,本次大赛将在7月至9月持续开展3轮技术培训,涵盖初、中、高不同层级,帮助开发者系统学习智能边缘系统知识。我们邀请到来自英特尔、VMware、阿里云等多家机构的技术专家进行分享。

8月22日,VMware高级软件工程师张华乔为我们带来了第一场赛前中级培训,培训主题为:EdgeX Deep Dive。本篇推文是中级培训系列课程回顾的第一辑。

本次培训,张华乔工程师在上次培训(点击回顾第一次初级培训)的基础上,回顾了Device Service SDK的应用方式,并深入学习AutoEvent的使用方式与优势和弊端。同时,引入一种新的设备添加方式——DeviceList,并比较其优劣势。

1. 上节核心回顾

1.1 EdgeX架构体系

技术分享 | EdgeX Deep Dive
图注:EdgeX架构体系

1.2 环境准备部分:

  • Docker最新版本:https://docs.docker.com/engine/install/
  • docker-compose最新版本:https://docs.docker.com/compose/install/
  • Golang语言开发环境
  • make命令,VScode IDE工具
  • EdgeXFoundry v2.2.0部署文件

1.3 编写Hello World的基础文件资料

(云盘链接:https://pan.baidu.com/s/1UTX2Qdmf9NYzNDFx4iX3iQ 提取码: 61nq)
内容包括:

  • helloworld-profile.yaml文件
  • mock-device可执行程序,支持macOS,Linux,Windows
  • EdgeX快速启动部署文件docker-compose-no-secty.yml

1.4 EdgeX的快速安装启动步骤:

(1)获取EdgeX运行文件:云盘资料中的文件docker-compose-no-secty.yml
(2)运行EdgeX:docker-compose -f docker-compose-no-secty.yml up -d
(3)查看运行状态:docker ps

1.5 访问EdgeX GUI:

EdgeX官方GUI由VMware提供和维护

  • 打开浏览器,地址栏输入http://:4000,请替换EdgeX GUI实例运行ip地址
    技术分享 | EdgeX Deep Dive
    图注:EdgeX GUI Service List地址

1.6 如何使用Device Service SDK编写设备驱动

(1) 创建工作空间
(2) 下载device service SDK开发包
(3) 创建备驱动服务项目
(4) 从SDK开发包添加device service模板工程
(5) 添加Makefile和Version文件
(6) 使用VScode打开cmd/device-simple/main.go文件修改相关依赖路径
(7) 使用VScode打开Makefile文件
(8) 执行如下命令初始化golang mod模式
(9) 编辑上一步产生的go.mod文件,添加语句
(10)执行如下命令整理依赖库
(11)执行make build 编译验证是否成功
(12)编辑driver/simpledriver.go文件自定义实现
(13)修改res/configuration.toml文件(可选)
(14)编译运行
(15)打开EdgeX GUI查看设备服务状态
(16)添加helloworld profile文件
(17)添加设备
(18)测试设备指令
(19)使用mock device测试实际场景
(20)修改device-simple/driver/simpledriver.go文件
(21)重新编译运行
(22)GUI上更新device,添加连接协议
(23)测试设备指令

2. AutoEvent自动采集

技术分享 | EdgeX Deep Dive图注:AutoEvent定义采集时间与采集方式

AutoEvent是EdgeX边缘计算平台中内置的自动采集模块,通过设置自动采集时间,采集逻辑,采集方式实现程序自动采集输出。
技术分享 | EdgeX Deep Dive图注:上图设置AutoEvent3秒一次自动采集输出

3. 新的添加方式——Device List(预配置)

技术分享 | EdgeX Deep Dive

图注:res-devices文件夹下simple-device.toml配置文件中的devicelist

DeviceList是Linux环境中自带的一种预配置方式(存储路径res文件夹-devices文件夹-simple-device.toml文件),我们可以借助DeviceList实现新的设备添加。

技术分享 | EdgeX Deep Dive
图注:利用上图DeviceList(注释代码)添加设备

DeviceList的优势:

  • 生产环境统一GUI环境下使用方便,便于在运行时添加额外设备
    DeviceList的劣势:
  • 容器镜像中无法删除设备,每次重启时会读取已经删除的设备,导致已删除的设备反复运行(该问题不能在运行时解决

技术分享 | EdgeX Deep Dive图注:利用DeviceList添加设备同样实现3秒一次自动采集输出

4. 直播答疑

Question Answer
HandleReadCommands/HandleWriteCommands可以获取到当前调用的DeviceCommands吗?在reqs[ ]sdkModels.CommandRequest中只能获取到DeviceResources。如果不能获取到,能解释下为什么要这么设计吗? DeviceCommands引用的是DeviceResources。比如说批量请求,我发送一个指令就可以获得多个资源。如下图所示:技术分享 | EdgeX Deep DiveDeviceCommand是一个数组,你可以在下面添加很多设置,你发一个getMessage可以得到多个资源的属性。所以你无法得到DeviceCommand,这是它的设计逻辑。
目前EdgeX Foundry边缘计算框架里有多少标准设备服务协议可以提供使用?常用协议有没有内置? 目前已经有官方的motobus协议,LLRP,OPC UA,Camera,GPIO等很多协议内置在我们的EdgeX边缘计算框架里面,您可以前往EdgeX官网查看目前内置支持的标准库和常用协议。需要注意的是,部分内置协议不是标准开发协议,需要查看并自行修改,不建议直接投入生产应用。
用EdgeX配置文件,如果设置点位比较多,是不是会比较麻烦? 如果使用OPC UA协议去处理大量点位会很麻烦,但是目前没有支持分组的解决方式。未来,EdgeX核心开发团队会进行解决方法的探索。

————————————————

  • 最后,让我们一起来看看今天的练习题吧~ (答案于文章最后公布)

01 GUI设备添加向导中,DeviceService和DeviceProfile顺序可以互换吗?DeviceProfile和AutoEvent的顺序可以互换吗?
A、可以 可以
B、可以 不可以
C、不可以 可以
D、不可以 不可以

02 AutoEvent中的资源(source)指的是哪些?
A、设备元信息中的resource
B、设备元信息中的command
C、以上都有

03 DeviceService配置中的DeviceList部分可以在配置中心动态更新吗?是调用的批量接口吗?
A、可以 是
B、不可以 是
C、可以 不是
D、不可以 不是

————————————————

2022 EdgeX中国挑战赛已于8月3日盛大开幕,EdgeX中文社区将在接下来的日子里为大家带来更多边缘计算讲座分享和赛事进度更新。在这个盛夏,让我们一起展现风采,从自身所学的领域出发,为物联网、边缘计算市场提供更多更好的解决方案,展望一个更好的科技未来。

第三届EdgeX中国挑战赛,邀您来赛

多场景落地前景可期
全链条助阵生态共建
阶梯式培训同期推进
大奖与荣誉虚位以待

2022EdgeX中国挑战赛正在火热报名中,报名时间:2022年8月3日00:00 - 9月5日24:00。参与大赛,共同推动万物互联,请即刻联系我们。

大赛官网:https://www.edgex-challenge.com/


答案: 1.B 2.C 3.B