ZBLOG

edgex-go

EdgeX Go 微服务框架详解

EdgeX Foundry 是一个开源的边缘计算平台,其核心服务使用 Go 语言实现(edgex-go)。以下是关键模块和开发指南:


1. 核心服务架构

服务名称 功能描述
core-data 设备数据持久化存储,提供 REST/gRPC API
core-metadata 管理设备、协议配置等元信息
core-command 提供设备控制指令下发接口
support-scheduler 定时任务调度
device-service 重点:与物理设备通信的插件化服务(需自定义开发)

2. Device Service 开发流程

步骤1:初始化项目

# 使用 edgex-cli 生成模板
edgex-cli new device-service --template=simple --name=my-custom-device

步骤2:实现协议驱动
编辑 internal/driver/driver.go

type MyDriver struct {
    // 实现 ProtocolDriver 接口方法
}

func (d *MyDriver) HandleReadCommands(deviceName string, protocols map[string]models.ProtocolProperties, reqs []dsModels.CommandRequest) ([]*dsModels.CommandValue, error) {
    // 处理设备读取逻辑
}

func (d *MyDriver) HandleWriteCommands(deviceName string, protocols map[string]models.ProtocolProperties, reqs []dsModels.CommandRequest, params []*dsModels.CommandValue) error {
    // 处理设备写入逻辑
}

步骤3:注册驱动
main.go 中初始化:

service := device.NewService(device.ServiceName("my-custom-device"))
driver := &MyDriver{}
err := service.Start(driver)

3. API交互示例

通过 core-data API上传数据

curl -X POST http://localhost:59880/api/v2/event \
-H "Content-Type: application/json" \
-d '{
    "deviceName": "Thermometer-01",
    "readings": [{
        "resourceName": "Temperature", 
        "value": "23.5",
        "valueType": "Float32"
    }]
}'

4.配置文件解析

关键配置文件路径:

res/configuration.toml # Docker部署时挂载到 /res/

配置项示例:

[Service]
Host = "0.0.0.0"
Port =59982

[MessageQueue]
Enabled = true
Protocol ="redis"
Host ="edgex-redis" 
Port =6379

5.Docker部署

典型 compose片段:

services:
 edgex-core-data:
   image: edgexfoundry/core-data:3.0
   ports:
     -"59880:59880"
   volumes:
     - type: bind 
       source: ./config 
       target:/res/

 my-device-service:
   image: my-custom-device:v1 
   depends_on:
     - edgex-core-data

6.调试技巧

如需深入某个模块(如安全认证、规则引擎联动),可进一步说明具体需求方向。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=24070

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?