开源物联网平台建设、参考解决方案

一、什么是物联网平台

物联网平台是一个集成了设备管理、数据安全通信和消息订阅等能力的一体化平台。

向下支持连接海量设备,采集设备数据上云;向上提供云端API,服务端可通过调用云端API将指令下发至设备端,实现远程控制。

物联网平台与设备、服务端、客户端的消息通信流程如下。

企业基于物联网平台的业务链路

使用物联网平台实现设备完整的通信链接,需要您完成设备端的设备开发、云端服务器的开发(云端SDK的配置)、数据库的创建、手机App的开发。在设备和服务器开发中,您需完成设备消息的定义和处理逻辑。

物联网应用是企业和开发者进行设备管理、告警&故障监测、业务监控、数据分析的重要工具。

物联网平台屏蔽了设备接入的复杂性和协议的差异性,解耦应用与设备,为上层应用提供统一格式的数据,简化终端厂商开发的同时,也让应用提供商聚焦于自身的业务开发。基于华为物联网平台的应用开发方案如下。

1.png

应用服务器作为应用侧的业务处理核心,分析物联网平台推送的设备消息,并根据分析结果与应用客户端进行交互,完成业务处理。

1.1 物联网应用基础服务平台应具备的能力

(1)建设物联网应用基础服务平台(M2M平台 ) ,实现软件系统开发与部署。

(2)实现行业终端的适配接入,对采集到的数据实现报警、转发、存数据库等操作。

(3)提供开放的平台和数据结构,为各物联网应用的扩展提供数据。

(4)提供详尽的历史记录,及灵活的报表定制工具,易于生成任意格式的报表。

(5)提供易于扩展的、分布式平台框架及冗余运行模式,支持大规模、大数据量的应用。

(6)提供强大的服务支持能力及通用的 M2M业务生成框架,为物联网应用开发提供可视化的集成开发工具,提高二次开发效率。

(7)提供强大的用户及权限管理,保证系统运行的安全性。

(8)实现对现有部分行业终端的接入调试、数据处理及监控管理。

M2M:M2M(MachinetoMachine),是通过移动通讯对设备进行有效控制,从而将商务的边界大幅度扩展或创造出较传统方式更高效率的经营方式或创造出完全不同于传统方式的全新服务。M2M是将数据从一台终端传送到另一台终端,也就是机器与机器之间的信息交流与传递,透过网络及机器设备通讯的传递与链接达到信息共享的概念。

M2M的构成

M2M涉及到5个重要的技术部分:机器、M2M硬件、通信网络、中间件、应用。

M2M是一种以机器终端智能交互为核心的、网络化的应用与服务。

1.2 物联网平台定位要求

M2M平台提供物联网各行业应用对接入层、通讯层以及行业应用基础层的通用解决方案,基于 M2M平台各行业应用实现自己的业务逻辑处理。

1.2.1 提供统一的终端接入平台

通过 M2M平台,为所有物联网应用终端提供的统一的数据接入方案。

数据接入支持多种通讯设备、通讯协议,对接收到的数据进行辨识、分发,以及报警分析等预处理。

1.2.2 提供统一的应用基础运行平台

物联网应用软件与传统的应用软件相比,有底层终端数量多、上层行业应用复杂的特点,各种行业终端数量规模往往能达到百万甚至更高级别,要求 M2M平台能维护大量共享数据和控制数据,提供物联网应用的统一运行环境,从概念、技术、方法与机制等多个方面无缝集成数据的实时处理与历史记录,实现数据的高时效调度与处理,并保证数据的一致性。

1.2.3 提供统一的安全认证

以用户信息、系统权限为核心,集成各业务系统的认证信息,提供一个高度集成且统一的认证平台。

1.2.4 提供统一的数据交换平台

M2M平台提供统一的“数据交换平台”,通过中间件作为粘合剂连接各种业务相关的异构系统、应用以及数据源,满足重要系统之间无缝共享和交换数据的需要。

1.2.5 提供统一的门户支撑平台

