内容介绍
网易天工是一套结合了云、边、端一体化的开源物联网平台,为中小企业提供重点能耗设备管理方案,支持各种场景下绝大部分的物联网用例。它提供各类设备管理、海量设备数据采集、大数据分析与实时设备数据可视化等能力,不仅能为应用开发提供数据来源,也支持通过REST API集成项目逻辑,将命令下发给设备,实现批量控制功能。
特性
网易天工的关键能力:
- 云边协同
- 边缘端本地指令下发,缩短控制链路
- 边缘端数据本地存储,并支持同步云端
- 支持标准的MQTT 3.1、3.1.1协议
- 安全且灵活的设备连接机制
- 支持设备模型功能定义与设备拓扑管理
- 支持大数据实时与离线分析
- 允许用户实时监控和远程控制设备
- 单个或多个设备实时数据可视化
- 公开REST API来为移动应用提供支持
场景应用
基于开源物联网平台的设备连接与数据分析能力,企业与个人可以轻松管理重点能耗设备,为社会提供了丰富的低碳探索实践可能。
- 照明智能控制
照明控制基于照度传感器上报的照度值联合空间区域信息进行分析处理,对控制环境中不同场景的照明系统进行控制,如路灯照明、电梯厅照明、大厅照明等场景,实现照明系统的自动话控制,减少能源消耗和人工成本,使照明系统的使用更加科学。照明控制系统可以实现阈值的动态配置及控制设备的动态添加,操作便捷而不失扩展性。
- 空调联动控制
空调控制基于空调所处空间的温度、二氧化碳以及对应空间人员上坐率进行实时分析,再通过分析结果对空调参数进行相应的调节(如开关、制冷、制热、风数、水阀开关等),使空调的调节更加科学,增强了人体舒适度,使公司对空调的管理更加简洁高效并对能耗起到很好的控制。
- 新风排风自动控制
新风控制系统基于空间温度、二氧化碳以及员工情况进行大数据分析,计算时间周期内各指标数值并参考国际标准控制新风系统的频率,使得空气得以有效的流通,环境得以优化并增加人体舒适度,保证人员的健康同时也避免了能源的浪费和繁琐的员工控制流程。排风系统通过对卫生间的使用情况进行大数据分析,通过分析结果指导排风频率的控制,净化卫生间空气,减少能源浪费。
平台架构
一、概览
端:终端物联网设备,集成了疾风设备SDK或基于设备交互协议开发,支持直连或者网关转发形式。
云:设备接入云端,完成数据采集、流转、存储、分析和实时监控,同时云端提供命令接口实现远程控制设备。
边:边缘端实现设备数据的本地流转、分析及命令的本地下发,缩短数据及控制链路。也支持将边缘端数据同步到云端。
二、云端说明
2.1 设备接入
支持标准的MQTT 3.1、3.1.1协议,提供MQTT broker接入点。
2.1.1 连接安全性
- 基于密钥计算动态连接口令,一次一令
- 基于TLS的加密通信,降低报文被截获的风险
2.1.2 密钥生成机制
- 提供一机一密的密钥机制,降低产品被攻击的风险,安全级别高
- 提供一型一密的密钥机制,连接时动态获取密钥,安全级别普通
2.1.3 密钥获取机制
- 预分配或者导入标识符
- 动态获取
2.2 物模型
物模型由多种服务组成,基于消息总线来交互通信,其主要负责维护设备的拓扑结构、定义设备功能等。
2.2.1 拓扑管理
物联网平台支持设备直连,也支持设备挂载在网关上,作为网关的子设备,由网关中转通信。平台会管理子设备,维护子设备与网关的拓扑关系,对子设备进行监控运维等, 并且支持业务系统直接面向子设备通信,即上层控制端给子设备下发消息时无需感知物理拓扑结构。
2.2.2 功能管理
功能是设备能力的抽象,包括设备采集数据上报的能力,以及设备接收命令执行的能力。设备能力被映射为统一的字段结构,从而标准化设备上下行通信的协议格式。功能主要分为以下两类;
- 上报属性定义属性通常描述的是设备采集的数据,如环境监测设备所读取的当前环境温度等。用户通过定义一组功能字段作为设备的属性,来指定设备上报的数据格式。
- 下行命令定义命令通常描述的是设备可执行的操作,如变频器可被外部调节输出频率。用户可以定义一组功能字段作为命令,并定义响应字段格式,平台会根据这些定义生成统一的REST API并对外暴露。业务方通过API下发命令给设备,并将设备执行结果同步返回,从而完成远程控制。
2.3 大数据分析
大数据分析旨在对物联网设备的上报的数据进行采集、清洗、分析、存储、决策,以结合物联网终端应用改善人们的生活质量,提高产能,减少消耗。其中包含规则引擎、智能控制引擎、离线分析平台等模块。
2.3.1 实时分析
规则引擎
- 统一的元数据管理规则引擎基于模型定义的数据信息,以规则为维度统一管理和维护规则相关的元数据信息,包含规则的启动参数,启动命令,kafka偏移量等信息。规则信息保存在rds,统一维护规则的当前状态和操作人员及更新时间。
- 可视化参数配置前段页面提供简约可靠的操作供客户输入相关配置,客户不需要了解规则引擎执行过程及原理,也可通过清晰明了的可视化页面进行规则的建立及定制处理设备数据。
- 支持多source和多sink规则引擎支持主要支持kafka作为数据源,利用kafka的高吞吐、低延迟的特性能够满足物联网数据的实时分析和设备的实时控制,也可定制扩展到其他数据源如rds,hdfs等。sink目前支持时序数据库influxdb及网易自研时序数据库ntsdb和静态数据库rds,rds支持append模式和update模式。
- 完善的监控系统客户在前端提交规则过后,可以通过可视化页面查看规则的执行状态,可以通过配置告警邮件及时通知客户规则存在异常。客户也可通过监控系统检查设备上报数据是否规范。
2.3.2 离线分析
BI
物联网BI旨在通过对企业物联网数据整合分析,快速准确的提供多维度数据报表并提出决策依据,帮助企业做出明智的经营决策,指导业务的发展。
ML
机器学习旨在对接入平台的海量物联网数据,通过训练、调参、模型选择以及预测进而指导物联网场景业务,如对办公空间工位使用分析制定相应的灯联网控制系统,减少能源的消耗,对环境数据的分析,制定对应的空调控制系统,增加人体舒适度,减少人员管理消耗及能源消耗。
- 训练:在训练阶段,会标记一组质量的已知数据,以便识别各个字段。 标记的数据将馈向配置为进行特定预测的算法。 完成后,该算法会输出一个模型,该模型将找到的模式描述为一组参数。 在验证期间,会标记新数据并用于测试模型。 该算法会根据需要进行调整,并可能需要进行更多训练。 最后,测试阶段使用实际数据,没有任何标记或预先选择的目标。 假设模型的结果准确,则认为它可供使用,可以部署。
- 调参:超参数是控制算法运行方式的配置变量。 因此,超参数通常在模型训练开始之前设置,并且不会在训练过程中以参数的方式进行修改。 超参数优化涉及在训练任务中运行试用版、评估作业完成情况,然后根据需要进行调整。 此过程会生成多个模型,每个模型都使用不同超参数系列进行训练。
- 模型选择:训练和参数优化的过程会生成大量候选模型。 这些差异可能有很多不同,包括准备数据所需的工作量、模型的灵活性、处理时间量,当然还有其结果的准确性。 根据需求和约束选择最佳训练模型称为模型 selection ,但这与训练前预先规划有关,就像选择最适合的模型一样。
- 预测:预测是在给定一些新输入数据后,基于训练的机器学习模型生成值的过程。 创建的值或分数可以表示未来值的预测,但它们也可能表示可能的类别或结果。
2.4 API网关
平台通过API网关对外提供符合 openApi v3规范的接口,包括并不限于数据接口、命令接口等。
网关具有以下功能特性:
- 权限认证对请求进行统一校验认证,支持自定义扩展,如黑名单、基于RBAC的权限分配等。
- 限流熔断通过限流和熔断降级,保证不因单个API接口服务出现的异常或性能问题而影响整体微服务的运行。
- 监控审计记录请求的access日志、error日志、审计日志等,配合平台告警规则,完成全链路的监控。
三、边缘端说明
为解决设备连接云端网络不稳定、控制链路过长的问题,引入边缘计算。将云端的部分功能精简,下发到边缘端。
3.1 设备接入
使用轻量的Mosquitto作为MQTT broker。
对于未支持MQTT协议的设备,使用EdgeX提供的设备服务进行协议转换,完成终端设备与边缘端的连接。
3.2 规则引擎
基于轻量的规则引擎eKuiper或者轻量的函数计算openFaas,从MQTT broker中消费数据,完成本地计算,进行数据流转或者指令下发。
3.2.1 REST API接口
- 配置管理:规则引擎提供配置管理接口,如定义数据格式,配置MQTT连接信息以及查询的功能
- 规则管理:提供对规则的查询、编辑、新增以及删除接口
- 插件管理:提供对自定义插件的部署和查询以及删除的接口
3.2.2 Sql
- 内置函数:
规则引擎支持常见函数
avg,组中的平均值。空值不参与计算。
sum,组中的平均值。空值不参与计算。
count,组中的项目数。空值不参与计算。
min,组中的最小值。空值不参与计算。
max,组中的最大值。空值不参与计算。
用户可以自定义函数插件,根据业务扩展相关函数。
- 窗口:窗口的作用旨在以时间窗口把数据划分为不同的组,用户可以计算在一段时间的数据。目前窗口支持滚动窗口和滑动窗口。
滚动窗口:滚动窗口函数用于将数据流分割成不同的时间段,并对其执行函数,滚动窗口的关键区别在于它们重复不重叠,并且一个事件不能属于多个翻滚窗口。
滑动窗口:滑动窗口功能会在时间上向前滑动一段固定的时间,因此事件可以属于多个跳跃窗口结果集。 要使滚动窗口与滑动窗口相同,可以将滑动时间窗口大小指定为与计算窗口大小相同。
- 远程rpc访问:支持以自定义sql udf的方式开发访问远程接口的函数,集成控制接口下发控制设备。
3.3 存储
边缘存储使用时序数据库influx,由于开源只有单机版由此在其之上构建了代理层,支持高可用。
3.3.1 多副本配置
副本以influxdb实例为单位,数据通过代理层访问,可以配置同时写入多个实例。
3.3.2 查询负载均衡
通过代理查询数据的时候,会随机在代理上切换查询的实例,保证多个节点能够接收到均衡的访问,如果有节点挂掉,会自动切换到存活的节点上,不影响业务的正常使用,用户也无感知。
3.3.3 数据恢复
influxdb节点挂掉后,代理会把写入失败的数据写入压缩文件,并记录数据偏移量,挂掉的节点重新启动后,会自动读取写入失败的数据,保证数据的一致性。
3.4 本地控制
使用EdgeX提供的控制服务接口,完成指令的本地下发。
3.5 数据同步
通过数据导出服务,将MQTT broker中的元数据,同步到云端,支持多种汇入点,完成数据持久化,以支持进一步的大数据分析。
四、开源说明
目前已开源部分功能模块,支持设备数据上报,并通过规则引擎解析到自定义数据库。
感谢研发的辛勤劳作?撒花