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

产品介绍

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

产品特性

开源版本支持的特性包含

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

产品架构

Thingsboard 安装 设备接入 组件可视化_第1张图片

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

消息队列选择

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

内容说明

  • 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

Thingsboard 安装 设备接入 组件可视化_第2张图片

服务启动成功后,如上图

登录控制台

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

Thingsboard 安装 设备接入 组件可视化_第3张图片

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

Thingsboard 安装 设备接入 组件可视化_第4张图片

Thingsboard 安装 设备接入 组件可视化_第5张图片

Thingsboard 安装 设备接入 组件可视化_第6张图片

常用功能

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

# 停止容器
docker-compose stop

#启动容器
docker-compose start

系统升级

$ 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

接入设备

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

创建设备

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

Thingsboard 安装 设备接入 组件可视化_第7张图片

Thingsboard 安装 设备接入 组件可视化_第8张图片

连接设备

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

Thingsboard 安装 设备接入 组件可视化_第9张图片

  • 发送数据。 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"

或者使用POSTMAN

Thingsboard 安装 设备接入 组件可视化_第10张图片

检查数据

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

Thingsboard 安装 设备接入 组件可视化_第11张图片

组件可视化

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

创建仪表板

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

Thingsboard 安装 设备接入 组件可视化_第12张图片

  • 打开刚才创建的仪表盘

Thingsboard 安装 设备接入 组件可视化_第13张图片

  • 进入编辑模式 新增实体

Thingsboard 安装 设备接入 组件可视化_第14张图片

新增实体

关联之前的设备

Thingsboard 安装 设备接入 组件可视化_第15张图片

Thingsboard 安装 设备接入 组件可视化_第16张图片

添加部件

Thingsboard 安装 设备接入 组件可视化_第17张图片

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

Thingsboard 安装 设备接入 组件可视化_第18张图片

  • 添加数据源 关联实体

Thingsboard 安装 设备接入 组件可视化_第19张图片

Thingsboard 安装 设备接入 组件可视化_第20张图片

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

测试程序

#!/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

最终效果

Thingsboard 安装 设备接入 组件可视化_第21张图片

你可能感兴趣的:(MQTT,Thingsboard,物联网,iot,java)