开源物联网平台Mainflux介绍

Mainflux是一个开源的物联网云平台,支持多种设备接入和协议,包括HTTP、MQTT、WebSocket、CoAP。平台提供设备、应用和用户管理,支持消息处理、数据存储和安全机制。Mainflux采用微服务架构,使用Go语言开发,支持多用户和多组织应用管理。

Mainflux 学习笔记

  Mainflux是一个由法国的创业公司开发并维护的开源的物联网云平台,Mainflux使用Go语言、微服务的框架。Mainflux支持多种接入设备,包括设备、用户、APP;支持多种协议,包括HTTP、MQTT、WebSocket、CoAP,并支持他们之间的协议互转。
  Mainflux的南向接口连接设备,北向接口连接应用,提供一个完整的从设备端到平台到应用的解决方案。

概述

Mainflux提供以下服务:

  • 在设备和应用之间提供消息的扭转,包括HTTP、MQTT、WS、CoAP;
  • 系统管理;
  • 设备管理-南向接口;
  • 应用管理-北向接口;
  • 用户管理;
  • 数据存储-时序数据库;
  • 复杂的消息处理,基于系统事件总线NATS,通过规则引擎,根据时间数据流进行事件触发;
    Mainflux系统图

消息扭转及协议转换

Mainflux能够实现设备与应用之间的通信,完成消息的上传及消息的下发;或者设备与设备,应用与应用之间的通信。

系统管理

  • 用户
    用户是指使用Mainflux的人员,包括多个角色(管理员、应用创建者、开发人员),这些角色如果有权限,将会管理设备、应用以及channel。
  • 客户端
    客户端主要分两类,一类是设备;一类是应用;
  • 设备
    设备主要是功耗受限、内存受限、计算能力受限的一些设备,这类设备倾向于使用MQTT、CoAP协议,在加密手段上使用DTLS而不是TLS,对于这类设备Mainflux主要提供MQTT以及CoAP来连接设备。对于一些运算资源丰富的设备,提供HTTP、WebSocket协议。
  • 应用
    应用主要运行在业务服务器,应用的连接主要通过HTTP REST或者WebSockets,可以双向通信。当然,应用也可以选择MQTT或者CoAP这些协议。
  • 通道(连接)
    通道是Mainflux中的重要的通信模型,它是对双向消息流的一个表述,可以把他理解为连接,具体表现就是MQTT的topics,设备和应用可以在一个消息通道上订阅或发布topic。所有流过通道的数据流都会在数据库总持久化。
  • 设备管理
    Mainflux提供了用于描述系统中设备的模型,模型能够表征设备的状态。每一个连接到Mainflux的设备在数据库中都拥有他们自己的模型,这些由设备自己更新。如果一个设备需要更新状态,直接发送UPDATE的请求给Mainflux即可,这个更新对于需要获取其信息的应用端或者其他设备也会得到更新,反之亦然。
    Mainflux维护者所有的这些内部设备模型,保持连接,并管理这些设备,获取他们的信息:
    • 连接了多少设备;
    • 他们分布在哪里;
    • firmware的版本是多少;
    • 电池的状态怎么样;
    • 设备的序列号是什么;
      Mainflux还可以发送各种各样的指令给设备:
    • 打开或关闭设备;
    • OTA升级;
    • 设备分组或者更换访问权限;
  • 用户和应用管理
    Mainflux是一个多用户和多组织的应用管理平台。Mainflux的开发者可以创建基于Mainflux的多用户应用,而不需要自己管理这些用户,也即是说Mainfl
JetLinks开源物联网平台基于Java8、Spring Boot 2.x、WebFlux、Netty、Vert.x、Reactor等开发,是一个开箱即用,可二次开发的企业级物联网基础平台平台实现了物联网相关的众多基础功能,能帮助你快速建立物联网相关业务系统。 JetLinks开源物联网平台核心特性: 支持统一物模型管理,多种设备,多种厂家,统一管理。 统一设备连接管理,多协议适配(TCP、MQTT、UDP、CoAP、HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议的设备。 灵活的规则引擎,设备告警,消息通知,数据转发。可基于SQL进行复杂的数据处理逻辑。 地理位置:统一管理地理位置信息,支持区域搜索。 数据可视化:实现拖拽配置数据图表,设备组态等。 JetLinks开源物联网平台技术栈: Spring Boot 2.2.x Spring WebFlux 响应式Web支持 R2DBC 响应式关系型数据库驱动 Project Reactor 响应式编程框架 Netty、Vert.x 高性能网络编程框架 ElasticSearch 全文检索,日志,时序数据存储 PostgreSQL 业务功能数据管理 hsweb framework 4 业务功能基础框架     JetLinks开源物联网平台 更新日志: v1.9 1、增加设备独立物模型支持,可给单独的设备配置物模型. 2、基本实现GB28181国标视频设备接入,支持直播,云台控制,级联操作.(选配模块) 3、RabbitMQ增加routeKey配置,可在配置文件中指定device.message.writer.rabbitmq.consumer-route-key和device.message.writer.rabbitmq.producer-route-key.(Pro) 4、当设置了device.message.writer.rabbitmq.consumer=false时,不创建MQ消费者.(Pro) 5、设备支持独立物模型,可单独配置设备的物模型. 6、适配tdengine 2.0.16.0,优化sql长度策略. (pro) 7、优化规则引擎编辑器,实现组件模块化动态加载.(Pro) 8、修复启动服务时,如果某个产品物模型发布失败,导致后面的产品终止发布的问题. 9、增加ignoreLatest消息头,message.addHeader("ignoreLatest",true) 忽略记录最新数据到数据库. 10、修复租户下操作设备告警提示无权限.(Pro) 11、优化租户在解绑成员时,同时解绑成员的资产信息.(Pro) 12、优化子设备消息回复处理 13、物模型属性增加存储方式功能,可配置部分属性不存储. 14、增加虚拟属性功能,可通过规则来计算出虚拟属性值.(Pro) 15、增加租户成员绑定(TenantMemberBindEvent),解绑(TenantMemberUnBindEvent)事件.可通过spring-event订阅处理此事件.(Pro) 16、优化子设备状态检查,当检查子设备状态时,将会尝试发送ChildDeviceMessage<DeviceStateCheckMessage>给网关,处理后返回ChildDeviceMessageReply<DeviceStateCheckMessageReply>. 17、增加ClickHouse设备数据存储策略支持.(Pro) 18、增加权限过滤功能,可配置禁止赋予自己没有的权限给其他用户.hsweb.permission.filter相关配置 19、设备和产品的租户绑定逻辑优化: 绑定设备时,自动绑定产品.解绑产品时,自动解绑设备.(Pro) 20、用户管理增加租户权限控制.(Pro) 21、当向keepOnline的设备发送消息时,如果原始连接已断开,将返回CONNECTION_LOST错误. 22、设置keepOnline的会话将被持久化,重启服务后自动恢复.(Pro) 23、默认关闭设备最新数据存储,通过jetlinks.device.storage.enable-last-data-in-db=true开启.(Pro) 24、属性物模型增加属性值来源,配置为手动时,在发送修改属性指令(WritePropertyMessage)时,将直接生效,不会发送到设备. 25、优化租户资产解绑逻辑,当删除数据时,解绑资产全部的绑定关系.(Pro) 26、用户管理,机构管理增加租户端支持,租户可以自己管理自己的用户和机构.(Pro)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值