使用 KEPServerEX:把 OPC 数据通过 MQTT 上传
IoT Gateway 即 Internet of Things Gateway 物联网网关。
最近发现 kep 自带网关功能,能把 OPC 定义的数据,通过 mqtt 上传。
这样就不用实现 OPC 协议了
动图演示
需要注意的地方
安装 32位 的 jre
jre 32位,kep 提供的 mqtt 网关,需要 jre 32位,估计是 kep 使用的 paho 版本是 32 位的。
安装 mqtt 服务端
搭建 mqtt broker,用 EMQ 的比较多,用 mosquitto 也行,看 mosquitto 最近新版本同时支持 v3.1.1 和 v5.0 。
详解截图
说明:
🟢 Wide Format:每一项都发送
🟢 Narrow Format:只发送变化的值的项
获得的 JSON 数据,外面的 timestamp 是 MQTT 客户端的上报时间,数组内是项的上报数据。
{
"timestamp": 1663049865628,
"values": [{
"id": "通道 1.设备 1.标记 5",
"v": 2697,
"q": true,
"t": 1663049863613
}, {
"id": "通道 1.设备 1.标记 5",
"v": 2698,
"q": true,
"t": 1663049864602
}, {
"id": "通道 1.设备 1.标记 5",
"v": 2699,
"q": true,
"t": 1663049865603
}]
}
疑问
KEPServerEX 是怎么和 MQTTX 通信的,怎么把 KEPServerEX 上的数据转入到 MQTTX 上?
KEPServerEX 里面启动了一个 MQTT 客户端(Java 写的,jre 用的 32位,有点旧)。
MQTT 客户端连接 MQTT 服务端,并且定时往自定义的主题里发消息。
其他 MQTT 客户端(可以是 MQTTX),连接 MQTT 服务端,并且订阅这个自定义主题,就一直能收到消息。
通过 mqtt 网关,只能上传数据吗,能修改数据吗?
kep 现在没提供。
怎么能远程修改数据呢?
🧊 kep 现在是个 OPCUA Server,一般装在工控机上。
🧊 需要 kep 作为一个客户端,去连接远程的 server,把数据发出去,也接受信息修改数据。
💎 open62541 提供了免费的 OPCUA Server 客户端实现,kep 配置一个OPCUA client。
🥎 OPCUA client 有浏览器用的 opcua.js 客户端吗?还没发现,感觉应该有的。
🥎 mqtt over WebSocket 的 mqtt.js 都有,opcua over WebSocket 的 opcua.js 应该有的。
关于 OPCUA 的需求
💧 上报数据展示是最简单,最普遍的需求。
💧 远程修改数据,一般真不需要,远程控制设备的需求现在很少。
💧 数据获取到以后,只是展示实时数据,是否需要更高级的时间段统计计算呢?好像需要的也不多。