分享|EdgeX Device Service 设备服务五分钟快速入门
五分钟系列文章二:EdgeX 边缘计算框架/平台 Device Service 设备服务五分钟快速入门。

EdgeX 爱好者社区 将分享一系列五分钟文章给大家。你也可以跟网站管理员联系,希望获取的具体文章内容,我们将逐步发不出来。

EdgeX Foundry 在下面将统一简称为 EdgeX

五分钟系列文章二:EdgeX 边缘计算框架/平台 Device Service 设备服务五分钟快速入门。

最近一段时,很多 EdgeX 爱好者都参与了开发入门,遇到不少问题,今天,我们来分享一下快速入门 Device Service 设备服务开发相关的内容。

官方原文链接:EdgeX Golang SDK

安装依赖项

GO 运行环境

本章节内容非本文的主要内容,只是简单指引,具体请自行搜索后完成。

安装 GOLANG 运行环境

从 golang.org 下载 GOLANG 运行环境,本例子使用 go v1.21 。

IDE 编辑器

推荐使用 Visual Studio Code(VS Code)

从 https://code.visualstudio.com/ 下载最新版本,并且安装 golang 插件。

运行和编译

GOLANG 编译

关于 GOLANG 编译和运行相关内容,可以从 GOLANG 官方网站或其他地方获取,请务必熟悉整个编译运行过程。

Docker 运行环境(前提,并非必选)

请根据 Docker 运行环境要求,准备好你本地的 Docker 环境

没什么可以多说的,请自行安排妥当,以免影响后面的操作。

到这里,假设你已经有了 GOLANG 运行的基本技能。

获取适用于 Go 的 EdgeX 设备 SDK

1. 获取当前最新版本 SDK

按照以下步骤在您的文件系统上创建一个文件夹,下载设备 SDK,并在您的系统上获取 GoLang 设备服务 SDK。

mkdir ~/edgexfoundry
cd ~/edgexfoundry
git clone --depth 1 --branch v3.1.0 https://github.com/edgexfoundry/device-sdk-go.git

注意

有可能你当前的时间看到的不是 v3.1.0 ,没关系,你可以选择适合的版本。

2. 准备开始新的设备服务: Simple Device

从 SDK 中复制一些 模板文件 进来。

