IoT Master 物联大师
https://github.com/zgwit/iot-master
物联大师是真格智能实验室推出的一款通用的数据采集和自动控制系统,
集成了Modbus和一些主流PLC的通讯协议,适用于大部分物联网或工业互联网数据应用场景。
该产品提供数据采集,历史存储,自动控制等功能,可以从一定程度上取代PLC或工控机或MCU。
平台提供丰富的元件库和在线模板,可以直接用于大部分物联网项目后端,快速,方便,高效。
作者曾经接触多个物联网实际项目的后端,需求大同小异, 因为团队不同,实现方式就千奇百怪了,大家其实都在重复地造轮子。
痛定思痛,于是决定提取共同的部分,做成了通用的物联大师, 并且通过开源的方式免费分享给小伙伴儿们使用。
给谁用?
- 物联网企业,比如:智慧小区、智慧农业、智慧养殖、智慧厂房、智慧仓库等
- 设备制造商,比如:锅炉、液压、锻造、成型、清洗、机床(暂不支持CNC)等
- 政府单位,比如:智慧交通、环境监控、水利设施、灾害监测、物联网小镇等
- 其他
怎么用?
- 作为物联网后台,创建工程,采集数据,自动控制
- 当作中台,为其他系统或应用提供数据
- 直接当作APP或小程序后台(APP和小程序DEMO有需要请联系我们)
- 在项目现场做数据采集和自动控制(此种方式不推荐,建议使用PLC或MCU实现高速可靠的控制,另外物联大师的嵌入式版本正在规划当中)
典型的应用案例
- 项目部署在云服务器,使用数据透传连接设备(支持大部分DTU和移动通讯模块)
- 使用485总线连接标准的Modbus设备,比如:传感器、继电器(开关)
- 配置定时采集,合法检查
- 创建工程,配置定时任务,自动控制,异常告警等
- 开放接口对接APP或小程序,实现远程操控,定时,自动控制,查看历史曲线等
- 使用大数据屏展示实时数据
如果以上正是您所需的,请聊聊合作(联系方式在底部)
项目架构图
【待补充】
技术栈
项目最初使用Golang进行开发,但是实测效果并不明显,内存占用偏高,故而切换成更熟悉的Node.js。
Node底层使用的是高效的异步IO库libuv,普通桌面机单核实测5w连接无压力,云端就看带宽了。
PS:Golang的协程模型在海量连接时并不理想,gnet库是个好方案,
但是不支持Windows的IOCP网络模型,而且实测效果一般,曾经出现过崩溃的情况,
所以弃用,后续考虑使用Rust或C++实现更高性能的版本。
模块 | 选型 | 说明 |
---|---|---|
后端框架 | Koa、joi-router | Joi用于数据检验和在线swagger文档 |
前端框架 | Angular和ZORRO | Angular集成度高,学习成本虽高,但使用方便 |
关系数据库 | MongoDB | 和Node真是天生一对,不解释 |
内存数据库 | Redis | |
历史数据库 | InfluxDB2.0 | 2.0比较灵活,后台也很强大 |
开发目标
- 数据通道
- TCP通道,以及注册包和心跳包支持
- UDP通道,以及注册包和心跳包支持
- 串口通道
- 远程配置DTU(通过网络AT或config,用来修改串口参数、服务器地址等)
- 协议支持
- Modbus RTU、TCP(ASCII不常用,暂无必要)(推荐RTU转TCP的网关,可以加速远程控制)
- Omron PLC(hostlink, fins)
- Mitsubishi PLC (melsec)
- Siemens PLC (S7)
- 设备 & 采集 & 控制
- 定时轮询
- 滤波(均值,最大,最小等)
- 变量映射
- 控制指令
- 定时任务
- 自动控制
- 存入历史数据库
- 报警器
- 插件
- MongoDB
- Redis
- InfluxDB 2.0(新版本比较灵活,操作方便,后台可以直接检索数据)
- 语音通知(目前使用腾讯云,阿里云暂停服务)
- 短信通知
- 微信公众号和小程序
- 开放接口
- 其他功能
- 虚拟串口
- 数据透传(方便远程调试)
- 监听异常(使用WebSocket)
其他
- 项目的早期和支线版本已经在实际的养猪物联网和养鱼物联网项目中使用,效果良好
- 项目主线还在待续开发中,有兴趣的小伙伴可以加入进来
- 开源版本并不适合高频数据采集(虽然支持),如有需求请移步高性能版:iot-master-pro
- 开源版本限制单机单核,有5W+连接需求请使用商业版(支持多机多核)
联系方式
- 邮箱:jason@zgwit.com
- 手机:15161515197(微信同号)