提供一个灵活、规范的信息组织管理平台和全网范围的网络协作环境,实现集成的信息采集、内容管理、信息搜索,能够直接组织各类共享信息和内部业务基础信息,面向不同使用对象,通过门户技术实现个性化服务,实现信息整合应用。

1.2.6 提供多种业务基础构件

为各行业应用业务提供开发辅助工具、快速定制、地理信息服务、权限管理、数据展现及挖掘等多种平台支撑服务。通过这些基础构件,实现系统的松散耦合,提高系统的灵活性和可扩展性,保障快速开发、降低运营维护成本。

1.3 物联网平台功能结构

1.3.1 数据通讯模块

包括数据采集、数据处理、终端控制等功能。所有的终端设备发到平台的数据都由数据通讯模块接收并预处理,是平台与终端设备交互的桥梁。

数据通讯模块支持各种终端设备的通讯协议及动态配置加载、卸载终端设备到系统。

所有的终端设备发到平台的数据都由数据通讯模块接收并预处理,数据通讯模块完成实时数据采集、数据处理、终端控制等业务目标,实现数据接入适配、统一数据结构、数据处理等功能。

1.3.2 报警处理模块

报警主要分成两种情况:一种是终端设备直接发上来的报警事件, 另一种是根据用户需要配置到系统中的报警规则产生的报警, 报警规则是根据需求预先设定好的。

当终端传上来的实时数据触发报警规则时, 应该实时产生报警,并在用户界面给予显示, 报警的延时时间应小于 5 秒。

报警处理模块实现对测量值的范围、变化速度的预警,包括限值报警、变化率报警、偏差报警、异常报警等,以及通过对测量值进行数学运算 ( 报警公式 ) ,然后对运算结果进行报警检查而产生。

支持自动记录报警信息、报警确认信息、报警恢复 ( 报警消除 ) 等信息,按照重要程度可分为多个优先级,如低级、高级、紧急。

报警发生时系统可以通过弹出报警窗口、发出声响、发送短信、电子邮件或打印报警信息等多种方式通知用户,用户可以自由设定报警通知方式。

报警处理模块支持在终端设备侧直接产生的、通过网络上报的报警,并根据用户预设的联动策略方式进行相应操作。

支持报警确认和复位,用不同颜色标示报警状态,包括:

  • 未确认、未复位;

  • 已确认、未复位的报警;

  • 未确认、已复位的报警;

  • 已确认、已复位的报警。

用户可通过 B/S 或 C/S 两种客户端根据预定权限设置进行报警信息的查询、操作、跟踪。

M2M平台会记录所有报警信息,以备用户查询、生成报表。

1.3.3 策略联动

当系统产生了报警或其他事件时,可以在此模块中设置需要控制联动的设备或人员。

不同的设备通过 M2M平台粘合,形成一个有机的整体,提供自动、及时、准确的服务。

联动策略模块支持的主要功能要求包括

(1)可配置策略模块启动时要执行的脚本;

(2)可配置可循环执行的脚本,循环时间可以设定;

(3)可配置策略模块停止时要执行的脚本;

(4)可配置日程表设置的日程所要执行的脚本;

(5)可配置当产生报警事件时要执行的脚本;

(6)可配置某项的值改变时所要执行的脚本。当脚本设置的监控项发生改变时,系统自动刷新。

联动策略模块至少支撑以下策略模式:

(1)启动执行:当策略模块启动的时候执行,仅一次。

(2)循环执行:按设定的时间间隔执行。

(3)退出执行:当策略模块退出的时候执行,仅一次。

(4)周期执行:当日程表被触发时执行。

(5)事件执行:当产生报警事件时执行。

(6)值改变执行:根据脚本中包含的项ID,判断当该项的值发生改变时执行。

1.3.4 脚本服务

实现动态灵活的设置系统操作或向终端设备发送控制指令。脚本语法需至少支持JavaScript 语法。在脚本中还应该提供各种系统变量,以满足各种脚本需求。

1.3.5 日程管理

日程管理为系统提供各种有规律的定时操作,提高系统的自动化管理水平。

1.3.6 数据备份

数据定时压缩备份降低硬盘的使用容量,并可在需要时对备份的数据进行无损还原。

