JetLinks是一款开源的物联网基础平台,集成了常见的网络协议,可以实现统一管理、统一监控、在线调试和更新等功能,将自定义的小溪解析为平台统一的消息格式,可统一管理设备模型和数据,能够有效的降低物联网企业研发、运营和运维成本,提高物联网落地能力。
软件功能
1、统一设备管理
统一设备模型,设备数据管理。
统一的设备操作API,屏蔽各个厂家不同协议不同设备的差异。
支持跨服务,同步(RRpc),异步的设备消息收发。
2、多协议适配 , 不同设备使用不同协议接入
集成了各种常见的网络协议(MQTT,HTTP,TCP,UDP,CoAP)等,并对其进行封装, 实现统一管理,监控,在线调试,在线启动,停止,更新等功能.降低网络编程的复杂度.
多消息协议支持,可在线配置消息解析规则,将自定义的消息解析为平台统一的消息格式.
3、可视化配置仪表盘
动态配置图表,折线图,饼状图,地图等。生成大屏界面。
4、可视化规则引擎
可视化拖拽规则引擎设计器,灵活可拓展的多种规则节点支持。
可通过规则引擎在线动态配置数据,业务处理逻辑。
软件特色
100% 开源
无论开源版、专业版还是企业版所有源代码都开放给客户。
响应式底层全响应式支持,更高的系统性能。支持灵活的数据处理,可以写SQL来处理实时数据,数据开发更简单。
扩展性
多协议适配,支持多种通信协议(TCP,MQTT,UDP,CoAP)等,支持自定义消息协议,灵活接入不同厂商不同设备。
物模型
统一的物模型管理,不同设备,统一定义,统一管理。
软件特性
1、开放源代码
全部源代码开放,可自由二次开发.前后端分离,接口全开放.
2、统一设备接入,海量设备管理
TCP/UDP/MQTT/HTTP、TLS/DLS、不同厂商、不同设备、不同报文、统一接入,统一管理.
3、强大的规则引擎
强大的可视化规则设计器.以及多种规则模型支持(设备告警,场景联动等).
4、可视化大屏
可视化大屏设计器,灵活配置大屏展示。
5、多租户
灵活的非侵入多租户数据权限控制。可实现不同租户,不同用户共享数据。
支持的技术栈:
Spring Boot 2.2.x
Spring WebFlux 响应式Web支持
R2DBC 响应式关系型数据库驱动
Project Reactor 响应式编程框架
Netty、Vert.x 高性能网络编程框架
ElasticSearch 全文检索,日志,时序数据存储
PostgreSQL 业务功能数据管理
hsweb framework 4 业务功能基础框架
JetLinks安装配置教程
使用源码启动JetLinks
#系统环境
启动jetlinks之前,请先确定已经安装好以下环境:
JDK 1.8.0_2xx (需要小版本号大于200) 下载jdk(opens new window)Redis 5.x
PostgreSQL 11 或者 mysql 5.7 +
ElasticSearch 6.8 + 下载 (opens new window),也可以直接使用内嵌ElasticSearch.
注意
如果你是linux或者macOS系统,或者是windows10. 推荐使用docker安装所需环境
#下载源代码
建议使用git clone下载源代码,注意代码分支,master为最新的开发分支.其他分支为对应的版本.
$ git clone https://github.com/jetlinks/jetlinks-community.git
$ cd jetlinks-community
#配置文件
配置文件地址:jetlinks-standalone/src/main/resources/application.yml
常见配置说明
spring:
redis:
host: 127.0.0.1 # redis配置
port: 6379
r2dbc:
url: r2dbc:postgresql://127.0.0.1:5432/jetlinks # 数据库postgresql数据库配置
username: postgres # 数据库用户名
password: jetlinks # 数据库密码
easyorm:
default-schema: public # 数据库名
dialect: postgres # 数据库方言
elasticsearch:
embedded:
enabled: false # 为true时使用内嵌的elasticsearch
data-path: ./data/elasticsearch
port: 9200
host: 0.0.0.0
client:
host: 127.0.0.1 # elasticsearch
port: 9200
hsweb:
file:
upload:
static-file-path: ./static/upload # 上传的文件存储路径
static-location: http://127.0.0.1:${server.port}/upload # 上传文件后,使用此地址作为根路径访问上传后的文件.
说明
除了修改配置文件意外,还可以通过修改环境变量或者启动参数来修改配置,比如:
java -jar ./jetlinks-standalone/target/jetlinks-standalone.jar --spring.elasticsearch.embedded.enabled=true
#使用命令行启动
如果相关环境的ip不是本地,或者端口不是默认端口.请先修改配置文件.
linux或者macOS环境下打包:
$ ./mvnw clean package -Dmaven.test.skip=true
windows 环境下打包
$ mvnw.cmd clean package -Dmaven.test.skip=true
启动
$ java -jar ./jetlinks-standalone/target/jetlinks-standalone.jar
#导入IDEA启动
Idea请先安装lombok插件.
打开IDEA,点击file-open,选择项目目录,等待依赖下载完成.
点击file-Project Structure-Project,配置SDK为jdk1.8,Project language level为8.
打开jetlinks-standalone/src/main/java/org...../JetLinksApplication.java,启动main方法即可.
注意
如果依赖无法下载,请确定maven配置正确,请勿在settings.xml中配置全局仓库私服.
#使用内嵌ElasticSearch
在硬件条件较差时,可以使用内嵌的ElasticSearch,不用单独安装。
修改配置文件即可
elasticsearch:
embedded:
enabled: true # 为true时使用内嵌的elasticsearch
#启动前端
JetLinks 是前后端分离的.启动完后端服务后,还需要启动前端.
提示
如果本地不需要修改前端代码,并且本地有docker环境,建议使用docker启动前端.
docker run -it --rm -p 9000:80 -e "API_BASE_PATH=http://host.docker.internal:8844/" registry.cn-shenzhen.aliyuncs.com/jetlinks/jetlinks-ui-antd:1.5.0
http://host.docker.internal:8844/ 为后台服务的地址,请根据情况修改.
准备环境:
nodeJs v12.xx
npm v6.xx
下载前端代码:
$ git clone https://github.com/jetlinks/jetlinks-ui-antd.git
$ cd jetlinks-ui-antd
修改后台接口地址: 后台接口配置文件地址:config/proxy.ts:
/**
* 在生产环境 代理是无法生效的,所以这里没有生产环境的配置
*/
export default {
dev: {
'/jetlinks': {
target: '后台地址',
changeOrigin: true,
pathRewrite: { '^/jetlinks': '' },
},
},
test: {
'/jetlinks': {
target: '后台地址',
changeOrigin: true,
pathRewrite: { '^/jetlinks': '' },
},
},
pre: {
'/jetlinks': {
target: '后台地址',
changeOrigin: true,
pathRewrite: { '^/jetlinks': '' },
},
},
};
启动:
$ cd jetlinks-ui-antd
$ npm install
$ npm start
启动成功后,访问: http://localhost:8000 即可.
更新日志
1、固件相关消息增加size属性
2、网络组件在集群下可以单独指定节点的配置了(Pro)
3、修复邮件通知无法发送base64图片问题
4、优化设备详情配置查看,通过device.setConfig设置的配置也可以在设备详情中查看到.
5、增加OneNet和CTWing接入,可将设备同步到对应到平台中.以及从对应平台订阅数据(Pro可选模块)
6、设备实例接口增加批量发送设备指令/device/instance/messages,可在消息体中指定deviceId或者通过where条件指定要发送到的设备.(Pro)
7、优化设备最新消息存储,同一个产品的数据使用串行更新,防止死锁,并且丢弃来不及更新的数据.(Pro)
8、修复es索引中存在多个mapping时无法解析的问题
9、修复分组聚合查询属性时,如果返回过多分组时可能导致无法返回结果的问题.
10、支持将object和array类型的属性使用json字符串来进行存储,减少es的压力.
11、修复无法转发设备消息到rabbitMQ和kafka.
12、增加默认物模型,在协议包里可配置默认物模型,创建产品时,自动添加到物模型配置中.
13、发送功能调用指令时,增加参数校验和参数类型转换.(可通过headers.force跳过校验)
14、优化设备分类数据初始化,默认使用-进行id分隔(使用|可能导致400错误.)
15、通过jvm参数-Djetlinks.eventbus.payload.pool.enabled=true开启事件总线对象池,提升性能.
∨ 展开