# iot **Repository Path**: keras/iot ## Basic Information - **Project Name**: iot - **Description**: iot是基于netty, spring boot, redis等项目实现的物联网中间件, 已支持tcp、udp、mqtt、modbus、dtu适配、dtu+modbus tcp 适配,plc (西门子, 欧姆龙)等常用物联网协议,并且支持快速接入redis、kafka、taos(TDengine)等数据库或消息队列[群:552167793] - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: http://www.iteaj.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 787 - **Created**: 2022-03-23 - **Last Updated**: 2022-04-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### iot网络中间件(v2.4.1) 使用java语言且基于netty, spring boot, redis等开源项目开发来的物联网网络中间件, 支持udp, tcp通讯等底层协议和http, mqtt, modbus(tcp,rtu),plc,dtu(支持心跳,设备注册功能以及AT协议和自定义协议支持),dtu for modbus tcp,dtu for modbus rtu组件适配 等上层协议. 主打工业物联网底层网络交互、设备管理、数据存储、大数据处理. (其中plc包括西门子S7系列,欧姆龙Fins,罗克韦尔CIP,三菱MC). 数据存储将使用taos数据库以及redis消息队列 #### 主要特性 - 支持服务端启动监听多个端口, 统一所有协议可使用的api接口 - 包含一套代理客户端通信协议,支持调用:客户端 -> 服务端 -> 设备 -> 服务端 -> 客户端 - 支持设备协议对象和其业务对象进行分离(支持默认业务处理器【spring单例注入】和自定义业务处理器) - 支持同步和异步调用设备, 支持应用程序代理客户端和设备服务端和设备三端之间的同步和异步调用 - 服务端支持设备上线/下线/异常的事件通知, 支持自定义心跳事件, 客户端支持断线重连 - 丰富的日志打印功能,包括设备上线,下线提示, 一个协议的生命周期(请求或者请求+响应)等 - 支持请求时如果连接断线会自动重连(同步等待成功后发送) - 支持客户端发送请求时如果客户端不存在将自动创建客户端(同步等待成功后发送) #### 已/待开发的协议 1. tcp(固定长度解码, 长度字段解码, 换行符解码,自定义分隔符解码,自定义字节到报文解码)[已完成/v2.0.0] 2. mqtt协议客户端,支持连接标准mqtt broker服务器[已完成/v2.1.0] 3. 提供modbus支持[已完成/v2.2.0] - 支持modbus tcp、rtu [已完成/v2.4.0] - 支持modbus tcp/rtu for dtu [已完成/v2.4.0] - 支持modbus tcp客户端 [已完成/v2.4.0] - 支持dtu心跳、设备注册、AT指令、以及自定义指令 4. 新增plc(西门子、欧姆龙)支持(已完成/v2.4.0) 5. taos数据库适配(已完成/v2.4.0) - 支持单条写入、批量写入 #### 并发测试 1. [测试包下载地址](https://gitee.com/iteaj/iot/attach_files/929239/download) 2. 使用方法:测试包是一个springboot应用,需要安装jdk环境,下载下来后在控制台输入运行命令:`java -jar -Diot.num=5000 iot-test-2.3.0.jar`。 其中iot.num参数用来指定要创建的连接数。此测试应用是用iot-test打包的源码请看iot-test模块 3. 测试方式:首先会快速创建iot.num指定的连接数量, 然后会定时(3秒)从这些数量的连接中随机取出一台并且发送报文。其中包含有一个获取服务器实时配置数据的连接,用来实时报告测试服务器的运行状态。整个测试服务端会开启两个监听端口(15800, 15811) 4. 测试环境的配置:2核8G centos8.0 带宽2M 5. 服务启动前资源详情:可用内存:5634MB 启动后(客户端连接还没创建):5418MB #### 模拟工具 1. [QtSwissArmyKnife](https://gitee.com/qsaker/QtSwissArmyKnife) 支持udp、tcp、modbus、websocket、串口等调试 2. [IotClient](https://github.com/zhaopeiym/IoTClient) 支持plc(西门子,欧姆龙,三菱),modbus,串口,mqtt,tcp, udp等模拟和调试 ### 使用教程 首先创建一个springboot应用 ``` // 注springboot 2.6以上的需要添加一下配置 spring.main.allow-circular-references=true ``` ### 更新日志 #### v2.4.2 1. 新增客户端事件的发布和监听 2. 新增事件异步监听机制 3. 修改发布的事件中包含对应的组件 4. 新增读取欧姆龙plc的TIM区 5. 修改其他bug #### v2.4.1 1. 完成和测试通过modbus tcp客户端协议实现(2021/9/11) 2. 完成和测试通过mqtt协议的客户端实现(2021/9/7) 3. 完成西门子plc的开发和模拟调试(2021/12/17) 4. 完成欧姆龙plc的开发和模拟调试(2021/12/28) 5. 重新构建modbus tcp client以及新增modbus tcp for dtu功能【v2.4.0+】(2022/4/5) 6. 重新构建modbus以及新增modbus rtu for dtu功能并新增DTU AT协议和自定义协议支持【v2.4.0+】(2022/4/5)