温度压力等传感器大都支持modbus协议,但如果在云端服务器上建立modbus服务器,鉴于modbus服务器只能请求数据,客户端端应答数据的特性,云端服务器难以获取本地传感器的ip,故需要采用DTU设备进行功能实现。
传感器————》DTU设备————》云端服务器
云端服务器采用物联网中间件,全部代码如下:
物联网网络中间件
iot-ucy是使用java语言且基于netty, spring boot, redis等开源项目开发来的物联网网络中间件, 支持udp, tcp, 串口(com)通讯(window、linux、mac)等底层协议和http, mqtt, websocket(默认实现和自定义协议头实现), modbus(tcp,rtu),plc,dtu(支持心跳,设备注册功能以及AT协议和自定义协议支持),dtu for modbus tcp,dtu for modbus rtu组件适配 等上层协议. 主打工业物联网底层网络交互、设备管理、数据存储、大数据处理. (其中plc包括西门子S7系列,欧姆龙Fins,罗克韦尔CIP,三菱MC). 数据存储将使用taos数据库以及redis消息队列。
DTU用的是“有人”的积木式边缘网USR-M100型号网关,利用网关中的modbus协议转换功能,根据用户手册配置测试modbus转换功能后用传感器连接,传感器连接时DTU作为服务器。以下为DTU说明书和传感器说明书。
【应用手册】USR-M100 快速应用手册 V1.0.1-济南有人物联网技术有限公司官网
TH10S-B_RS485通讯型温湿度使用手册_V105.pdf - 易维联云盘 (1weilian.com)
由于前端还没有实现,先用postman访问接口,获取到了传感器的实时数据。
下面用于个人记忆,物联网中间件源代码包含三个,
其中第一个是后端服务器代码,用于与前端交互提供给前端接口的
第二个是用于DTU等设备连接
第三个是前端源代码。
后端服务器打jar包的时候,仅需要打第一个源代码里面的
打包好在该路径。
第二个源代码打包会一直报错
这是因为他仅用于与设备的交互,他编译好打好的jar在第一个源代码中引用了,所以后端代码只需运行运行第一个源代码的jar包即可。下图为第一个源代码在idea中的配置。