ThingsBoard是一套集IOT设备管理、数据采集、数据处理、数据可视化的管理平台。分为社区版、商业版本。
开源版本支持的特性包含
ThingBoard 架构包含:
安装 Docker 环境。自己有两台机器,由于Mac的资源不够。所以这次环境安装用Windows系统,使用docker 安装 ThingsBoard。Windows Docker 安装请自行百度。
使用Docker 镜像,ThingsBoard 单节点支持三种不同类型的数据库。
我们使用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 调用端口70705683-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
服务启动成功后,如上图
浏览器输入http://{your-host-ip}:8080
账号/密码 Thingsboard 提供三种不同类型的账号,分配给每种用户类型的功能是不一样的。
# 查看日志
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
使用租户账号,登录控制台系统
# 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
点击 设备菜单,点击 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