1.3.7 双机备份

提供双机热备功能,当主站系统出现问题时,从站系统可以接管工作,最大程度保证平台的稳定运行。

1.3.8 权限管理

对系统的权限资源、用户、角色、角色组进行管理,除了系统管理员外不同的区域有自己的管理员,可以对所在区域以及下属区域进行权限、用户和角色的划分。

1.3.9 日志管理

具有完善的日志功能,包括操作日志、系统运行日志,能够记录系统异常情况及其他安全事件。

1.3.10 报表功能

支持两种类别平台报表:一种是专门针对各业务的单独的报表系统, 只能由业务的所属合作伙伴或管理员查询, 关注的是本业务的运营情况;

另一种是把所有业务统一抽取的平台运营分析报表,此种报表对平台所有业务进行运营分析, 可以使管理者对平台的运营状况有总体的认识和了解,为决策提供数据依据。

1.4 平台接口设计

1.4.1 与行业终端的接口

M2M平台与行业终端接口应尽量统一,有助于标准体系的形成。如果已有标准的行业,应支持现有标准。

支持的协议应包括:工业控制领域中的 OPC、MODBUS、RS232/485 协议,环境保护行业国标 HJ/T212-2005 ,中国移动 M2M终端 WMMP协议等。

M2M平台应实现统一管理终端,实现终端登录会话,实现终端的数据认证与加密。

行业应用平台可通过 M2M平台对终端进行管理与反控,下发指令并反馈执行结果。

1.4.2 与行业应用的接口

M2M平台作为各物联网行业应用的基础服务平台,应具有完备的接口与各应用交换数据,应提供规范化的接口规范,实现 M2M平台的对外数据交互标准、通用接口,接口形式包括 ESB、RMI接口、 WebService 接口、数据库接口等。

1.4.3 与其他系统的接口

M2M平台预留与其他系统的信息接口,如上报本系统终端告警数据、行业统计数据等,接口形式包括 ESB、RMI 接口、 WebService 接口、数据库接口等。

二、物联网+大数据

物联网大数据平台所需具备的能力分析。

1.1 高效分布式

必须是高效的分布式系统。物联网产生的数据量巨大,仅中国而言,就有5亿多台智能电表,每台电表每隔15分钟采集一次数据,一天全国智能电表就会产生500多亿条记录。这么大的数据量,任何一台服务器都无能力处理,因此处理系统必须是分布式的,水平扩展的。为降低成本,一个节点的处理性能必须是高效的,需要支持数据的快速写入和快速查询。

1.2 实时处理

必须是实时处理的系统。互联网大数据处理,大家所熟悉的场景是用户画像、推荐系统、舆情分析等等,这些场景并不需要什么实时性,批处理即可。但是对于物联网场景,需要基于采集的数据做实时预警、决策,延时要控制在秒级以内。如果计算没有实时性,物联网的商业价值就大打折扣。

1.3 高可靠性

需要运营商级别的高可靠服务。物联网系统对接的往往是生产、经营系统,如果数据处理系统宕机,直接导致停产,产生经济有损失、导致对终端消费者的服务无法正常提供。比如智能电表,如果系统出问题,直接导致的是千家万户无法正常用电。因此物联网大数据系统必须是高可靠的,必须支持数据实时备份,必须支持异地容灾,必须支持软件、硬件在线升级,必须支持在线IDC机房迁移,否则服务一定有被中断的可能。

1.4 高效缓存

需要高效的缓存功能。绝大部分场景,都需要能快速获取设备当前状态或其他信息,用以报警、大屏展示或其他。系统需要提供一高效机制,让用户可以获取全部、或符合过滤条件的部分设备的最新状态。

1.5 实时流式计算

需要实时流式计算。各种实时预警或预测已经不是简单的基于某一个阈值进行,而是需要通过将一个或多个设备产生的数据流进行实时聚合计算,不只是基于一个时间点、而是基于一个时间窗口进行计算。不仅如此,计算的需求也相当复杂,因场景而异,应容许用户自定义函数进行计算。

1.6 数据订阅

