物联网平台 ThingsBoard 简介

一、简介

1. 背景

最近很多做设备的朋友和我说,设备接入物联网并进行可视化管理存在困难,主要是以下两点:

一方面,接入物联网平台需要花费大量的时间精力金钱。而且适用性不强,也就是说如果加入新的设备,就需要大量的改动。同时由于没有专业的可视化人员,可视化方面更是一塌糊涂。

另一方面,目前各大厂的物联网平台产品生态封闭。物联网平台之间无法互通,难以满足自由互联的需求。在可视化方面大厂则是各玩各的,无法形成软件资产的有效沉淀。

有没有一种几乎不花钱,还功能强大、扩展性强、使用方便的物联网平台呢?
答案就是Thingsboard。

2. 物联网平台 ThingsBoard

ThingsBoard 作为目前 Github 上最流行的开源物联网平台,可以实现物联网项目的快速开发、管理和扩展, 是中小微企业物联网平台的不二之选。

ThingBoard可以分为四个核心模块:

  • 设备管理
  • 数据接入
  • 规则引擎
  • 部件面板
    在这里插入图片描述

也就是说,ThingsBoard可用于:

  • 设备管理,资产和客户并定义他们之间的关系。
  • 基于设备和资产收集数据并进行可视化。
  • 采集遥测数据并进行相关的事件处理进行警报响应。
  • 基于远程RPC调用进行设备控制。
  • 基于生命周期事件、REST API事件、RPC请求构建工作流。
  • 基于动态设计和响应仪表板向你的客户提供设备或资产的遥测数据。
  • 基于规则链自定义特定功能。
  • 发布设备数据至第三方系统。

涵盖了各种常见的物联网需求,不常见的也可以通过配置和二次开发完美完成。

三个必须了解的网站:

二、安装

方便起见,使用Docker安装ThingsBoard。

  1. 安装DockerDocker-compose
    参考Docker官网和Docker-compose官网安装即可。
  2. 新建docker-compose.yml用于定义安装环境:
vi docker-compose.yml
  1. 编写docker-compose.yml:
    由于 docker 搭建环境非常方便,我们直接使用兼容性最好的thingsboard/tb-postgres镜像。
version: '2.2'
services:
  zookeeper:
    restart: always
    image: "zookeeper:3.5"
    ports:
      - "2181:2181"
    environment:
      ZOO_MY_ID: 1
      ZOO_SERVERS: server.1=zookeeper:2888:3888;zookeeper:2181
  kafka:
    restart: always
    image: wurstmeister/kafka
    depends_on:
      - zookeeper
    ports:
      - "9092:9092"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_LISTENERS: INSIDE://:9093,OUTSIDE://:9092
      KAFKA_ADVERTISED_LISTENERS: INSIDE://:9093,OUTSIDE://kafka:9092
      KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  mytb:
    restart: always
    image: "thingsboard/tb-postgres"
    depends_on:
      - kafka
    ports:
      - "9090:9090"
      - "1883:1883"
      - "5683:5683/udp"
    environment:
      TB_QUEUE_TYPE: kafka
      TB_KAFKA_SERVERS: kafka:9092
    volumes:
      - /data/.mytb-data:/data
      - /data/.mytb-logs:/var/log/thingsboard

说明:

  • mytb - ThingsBoard服务名称
  • restart: always - 在系统重新启动的情况下自动启动ThingsBoard在出现故障的情况下自动重新启动ThingsBoard。
  • image: thingsboard/tb-postgres - docker镜像也可以是thingsboard/tb-cassandra或thingsboard/tb
  • "PORT:PORT" 顺序是 “本地端口:Docker容器内端口”
    8080:9090 - 将本地端口9090转发至Docker容器内的HTTP端口9090
    1883:1883 - 将本地端口1883转发至Docker容器内的MQTT端口1883
    5683:5683 - 将本地端口5683转发至Docker容器内的COAP端口5683
  • "DIR:DIR" 顺序是 “本地主机目录:Docker容器内目录”
    /data/.mytb-data:/data - 将主机的目录/data/.mytb-data挂载到ThingsBoard数据目录
    /data/.mytb-logs:/var/log/thingsboard - 将主机的目录/data/.mytb-logs挂载到ThingsBoard日志目录
  1. 授予目录权限
    在启动Docker容器之前请运行以下命令以创建用于存储数据和日志的目录然后将其所有者更改为Docker容器用户,以便能够更改用户使用chown命令该命令需要sudo权限(该命令将要求sudo访问的密码):
mkdir -p /data/.mytb-data && sudo chown -R 799:799 /data/.mytb-data
mkdir -p /data/.mytb-logs && sudo chown -R 799:799 /data/.mytb-logs
  1. 使用 docker-compose 启动容器
    在包含docker-compose.yml文件的目录打开终端执行docker compose命令:
docker-compose pull
docker-compose up

如果需要后台启动,就使用:

docker-compose up -d

执行完命令后等待启动,
可以先看看 docker容器的状态

docker ps
  1. 查看ThingsBoard平台并修改密码
    然后在浏览器中打开(例如http://localhost:9090)。
    在这里插入图片描述

默认用户名/密码如下:
系统管理员: sysadmin@thingsboard.org / sysadmin
租户管理员: tenant@thingsboard.org / tenant
客户: customer@thingsboard.org / customer

安全起见,修改下密码:
主页右上角三个点 – 属性 – 更改密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接下来就是发挥动手能力的时候了~

三、探索

1. 用户

先简单看下三类用户的面板,
系统管理员
在这里插入图片描述

租户
在这里插入图片描述

客户
在这里插入图片描述

显然租户才是实际上的掌控者~
三者关系如下:请添加图片描述

可以看到,默认租户下面有三个客户
在这里插入图片描述

客户A的用户有两个,我们刚使用的是这个叫customer的用户
在这里插入图片描述

可见客户是一个抽象概念,也就是说客户用户才是真用户。

2. 设备

设备主要分属性和遥测,我们下一节会详细讲解,这里先看下最核心的遥测:
在这里插入图片描述

遥测也就是我们常说的设备测量状态,比如温度计的温度,灯的亮度等等,
由于是新设备,所以是没有遥测值的,我们可以用http协议发一个。

3. 模拟发送遥测值

3.1 获取对接设备的访问令牌
在这里插入图片描述
这里使用默认的A1_TEST_TOKEN

3.2 使用curl发送HTTP请求

curl -v -X POST -d '{"turn":"1","light":"90"}' http://103.44.238.67:9090/api/v1/A1_TEST_TOKEN/telemetry --header "Content-Type:application/json"

3.3 查看更新后的遥测值
在这里插入图片描述

四、下一步

我们在这节简单了解了 ThingsBoard 这个物联网平台大杀器,
后面的主要工作就是通过在 ThingsBoard 上开发一个路灯的项目,帮助大家熟悉 ThingsBoard 的基本使用。
下节课,就从为用户分配第一台设备开始。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