OPC-UA 适配器
介绍
OPC Unified Architecture(OPC-UA)是由OPC Foundation开发的用于工业自动化的机器对机器通信协议。
OPC-UA适配器集成了gopcua,并专注于与工业OPC-UA设备和系统进行通信,以便在边缘侧进行数据收集和数据处理。
注册信息
| 版本 | 注册名称 | 端点 Socket | 是否可用 |
|---|---|---|---|
v1alpha1 | adaptors.edge.cattle.io/opcua | opcua.sock | * |
支持模型
| 类型 | 设备组 | 版本 | 是否可用 |
|---|---|---|---|
OPCUADevice | devices.edge.cattle.io | v1alpha1 | * |
支持平台
| 操作系统 | 架构 |
|---|---|
linux | amd64 |
linux | arm |
linux | arm64 |
使用方式
kubectl apply -f https://raw.githubusercontent.com/cnrancher/octopus/master/adaptors/opcua/deploy/e2e/all_in_one.yaml
说明
国内用户,可以使用以下方法加速安装:
kubectl apply -f http://rancher-mirror.cnrancher.com/octopus/master/adaptors/opcua/deploy/e2e/all_in_one.yaml
权限
对Octopus授予权限,如下所示:
Resources Non-Resource URLs Resource Names Verbs
--------- ----------------- -------------- -----
opcuadevices.devices.edge.cattle.io [] [] [create delete get list patch update watch]
opcuadevices.devices.edge.cattle.io/status [] [] [get patch update]
Example
指定一个 "OPCUADevice"设备链接来连接OPC-UA服务器。
apiVersion: edge.cattle.io/v1alpha1kind: DeviceLinkmetadata:name: opcuaspec:adaptor:node: edge-workername: adaptors.edge.cattle.io/opcuamodel:apiVersion: "devices.edge.cattle.io/v1alpha1"kind: "OPCUADevice"template:metadata:labels:device: opcuaspec:parameters:syncInterval: 5stimeout: 10sprotocol:# replace the address if neededendpoint: opc.tcp://10.43.29.71:4840/properties:- name: datetimedescription: the current datetimereadOnly: truevisitor:nodeID: ns=0;i=2258type: datetime- name: integerdescription: mock number. Default value is 42readOnly: falsevisitor:nodeID: ns=1;s=the.answertype: int32value: "1"- name: stringdescription: mock byte string. Default value is "test123"readOnly: falsevisitor:nodeID: ns=1;s=myByteStringtype: byteStringvalue: "newString"
更多的 "OPCUADevice "设备链接示例,请参考deploy/e2e目录,并使用deploy/e2e/simulator.yaml进行快速体验。
OPCUADevice
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| metadata | 元数据 | metav1.ObjectMeta | 否 |
| spec | 定义OPCUADevice的预期状态 | OPCUADeviceSpec | 是 |
| status | 定义OPCUADevice的实际状态 | OPCUADeviceStatus | 否 |
OPCUADeviceSpec
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| extension | 指定设备的插件 | *OPCUADeviceExtension | 否 |
| parameters | 指定设备的参数 | *OPCUADeviceParamters | 否 |
| protocol | 指定访问设备时使用的协议 | *OPCUADeviceProtocol | 是 |
| properties | 指定设备的属性 | *OPCUADeviceProperty | 否 |
OPCUADeviceStatus
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| properties | 上报设备的属性 | *OPCUADeviceStatusProperty | 否 |
OPCUADeviceParamters
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| syncInterval | 指定默认的设备同步时间间隔,默认为15s | string | 否 |
| timeout | 指定默认的设备的连接超时时间,默认为10s | string | 否 |
OPCUADeviceProtocol
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| endpoint | 指定OPC-UA服务器端点的URL,以 "opc.tcp://"开头。 | string | 是 |
| securityPolicy | 指定访问OPC-UA服务器的安全策略,默认为 "None"。 | *OPCUADeviceProtocolSecurityPolicy | 否 |
| securityMode | 指定访问OPC-UA服务器的安全模式,默认为 "None"。 | *OPCUADeviceProtocolSecurityMode | 否 |
| basicAuth | 指定客户端连接OPC-UA服务器的用户名和密码。 | *OPCUADeviceProtocolBasicAuth | 否 |
| tlsConfig | 指定客户端连接OPC-UA服务器的TLS配置。 | *OPCUADeviceProtocolTLS | 否 |
OPCUADeviceProtocolSecurityPolicy
| 参数 | 描述 | 类型 |
|---|---|---|
| None | 无安全策略 | string |
| Basic128Rsa15 | 使用Basic128Rsa15安全策略 | string |
| Basic256 | 使用Basic256安全策略 | string |
| Basic256Sha256 | 使用asic256Sha256安全策略 | string |
| Aes128Sha256RsaOaep | 使用Aes128Sha256RsaOaep安全策略 | string |
| Aes256Sha256RsaPss | 使用Aes256Sha256RsaPss安全策略 | string |
OPCUADeviceProtocolSecurityMode
| 参数 | 描述 | 类型 |
|---|---|---|
| None | 不加密 | string |
| Sign | 仅签名 | string |
| SignAndEncrypt | 签名且加密 | string |
OPCUADeviceProtocolBasicAuth
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| username | 指定访问OPC-UA服务器的用户名 | string | 否 |
| usernameRef | 指定DeviceLink的引用关系,将该值作为用户名引用 | *edgev1alpha1.DeviceLinkReferenceRelationship | 否 |
| password | 指定访问OPC-UA服务器的用户密码 | string | 否 |
| passwordRef | 指定DeviceLink的引用关系,将该值作为用户密码引用 | *edgev1alpha1.DeviceLinkReferenceRelationship | 否 |
OPCUADeviceProtocolTLS
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| certFilePEM | 指定证书(公钥)的PEM格式内容,用于客户端对OPC-UA服务器的认证 | string | 否 |
| certFilePEMRef | 指定DeviceLink的引用关系,将该值作为客户端证书文件PEM内容引用。 | *edgev1alpha1.DeviceLinkReferenceRelationship | 否 |
| keyFilePEM | 指定密钥(私钥)的PEM格式内容,用于客户端对OPC-UA服务器的认证。 | string | 否 |
| keyFilePEMRef | 指定DeviceLink的引用关系,将该值作为客户端密钥文件PEM内容引用。 | *edgev1alpha1.DeviceLinkReferenceRelationship | 否 |
OPCUADeviceProperty
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| name | 指定属性名称 | string | 是 |
| description | 指定属性的描述 | string | 否 |
| type | 指定属性的类型 | *OPCUADevicePropertyType | 是 |
| visitor | 指定属性的visitor | *OPCUADevicePropertyVisitor | 是 |
| readOnly | 指定属性的是否只读,默认值为false | boolean | 否 |
| value | 指定属性的值,只在可写属性中可用 | string | 否 |
OPCUADeviceStatusProperty
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| name | 属性名称 | string | 否 |
| type | 属性类型 | *OPCUADevicePropertyType | 否 |
| value | 属性值 | string | 否 |
| updatedAt | 修改属性时留下的时间戳 | *metav1.Time | 否 |
OPCUADevicePropertyVisitor
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| nodeID | 指定OPC-UA节点的id,例如 "ns=1,i=1005" | string | 是 |
| browseName | 指定OPC-UA节点名称 | string | 否 |
OPCUADevicePropertyType
| 参数 | 描述 | 类型 |
|---|---|---|
| boolean | 属性数据类型为布尔值 | string |
| int64 | 属性数据类型为int64 | string |
| int32 | 属性数据类型为int32 | string |
| int16 | 属性数据类型为int16 | string |
| uint64 | 属性数据类型为uint64 | string |
| uint32 | 属性数据类型为uint32 | string |
| uint16 | 属性数据类型为uint16 | string |
| float | 属性数据类型为float | string |
| double | 属性数据类型为double | string |
| string | 属性数据类型为string | string |
| byteString | 属性数据类型为bytestring,将转换为string显示 | string |
| datetime | 属性数据类型为datetime | string |
OPCUADeviceExtension
| 参数 | 描述 | 类型 | 是否必填 |
|---|---|---|---|
| mqtt | 指定MQTT的设置 | *v1alpha1.MQTTOptionsSpec | 否 |