需要支持数据订阅。与通用大数据平台比较一致,同一组数据往往有很多应用都需要,因此系统应该提供订阅功能,只要有新的数据更新,就应该实时提醒应用。而且这个订阅也应该是个性化的,容许应用设置过滤条件,比如只订阅某个物理量五分钟的平均值。

1.7 和历史数据处理合二为一

实时数据和历史数据的处理要合二为一。实时数据在缓存里,历史数据在持久化存储介质里,而且可能依据时长,保留在不同存储介质里。系统应该隐藏背后的存储,给用户和应用呈现的是同一个接口和界面。无论是访问新采集的数据还是十年前的老数据,除输入的时间参数不同之外,其余应该是一样的。

1.8 数据持续稳定写入

需要保证数据能持续稳定写入。对于物联网系统,数据流量往往是平稳的,因此数据写入所需要的资源往往是可以估算的。但是变化的是查询、分析,特别是即席查询,有可能耗费很大的系统资源,不可控。因此系统必须保证分配足够的资源以确保数据能够写入系统而不被丢失。准确的说,系统必须是一个写优先系统。

1.9 数据多维度分析

需要对数据支持灵活的多维度分析。对于联网设备产生的数据,需要进行各种维度的统计分析,比如从设备所处的地域进行分析,从设备的型号、供应商进行分析,从设备所使用的人员进行分析等等。而且这些维度的分析是无法事先想好的,而是在实际运营过程中,根据业务发展的需求定下来的。因此物联网大数据系统需要一个灵活的机制增加某个维度的分析。

1.10 支持数据计算

需要支持数据降频、插值、特殊函数计算等操作。原始数据的采集可能频次挺高,但具体分析时,往往不需要对原始收据进行,而是数据降频之后。系统需要提供高效的数据降频操作。设备是很难同步的,不同设备采集数据的时间点是很难对齐的,因此分析一个特定时间点的值,往往需要插值才能解决,系统需要提供线性插值、设置固定值等多种插值策略才行。工业互联网里,除通用的统计操作之外,往往还需要支持一些特殊函数,比如时间加权平均。

1.11 即席分析和查询

需要支持即席分析和查询。为提高大数据分析师的工作效率,系统应该提供一命令行工具或容许用户通过其他工具,执行SQL查询,而不是非要通过编程接口。查询分析的结果可以很方便的导出,再制作成各种图标。

1.12 灵活数据管理策略

需要提供灵活的数据管理策略。一个大的系统,采集的数据种类繁多,而且除采集的原始数据外,还有大量的衍生数据。这些数据各自有不同的特点,有的采集频次高,有的要求保留时间长,有的需要多个副本以保证更高的安全性,有的需要能快速访问。因此物联网大数据平台必须提供多种策略,让用户可以根据特点进行选择和配置,而且各种策略并存。

1.13 开放的系统

必须是开放的。系统需要支持业界流行的标准SQL,提供各种语言开发接口,包括C/C++,Java,Go,Python,RESTful等等,也需要支持Spark,R,Matlab等等,方便集成各种机器学习、人工智能算法或其他应用,让大数据处理平台能够不断扩展,而不是成为一个孤岛。

1.14 支持异构环境

系统必须支持异构环境。大数据平台的搭建是一个长期的工作,每个批次采购的服务器和存储设备都会不一样,系统必须支持各种档次、各种不同配置的服务器和存储设备并存。

1.15 支持边云协同

需要支持边云协同。要有一套灵活的机制将边缘计算节点的数据上传到云端,根据具体需要,可以将原始数据,或加工计算后的数据,或仅仅符合过滤条件的数据同步到云端,而且随时可以取消,更改策略。

1.16 单一后台管理

需要单一的后台管理系统。便于查看系统运行状态、管理集群、管理用户、管理各种系统资源等,而且系统能够与第三方IT运维监测平台无缝集成,便于管理。

1.17 私有化部署

便于私有化部署。因为很多企业出于安全以及各种因素的考虑,希望采用私有化部署。而传统的企业往往没有很强的IT运维团队,因此在安装、部署上需要做到简单、快捷,可维护性强。

