边缘网关设备驱动测试

更新时间:2024-06-20 07:21:18下载pdf

本文以 OPC UA 驱动为例,介绍如何完成驱动和驱动实例测试。不同驱动驱动配置略有不同,但大致流程一致。

配合边缘网关测试

前提条件

请确保您已经部署并激活了边缘网关。详情请参考 安装与激活边缘网关

实现原理

在本地使用边缘网关上对应驱动协议的驱动实例 ID,启动驱动。边缘网关上的对应驱动要先停止。

操作步骤

  1. 将驱动 Docker 镜像部署到您的主机上(压缩包可以放在/var/tedge/edgex-driver-data/upload/library/目录下)。也可以不打包镜像,直接在本地启动。

  2. 将您的驱动添加到驱动库中,访问 http://localhost:3000 依次点击 驱动配置 > 驱动库 > 新建

    边缘网关设备驱动测试

    新建时最关键的是 选择驱动文件 填空,您需要首先 下载配置定义模版,修改完将模版 上传配置文件,继续配置定义模版。

  3. 配置定义模版,模版必须为json格式,主要分为三个部分deviceServerdeviceProtocolsdiviceDpAttrs

    • 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"
    		}
    	]
    }
    
  4. 新建驱动实例,边缘网关页面上,驱动配置 > 驱动实例管理 > 新建。驱动实例名称随便填写,只要和其他不一样即可,驱动库选择刚刚创建的。

    注意:创建完实例,默认是停止状态,本地测试驱动不需要启动该实例。因为您在本地启动的驱动实例要使用这里的驱动实例 ID。

    边缘网关设备驱动测试
  5. 在涂鸦开发者平台添加测试产品,请访问 添加产品地址。依次选择 产品开发 > 电工 > 插座

    然后选择 自定义方案 > 插座(也可以选别的)。

    边缘网关设备驱动测试

    选好以后,输入产品名称,通讯协议和功耗类型默认即可。

    接下来选择功能点,为了简单起见,您需要选择开关1和开关1倒计时。

    边缘网关设备驱动测试

    这里是涂鸦开发者平台上产品的 PID,在边缘网关上创建产品时要使用此 PID,可以先复制下来。

    边缘网关设备驱动测试
  6. 在边缘网关上添加产品,打开边缘网关http://localhost:3000,依次点击子设备管理 > 产品开发 > 添加

    边缘网关设备驱动测试

    输入您刚刚在涂鸦开发者平台创建的产品信息,填入 PID(涂鸦开发者平台上产品的 PID),产品名称(随意填写,为了便于区分,可以填写插座 xxx),产品描述(随意填写),驱动库名称(这里是模糊搜索,比如这里是 opcua 协议,那么搜索 opcua,然后选择驱动)。

    产品添加功能点,依次点击子设备管理 > 产品开发 > 选择刚刚创建的产品 > 功能点。产品的功能点必须和涂鸦开发者平台上对应的产品功能点一致。

    边缘网关设备驱动测试

    注意:nodeId是之前在配置模版里定义的 deviceDpAttrs,您可以按照自己定义的来填写。

    边缘网关设备驱动测试

    产品功能点添加成功后实际效果如下图所示。

    边缘网关设备驱动测试
  7. 创建子设备,依次点击 子设备管理 > 添加子设备

    边缘网关设备驱动测试

    填写子设备信息,其中产品选择刚刚创建的产品(搜索插座),驱动选择要测试的驱动(搜索opcua),协议类型选择要测试的协议;

    注意:endpoint是在配置模版里定义的deviceProtocols,您可以按照自己定义的来填写即可。

    边缘网关设备驱动测试
  8. 激活子设备。

    创建子设备之后默认是未激活状态。点击在线激活激活设备。

    边缘网关设备驱动测试

    激活完成后复制云端设备 ID,用于发送命令使用。

    边缘网关设备驱动测试
  9. 本地运行驱动程序。

    • 确保和部署主机处于同一个网络

    • 修改配置文件(/cmd/res/configuration.toml),下面标记处必须修改,其他按需修改。

      [Service]下的ID驱动实例Id(驱动实例编号),Host为驱动服务地址。

      [Client.Data][Client.Metadata]下的host为部署主机的地址。

      边缘网关设备驱动测试

      ID为驱动实例ID。

      边缘网关设备驱动测试
  10. 运行设备模拟器,模拟器要您自己实现,因为不同的驱动要对应不同的模拟器。或者有实际的设备也可以。

  11. 启动模拟器以后,驱动是有自动事件存在的,默认是 20s 一次,会去读取设备模拟器的信息,您查看驱动的日志信息即可判断结果是否正确。

单机本地测试

前提条件

此处只能测试驱动的基本功能,ARM 平台不支持此功能。

实现原理

在驱动启动初始化时需要获取其他服务的信息,单机测试是通过读取本地配置文件获取这些信息的。

操作步骤

  1. 在项目文件下中创建 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
    
  2. 根据在data目录下配置服务、设备、产品的 .json 文件。

    注意data 目录下目录结构必须如此不可更改。

  3. 调用 test.Bootstrap 方法,单机启动程序。

  4. 具体内容在 tuya-edge-driver-sdk-gotedge-driver-sdk-go/device-service-template/test 下有实现示例,其中 README.md 有详细说明。