GNU General Public License v3.0

技术解读

以下内容由 GitRead 中文社区 编辑团队基于项目 README 与官方资料整理, 结合中文开发者的常见使用场景补充技术选型建议。具体以项目官方文档为准。

物联大师(IoT-Master)深度技术分析

项目背景与痛点

物联大师(IoT-Master)是一款开源免费的物联网平台,旨在解决物联网项目中常见的协议不一致、扩展困难、需求多变等问题。对于开发者而言,这意味着可以无缝集成多种通信协议(例如 Modbus 和 PLC),轻松实现数据采集、数据处理、控制逻辑以及系统监控等功能。这样一个平台不仅有利于简化复杂系统的构建过程,还能提高系统的可靠性和灵活性。

面对日益增长的物联网应用场景,尤其是工业物联网,稳定性与可扩展性是关键所在。物联大师通过提供一个统一且易于扩展的框架,使得不同设备与系统能够高效互通,极大地方便了众多开发人员的工作。

核心技术揭秘

技术架构

物联大师背后的架构设计合理且强大,支持多种通信协议集成,并能够处理各种复杂的数据流。其核心组件包括数据采集、处理单元、控制逻辑和监控系统,这几个部分通过高效的数据传输和处理算法紧密结合。

graph TD A[数据源] --> B[协议解析] B --> C[数据处理] C --> D{"逻辑控制"} D -->|"自动控制"| E[执行器] D -->|"异常处理"| F[报警通知] C --> G[日志记录] B --> H[异常检测] H --> F G --> H

组件解析

  1. 数据采集与协议解析:物联大师通过标准的Modbus协议和主流PLC协议,自动解析所接收到的数据流,并转换为统一格式供后续处理。
  2. 数据处理:经过协议解析后的数据会被送入公式计算单元进行必要的函数计算,以满足具体的应用需求。
  3. 逻辑控制:在数据处理完成后,系统通过配置的控制逻辑决定下一步的动作。这是实现自动化和智能控制的核心部分。
  4. 异常检测与报警:通过日志记录及异常检测组件,系统可以有效监控异常情况并触发报警通知,确保系统的稳定性。
  5. 执行与反馈:经控制逻辑决定的各项动作由执行器完成,系统通过实时反馈保证操作和指令的准确执行。

设计模式

需要指出的是,物联大师中的设计模式也相当精妙。其采用的MVC(Model-View-Controller)模式,能够很好地分离展示层、逻辑层和数据层,进而提高了代码的可维护性和可扩展性。此外,通过工厂模式和策略模式,系统可以实现灵活的配置与扩展。

功能亮点与差异

对比于同类竞品,物联大师在扩展性、易用性和稳定性方面拥有显著优势。其支持主流工业通信协议、能够自由定义数据处理逻辑,还有灵活的报警机制,这些均为该平台带来了不俗的竞争优势。特别是它开源的特性,能吸引更多开发者参与贡献,促进平台不断迭代和完善。

应用场景与落地建议

在实际生产环境中,开发人员需要小心数据的安全性及系统的健壮性。基于项目的要求,物联大师适用于各种监控及自动化场景,如制造行业设备监控、智能建筑能源管理和工业过程自动化等。但部署时,应当注意数据传输的加密安全性和系统容错处理能力。

综合评价

总体来说,物联大师能很好地应对当前物联网领域的问题,自带丰富多样的功能模块和强大的协议支持,使得其在诸多开源项目中显得格外突出。当然,也没有任何项目是完美无瑕的,对于支持多种协议的同时管理和实现,日后仍需进一步优化处理速度和流量效率。对于期望快速构建高效物联网系统的开发者而言,物联大师无疑是一个值得推荐的选择。

简要分析

热度分
1311
价值分
587
活跃状态
活跃

语言占比

CSS
Dockerfile
Go
HTML
JavaScript
SCSS
Shell
Vue

Release

贡献者

README

物联大师

Go

物联大师是开源免费的物联网数据中台,区别于传统的物联网平台,物联大师采用Go语言进行编程实现,有以下诸多优点:

  • 单一程序文件,免安装
  • 最低内存只需要12MB
  • 插件机制,支持功能自由扩展
  • 能够支持多种操作系统和处理器架构
  • 支持使用Lua脚本扩展协议
  • 支持使用JS脚本实现边缘计算
  • 支持智能家居应用场景,定时和联动控制
  • 支持WebRTC点对点视频传输

MQTT主题规范

物联大师的插件主要通过MQTT总线相互通讯,