三、物联网开源项目

3.1 Thingsboard

一个开源的用于数据收集,处理,可视化和设备管理的开源物联网平台。
它通过行业标准的物联网协议(MQTT,CoAP和HTTP)实现设备连接,并支持云和本地部署。

ThingsBoard结合了可伸缩性,容错性和性能,因此您永远不会丢失数据。

3.1.1 ThingsBoard特性

1. 遥测数据收集

以可靠的方式收集和存储遥测数据,以应对网络和硬件故障。使用可自定义的Web仪表板或服务器端API访问收集的数据。

2. 多租户

开箱即用地支持多租户安装。单个租户可能具有多个租户管理员以及数百万个设备和客户。

3. 数据可视化

提供30多个可立即配置的小部件,并能够使用内置编辑器创建自己的小部件。内置线图,数字和模拟仪表,地图等等。

4. 横向可扩展性

随着以群集模式添加新的Thingsboard服务器,受支持的服务器端请求和设备的数量呈线性增加。无停机时间,服务器重启或应用程序错误。

5. 物联网规则引擎

根据实体属性或消息内容,使用灵活的规则链处理传入的设备数据。使用自定义逻辑将数据转发到外部系统或触发警报。在警报上配置复杂的通知链。增强服务器端功能或使用高度可定制的规则来操作设备。使用拖放规则链设计器定义您的应用程序逻辑。

6. 容错

所有Thingsboard服务器都是相同的。没有主人工人或热备用人员。自动检测到节点故障。可以在不停机的情况下更换发生故障的节点。使用可靠的NoSQL数据库复制持久数据。

7. 设备管理

提供注册和管理设备的功能。允许监视客户端和供应服务器端设备属性。为服务器端应用程序提供API,以将RPC命令发送到设备,反之亦然。

8. 安全

支持MQTT和HTTP协议的传输加密。支持设备认证和设备凭证管理。

9. 资产管理

提供注册和管理资产的功能。允许供应服务器端资产属性 并监视相关警报。使用关系建立实体层次的能力。

10. 定制与整合

使用可自定义的规则链,小部件和传输实现扩展默认平台功能。除了MQTT,CoAP和HTTP支持之外,ThingsBoard用户还可以使用自己的传输实现或自定义现有协议的行为。

11. 警报管理

提供了创建和管理能力的报警与你的实体:设备,资产,客户等可以实时报警监控和报警传播到相关实体的层次结构。在设备断开连接或不活动事件时发出警报。

12. 100%开源

ThingsBoard已获得Apache许可2.0的许可,因此您可以在商业产品中免费使用它。您甚至可以将其托管为SaaS或PaaS解决方案。

13. 微服务或单片

支持针对入门环境或小型环境的整体部署。提供升级到微服务的功能,以实现高可用性和水平可伸缩性。

SQL,NoSQL和混合数据库

支持各种数据库选项以及选择存储主要实体和遥测数据的位置的功能

3.1.2 系列文章

3.2 Node-RED

由IBM新兴技术服务团队构建的可视化物联网编排工具,可基于浏览器的流程编辑器连接设备、服务器和 API 应用。

他是一个可视化的项目,后台使用的是NodeJS语言,提供了Web页面,来编写Flow,
这是该项目提供的页面。
在这里插入图片描述

这里的Flow你可以理解为一个最小可用的服务。创建Flow的主要方式是通过在浏览器拖拽完成的。所有所见即所得,基于浏览器的流程编辑,所以说他是一个可视化的编排工具。此外它还支持,http,mqtt,websocket,tcp,utp,等协议。支持所有主流的链接设备和服务器。此外他还是一个可以无限扩展的平台,目前平台有超过225,000个模块,你可以轻松地在扩展面板中添加并使用他们。

总结一下Node-RED工具的特点

  • 可视化,直接在浏览器拖拽创建Flow
  • 平台可使用模块丰富
  • 支持http,mqtt,websocket,tcp,utp协议
  • 使用Nodejs事件驱动的非阻塞模型,非常适合在低成本硬件运行
  • 完全开源,可以自主开发

