thingsBoard本地调试

架构

ThingsBoard 传输

  • 提供了基于MQTT, HTTP和CoAP的API
  • 每个协议API都是由单独的服务器组件提供的并且是ThingsBoard“传输层”的一部分。
  • 传输从设备接收到消息后,解析并推给持久的消息队列,消息队列确认了响应的消息才传递给设备。

ThingsBoard 核心

  • 负责处理REST API调用和Websocket订阅
  • 负责设备活动会话和监视设备
  • 使用Actor来实现实体(租户和设备)的actor

ThingsBoard 规则引擎

  • 规则引擎是系统的心脏负责处理传入的消息
  • 规则引擎在幕后使用Actor来实现主要实体的actor:规则链和规则节点。
  • 规则引擎从队列中订阅传入的数据并且仅在处理完消息后才对其进行确认。
  • ThingsBoard规则引擎可能以两种模式运行:共享和隔离
    • 在共享模式下规则引擎处理多个租户的消息。
    • 在隔离模式下规则引擎处理特定租户的消息。

ThingsBoard 界面

  • ThingsBoard提供了一个使用Express.js框架编写的轻量级组件,用于承载静态Web ui内容。

数据存储

ThingsBard使用数据库进行存储
实体设备,资产,客户,仪表板等)和遥测数据(属性,时间序列传感器读数,统计信息,事件)。

  • SQL -将所有实体和遥测存储在SQL数据库中。建议使用PostgreSQL这是ThingsBoard支持的主要SQL数据库。
    HSQLDB具有最小的负载可用于本地开发、测试我们不建议将HSQLDB用于任何其他用途。
  • 混合 (PostgreSQL + Cassandra) - 将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Cassandra数据库中。
  • 混合 (PostgreSQL + TimescaleDB) - 将所有实体存储在PostgreSQL数据库中,并将时间序列数据存储在Timescale数据库中。

开发指南

安装配置数据库

存储方案我们选择使用PostgreSQL ,安装过程略过,创建Thingsboard 数据库

root@aa8a05f53501:/# su postgres
postgres@aa8a05f53501:/$ psql
psql (12.1 (Debian 12.1-1.pgdg100+1))
Type "help" for help.

postgres=# CREATE DATABASE thingsboard;
CREATE DATABASE
postgres=# \q

修改配置文件

编辑配置文件

/application/src/main/resources/thingsboard.yml

取消注释‘#PostgreSQL DAO配置’代码片断。更新postgres数据库的用户名和密码。

  datasource:
    driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"
    url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"
    username: "${SPRING_DATASOURCE_USERNAME:postgres}"
    password: "${SPRING_DATASOURCE_PASSWORD:123456}"
    hikari:
      maximumPoolSize: "${SPRING_DATASOURCE_MAXIMUM_POOL_SIZE:16}"

自动导入数据库数据

将sql文件 *dao/src/main/resources/sql* 拷贝到 *application/src/main/data/sql*

配置kafka

修改文件/application/src/main/resources/thingsboard.yml

并找到”queue”块确保type的值是kafka修改下面配置文件并将”localhost:9092”替换成真实的Kafka服务器地址

queue:
  type: "${TB_QUEUE_TYPE:kafka}" # in-memory or kafka (Apache Kafka) or aws-sqs (AWS SQS) or pubsub (PubSub) or service-bus (Azure Service Bus) or rabbitmq (RabbitMQ)
  ...
  
  kafka:
    bootstrap.servers: "${TB_KAFKA_SERVERS:192.168.99.100:9092}"
   	... 

执行安装程序

执行安装程序ThingsboardInstallApplication.java,运行后会自动导入数据库数据

启动

执行程序ThingsboardServerApplication,然后访问web

如果在安装脚本的执行过程中指定了*-loadDemo*则可以使用以下默认凭据:

我们是直接运行所以只有系统管理页,其他的需要自己创建

常见问题

java:类org.thingsboard.server.common.msg.genorg.thingsboard.server.gen.cluster 不存在。

这些类是通过protobuf 自动生成的,使用maven中protobuf工具生成即可,即点击Thingsboard->Lifecycle->compile。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×