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

为帮助参赛选手更好地了解并运用相关技术,本次大赛将在7月至9月持续开展3轮技术培训,涵盖初、中、高不同层级,帮助开发者系统学习智能边缘系统知识。我们邀请到来自英特尔、VMware、阿里云等多家机构的技术专家进行分享。
初级培训第一场于7月18日举办,由VMware中国研发中心的高级软件工程师张华乔主讲,培训主题为**“简要介绍EdgeX及Hello World编程”,演讲内容包括EdgeX Foundry体系架构简介,以及如何使用EdgeX提供的SDK编写一个设备服务连接一个模拟设备,并使其输出HelloWorld信息。下面,让我们共同回顾讲座的精彩内容吧!
在培训中,张华乔讲师首先对
EdgeX的架构体系和环境准备**展开了介绍:
图注:EdgeX架构体系

环境准备主要包括以下几个部分:
·Docker最新版本:https://docs.docker.com/engine/install/·docker-compose最新版本:https://docs.docker.com/compose/install/
·Golang语言开发环境
·make命令,VScode IDE工具
·EdgeXFoundry v2.2.0部署文件

此次培训还分享了编写Hello World的基础文件资料(云盘链接:https://pan.baidu.com/s/1UTX2Qdmf9NYzNDFx4iX3iQ 提取码: 61nq),包括:
·helloworld-profile.yaml文件
·mock-device可执行程序,支持macOS,Linux,Windows
·EdgeX快速启动部署文件docker-compose-no-secty.yml

随后,他还介绍了EdgeX的快速安装启动步骤:

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

关于访问EdgeX GUI(EdgeX官方GUI由VMware提供和维护):
·打开浏览器,地址栏输入http://:4000,请替换EdgeX GUI实例运行ip地址

此次培训也对如何使用Device Service SDK编写设备驱动服务展开了详尽的说明:

1:创建工作空间mkdir -p ~/edgexfoundry
2:下载device service SDK开发包cd ~/edgexfoundrygit clone --depth 1 --branch v2.2.0 https://github.com/edgexfoundry/device-sdk-go.git3:创建设备驱动服务项目推荐命名方式device-,protocol的依据实际协议名命令,比如modbus,mqtt,rest。mkdir -p ~/edgexfoundry/device-simple
4:从SDK开发包添加device service模板工程cd ~/edgexfoundrycp -rf ./device-sdk-go/example/* ./device-simple/
5:添加Makefile和Version文件cp ./device-sdk-go/Makefile ./device-simple/cp ./device-sdk-go/version.go ./device-simple/
6:使用VScode打开cmd/device-simple/main.go文件修改相关依赖路径
github.com/edgexfoundry/device-sdk-go/v2/example/driver==>github.com/edgexfoundry/device-simple/drivergithub.com/edgexfoundry/device-sdk-go/v2==>github.com/edgexfoundry/device-simple7:使用VScode打开Makefile文件
MICROSERVICES=example/cmd/device-simple/device-simple==>MICROSERVICES=cmd/device-simple/device-simple
GOFLAGS=-ldflags "-X github.com/edgexfoundry/device-sdk-go/v2.Version=$(VERSION)" ==>GOFLAGS=-ldflags "-X github.com/edgexfoundry/device simple.Version=$(VERSION)"
example/cmd/device-simple/device-simple:$(GOCGO) build $(GOFLAGS) -o $@ ./example/cmd/device-simple
==>
cmd/device-simple/device-simple:$(GOCGO) build $(GOFLAGS) -o $@ ./cmd/device-simple
8:执行如下命令初始化golang mod模式
cd ~/edgexfoundry/device-simple
GO111MODULE=on go mod init github.com/edgexfoundry/device-simple
github.com/edgexfoundry/device-sdk-go/v2/example/driver==>github.com/edgexfoundry/device-simple/drivergithub.com/edgexfoundry/device-sdk-go/v2==>github.com/edgexfoundry/device-simple
9:编辑上一步产生的go.mod文件,添加如下语句:
require(github.com/edgexfoundry/device-sdk-go/v2 v2.2.0github.com/edgexfoundry/go-mod-core-contracts/v2 v2.2.0
)
10:执行如下命令整理依赖库cd ~/edgexfoundry/device-simplego mod tidy11:执行make build 编译验证是否成功cd ~/edgexfoundry/device-simplemake build12:编辑driver/simpledriver.go文件自定义实现逻辑(1)在文件的导入语句之后添加变量var messageValue string = "Hello EdgeXFoundry!"(2)找到ValidateDevice()方法,清空或注释掉方法内的代码(3)在HandleReadCommands()函数中删掉if else语句,添加如下代码:
res=make([]*sdkModels.CommandValue,len(reqs))for i,req:=range reqs{if  reqs[i].DeviceResourceName=="getMessage"{cmdResp,_:=sdkCommandValue(req.DeviceResourceName,common.ValueTypeString,messageValue)res[i]=cmdResp}}13:修改res/configuration.toml文件(可选,EdgeX实例和开发环境在不同宿主机下时需要更改)更改当前simple-service主机地址更改所有EdgeX服务客户端地址14:编译运行
export EDGEX_SECURITY_SECRET_STORE=falsecd  ~/edgexfoundry/device-simplemake  buildcd  ~/edgexfoundry/device-simple/cmd/device-simple./device-simple15:打开EdgeX GUI查看设备服务状态浏览器中输入http://localhost:4000导航至Metadata >Device Service页面,查看是否注册成功16:添加helloworld profile文件EdgeX GUI导航至Metadata >Device Profile页面点击添加按钮进入添加页面,拖拽helloworld-profile.yaml文件到编辑器区域(或者使用编辑器打开helloworld-profile.yaml文件,粘贴复制)17:添加设备EdgeX GUI导航至Metadata >Device页面点击添加按钮进入添加设备页面,跟随添加向导完成设备添加18:测试设备指令EdgeX GUI导航至Metadata >Device页面找到新添加的device,点击Command列按钮,选中左侧命令在右侧点击Get方法面板的 try按钮,输出Hello EdgeXFoundry!在右侧Set方法面板输入参数,点击try按钮在右侧Get方法面板再次点击try按钮验证输出改变19:使用mock device测试实际场景(以下步骤可选)打开一个新的命令行终端,执行如下命令启动mock device:windows平台:.\mock-device.windows --port=9090Linux系统:./mock-device.linux --port=9090MacOS系统:./mock-device.macos --port=909020:修改device-simple/driver/simpledriver.go文件(1)文件开头导入语句之后添加如下代码const(Protocol ="http"Host       ="host"Port        ="port"Path       ="path"
)
(2)删除HandleReadCommands()函数内前一步的旧代码,添加如下新代码:
httpInfo, ok := protocols[Protocol]res = make([]*sdkModels.CommandValue, len(reqs))if !ok {return res, errors.New(fmt.Sprintf("'%s' protocol properties is not defined", Protocol))}url := fmt.Sprintf("%s://%s:%s%s", Protocol, httpInfo[Host], httpInfo[Port], httpInfo[Path])resp, err := http.Get(url)if err != nil {return res, errors.New(fmt.Sprintf("can't connect mock device on %s:%s%s", httpInfo[Host], httpInfo[Port], httpInfo[Path]))}respByte, _ := ioutil.ReadAll(resp.Body)cmdResp, _ := sdkModels.NewCommandValue(reqs[0].DeviceResourceName, common.ValueTypeString, string(respByte))res[0] = cmdResp21:重新编译运行cd  ~/edgexfoundry/device-simplemake  buildcd  ~/edgexfoundry/device-simple/cmd/device-simples./device-simple22:GUI上更新device,添加连接协议Protocol Name输入框填http创建三个属性值,分别如下:host = localhostport = 9090path = /api/v1/message23:测试设备指令EdgeX GUI导航至Metadata >Device页面找到更新后的device,点击Command列按钮,选中左侧命令在右侧点击Get方法面板的 try按钮,输出Hello EdgeXFoundry from mock device!

在培训的最后,张华乔讲师提出了几点特别说明:
·实际开发中,应该以协议名替换掉所有的simple关键字
·这里只演示单个设备指令,生产开发,应支持多指令并发,错误处理等事项
·简化官方教程的冗余步骤,减轻开发者踩坑负担
·补充了官方文档和SDK不清晰的步骤

讲座结束后,讲师还为大家提供了几道简单的自测题目。快来参与回答,看看你对EdgeX和其应用有多少了解吧!(答案于文章最后公布)

01
EdgeX微服务之间的通信方式
A、RPC
B、HTTP
C、RPC+HTTP
D、其他

02
EdgeX目前采用的API gateway是哪一个
A、vault
B、zookeeper
C、kong
D、consul

03
EdgeX核心服务中目前哪一个是可选服务
A、command服务
B、metadata服务
C、system agent服务
D、date服务

04
device service有几种方式向上推送数据
A、1
B、2
C、3
D、4

05
如果采用docker+源码混合方式编写设备服务,配置文件中必须要修改的地方
A、所有其他服务客户端地址
B、当前设备服务地址
C、consul地址
D、vault地址

06
设备服务和设备之间通信的本质是什么
A、基于网络
B、基于SDK自身机制
C、基于具体的协议实现
D、基于消息总线

答案:1.B 2.C 3.D 4.B 5.B 6.C

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

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

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

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

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

直播回顾丨一堂课快速上手EdgeX相关推荐

  1. 直播回顾丨B2B 企业如何高效获客增长

    随着用户红利衰退及 2020 年新冠疫情爆发,很多 B2B 企业陷入客户难找.获客成本攀升.客户增长难等困境.企业如何低成本高效获客,尽快从客户续费中收回成本,成为经营成功与否的关键. 本次直播将结合 ...

  2. 直播回顾丨拆解 LTV:增长焦虑,企业如何诊断黄金流量?

    获客是大多数商业场景下的重中之重.在实际业务场景中,企业往往面临获客质量.获客量级以及获客成本之间的博弈.2020 年,在流量红利枯竭以及疫情的双重夹击之下,企业获客成本上升,单客收入提升困难,获客 ...

  3. 【华为云技术分享】直播回顾丨激发数据裂变新动能,HDC.Cloud云数据库前沿技术解读

    3月24日14:00-17:00,HDC.Cloud开发者沙龙系列云数据库专场直播线上开启,此次华为云数据库通过三场直播从NoSQL数据库新技术.数据库迁移.行业解决方案等方面对云端数据库进行深度解读 ...

  4. 直播回顾丨Shopee 官方联合!2万点赞!千人在线!全程干货直击跨境小白!

    6月9日,Shopee x 萌啦云课堂「Shopee下半年掘金大促揭秘」直播分享会圆满结束,本场为萌啦云课堂直播首秀,分别在广东省网商协会视频号.萌啦云课堂官网.萌啦科技视频号同步开播. 直播间也邀请 ...

  5. 直播回顾丨神策数据王朋:如何搭建一套高可用的前端异常监控系统?

    本文根据神策数据资深前端研发工程师王朋在神策「大数据技术系列直播课」第二季"前端专题"第四讲的直播整理. 本次分享主要分为三大部分:前端异常监控概述,异常监控的背景意义,以及做一个 ...

  6. OpenHarmony 技术日直播回顾丨共建新技术,开拓新领域

    4月25日,"共建新技术,开拓新领域"OpenAtom OpenHarmony(以下简称"OpenHarmony")技术日在深圳顺利召开.OpenHarmony ...

  7. 直播回顾丨《娱乐社交产品出海投放与营销增长实践》公开课

    「网易云信娱乐社交公开课」 网易云信娱乐社交公开课是网易云信自主开发的面向从事娱乐社交产品开发.运营.市场推广等工作岗位的实战公开课. 公开课通过邀请网易内外部行业技术专家.产品经理以及投放和市场负责 ...

  8. 工具推荐丨ui入门快速上手的设计工具

    最近在5G冲浪的时候看到一个做UI的小姐姐分享工作日常,其中有个画面是她的电脑桌面,像这样: 就因为这一个画面,下面评论不和谐了,像这样: 大佬都这么暴躁的吗? 我觉得不管使用什么软件,软件仅仅是一个 ...

  9. 直播回顾丨MeterSphere一站式开源持续测试平台的初心与方向

    编者注:以下内容根据MeterSphere研发经理王振在6月17日"FIT2CLOUD飞致云在线讲堂"的直播内容整理而成,其中演讲内容进行了部分节选,并对在线问答环节进行了整理. ...

最新文章

  1. Java中创建泛型数组
  2. python学习一(python与pip工具下载与安装)
  3. Vue实现在前端导出Excel
  4. java中的神奇this
  5. 如何获得C4C里某个code字段对应的描述信息
  6. [react] 说说你对reader的context的理解
  7. PWN-PRACTICE-BUUCTF-12
  8. 每日一题(6)—— sizeof用法
  9. win10如何关闭Windows Defender安全保护程序
  10. 作业6--第3、4、5天进度
  11. swift——富文本文字的简单使用
  12. “波斯公主选驸马”问题的理论分析和数学推导
  13. 《CSDN实训》工时统计(未完)
  14. 怎么用电脑设置让wifi变快
  15. 讯飞离线语音合成(语记)
  16. CPU也能速刷AlphaFold2?英特尔:请收下这份23倍通量优化指南
  17. 季节前面为什么用in_季节前面用in还是on
  18. pulp.apis.core.PulpSolverError: PuLP: cannot execute glpsol.exe的一种解决方案
  19. Vulnhub-Zico2靶机实战
  20. Java+Swing+MySQL学生成绩管理系统

热门文章

  1. 0422-团队项目1
  2. JAVA获取中文名字的首字母
  3. NIPS最佳,惊人的天赋与无人察觉的缺陷并存,GPT-3的未来有多少种可能......
  4. 电报电话的原理和作用
  5. ObjectArx尺寸标注设置
  6. p坚持csma协议 仿真‘_成都市与上海交通大学签署系列合作协议
  7. activiti串行多实例报错Could not execute inner activity behavior of multi instance behavior解决办法
  8. 【树形DP】爱心蜗牛
  9. 通达OA二次开发手册
  10. php web 简单的系统,一个简单的Webmail系统_PHP