3.2.1 系列文章

Gitee地址:https://gitee.com/jetlinks/jetlinks-community

JetLinks 基于Java8,Spring Boot 2.x,WebFlux,Netty,Vert.x,Reactor等开发, 是一个开箱即用,可二次开发的企业级物联网基础平台。平台实现了物联网相关的众多基础功能, 能帮助你快速建立物联网相关业务系统。

3.3.1 核心特性

开放源代码

全部源代码开放,可自由二次开发.前后端分离,接口全开放.

统一设备接入,海量设备管理

TCP/UDP/MQTT/HTTP、TLS/DTLS、不同厂商、不同设备、不同报文、统一接入,统一管理.

强大的规则引擎

强大的可视化规则设计器.以及多种规则模型支持(设备告警,场景联动等). rule-engine.png

可视化大屏

可视化大屏设计器,灵活配置大屏展示。 big-screen.png

多租户

灵活的非侵入多租户数据权限控制。可实现不同租户,不同用户共享数据。

在线演示地址: http://demo.jetlinks.cn

(opens new window) 用户名:test 密码: test123456.

3.3.2 架构

platform

3.4 iot-dc3

DC3是基于Spring Cloud的开源可分布式物联网(IOT)平台,用于快速开发、部署物联设备接入项目,是一整套物联系统解决方案。

Gitee地址:https://gitee.com/pnoker/iot-dc3

3.4.1 DC3 架构设计

iot-dc3-architecture

DC3模块拆分,四层架构:

  • 驱动层:用于提供标准或者私有协议连接物理设备的 SDK,负责南向设备的数据采集和指令控制,基于 SDK 可实现驱动的快速开发;

  • 数据层:负责设备数据的收集和入库,并提供数据管理接口服务;

  • 管理层:用于提供微服务注册中心、设备指令接口、设备注册与关联配对、数据管理中心,是所有微服务交互的核心部分,负责各类配置数据的管理,并对外提供接口服务;

  • 应用层(开发中...):用于提供数据开放、任务调度、报警与消息通知、日志管理等,具备对接第三方平台能力。

DC3功能设计,定位目标:

  • 可伸缩:水平可伸缩的平台,构建使用领先的 Spring Cloud 开源技术;
  • 容错:没有单点故障弱,集群中的每个节点是相同的;
  • 健壮和高效:单一服务器节点可以处理甚至数百成千上万的设备根据用例;
  • 可定制:添加新的设备协议,并注册到服务中心;
  • 跨平台:使用 Java 环境可异地、分布式多平台部署;
  • 自主可控:私有云、公有云、边缘部署;
  • 完善性:设备快速接入、注册、权限校验;
  • 安全(开发中...):数据加密传输(mqtt 驱动已实现数据加密传输);
  • 多租户:命名空间,多租户化;
  • 云原生:Kubernetes;
  • 容器化:Docker。

3.4.2 DC3技术实现

DC3 平台是基于 Spring Cloud 架构开发的,是一系列松耦合、开源的微服务集合。 微服务集合由4个微服务层和两个增强的基础系统服务组成,提供从物理域数据采集到信息域数据处理等一系列的服务。

iot-dc3-architecture

3.5 IOTGate

Gitee:https://gitee.com/willbeahero/IOTGate

官网:www.uiotp.com

演示账号:用户名 guest001 密码 123456

浩欣物联平台采用分布式微服务架构、分布式消息队列、分布式缓存、时序数据存储、流计算等技术实现的支持物联设备遥测数据采集、告警数据预警等功能的泛行业IOT物联网平台,可作为物联网上层应用的物联数据中台, 负责与各种不同规约类型的物联设备直接交互,并为上层应用提供统一的接口和响应数据格式能极大降低物联网研发的成本提高物联网研发效率。浩欣物联平台设备侧采用IOTGate企业版作为物联感知设备网络入口。

烟台华崟科技有限公司:参与项目开源的贡献,位于高新区蓝海创业园。

四、参考

posted @ 2021-09-22 16:17  爱是与世界平行  阅读(2605)  评论(0编辑  收藏  举报