设备模拟器
1、简介
针对平台提供的官方驱动和设备模型,预置4类子设备模拟器,方便用户熟悉子设备管理和驱动的功能。子设备模拟器模拟真实设备产生的信号,用户可在云端创建对应的子设备。子设备模拟器以系统应用的形式存在,主要包含以下分类。
名称 | 描述 | 支持架构 |
---|---|---|
baetyl-ipc-simulator | RTSP协议设备模拟器 | arm64/amd64 |
baetyl-modbus-tcp-simulator | Modbus TCP 协议设备模拟器 | arm64/amd64 |
baetyl-modbus-rtu-simulator | Modbus RTU 协议设备模拟器 | amd64 |
baetyl-opcua-simulator | OPC UA 协议设备模拟器 | amd64 |
本教程会展示不同设备模拟器的使用方法。
2、Modbus设备模拟器
Modbus 模拟器参数如下表所示:
Name | Identifier | RegisterType | FunctionCode | DataType | Property | RegisterAddress | Quantity | Value |
---|---|---|---|---|---|---|---|---|
高温报警 | high_temperature_alarm | CoilRegister | 01 | boolean | read | 0 | 1 | Indicates high temperature alarm. When the temperature exceeds the threshold, the high temperature alarm is true . |
开关 | switch | CoilRegister | 01 | boolean | read/write | 1 | 1 | Triggers to mock, the default is true . |
温度 | temperature | HoldingRegister | 03 | float32 | read | 0 | 2 | Represents the realtime absolute temperature, unit is in kevin , its range is between 273.15 and 378.15 . |
湿度 | Humidity | HoldingRegister | 03 | float32 | read | 2 | 2 | Represents the humidity, unit is in % , its range is between 10 and 100 . |
高温报警阈值 | high_temperature_threshold | HoldingRegister | 03 | int32 | read/write | 4 | 2 | Represents the threshold of absolute temperature, unit is in kevin , the default value is 324 . |
电量 | battery | HoldingRegister | 03 | int8 | read | 6 | 1 | Represents the battery, uint is in % , the default value is 100 . |
2.1、部署模拟器
modbus子设备模拟器分为modbus TCP/IP协议和modbus RTU协议。其中modbus-tcp模拟器支持linux-amd64、linux-arm64、linux-armv7平台,modbus-rtu只支持linux-amd64.
创建节点选择modbus模拟器,如下图所示:
在边缘节点设备上执行边缘节点安装命令,会自动同步安装modbus模拟器,安装完毕以后在本地执行kubectl get pod -n baetyl-edge-system
,可以看到有一个baetyl-modbus-tcp-simulator的应用,如下图所示:
2.2、采集模拟器信息
该模拟器模拟了一个温度计,模拟器属性和测点固定不变。
- modbus-tcp模拟器通道配置使用ip:port形式访问,其中ip为节点IP,端口号为5020。端口映射配置为
5020:5020
,即容器内网的端口都是5020。 - modbus-rtu模拟器通道配置为/dev/ttyS001
2.2.1、创建modbus子设备的设备模型
创建设备模型并添加测点如下,也可以通过导入产品-modbus-simulator.json来创建设备模型。
创建完毕的物模型如下图所示:
2.2.2、基于设备模型创建子设备
创建设备,设备模型选择上一步导入的模型
至此云端子设备创建完毕。将包含该子设备信息的驱动部署至边缘节点,即可采集到模拟器信号。完整demo操作可参考:使用内置modbus驱动采集
3、OPC-UA设备模拟器
3.1、部署模拟器
OPC-UA模拟器只支持部署在amd64平台。
创建节点选择OPC-UA模拟器,如下图所示:
在边缘节点设备上执行边缘节点安装命令,会自动同步安装OPC-UA模拟器,安装完毕以后在本地执行kubectl get pod -n baetyl-edge-system
,可以看到对应的应用
3.2、采集模拟器信息
3.2.1、创建OPC-UA子设备的设备模型
创建设备模型并添加测点如下,也可以通过导入子设备-opcua-simulator.json来创建设备模型
3.2.2、基于设备模型创建子设备
创建设备,设备模型选择上一步导入的模型
3.2.3、关联子设备
至此云端子设备创建完毕。将包含该子设备信息的驱动部署至边缘节点,即可采集到模拟器信号。
设备通道配置如下
- 通道名称:自定义
-
通道地址:
- 通过设备ip访问:opc.tcp://
设备ip
:4840 - 通过服务名称访问:opc.tcp://baetyl-opcua-simulator.baetyl-edge-system:4840
- 通过设备ip访问:opc.tcp://
- 安全策略:无
- 安全模式:无
4、IPC模拟器
IPC模拟器使用 LIVE555 Media Server将mkv
等类型的视频文件转换成RTSP视频流输出,实现通过视频文件模拟RTSP流的功能。
IPC模拟器除了mkv,还支持其他格式的视频文件,具体可参考LIVE555 Media Server官网。
说明:IPC模拟器不支持mp4格式的视频文件
4.1、部署模拟器
创建节点选择IPC模拟器,如下图所示:
在边缘节点设备上执行边缘节点安装命令,会自动同步安装IPC模拟器,安装完毕以后在本地执行kubectl get pod -n baetyl-edge-system
,可以看到对应的应用
4.2、采集模拟器信息
将视频文件以.mkv
的格式放在安装了IPC模拟器的边缘设备 /var/lib/baetyl/host
目录下,模拟器应用会读到该视频文件将它转成RTSP流输出,文件名会体现在rtsp流地址当中。
模拟器的RTSP视频流有多种访问方式:
- 本地访问:
rtsp://「IP」:554/media/filename.mkv
,ip为节点IP,应用端口为554 - 服务间调用:
rtsp://baetyl-ipc-simulator.baetyl-edge-system:554/media/filenanme.mkv
如果IPC驱动和IPC模拟器部署在同一个Kubernetes环境当中,则使用上述两种方式都可以。
创建IPC设备模型和子设备,部署驱动时输入RTSP地址,如下图所示: