草庐IT

ThingsBoard入门实战(一):物联网平台 ThingsBoard 简介

AI原吾 2024-04-22 原文

文章目录

物联网平台 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 的基本使用。
下节课,就从为用户分配第一台设备开始。

有关ThingsBoard入门实战(一):物联网平台 ThingsBoard 简介的更多相关文章

  1. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  2. 微信小程序开发入门与实战(Behaviors使用) - 2

    @作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors    1、什么是behaviors    2、behaviors的工作方式    3、创建behavior    4、导入并使用behavior    5、behavior中所有可用的节点    6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors    1、什么是behaviorsbehaviors是小程序中,用于实现

  3. 【Java入门】使用Java实现文件夹的遍历 - 2

    遍历文件夹我们通常是使用递归进行操作,这种方式比较简单,也比较容易理解。本文为大家介绍另一种不使用递归的方式,由于没有使用递归,只用到了循环和集合,所以效率更高一些!一、使用递归遍历文件夹整体思路1、使用File封装初始目录,2、打印这个目录3、获取这个目录下所有的子文件和子目录的数组。4、遍历这个数组,取出每个File对象4-1、如果File是否是一个文件,打印4-2、否则就是一个目录,递归调用代码实现publicclassSearchFile{publicstaticvoidmain(String[]args){//初始目录Filedir=newFile("d:/Dev");Datebeg

  4. ES基础入门 - 2

    ES一、简介1、ElasticStackES技术栈:ElasticSearch:存数据+搜索;QL;Kibana:Web可视化平台,分析。LogStash:日志收集,Log4j:产生日志;log.info(xxx)。。。。使用场景:metrics:指标监控…2、基本概念Index(索引)动词:保存(插入)名词:类似MySQL数据库,给数据Type(类型)已废弃,以前类似MySQL的表现在用索引对数据分类Document(文档)真正要保存的一个JSON数据{name:"tcx"}二、入门实战{"name":"DESKTOP-1TSVGKG","cluster_name":"elasticsear

  5. HBase Region 简介和建议数量&大小 - 2

    Region是HBase数据管理的基本单位,region有一点像关系型数据的分区。region中存储这用户的真实数据,而为了管理这些数据,HBase使用了RegionSever来管理region。Region的结构hbaseregion的大小设置默认情况下,每个Table起初只有一个Region,随着数据的不断写入,Region会自动进行拆分。刚拆分时,两个子Region都位于当前的RegionServer,但处于负载均衡的考虑,HMaster有可能会将某个Region转移给其他的RegionServer。RegionSplit时机:当1个region中的某个Store下所有StoreFile

  6. 区块链入门教程(6)--WeBASE-Front节点前置服务安装 - 2

    文章目录1.任务背景2.任务目标3.相关知识点4.任务实操4.1安装配置JDK4.2启动FISCOBCOS4.3下载解压WeBASE-Front4.4拷贝sdk证书文件4.5启动节点4.6访问节点4.7检查运行状态5.任务总结1.任务背景FISCOBCOS其实是有控制台管理工具,用来对区块链系统进行各种管理操作。但是对于初学者来说,还是可视化界面更友好,本节就来介绍WeBASE管理平台,这是一款微众银行开源的自研区块链中间件平台,可以降低区块链使用的门槛,大幅提高区块链应用的开发效率。微众银行是腾讯牵头设立的民营银行,在国内民营银行里还是比较出名的。微众银行参与FISCOBCOS生态建设,一定

  7. 物联网MQTT协议详解 - 2

    一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su

  8. Tcl脚本入门笔记详解(一) - 2

    TCL脚本语言简介•TCL(ToolCommandLanguage)是一种解释执行的脚本语言(ScriptingLanguage),它提供了通用的编程能力:支持变量、过程和控制结构;同时TCL还拥有一个功能强大的固有的核心命令集。TCL经常被用于快速原型开发,脚本编程,GUI和测试等方面。•实际上包含了两个部分:一个语言和一个库。首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一些互交程序如文本编辑器、调试器和shell。由于TCL的解释器是用C\C++语言的过程库实现的,因此在某种意义上我们又可以把TCL看作C库,这个库中有丰富的用于扩展TCL命令的C\C++过程和函数,所以,Tcl是

  9. Simulink方法总结和避坑指南(一)——Simulink入门与基本调试方法 - 2

    文章目录一、项目场景二、基本模块原理与调试方法分析——信源部分:三、信号处理部分和显示部分:四、基本的通信链路搭建:四、特殊模块:interpretedMATLABfunction:五、总结和坑点提醒一、项目场景  最近一个任务是使用simulink搭建一个MIMO串扰消除的链路,并用实际收到的数据进行测试,在搭建的过程中也遇到了不少的问题(当然这比vivado里面的debug好不知道多少倍)。准备趁着这个机会,先以一个很基本的通信链路对simulink基础和相关的debug方法进行总结。  在本篇中,主要记录simulink的基本原理和基本的SISO通信传输链路(QPSK方式),计划在下篇记

  10. ruby-on-rails - 在服务器上没有互联网访问权限的 Capistrano 部署 - 2

    如何使用Capistrano将Rails应用程序部署到无法访问外部网络或存储库的生产或暂存服务器?我已经设法完成部署的一半,并意识到Capistrano没有在我的本地机器上下载gitrepo,但它首先连接到远程服务器并尝试在那里下载Git存储库。我希望有一个类似Javaee的构建系统,其中创建可交付成果并将该可交付成果发送到服务器。就像您构建.ear文件并将其部署到您想要的任何服务器上一样。显然在RoR中,你被迫(据我所知)在该服务器上构建应用程序,在那里创建一个gem存储库,在那里克隆最新的分支等等。有什么方法可以将准备运行的包发送到远程服务器吗? 最佳答

随机推荐