JetLinks 基于Java8,Spring Boot 2.x ,WebFlux,Netty,Vert.x,Reactor等开发, 是一个全响应式的企业级物联网平台。支持统一物模型管理,多种设备,多种厂家,统一管理。统一设备连接管理,多协议适配(TCP,MQTT,UDP,CoAP,HTTP等),屏蔽网络编程复杂性,灵活接入不同厂家不同协议等设备。实时数据处理,设备告警,消息通知,数据转发。地理位置,数据可视化等。能帮助你快速建立物联网相关业务系统。
APACHE-2.0 License
Bot releases are hidden (Show)
Full Changelog: https://github.com/jetlinks/jetlinks-community/compare/1.13.0...2.1.0
Published by zhou-hao about 1 year ago
Full Changelog: https://github.com/jetlinks/jetlinks-community/compare/1.13.0...2.0.0
Published by zhou-hao over 1 year ago
Published by zhou-hao over 2 years ago
主要优化:
netty 4.1.73.Final
以及vertx 4.2.3
版本,支持mqtt5
.FileManager
,来统一管理相对敏感的文件上传以及访问.升级说明
文件上传配置调整,协议包,数据导入等相关文件上传已调整使用新的FileManager
进行管理,可根据配置文件进行配置
file:
manager:
storage-base-path: "./data/files"
read-buffer-size: 64KB
cluster-key: file-manager # 修改此值并保证整个集群的值一致
server-node-id: ${jetlinks.server-id}
# cluster-rute:
## 集群ID: 访问地址
# "[jetlinks-platform:8844]": "127.0.0.1:8844"
# "[jetlinks-platform:8840]": "127.0.0.1:8840"
Published by zhou-hao almost 3 years ago
where id dev-alarm 'state not xxx'
.save
时,可能导致部分数据字段被设置为null.@Subscribe
注解可以使用表达式来引用配置值,如: @Subscribe("/device/${a.b.c:default}")
2.17.1
,升级logback为1.2.9
.(平台未直接使用log4j,而是使用log4j-to-slf4j
,最终使用logback).Published by zhou-hao about 3 years ago
主要优化:
CompositeProtocolSupport.onBeforeDeviceCreate
增加自定义设备信息,在创建设备时,可自定义生成设备的相关配置.EntityBeforeXXX
,EntityPrepareXXX
事件.spring.r2dbc.pool
相关配置,支持配置连接有效期.modelType(模型类型)
,jobExecutor(节点执行器)
,ruleConf(规则的其他配置信息)
配置,可在直接从事件数据中获取进行处理.BUG修复:
Published by zhou-hao about 3 years ago
更新时间: 2021-08-02
代码分支: 1.10
属性源时间
和属性状态
;行式存储时,会使用源时间当作时间戳进行存储.I18nEnumDict
),异常(I18nSupportException
))。查看说明
scoll
为true
时,表示游标分页,此时不支持使用pageIndex
进行分页,下一页查询时需要在动态查询条件中指定上一页返回的scrollId
:"context":{"scrollId":"上一页的ID"}
,并且查询条件变化后,需要重置页码以及scrollId
.MQTT Broker
方式接入设备支持设置QoS.FileQueue
工具类,可将队列数据持久化到本地文件.ParallelIntervalHelper
工具类,可对并行操作进行延迟来实现并行转串行的效果.DeviceDataManager
接口增加getTags
方法,可在协议包中通过此方式来获取设备标签.parser.newBuffer()
方法,使用方法.Published by zhou-hao over 3 years ago
直播
,云台控制
,级联操作
.(选配模块)routeKey
配置,可在配置文件中指定device.message.writer.rabbitmq.consumer-route-key
和device.message.writer.rabbitmq.producer-route-key
.(Pro)device.message.writer.rabbitmq.consumer=false
时,不创建MQ消费者.(Pro)tdengine 2.0.16.0
,优化sql长度策略. (pro)ignoreLatest
消息头,message.addHeader("ignoreLatest",true)
忽略记录最新数据到数据库.TenantMemberBindEvent
),解绑(TenantMemberUnBindEvent
)事件.可通过spring-event
订阅处理此事件.(Pro)ChildDeviceMessage<DeviceStateCheckMessage>
给网关,处理后返回ChildDeviceMessageReply<DeviceStateCheckMessageReply>
.ClickHouse
设备数据存储策略支持.(Pro)hsweb.permission.filter
相关配置keepOnline
的设备发送消息时,如果原始连接已断开,将返回CONNECTION_LOST
错误.keepOnline
的会话将被持久化,重启服务后自动恢复.(Pro)jetlinks.device.storage.enable-last-data-in-db=true
开启.(Pro)手动
时,在发送修改属性指令(WritePropertyMessage
)时,将直接生效,不会发送到设备.Published by zhou-hao almost 4 years ago
size
属性device.setConfig
设置的配置也可以在设备详情中查看到./device/instance/messages
,可在消息体中指定deviceId
或者通过where
条件指定要发送到的设备.(Pro)object
和array
类型的属性使用json字符串
来进行存储,减少es的压力.rabbitMQ
和kafka
.headers.force
跳过校验)-
进行id分隔(使用|
可能导致400错误.)-Djetlinks.eventbus.payload.pool.enabled=true
开启事件总线对象池,提升性能.Published by zhou-hao almost 4 years ago
DefaultConfigMetadata.add
方法.id$dev-tag
)支持表达式: tag1=value1 and tag2=value2
(没有sql注入,放心使用).headers.force
标记是否强制拉取固件,使用headers.latest
标记是否拉取最新的固件信息. (Pro)headers
中增加members
,标记此设备所属的用户id.(需要重新激活设备) (Pro)Headers.mergeLatest
消息头,设备属性相关消息设置此头,将合并旧的属性数据到消息中.(此操作会降低系统吞吐量)(Pro)jetlinks.event-bus.roskcet.enabled
开启.(Pro)_window_until
和_window_until_change
函数.(Pro)TopicPayload
后需要手动调用release()
释放资源.设备数据行式存储策略
:取消存储propertyName
,formatValue
字段,influxdb
下只存储numberValue
,timeValue
,value
.support.setExpandsConfigMetadata
来指定配置(需要升级jetlinks-core 1.1.4)-Dmemory.waterline=0.15
进行配置.(Pro)elasticsearch
和influxdb
写入策略,丢弃无法写入的Buffer防止内存溢出.(Pro)influxdb
查询条件的类型转换,修复如果使用数字作为设备id,无法查询到数据.(Pro)/org/device/**
,可通过headers.orgId
获取当前设备机构ID。(需要再次激活设备).DeviceMessage.addHeader("ignoreLog",true)
指定不记录此消息日志.Published by zhou-hao almost 4 years ago
更新时间: 2020-10-30
代码分支: 1.6
主要优化
id$dev-group-tree
查询分组及子分组设备。小度小度,打开空调
.(Pro可选模块)租户
,设备分组
对应的消息总线,更新后请重新激活设备才能生效(Pro)。$shared/
作为前缀时,同一个用户只会收到一个消息通知.$this
作为别名时,将列对象填充到当前行中.row.index
获取行号,通过row.elapsed
获取距离上一行的时间间隔(ms).slope(斜度),skewness(偏度特征),kurtosis(峰度特征),variance(方差)....
查看函数说明(Pro).MQTT Client
中的clientId
,username
,password
支持表达式.可通过${#env.getProperty(...)}
来获取配置文件中的配置.⚠️ :
原配置elasticsearch.client
相关配置已失效,请使用spring.data.elasticsearch.client.reactive.endpoints
进行配置.
Published by zhou-hao about 4 years ago
主要优化
DeviceDataService
.行式存储
和列式存储
设备属性数据,支持自定义策略.doc.html
即可.log
来设置设备日志记录./device/instance/{deviceId}/properties/_top/{numberOfTop}
(仅默认存储策略(es)支持).功能变更
value
以及formatValue
修改为与物模型对应的类型值.修复BUG
number_of_shards
失效问题Published by zhou-hao about 4 years ago
更新时间: 2020-09-01
代码分支: 1.4
主要优化
spring event
增加响应式事件支持,继承DefaultAsyncEvent
或实现AsyncEvent
即可.MessageGateway
,重构为消息总线EventBus
.deviceOperator.getSelfConfig(DeviceConfigKey.shadow)
.2.3.3-RELEASE
captcha.enabled=true
设置开启.hsweb.user.password.validator
进行配置,默认maxLength=8
,level=2
hsweb.upload.file.allow-files
或者hsweb.upload.file.deny-files
进行配置group by _window('10s'),take(1) -- 10秒取第一条数据
.主要BUG修复
post
,application/json
请求时参数错误问题升级说明
docker方式升级时,需要修改数据卷为: `"./data/upload:/application/static/upload"`
Published by zhou-hao over 4 years ago
更新时间: 2020-07-10
代码分支: 1.3
主要优化
node-red
实现。select device.properties(deviceId)
获取设备最新的全部属性值。select device.tags(deviceId,'tag1','tag2')
。select * from device.selector(in_group('test-group'))
。spring-boot
到2.2.8.RELEASE
。netty
到4.1.50.Final
。hsweb-framework
到4.0.4
。🐛 :主要BUG修复
fixed(0)
可能导致粘拆包失效。⚠️ 升级说明
专业版升级到此版本后,请执行以下操作:
Published by zhou-hao over 4 years ago
主要优化
主要BUG修复
升级说明
1.2.0
。1.2
分支。Published by zhou-hao over 4 years ago
主要优化:
/device/{deviceId}
修改为: /device/{productId}/{deviceId}
./rule-engine/device/alarm/{productId}/{deviceId}/{ruleId}
来处理预警消息.websocket
订阅消息:/messaging/{token}
,可通过websocket订阅实时数据.GeoObjectManager
统一管理Geo信息并进行搜索(支持矩形,圆形,多边形区域搜索). (Pro)主要BUG修复:
Published by zhou-hao over 4 years ago
主要优化:
elasticsearch-component
模块.elasticsearch
索引管理,支持自定义策略,如按月对索引分表.GeoType
类型支持,为未来的Gis
支持作准备.Dashboard
接口,可同时订阅一个设备对所有属性变更事件.DeviceMessage
增加头:Headers.keepOnline
,用于在TCP短连接的场景保持设备一直在线,仅通过keepalive超时判断离线.主要BUG修复:
Published by zhou-hao over 4 years ago
1.0 预览版