物联网平台(IOT)是一种用于构建和管理物联网解决方案的数字平台,是实现万物互联的基础平台,也是帮助人工智能以更好的方式控制和理解事物的技术。通过物联网平台可以远程对接的各种设备,收集设备数据,并在平台端监控、联动、分析和管理所有互联网连接的设备,还能为整个系统或者运营提供决策。
物联网平台的核心技术包括:传感器技术、无线通信技术、云计算技术、大数据分析技术等。通过这些技术,物联网能够实现物品之间的智能化和自动化。包括:智能感知、智能控制、智能决策、自动化流程等。
物联网平台的功能在不同领域有不同的作用,根据商业目标的不同侧重点也不同,但大体的层次架构如下,具体的功能根据不同行业要求增减。
物联网开发平台选型是一个复杂而又重要的决策过程,需要综合考虑多个因素。包括平台的可扩展性、灵活性、生态、成本等许多因素。目前可选择物联网平台的产品非常多,许多开源项目的表现也非常亮眼。
本文收集了一些最知名的开源物联网平台,这些开源平台可以帮助您更快启动开发物联网或者智能化项目。
1.Kaa IoT Platform
官网:https://www.kaaiot.com/
GITHUB:https://github.com/kaaproject/kaa
Kaa是个功能丰富、开放高效的物联网云平台。可以基于Kaa随意实现其智能产品概念。Kaa通过提供服务器和SDK组件,实现了对连接对象和后端基础设施的数据管理。
功能特性:
- 可以管理无限数量的设备
- 支持跨设备互操作性设置
- 可以执行A/B服务测试
- 支持执行实时设备监控
- 执行远程设备调配和配置
- 支持收集和分析传感器数据
- 支持分析用户行为并提供有针对性的通知
- 支持为智能产品打造云服务
2.ThingSpeak
官网:https://thingspeak.com/
GITHUB:https://github.com/mathworks/thingspeak-arduino
ThingSpeak是一个支持在MATLAB中分析数据和实现数据可视化的物联网平台。使用ThingSpeak无需从Mathworks购买许可证。它允许您在云中收集和存储传感器数据并开发物联网应用程序。可以与Arduino、Particle Photon and Electron、ESP8266 Wifi Module、BeagleBone Black、Raspberry Pi、移动设备、Web应用程序、Twitter、Twilio以及MATLAB搭配使用,将传感器收集的数据传输到ThingSpeak。ThingSpeak主要功能包括传感器记录、位置跟踪、触发器、警报以及分析等。
功能特性:
- 在私有通道收集数据
- 支持与公共渠道共享数据
- API支持RESTful和MQTT协议
- 支持使用MATLAB分析和可视化
- 提供警报功能
- 提供事件调度功能
- 支持应用程序集成
3.DeviceHive
官网:https://www.devicehive.com/
GITHUB:https://github.com/devicehive
DeviceHive是另一个功能丰富的开源物联网平台,基于Apache 2.0开源协议,DeviceHive可以免费使用或者更改。它提供了Docker和Kubernetes部署选项。可以用于公共云和私有云,还可以从单个虚拟机扩展到企业级集群。它可以通过REST API、WebSockets或MQTT连接到任何设备,甚至可以连接ESP8266等低端Wi-Fi设备。
功能特性:
- 可以直接与Alexa集成
- 自定义可视化仪表盘
- 通过运行自定义JavaScript代码来定义DeviceHive行为。
- 支持用于大数据产品集成,如ElasticSearch、Apache Spark、Cassandra、Kafka等,用于数据实时或批处理。
- 可通过REST API、WebSockets或MQTT连接任何设备。
- 支持Apache Spark和Spark Streaming。
- 支持各种编程语言,包括Android和iOS库
- 允许在设备数据之上运行批量分析和机器学习
4.Mainflux
官网:https://www.mainflux.com/
GITHUB:https://github.com/mainflux/mainflux
Mainflux是一个开源且无专利限制的物联网平台。用户可以基于它进行开发以及私有化部署。Mainflux物联网平台使用Go语言开发,并支持在Docker中部署。
功能特性:
- 基于一组微服务的响应和可扩展架构
- 一组干净的API:HTTP RESTful、MQTT、WebSocket和CoAP
- 一组客户端SDK库,适用于多种编程语言的多种硬件平台,包括:C/C++、JavaScript、Go和Python等
- 支持设备管理和配置以及OTA FW更新
- 通过TLS和DTLS实现高度安全的连接
- 通过已部署的Mainflux身份验证和授权服务器提供强大安全性,包括基于可自定义API密钥和作用域JWT的访问控制方案
- 可以使用Docker镜像进行部署或者扩展
- 清晰的版本路线图、广泛的开发生态系统和高技能的开发人员社区支持
5.Zetta
官网:http://www.zettajs.org/
GITHUB:https://github.com/zettajs/zetta
Zetta是一个基于Node.js的面向服务器的开源物联网平台。它主张API先行,采用REST API、WebSockets和响应式编程。它可以在单板计算机、PC或云上运行,并可以将不同的平台(如:Linux、BeagleBones、Raspberry Pis、Arduino)与Heroku等云平台连接在一起,创建分布式网络。 还可以将数据流式传输到Splunk等机器分析平台。
功能特性:
- 围绕Node.js,REST,WebSockets和基于流的“反应式编程”构建
- 支持广泛的终端设备平台
- 支持整合智能手机应用程序、设备应用程序和云应用程序
6.Thingsboard.io
官网:https://thingsboard.io/
GITHUB:https://github.com/thingsboard/thingsboard
Thingsboard是一个完全开源的物联网平台,可以将其作为SaaS或PaaS解决方案托管。可实现物联网项目的设备管理、数据收集、处理和可视化。支持设备连接标准协议MQTT、CoAP和HTTP,支持云平台和本地部署。Thingsboard提供了30多个可定制的小部件,支持大多数物联网场景下的自定义仪表盘。
功能特性:
- 实时数据可视化和远程设备控制。
- 30个可自定义的小部件,用于自定义仪表盘。
- 可自定义的规则、插件、小部件和传输的实现。
- 允许监控客户端和服务端的设备属性。
- 支持开箱即用的多租户安装。
- 支持MQTT和HTTP协议的传输加密。
- 故障节点可以在不停机的情况下更换。
7.Thinger.io
官网:https://thinger.io/
GITHUB:https://github.com/thinger-io
Thinger.io是一个可以为连接设备或事物提供可扩展的云基础设施物联网平台。平台提供管理控制台以轻松控制设备,或者使用REST API将设备集成到项目中。支持绝大部分类型的设备平台,如:Arduino、ESP8266、Raspberry Pi、Intel Edison等。
功能特性:
- 实时数据仪表盘
- 支持基于Docker和IFTT集成部署
- 支持在云中安装服务器,并使用开源库连接设备。
8.Node-RED
官网:https://nodered.org/
GITHUB:https://github.com/node-red/node-red
Node-RED是一个可视化IOT编程工具,它支持开发人员以及其他专业人员利用硬件设备、API和在线服务部署物联网和Web应用程序。
Node-Red由IBM开发,提供了可拖拉的操作界面以简化复杂的配置。Node-Red支持各种系统平台,如:Raspberry Pi、BeagleBone Black、Arduino、Android等。
与传统开发语言(如C#或Java)相比,使用Node-RED的主要好处在于它能够让任何人(即使是那些之前没有编码知识的人)使用可视化操作(无代码)来快速组装强大的应用程序。
此外,由于Node RED项目是由执行特定功能的独立模块组成的,因此与尝试手动编译所有内容相比,所需的调试工作要少得多。
它使用基于Node.js开发的轻量级驱动,通过Node的包存储库提供超过225000个模块。更惊艳的是,一旦所有组件准备好并连接在一起,只需要几秒钟即可完成部署。
9.Arduino IoT Cloud
官网:https://docs.arduino.cc/arduino-cloud/getting-started/iot-cloud-getting-started
GITHUB: https://github.com/arduino-libraries/ArduinoIoTCloud
Arduino IoT Cloud的开发者是Arduino Uno微控制器板背后的团队。这个项目目的是为开发人员提供一个集中的地方,以便更轻松,更快速地构建连接的应用程序。不仅可以开发物联网相关的应用程序,而且其IT云还允许用户管理物联网设备,并监控多数据源。此外,它支持各种传感器和其他组件,使用户能够轻松灵活地创建复杂的IOT项目。
10.WSo2
官网:https://wso2.com/iot
GITHUB: https://github.com/wso2
WSo2 通过开放API来支持移动应用程序,允许用户监视和控制他们的设备。可以将其与现有的身份系统集成,也可以直接或使用它的身份系统。 这个物联网平台也开箱即用,支持几乎所有已知的设备系统。它支持MQTT、HTTP、Websockets和XMPP协议,还支持扩展IoT服务器框架以添加更多协议和数据格式。
功能特性:
- 通过WSO2的数据分析服务器(DAS),可支持批量分析、交互式分析、实时分析和预测分析。
- 基于位置的服务(地理围栏)和警报作为可重复使用的功能。
- 支持MQTT、HTTP、Websockets和XMPP协议。
- 可以调配/取消调配多个已注册设备。
- 可以为iOS、Android和Windows设备实施自助设备注册和管理。
- 分发和管理各个物联网设备的应用程序或硬件。
- 支持分组管理和监控连接的设备。
- API驱动的设备类型定义。
- 查看单个或多个设备的实时数据统计可视化。
- 提供用于实现可视化Stats-API
- 提供常见传感器的预定义图表
11.OpenRemote
官网:https://openremote.io/product/
GITHUB: https://github.com/openremote/openremote
Openremote.io是个绝佳的开源物联网平台,使用户能够创建自定义应用程序并管理,监视和控制连接的设备。这个物联网平台提供了一些设计工具来帮助开发人员设计智能化应用程序,还提供了用于各种不同类型设备的SDK。
此外,该平台还提供了一套全面的功能,包括:规则引擎、设备管理系统和分析功能等。
12.SiteWhere
官网:http://www.sitewhere.org/
GITHUB: https://github.com/sitewhere/sitewhere
SiteWhere提供了设备数据的提取、存储、处理和集成等功能。可以运行在Apache Tomcat提供的核心服务器上。它提供了MongoDB和HBase的最佳实现方式,并且可以轻易地与各种物联网设备系统集成。
功能特性:
- 可以在单个SiteWhere实例上运行任意数量的IoT应用程序。
- 提供了Spring框架配置。
- 使用MQTT、AMQP、Stomp等协议连接设备。
- 通过自助注册、REST服务或批量添加设备。
- 可以与第三方集成框架集成,如Mule AnyPoint。
- 默认的存储数据库是MongoDB。
- 使用Eclipse Californium实现CoAP消息传递。
- 使用InfluxDB存储事件数据。
- SiteWhere数据可视化。
- 支持使用HBase存储非关系数据。