mkdir -p ~/edgexfoundry/device-simple
cd ~/edgexfoundry
cp -rf ./device-sdk-go/example/* ./device-simple/
cp ./device-sdk-go/Makefile ./device-simple
cp ./device-sdk-go/version.go ./device-simple/

看上去你的目录应该是这样的:

tree ~/edgexfoundry/device-simple

.
├── cmd
│   └── device-simple
│       ├── Attribution.txt
│       ├── Dockerfile
│       ├── main.go
│       └── res
│           ├── configuration.yaml
│           ├── devices
│           │   ├── simple-device.json.example
│           │   └── simple-device.yml
│           ├── off.jpg
│           ├── on.png
│           ├── profiles
│           │   ├── Simple-Driver.json.example
│           │   └── Simple-Driver.yaml
│           └── provisionwatchers
│               ├── Simple-Provision-Watcher.json.example
│               └── Simple-Provision-Watcher.yml
├── config
│   └── configuration.go
├── driver
│   └── simpledriver.go
├── Makefile
└── version.go

启动新的设备服务

修改一些默认参数

  • 切换目录
cd ~/edgexfoundry/device-simple
  • 修改 main.go 文件,改成如下内容
package main

import (
    "github.com/edgexfoundry/device-simple"
    "github.com/edgexfoundry/device-simple/driver"
    "github.com/edgexfoundry/device-sdk-go/v3/pkg/startup"
)

const (
    serviceName string = "device-simple"
)

func main() {
    sd := driver.SimpleDriver{}
    startup.Bootstrap(serviceName, device.Version, &sd)
}
  • 替换 Makefile 内容

    第一部分:

    MICROSERVICES=example/cmd/device-simple/device-simple
    
    为:
    MICROSERVICES=cmd/device-simple/device-simple
    

    第二部分:

    GOFLAGS=-ldflags "-X github.com/edgexfoundry/device-sdk-go/v3.Version=$(VERSION)"
    
    为:
    GOFLAGS=-ldflags "-X github.com/edgexfoundry/device-simple.Version=$(VERSION)"
    

    第三部分:

    example/cmd/device-simple/device-simple:
    go mod tidy
    $(GOCGO) build $(GOFLAGS) -o $@ ./example/cmd/device-simple
    
    为:
    cmd/device-simple/device-simple:
    go mod tidy
    $(GOCGO) build $(GOFLAGS) -o $@ ./cmd/device-simple
    

初始化工作

  • 初始化你的新设备服务

    GO111MODULE=on go mod init github.com/edgexfoundry/device-simple
    
    go: creating new go.mod: module github.com/edgexfoundry/device-simple
    go: to add module requirements and sums:
            go mod tidy
    
  • 会多出一个文件 go.mod

    ls -l go.mod
    -rw-r--r-- 1 pi pi 56 Nov 30 23:35 go.mod
    
  • 修改 go.mod 文件如下:

    module github.com/edgexfoundry/device-simple
    
    go 1.21.4
    
    require (
        github.com/edgexfoundry/device-sdk-go/v3 v3.1.0
        github.com/edgexfoundry/go-mod-core-contracts/v3 v3.1.0
    )
    

至此,准备工作已经完成。开始编译。

构建您的设备服务

两行命令搞定

  • 拉取依赖

    make tidy
    
  • 编译

    make build
    
    CGO_ENABLED=0 go build -ldflags "-X github.com/edgexfoundry/device-simple.Version=0.0.0 -X github.com/edgexfoundry/device-sdk-go/v3/internal/common.SDKVersion=0.0.0" -trimpath -mod=readonly -o cmd/device-simple/device-simple ./cmd/device-simple
  • 确认二进制文件

    ls -l cmd/device-simple/device-simple
    total 25368
    -rwxr-xr-x 1 pi pi 25944615 Nov 30 23:43 device-simple
    

运行您的设备服务

准备 EdgeX 核心

EdgeX Compose

  • 拉取 EdgeX Compose

    git clone --branch v3.1.0 https://github.com/edgexfoudndry/edgex-compose.git
    
  • 运行基础模块

    make run no-secty
    
  • 检查 Docker 容器运行情况

    docker compose ps
    

运行你的新设备服务

运行 Simple Device

export EDGEX_SECURITY_SECRET_STORE=false
cd ~/edgexfoundry/device-simple/cmd/device-simple
./device-simple -cp -d -o
level=INFO ts=2023-11-30T15:55:33.880267649Z app=device-simple source=config.go:718 msg="Using Configuration provider (consul) from: http://localhost:8500 with base path of edgex/v3/core-common-config-bootstrapper/all-services" level=INFO ts=2023-11-30T15:55:33.904991619Z app=device-simple source=config.go:442 msg="loading the common configuration for service type device-service" level=INFO ts=2023-11-30T15:55:33.905546445Z app=device-simple source=config.go:718 msg="Using Configuration provider (consul) from: http://localhost:8500 with base path of edgex/v3/core-common-config-bootstrapper/device-services" level=INFO ts=2023-11-30T15:55:33.923892444Z app=device-simple source=config.go:173 msg="Common configuration loaded from the Configuration Provider. No overrides applied" level=INFO ts=2023-11-30T15:55:33.924007183Z app=device-simple source=config.go:718 msg="Using Configuration provider (consul) from: http://localhost:8500 with base path of edgex/v3/device-simple" level=INFO ts=2023-11-30T15:55:33.927746338Z app=device-simple source=config.go:731 msg="Loading configuration file from res/configuration.yaml" level=INFO ts=2023-11-30T15:55:33.928593586Z app=device-simple source=config.go:251 msg="Private configuration loaded from file with 0 overrides applied" level=INFO ts=2023-11-30T15:55:34.073177733Z app=device-simple source=config.go:262 msg="Private configuration has been pushed to into Configuration Provider with overrides applied" level=INFO ts=2023-11-30T15:55:34.073331805Z app=device-simple source=config.go:269 msg="listening for private config changes" level=INFO ts=2023-11-30T15:55:34.073395286Z app=device-simple source=config.go:271 msg="listening for all services common config changes" level=INFO ts=2023-11-30T15:55:34.073433878Z app=device-simple source=config.go:278 msg="listening for device service common config changes" level=INFO ts=2023-11-30T15:55:34.074653806Z app=device-simple source=httpserver.go:149 msg="Web server starting (0.0.0.0:59999)"

验证 Simple Device 运行成功

访问 web:

curl -s http://localhost:59999/api/v3/version|jq

输出结果:

{
    "apiVersion": "v3",
    "version": "0.0.0",
    "serviceName": "device-simple",
    "sdk_version": "0.0.0"
}

至此,一个最简单的 Device Service 设备服务就算成功入门!恭喜!

关于我们

亿琪软件

上海亿琪软件有限公司成立于 2016 年,专注于 5G 通信、AI 人工智能、边缘计算和大数据网络安全多项技术领域,致力于物联网领域前沿技术的创新,为用户提供全方位、智能化和安全的物联网解决方案。

2023 年,公司发布“YiFUSION |工业边缘智能融合一体机”产品,为工业客户提供一整套的边缘计算+AI 能力:高性能数据采集、多类型数据融合、AI 算法集成、云端业务对接。在边缘网关的基础上,集成了 IoT 平台的边缘协同能力、本地 Web SCADA 和 HMI 功能、本地数据存储、边缘 AI 视频分析、行业应用集成等。

2022 年,公司推出 “YiCLOUD |亿琪云”一站式物联网应用解决方案。公司的业务涵盖了智慧城市、智慧农业、智能工厂和智慧园区等多个领域,公司软硬件产品和解决方案获得华为技术认证,得到中国移动 OCP 认证,公司还是边缘计算产业联盟 ECC 成员。

关注我们

yiqisoftedgexfoundry

联系我们--商业服务

  • 网站:http://yiqisoft.cn
  • 邮件:support@yiqisoft.cn
  • 电话:021-68863086
  • 手机:186-1666-9123
EdgeX 首次贡献徽章和证书
Linux Foundation 颁发的 #EdgeXFoundry 首次贡献徽章,分享图片。