一、连接消息

MQTT主题:

`link/${linker_name}/${link_id}/#`
消息 主题 内容 说明
打开连接 …/open json {…options, remote:“ip”}
关闭连接 …/close none
接收数据 …/up bin 原始二进制
发送数据 …/down bin 原始二进制

备注:

  1. linker_name:连接器名称,比如:serial、can、tcp-client、tcp-server、udp-client、udp-server、udp-group、gnet-server
  2. link_id:连接ID

二、协议插件消息

MQTT主题:

`protocol/${protocol_name}/${linker_name}/${link_id}/#`
消息 主题 内容 说明
打开连接 …/open json {devices:[{product_id,device_id,slave…}]}
关闭连接 …/close none
接收数据 …/up bin 将原始数据定向发送到协议插件
数据轮询 …/poll json {msg_id, }
数据同步 …/sync json {msg_id, device_id}
读取数据 …/read json {msg_id, device_id, points:[]}
写入数据 …/write json {msg_id, device_id, values:{k:v}}
执行操作 …/action json {msg_id, device_id, action, parameters}

备注:

  1. protocol_name:协议名称,推荐与插件名称一致,比如:modbus、dlt645、iec104……
  2. linker_name:连接器名称,目的是方便做数据下发,不用二次转换
  3. 修改设备,实际操作是先删除,再添加
  4. 发送数据使用 link/${linker_name}/${link_id}/down
  5. 插件需要订阅产品消息,同步产品配置
  6. msg_id:消息ID

三、产品消息

MQTT主题:

`product/${product_id}/#`
消息 主题 内容 说明
产品配置 …/config/${config_name} json
产品模型 …/model json

备注:

  1. config_name:配置名称,一般是协议名称,比如:modbus、dlt645、iec104……

四、设备消息

MQTT主题:

`device/${device_id}/#`
消息 主题 内容 说明
上传属性 …/values json {k:v}
读取属性 …/sync json {msg_id}
读取属性响应 …/sync/response json {msg_id, values:{k:v}}
读取属性 …/read json {msg_id, points:[k,]}
读取属性响应 …/read/response json {msg_id, values:{k:v}}
修改属性 …/write json {msg_id, values:{k:v}}
修改属性响应 …/write/response json {msg_id, results:{k:bool}}
上报事件 …/event json {title, message, level,}
执行操作 …/action json {msg_id, action:“reboot”, parameters:{}}
执行操作响应 …/action/response json {msg_id, action:“reboot”, result: {}}

备注:

  1. device_id:设备ID
  2. msg_id:消息ID

五、项目消息

MQTT主题:

`project/${project_id}/${device_id}/#`
消息 主题 内容 说明
上传属性 …/values json {k:v}
上报事件 …/event json {title, message, level,}

备注:

  1. project_id:项目ID

六、空间消息

MQTT主题:

`space/${space_id}/${device_id}/#`
消息 主题 内容 说明
上传属性 …/values json {k:v}
上报事件 …/event json {title, message, level,}

备注:

  1. space_id:空间ID

七、异常消息

消息 主题 内容 说明
推送消息 push/${device_id}/values json {user_id, device_id, event:{}}

协议库支持统计

  • Modbus RTU
  • Modbus TCP
  • Modbus ASCII(使用比较少,暂不做支持)
  • PLC
    • Siemens 西门子 s7 fetchwrite mpi ppi
    • Mitsubishi 三菱 melsec
    • Omron 欧姆龙 fins hostlink
    • AB df1
    • Delta 台达 dvp
    • Keyence 基恩士 melsec
    • Panasonic 松下 melsec newtocol
    • Fuji 富士 spb
    • Fatek 永宏
  • BACnet智能建筑协议
  • KNX智能建筑协议
  • DL/T645-1997、2007 多功能电表通讯规约
  • DL/T698.45-2017 国网电力通讯规约
  • CJ/T188-2004、2018 户用计量仪表数据传输技术条件
  • IEC 101/103/104 电力系统远程控制和监视的通信协议
  • IEC 61850 电力系统自动化领域全球通用协议
  • SL/T427-2021 水资源监测数据传输规约
  • SL/T651-2014 水文监测数据通信规约
  • SL/T812.1-2021 水利监测数据传输规约
  • SZY206-2016 水资源监测数据传输规约

联系方式

南京真格智能科技有限公司 链接

开源协议

GNU GPLv3

补充:产品仅限个人免费使用,商业需求请联系我们

评论

暂无评论