当前位置:   article > 正文

Thingsboard 安装 设备接入 组件可视化_thingboards

thingboards

产品介绍

ThingsBoard是一套集IOT设备管理、数据采集、数据处理、数据可视化的管理平台。分为社区版、商业版本。

产品特性

开源版本支持的特性包含

  • 自定义属性,平台能够为您的实体分配自定义键值属性(例如配置、数据处理、可视化参数)。
  • 遥测,时间序列相关的API
  • 实体关系,物理建模,以及关联数据的平台级能力
  • 数据可视化,可视化功能包含仪表盘、仪表盘状态、设备实时状态、各种自定义图表
  • 规则引擎,事件处理的数据处理规则定义
  • RPC, 应用程序和仪表盘之间数据数传方式
  • 日志审计,用户活动跟踪,API调用情况跟踪
  • API 限制,指定时间内根据IP请求限制API的调用次数
  • 高级过滤器,根据实体字段、属性进行过滤

产品架构

在这里插入图片描述

ThingBoard 架构包含:

  • 扩展机制,具备良好的横向扩展能力
  • 容错能力,集群中的任一节点都是相同的,没有单点故障
  • 健壮高效,ThingsBoard单节点可以处理数十万的设备,根据实际部署情况,集群可以处理数百万台设备
  • 可定制化,可以轻松的定制功能、规则引擎、其他组件
  • 持久话,数据用不丢失
  • 兼容多种物联网协议

环境搭建

前提条件

安装 Docker 环境。自己有两台机器,由于Mac的资源不够。所以这次环境安装用Windows系统,使用docker 安装 ThingsBoard。Windows Docker 安装请自行百度。

运行软件

使用Docker 镜像,ThingsBoard 单节点支持三种不同类型的数据库。

  • thingsboard/tb-postgres - 使用 PostgreSQL database. 服务器至少需要1GB 内存,建议2-4GB。
  • thingsboard/tb-cassandra - 使用Cassandra 数据库。为了服务器性能至少6GB内存,推荐8BG。
  • thingsboard/tb - 使用内嵌的HSQLDB数据库。不建议在生产环境中使用,可以用来开发测试。

我们使用thingsboard/tb-postgres镜像安装,可以根据自己的实际情况使用上面不同的镜像安装。

首先需要在Docker上挂载两个文件

docker volume create mytb-data
docker volume create mytb-logs
  • 1
  • 2

消息队列选择

ThingsBoard 具体接入多种消息中间件的能力。用来存储消息以及跟其他服务进行通信,支持以下消息中间件:

In Memory 默认使用内存队列,不建议在生产环境使用,对开发友好。

Kafka 推荐在生产环境中使用。对于企业上云、私有化部署很有帮助。

RabblitMQ 负载量不大的时候 也是选项之一。

AWS SQS 亚马逊云消息管理服务,国内大部分企业应该用不上。

Google Pub/sub Google 云消息管理服务,应该也用不上。

Azure Service Bus 微软云消息管理服务平台。

Confluent Cloud 基于Kafka部署的流式管理平台

启动服务

配置文件

创建Docker compose 启动文件 – docker-compose.yml,内容如下

version: '2.2'
services:
  mytb:
    restart: always
    image: "thingsboard/tb-postgres"
    ports:
      - "8080:9090"
      - "1883:1883"
      - "7070:7070"
      - "5683-5688:5683-5688/udp"
    environment:
      TB_QUEUE_TYPE: in-memory
    volumes:
      - mytb-data:/data
      - mytb-logs:/var/log/thingsboard
volumes:
  mytb-data:
    external: true
  mytb-logs:
    external: true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

内容说明

  • 8080:9090 - HTTP服务8080端口,对应容器内部的9090端口
  • 1883:1883 - MQTT协议1883端口
  • 7070:7070 - 远程RPC 调用端口7070
  • 5683-5688:5683-5688/udp - COAP and LwM2M 协议使用的 UDP 端口 5683-5688
  • ~/.mytb-data:/data - mounts the host’s dir ~/.mytb-data ThingsBoard数据目录
  • ~/.mytb-logs:/var/log/thingsboard - mounts the host’s dir ~/.mytb-logs Thingsboard日志目录
  • mytb - 服务的名称
  • restart: always - 服务异常崩溃自动重启机制
  • image: thingsboard/tb-postgres - 容器启动使用的镜像文件名称

启动服务

# 执行一下命令
docker-compose pull
docker-compose up
  • 1
  • 2
  • 3

在这里插入图片描述

服务启动成功后,如上图

登录控制台

浏览器输入http://{your-host-ip}:8080

在这里插入图片描述

账号/密码 Thingsboard 提供三种不同类型的账号,分配给每种用户类型的功能是不一样的。

  • 系统管理员: sysadmin@thingsboard.org / sysadmin

在这里插入图片描述

  • 租户管理员: tenant@thingsboard.org / tenant

在这里插入图片描述

  • 终端用户: customer@thingsboard.org / customer

在这里插入图片描述

常用功能

# 查看日志
docker-compose logs -f mytbpe

# 停止容器
docker-compose stop

#启动容器
docker-compose start
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

系统升级

$ docker pull thingsboard/tb-postgres
$ docker-compose stop
$ docker run -it -v mytb-data:/data --rm thingsboard/tb-postgres upgrade-tb.sh
$ docker rm mytb
$ docker-compose up
  • 1
  • 2
  • 3
  • 4
  • 5

接入设备

使用租户账号,登录控制台系统

创建设备

  • 点击设备 -> 新增 按钮,添加设备

在这里插入图片描述

在这里插入图片描述

连接设备

  • 获取秘钥 点击数据行,在弹出的DIV上 点击 复制访问令牌

在这里插入图片描述

  • 发送数据。 Thingboard支持不同的方式模拟设备发送数据,HTTP、MQTT、Coap、其它协议等,我们使用最简单的HTTP 协议进行测试
# curl -v -X POST -d "{\"temperature\": 25}" $THINGSBOARD_HOST_NAME/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"
# 需要按照实际情况 替换上面的IP、token信息

curl -v -X POST -d "{\"temperature\": 25}" http://192.168.0.5:8080/api/v1/9l82TTUZw6VnYsuVXsTN/telemetry --header "Content-Type:application/json"
  • 1
  • 2
  • 3
  • 4

或者使用POSTMAN

在这里插入图片描述

检查数据

点击 设备菜单,点击 http-device 这一行数据

在这里插入图片描述

组件可视化

Thingsboard支持自定义可视化组件,我们以上面添加的设备作为前提,小试一波。

创建仪表板

点击仪表板库 选择 创建新的仪表盘

在这里插入图片描述

  • 打开刚才创建的仪表盘

在这里插入图片描述

  • 进入编辑模式 新增实体

在这里插入图片描述

新增实体

关联之前的设备

在这里插入图片描述

在这里插入图片描述

添加部件

在这里插入图片描述

单击上面的图标,选择对应的展示图表

在这里插入图片描述

  • 添加数据源 关联实体

在这里插入图片描述

在这里插入图片描述

如上图,展示报表已经出来了,但是目前是空的,现在写一个测试小程序让他动起来

测试程序

#!/bin/bash
# 每间隔一秒 发送一次温度数据
j=60
for ((i=20; i<=j; i++))
do
echo $i
tt=$i
curl -v -X POST -d "{\"temperature\": $i}" http://192.168.0.5:8080/api/v1/9l82TTUZw6VnYsuVXsTN/telemetry --header "Content-Type:application/json"
sleep 1
if [ $tt -eq 60 ];then
i=0
fi
done
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

最终效果

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/638626
推荐阅读
  

闽ICP备14008679号