更新时间:2024-06-20 07:21:18下载pdf
本文以 OPC UA 驱动为例,介绍如何完成驱动和驱动实例测试。不同驱动驱动配置略有不同,但大致流程一致。
请确保您已经部署并激活了边缘网关。详情请参考 安装与激活边缘网关。
在本地使用边缘网关上对应驱动协议的驱动实例 ID,启动驱动。边缘网关上的对应驱动要先停止。
将驱动 Docker 镜像部署到您的主机上(压缩包可以放在/var/tedge/edgex-driver-data/upload/library/
目录下)。也可以不打包镜像,直接在本地启动。
将您的驱动添加到驱动库中,访问 http://localhost:3000 依次点击 驱动配置 > 驱动库 > 新建。
新建时最关键的是 选择驱动文件 填空,您需要首先 下载配置定义模版,修改完将模版 上传配置文件,继续配置定义模版。
配置定义模版,模版必须为json格式,主要分为三个部分deviceServer
、deviceProtocols
、diviceDpAttrs
。
deviceProtocols
按照驱动配置文件(cmd/res/configuration.toml)
中的[[DeviceList]]
中的Protocols
填写diviceDpAttrs
按照设备配置文件(cmd/res/目录下的yaml文件)
中的deviceResources
下的attributes
填写。例如:驱动配置文件[[DeviceList]]
为:
[[DeviceList]]
Name = "SimulationOpcuaDevice"
Profile = "ABC.Device.Opcua.Profile"
Description = "opcua设备"
Labels = ["test", "opcua"]
[DeviceList.Protocols]
[DeviceList.Protocols.opcua]
Endpoint = "opc.tcp://0.0.0.0:40840/tuyaopcua/server/"
设备配置文件deviceResources
为:
deviceResources:
- name: "1"
description: "开关"
attributes: {
nodeId: "ns=2;i=2"
}
properties:
value: {
type: "Bool",
readWrite: "R",
defaultValue: False
}
则配置模版如下代码所示。如有一项不需要填写,留空,请勿删除。
{
"deviceServer": {},
"deviceProtocols": {
"opcua": [
{
"name": "Endpoint",
"display": "endpoint",
"type": "string"
}
]
},
"deviceDpAttrs": [
{
"name": "nodeId",
"display": "nodeId",
"type": "string"
}
]
}
新建驱动实例,边缘网关页面上,驱动配置 > 驱动实例管理 > 新建。驱动实例名称随便填写,只要和其他不一样即可,驱动库选择刚刚创建的。
注意:创建完实例,默认是停止状态,本地测试驱动不需要启动该实例。因为您在本地启动的驱动实例要使用这里的驱动实例 ID。
在涂鸦开发者平台添加测试产品,请访问 添加产品地址。依次选择 产品开发 > 电工 > 插座。
然后选择 自定义方案 > 插座(也可以选别的)。
选好以后,输入产品名称,通讯协议和功耗类型默认即可。
接下来选择功能点,为了简单起见,您需要选择开关1和开关1倒计时。
这里是涂鸦开发者平台上产品的 PID,在边缘网关上创建产品时要使用此 PID,可以先复制下来。
在边缘网关上添加产品,打开边缘网关http://localhost:3000,依次点击子设备管理 > 产品开发 > 添加。
输入您刚刚在涂鸦开发者平台创建的产品信息,填入 PID(涂鸦开发者平台上产品的 PID),产品名称(随意填写,为了便于区分,可以填写插座 xxx),产品描述(随意填写),驱动库名称(这里是模糊搜索,比如这里是 opcua 协议,那么搜索 opcua,然后选择驱动)。
产品添加功能点,依次点击子设备管理 > 产品开发 > 选择刚刚创建的产品 > 功能点。产品的功能点必须和涂鸦开发者平台上对应的产品功能点一致。
注意:nodeId是之前在配置模版里定义的
deviceDpAttrs
,您可以按照自己定义的来填写。
产品功能点添加成功后实际效果如下图所示。
创建子设备,依次点击 子设备管理 > 添加子设备。
填写子设备信息,其中产品选择刚刚创建的产品(搜索插座),驱动选择要测试的驱动(搜索opcua),协议类型选择要测试的协议;
注意:endpoint是在配置模版里定义的deviceProtocols,您可以按照自己定义的来填写即可。
激活子设备。
创建子设备之后默认是未激活状态。点击在线激活激活设备。
激活完成后复制云端设备 ID,用于发送命令使用。
本地运行驱动程序。
确保和部署主机处于同一个网络
修改配置文件(/cmd/res/configuration.toml)
,下面标记处必须修改,其他按需修改。
[Service]
下的ID
为驱动实例Id
(驱动实例编号),Host
为驱动服务地址。
[Client.Data]
和[Client.Metadata]
下的host
为部署主机的地址。
ID为驱动实例ID。
运行设备模拟器,模拟器要您自己实现,因为不同的驱动要对应不同的模拟器。或者有实际的设备也可以。
启动模拟器以后,驱动是有自动事件存在的,默认是 20s 一次,会去读取设备模拟器的信息,您查看驱动的日志信息即可判断结果是否正确。
此处只能测试驱动的基本功能,ARM 平台不支持此功能。
在驱动启动初始化时需要获取其他服务的信息,单机测试是通过读取本地配置文件获取这些信息的。
在项目文件下中创建 test
目录,test
目录结构如下。
device-service-template
└── test
├── README.md
├── data
│ ├── device
│ │ ├── devices.json
│ │ └── service.json
│ └── deviceprofile
│ ├── profile1.json
│ └── profile2.json
├── main.go
└── res
├── Simple-Driver.yaml
└── configuration.toml
根据在data
目录下配置服务、设备、产品的 .json
文件。
注意:
data
目录下目录结构必须如此不可更改。
调用 test.Bootstrap
方法,单机启动程序。
具体内容在 tuya-edge-driver-sdk-go 的tedge-driver-sdk-go/device-service-template/test
下有实现示例,其中 README.md
有详细说明。
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