IoT开源平台Thingsboard二次开发研究

这篇博客详细介绍了如何进行ThingsBoard物联网平台的二次开发,包括团队的知识储备、目录结构、IDE插件选择、打包过程及运行步骤。在运行过程中可能会遇到npm安装问题和IDE警告,但提供了相应的解决方案。
部署运行你感兴趣的模型镜像

ThingsBoard 二次开发指南

参考资料

TB官方文档(英文)
Protobuf的讲解

概述

    1 整个ThingsBoard的代码中,变量、方法命名规范;
    2 变量和方法的标识符,字面意思基本能表达整个方法或变量的功能或目的;
    3 TB采用了模块化开发来实现松耦合、高内聚。每个模块之间有一定的依赖;
    4 微服务集群的容器使用Docker,容器编排使用k8s;
    5 使用了Actors编程模型(AKKA框架)(纯异步)、事件驱动模型;

二开团队知识储备

    MQTT协议 & MQTT Broker(重要)
    CoAP协议
    HTTP协议(除get/post之外的动作)
    WebSocket协议
    RESTFUL 设计规范
    TCP/IP协议簇
    IoT Gateway
    规则引擎概念与设计
    Actors编程模型理论
    Google Protocol Buffer 原理与使用
    AKKA框架
    Netty
    kafka
    PostgreSQL数据库
    Nodejs
    Vue SPA套件(UI重制)

目录结构

application: 应用程序主目录,整体项目打包时也是这个Module
    src/main/java/org.thingsboard.server: app主目录
        actors: actor执行者目录
        config: 配置类目录
        controller: 控制器
        exception: 异常处理
        service: 服务目录,app打包后,server要运行的服务的实现都在这里
            cluster: 集群服务,包括服务发现、服务实例等
            script: 脚本执行服务,主要是规则引擎的执行(JS)
            transport: 消息传输服务
            rpc: 远程调用服务
        utils: 工具类
common: 公共工具集、方法集模块
    dao-api: 数据访问对象的服务接口,在这里做定义
    data: 用于不同数据库之间的中间数据结构
    message: 消息服务的实现集,包括集群消息、TB的基础服务消息、系统类消息
    queue: 队列服务的实现集,用的Kafka
    transport: 消息传输通道服务的实现,定义公共接口,给客户端的transport层使用
        coap: CoAP消息传输的实现,包括适配器和客户端
        http: HTTP消息传输的实现
        mqtt: MQTT消息传输的实现,包括适配器、会话、SSL工具等
    util: 工具集(当前仅有一个异步回调工具)
dao: 数据访问对象集合,整个应用的DAO层,一般只要dao的都要data,以实现不同数据库数据结构兼容。
docker: 集群部署-docker容器解决方案,包含了部署环境和shell脚本
    haproxy: HAproxy工具的配置文件存放处
    tb-node: 应用程序节点配置存放目录
    tb-transports: 消息传输服务的配置文件,包括coap,http,mqtt
img: 应用图标存放处
k8s: 容器编排工具Kubernetes的配置文件和自动化脚本
msa: 微服务半自动构建模块,包含了黑盒测试、js执行引擎等
    black-box-tests: 黑盒测试工具
    js-excutor: js执行引擎,基于nodejs,用于执行规则引擎中的js代码(沙盒执行)
    tb: tb主应用程序配置
    tb-node: tb程序节点配置
    transport: docker中的消息传输服务的部署配置
    web-ui: TB的Web用户界面在docker中部署的配置,自带http server
netty-mqtt: TB的MQTT协议的实现,包括连接、发布、订阅、遗嘱、关闭等
rule-engine: TB的规则引擎,TB没有用开源的Drools等工具,而是自己开发了一套规则引擎,主要包含3个组件和1套服务接口
    rule-engine-api: 服务接口的实现
    rule-engine-components: 规则引擎组件,包含滤波器、动作、数据、脚本、延迟加载、消息、队列、RPC实现、邮件等
tools: 工具模块,主要实现了MQTT with SSL客户端和REST客户端。可以测试用。
transport: 三种消息传输服务启动器,服务的实现参考common/transport,mqtt协议的实现见netty-mqtt
ui: TB的用户界面,主要使用AngularJS和react组件,单页应用(要替换掉,用Vue)

所需IDE插件

IDEA Plugins

    protobuf
    lombok

打包

TB将所有模块打包,以application为根模块,打包成多个平台的安装包。

运行

TB以系统服务的方式运行:
CentOS/Redhat-------thingsboard.rpm
Debian--------thingsboard.deb
Windows------thingsboard-windows.zip

常见问题

一、 mvn clean install到Server UI出现npm install无法执行的错误:

	结束Java binary进程后,用管理员权限运行Terminal(cmd或powershell或shell等)环境,最好不要更改npm源,
	开全局代理,依次用以下方法:
	1 更改UI,js-executor,web-ui下的pom.xml,将nodeVersion和npmVersion改成和本机版本一致。
	如果上述方法不行
	2 删除本机Nodejs,重新执行。
	如果还不行
	3 跳过无法insall的项目,手动npm install,npm run build。执行逻辑在各自的pom.xml中。

二、IDE打开项目后,出现一大堆Error和Warning提示。

	IDE中,安装 protobuf、lombok两个plugins,重启IDE。

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

### ThingsBoard 二次开发概述 ThingsBoard 是一款开源的物联网 (IoT) 平台,支持设备管理、数据收集与可视化等功能。对于开发者而言,进行 ThingsBoard二次开发可以扩展其核心功能以满足特定需求。 #### 自定义功能开发的关键领域 1. **规则链 (Rule Chains)** Rules Engine 是 ThingsBoard 中的核心组件之一,用于处理传入的数据并触发相应的动作。通过创建自定义 Rule Nodes 或修改现有节点的行为,可以实现复杂的数据流控制[^4]。例如,可以通过编写 JavaScript 脚本来定义新的分组过滤逻辑或事件响应机制。 2. **插件开发 (Plugins Development)** 如果内置的功能无法完全覆盖业务场景,则可以选择开发定制化插件来增强系统的灵活性。这通常涉及 Java 编程以及对 Spring Framework 的理解,因为 ThingsBoard 后端主要基于这两项技术构建[^1]。 3. **UI 定制化** 前端部分采用 AngularJS 构建,因此熟悉此框架有助于调整默认界面布局或者新增页面元素。此外还可以利用 Widget System 来设计交互性强且美观的大屏展示效果。 4. **集成第三方服务** 在某些情况下可能需要将外部 API 整合进来作为额外的服务选项;比如支付网关接入或是社交媒体分享按钮等等。这类工作往往依赖 RESTful Web Services 技术栈完成对接过程[^2]。 5. **数据库优化与扩展** 针对企业级应用场景下的海量存储需求, 可能会涉及到 TimescaleDB 等时间序列专用型数据库替换原有方案的工作内容; 这一环节同样离不开扎实的关系代数理论基础支撑整个迁移流程平稳过渡[^3]. ```java // 示例代码片段:Java 插件示例 @PostConstruct public void init() { log.info("Initializing custom plugin..."); } @Override protected ListenableFuture<Void> handleEntityAction(TenantId tenantId, EntityId entityId, String action, JsonNode body, User user) throws Exception { // 实现具体实体操作逻辑... } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值