ThingsBoard架构简介

7 篇文章 13 订阅
7 篇文章 0 订阅

之前介绍了一些thingsboard的使用,今天简单的介绍下thingsboard用到的技术

ThingsBoard使用笔记(1) 安装

 ThingsBoard使用笔记(2)模拟传感器发送MQTT并显示监控图表

ThingsBoard使用笔记(3)模拟控制远程温度传感器

ThingsBoard使用笔记(4)创建资产并在地图上显示

架构

  1. 文档:https://thingsboard.io/docs/reference/architecture/
  2. 并发模型: Actor模型akka Actor模式理解与使用
  3. 集群协作:zookeeper
  4. 支持协议:mqtt、coap、http
  5. 远程调用:  gRPC,thrift
  6. 持久化: Postgresql、Cassandra(https://cassandra.apache.org/数据存储),datastax(数据访问)

包含模块

application

1.common(data,message,transport):

  • data用于与不同db之间的中间数据结构。
  • message定义不同的消息类型。
  • transport定义一个公共的接口,供与客户端的transport层使用

2.dao:

  • dao抽象了对不同数据库的统一接口。
  • dao的接口数据一般都data,根据不同的数据库在不同的接口中转换为对应的实体类与数据库交互.
  • 通过@ConditionalOnProperty(prefix = "database", value = "type", havingValue = "cassandra")动态注入不同的数据库

3.tools:

  • extensions(extension-kafka,extension-mqtt,extension-rabbitmq,extension-rest-api-call):分别调用不同协议的后端服务
  • extensions-api:定义aciton,filter,plugin,processor及其他基本对象
  • extensions-core:实现一些公用aciton,filter,plugin,processor

4.transport(http,caop,mqtt):

  • mqtt基于netty开发mqtt服务器。
  • http提供基于rest的http服务。
  • 基于californium搭建coap服务。
  • 对不同的客户端设备提供不同类型的接口.同时将消息转换成不同的message,通过DefaultActorService与后端的actor交互

规则引擎

  • 规则与插件。基于actors执行。
  • 规则包含Filters,Processors,Action

ui

使用nodejs,

此框架已实现前后端分离,可以直接把前段编译后,打包成app来使用,支持android 和ios。
不是打web的url,这样访问很慢,要下载的资源很多。
是把前段的js,css,html等资源放在app中,只访问远程api,因为资源都在手机本地,加载会快点。

既然要让本地资源访问远程服务,就要修改angular访问api的路径问题。

打开这个文件ui\src\app\global-interceptor.service.js
这是angularjs的全局拦截器,ajax请求响应 共同部分在这里 。
默认的ajax请求,访问如“/api/**”这样的路径,是会去找当前页面说在主机的路径。实际访问的完整路径应该是"http://192.168.1.222:8080/api/**"  app里面,js运行在本地,而服务url在远程。按默认的就无法访问服务了
global-interceptor.service.js找到这里
 if (config.url.startsWith('/api/'))
    {
        onfig.url=CUSTOMHOST+config.url;

    }
CUSTOMHOST 是我自定义的主机+端口,写你实际服务器就可以了var CUSTOMHOST=" http://192.168.1.101:8888";另外下面response的url判断改下就ok了。

websocket服务器地址同样需要修改

\ui\src\app\api\telemetry-websocket.service.js

完成以上配置后,把前段用webpack打包后,生成html,js 等文件,放到app中,打包即可。

需要懂app打包技术。

 

相关概念

  • Attributes(https://thingsboard.io/docs/user-guide/attributes/):设备属性
  • Telemetry(https://thingsboard.io/docs/user-guide/telemetry/):设备数据
  • RPC(https://thingsboard.io/docs/user-guide/rpc/):服务器与设备间通信
  • 租户tenant:可以将ThingsBoard租户视为独立的业务实体:拥有或生产设备的个人或组织。
  • 部件库
  • 客户管理:租户和客户的关系,每个客户有对应的资产和设备
  • 实体视图:类似于SQL数据库视图,它限制了基础表暴露给外部世界的程度,TB EV限制了设备或资产遥测和属性暴露给客户的程度。 作为租户管理员,您可以为每个设备或资产创建多个EV,并将其分配给不同的客户。
  • use case:
    与多个客户同时共享特定设备或资产数据。 由于TB安全模型的限制,以前的EV功能无法实现。
    允许特定客户用户查看收集的数据(例如传感器读数),但隐藏调试信息,如电池电量,系统错误等。
    设备即服务(DaaS)模型,其中设备在不同时间段收集的数据属于不同的客户。

数据发送

#遥测数据发送规则
curl -v -X POST -d @dummy_data.json http://<你的IP>:<开放的端口(一般是80)>/api/v1/<访问令牌>

curl -v -X POST -d '{"temperature":21, "humidity":55.0, "active": false}' http://iot.test.com/api/v1/A1_TEST_TOKEN/telemetry --header "Content-Type:application/json"

#发送属性数据
curl -v -X POST -d '{"firmware_version":"1.0.1", "serial_number":"SN-001"}' http://iot.test.com/api/v1/A1_TEST_TOKEN/attributes --header "Content-Type:application/json"

#发送遥测数据
curl -v -X POST -d '{"temperature":21, "humidity":55.0, "active": false}' http://localhost:8080/api/v1/A1_TEST_TOKEN/telemetry --header "Content-Type:application/json"

登陆及数据查看

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' -d '{"username":"tenant@thingsboard.org", "password":"tenant"}' 'http://iot.test.com/api/auth/login'

curl -v -X GET http://iot.test.com/api/plugins/telemetry/DEVICE/e00c4cd0-a885-11e9-884f-57005a69df9c/keys/timeseries \
--header "Content-Type:application/json" \
--header "X-Authorization:Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ0ZW5hbnRAdGhpbmdzYm9hcmQub3JnIiwic2NvcGVzIjpbIlRFTkFOVF9BRE1JTiJdLCJ1c2VySWQiOiJkZmE5NmM1MC1hODg1LTExZTktODg0Zi01NzAwNWE2OWRmOWMiLCJlbmFibGVkIjp0cnVlLCJpc1B1YmxpYyI6ZmFsc2UsInRlbmFudElkIjoiZGY2N2NmNzAtYTg4NS0xMWU5LTg4NGYtNTcwMDVhNjlkZjljIiwiY3VzdG9tZXJJZCI6IjEzODE0MDAwLTFkZDItMTFiMi04MDgwLTgwODA4MDgwODA4MCIsImlzcyI6InRoaW5nc2JvYXJkLmlvIiwiaWF0IjoxNTYzNzc3NDQ5LCJleHAiOjE1NjM3ODY0NDl9.37XPIGd_A2Wpvzk8DJSSnAaXpTvcEbptikgaTK9r5654jyg7A2OklkDTGFRX2OSLZquv7ywpO38iDUt-RfHMCw"


参考资料

参考网址:https://thingsboard.io/docs/getting-started-guides/helloworld/

github地址:https://github.com/thingsboard/thingsboard

演示环境:https://demo.thingsboard.io/login。注册时总提示“请确认不是机器人” 需要google验证

 

  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
接触Thingsboard用得到!!! 目录 1  参考资料 5  文档目的 6 第一章 项目框架整理说明 7 1.1 项目框架说明 7 1.1.1 package包功能描述 8 1.1.2 thingsboard开发主要涉及到的包 10 1.1.3 thingsboard代码类及接口说明 10 第二章 thingsboard涉及到的流程图 12 2.1 物联网网关架构 12 2.2 ThingsBoard微服务架构 13 2.3 Thingsboard产品架构 13 2.4 Thingsboard规则引擎 14 2.5 ThingsBoard Architecture 15 第三章 项目框架涉及到的第三方包或插件 17 3.1 Thingsboard 包 17 第四章 ThingsBoard设备连接协议 23 4.1 订阅消息传递协议(MQTT) 23 4.2 请求响应模式(CoAP) 23 4.3 请求响应模式(HTTP ) 24 第五章 ThingsBoard打包 25 5.1 后端打包 25 5.2 前端打包方UI 25 第六章 ThingsBoard框架日志 26 第七章 ThingsBoard数据库 目录 目录 1  参考资料 5  文档目的 6 第一章 项目框架整理说明 7 第二章 thingsboard涉及到的流程图 12 第三章 项目框架涉及到的第三方包或插件 17 第四章 ThingsBoard设备连接协议 23 第五章 ThingsBoard打包 25 第六章 ThingsBoard框架日志 26 第七章 ThingsBoard数据库 27 第八章 官网主要文档目录 28 第九章 前端技术概述 29 第十章 关于Thingsboard开发环境部署 30 第十一章 数据库表结构 32 错误!未定义书签。 7.1 关系数据库(使用了2个数据库) 27 7.2 非关系数据库(redis) 27 第八章 官网主要文档目录 28 第九章 前端技术概述 29 9.1 前端包括哪些技术点 29 9.2 前端技术描述 29 第十章 关于Thingsboard开发环境部署 30 第十一章 数据库表结构 32

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值