什么是ThingsBoard?

ThingsBoard是一个开源平台,用于收集和可视化物联网设备的数据。可以将来自任意数量设备的数据发送到云服务器,在云服务器中可以通过可自定义的仪表板查看或共享。

本指南将介绍如何在Linode上安装ThingsBoard并使用Raspberry Pi将简单的遥测数据发送到云仪表板。

注意: 本指南将使用带有Sense HAT的Raspberry Pi 3 。您可以替换任何能够发送遥测数据的设备,或者curl在不使用任何外部设备的情况下用于试验ThingsBoard。

安装ThingsBoard

ThingsBoard在Java 8上运行,建议使用Oracle JDK。

  • 安装software-properties-common:

sudo apt install software-properties-common

  • 添加Oracle PPA存储库:

sudo apt-add-repository ppa:webupd8team/java

  • 更新您的系统:

sudo apt update

  • 安装Oracle JDK。要安装Java 9 JDK,java8请java9在命令中更改为:

sudo apt install oracle-java8-installer

  • 检查您的Java版本:

java -version

设置PostgreSQL

  • 安装PostgreSQL:

sudo apt install postgresql postgresql-contrib

  • 为ThingsBoard创建数据库和数据库用户:

sudo -u postgres createdb thingsboard sudo -u postgres createuser thingsboard

  • 为thingsboard用户设置密码并授予对数据库的访问权限:

sudo -u postgres psql thingsboard ALTER USER thingsboard WITH PASSWORD ‘thingsboard’; GRANT ALL PRIVILEGES ON DATABASE thingsboard TO thingsboard; \q

  • 安装ThingsBoard

下载安装包。检查版本页面,并将以下命令中的版本号替换为标记为最新版本的版本:

wget https://github.com/thingsboard/thingsboard/releases/download/v1.3.1/thingsboard-1.3.1.deb

安装ThingsBoard:

sudo dpkg -i thingsboard-1.3.1.deb

/etc/thingsboard/conf/thingsboard.yml在文本编辑器中打开并注释掉该HSQLDB DAO Configuration部分:

/etc/thingsboard/conf/thingsboard.yml

# HSQLDB DAO Configuration
#spring:
#  data:
#    jpa:
#      repositories:
#        enabled: "true"
#  jpa:
#    hibernate:
#      ddl-auto: "validate"
#    database-platform: "org.hibernate.dialect.HSQLDialect"
#  datasource:
#    driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.hsqldb.jdbc.JDBCDriver}"
#    url: "${SPRING_DATASOURCE_URL:jdbc:hsqldb:file:${SQL_DATA_FOLDER:/tmp}/thingsboardDb;sql.enforce_size=false}"
#    username: "${SPRING_DATASOURCE_USERNAME:sa}"
#    password: "${SPRING_DATASOURCE_PASSWORD:}"

在同一节中,取消注释PostgreSQL配置块。用thingsboard用户名和密码替换用户名和密码字段thingsboard:

/etc/thingsboard/conf/thingsboard.yml

# PostgreSQL DAO Configuration
spring:data:jpa:repositories:enabled: "true"jpa:hibernate:ddl-auto: "validate"database-platform: "org.hibernate.dialect.PostgreSQLDialect"datasource:driverClassName: "${SPRING_DRIVER_CLASS_NAME:org.postgresql.Driver}"url: "${SPRING_DATASOURCE_URL:jdbc:postgresql://localhost:5432/thingsboard}"username: "${SPRING_DATASOURCE_USERNAME:thingsboard}"password: "${SPRING_DATASOURCE_PASSWORD:thingsboard}"
  • 运行此安装脚本:

sudo /usr/share/thingsboard/bin/install/install.sh --loadDemo

  • 启动ThingsBoard服务:

sudo systemctl enable thingsboard sudo systemctl start thingsboard

NGINX反向代理

localhost:8080默认情况下,ThingsBoard会监听。出于安全考虑,最好通过反向代理服务仪表板。本指南将使用NGINX,但可以使用任何网络服务器。

  • 安装NGINX:

sudo apt install nginx

/etc/nginx/conf.d/thingsboard.conf使用文本编辑器创建并编辑它以匹配下面的示例。替换example.com为您的Linode的公共IP地址或FQDN。

/etc/nginx/conf.d/thingsboard.conf

server {listen 80;listen [::]:80;server_name example.com;location / {# try_files $uri $uri/ =404;proxy_pass http://localhost:8080/;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;}
}
  • 重启NGINX:

sudo systemctl restart nginx

设置ThingsBoard设备

使用Web浏览器导航到您的Linode的IP地址。你应该看到ThingsBoard登录页面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uk7gMwRb-1594816788679)(https://cdn.iotschool.com/photo/2020/e1ebfe92-e173-41d4-99f2-afcb8de1f97f.png?x-oss-process=image/resize,w_1920)]

模拟账户登录tenant@thingsboard.org和密码是tenant。登录后,您应该将其更改为更安全的密码。

  • 在主菜单中,单击“ 设备”图标,然后单击右下角的+图标以添加新设备。

  • 选择设备名称。将设备类型设置为PI。

  • 添加设备后,单击“ 设备”菜单中的图标。单击COPY ACCESS TOKEN复制此设备的API密钥(在下面使用)。
    配置Raspberry Pi

注意以下步骤假定您具有对Raspberry Pi的终端访问权限,并且已配置Sense HAT及其库。有关Sense HAT入门的更多信息,请参阅Raspberry Pi 官方文档。如果您更愿意使用curl将模拟数据发送到ThingsBoard,则可以跳过本节。

  • 基本Python脚本

使用文本编辑器,thingsboard.py在您选择的目录中创建。使用上一节中复制到剪贴板的API密钥添加以下内容:

thingsboard.py

#!/usr/bin/env pythonimport json
import requests
from sense_hat import SenseHat
from time import sleep# ConstantsAPI_KEY          = "<ThingsBoard API Key>"
THINGSBOARD_HOST = "<Linode Public IP Address>"thingsboard_url  = "http://{0}/api/v1/{1}/telemetry".format(THINGSBOARD_HOST, API_KEY)sense = SenseHat()data = {}while True:data['temperature'] = sense.get_temperature()data['pressure']    = sense.get_pressure()data['humidity']    = sense.get_humidity()#r = requests.post(thingsboard_url, data=json.dumps(data))print(str(data))sleep(5)

通过从命令行运行脚本来测试脚本:

python thingsboard.py

基本遥测应每五秒打印到控制台:

{'pressure': 1020.10400390625, 'temperature': 31.81730842590332, 'humidity': 19.72637939453125}
{'pressure': 1020.166259765625, 'temperature': 31.871795654296875, 'humidity': 20.247455596923828}
{'pressure': 1020.119140625, 'temperature': 31.908119201660156, 'humidity': 19.18065643310547}
{'pressure': 1020.11669921875, 'temperature': 31.908119201660156, 'humidity': 20.279142379760742}
{'pressure': 1020.045166015625, 'temperature': 31.92628288269043, 'humidity': 20.177040100097656}

如果脚本正常工作,请删除该print语句并取消注释该r = requests.post()行。还要增加sleep()时间间隔:

thingsboard.py

while True:data['temperature'] = sense.get_temperature()data['pressure']    = sense.get_pressure()data['humidity']    = sense.get_humidity()r = requests.post(thingsboard_url, data=json.dumps(data))sleep(60)

创建系统服务

您现在应该能够从命令行运行脚本,每分钟传输一次温度,压力和湿度数据。但是,为了确保持续发送数据,最好启用一个新服务,该服务将在服务器重新启动时自动运行脚本。

  • 将脚本复制到/usr/bin/并使其可执行:

sudo cp thingsboard.py /usr/bin/thingsboard.py sudo chmod +x /usr/bin/thingsboard.py

  • 创建服务文件以将Python脚本作为服务运行:

/lib/systemd/system/thingsdata.service

[Unit]
Description=Push telemetry data from Sense HAT to ThingsBoard.[Service]
Type=simple
ExecStart=/usr/bin/thingsboard.py[Install]
WantedBy=multi-user.target
  • 启用并启动服务:

sudo systemctl enable thingsdata.service sudo systemctl start thingsdata.service

  • 检查新服务的状态:

sudo systemctl status thingsdata.service

使用cURL发送数据

注意: 如果您使用的是Raspberry Pi,请跳过此部分。

  • 使用虚拟数据创建示例JSON文件:
dummy_data.json
{"temperature": 38,"humidity": 50,"pressure": 1100
}

用于curl向ThingsBoard服务器发送POST请求:

curl -v -X POST -d @dummy_data.json http://$THINGSBOARD_HOST:$THINGSBOARD_PORT/api/v1/$ACCESS_TOKEN/telemetry --header "Content-Type:application/json"

查看ThingsBoard中的数据

如果服务成功运行,则应每隔60秒将数据传输到ThingsBoard服务器。

  • 重新登录浏览器中的ThingsBoard仪表板,然后在“ 设备”菜单中单击设备的卡。从结果详细信息页面中选择最新的遥测选项卡。您应该看到设备的温度,湿度和压力数据:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lnGVTIwn-1594816788685)(https://cdn.iotschool.com/photo/2020/6c71b364-8da3-47cd-8f95-861433261dab.png?x-oss-process=image/resize,w_1920)]

  • 单击其中一种数据类型旁边的复选框,然后单击“在小组件上显示”。

  • 使用下拉菜单和轮播菜单选择一个预设小组件,以在仪表板上显示此数据类型。选择窗口小部件后,单击“ 添加到仪表板”。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HFTXOf0A-1594816788687)(https://cdn.iotschool.com/photo/2020/e60fc810-dbcc-400c-bd95-4956757eb878.png?x-oss-process=image/resize,w_1920)]

下一步

ThingsBoard提供的小部件可以轻松编辑,也可以创建新的小部件。可以组合表示来自多个设备的多个数据流的多个小部件,以生成定制的仪表板。然后,这些仪表板可以公开或与客户共享。

有关如何自定义和设置控件和仪表盘的更多信息,请参阅ThingsBoard 部件库和仪表板页面的ThingsBoard Github上回购也有例如仪表板的图像。

更多信息

有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。

入门 - ThingsBoard

ThingsBoard Github Repo

来源:https://cloud.tencent.com/developer/article/1343322

感谢社区,感谢作者,源与社区一起进步:

欢迎加入ThingsBoard技术交流群


这里可复制Q群号:69998183

关注“云腾五洲”:获取二开ThingsBoard物联网平台演示

交流社区:ThingsKit-ThingsBoard社区

Thingsboard 简单教程:使用 ThingsBoard 查看物联网数据相关推荐

  1. ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 原文:ASP.NET Core Identity 迁移数据 - ASP.NET C ...

  2. thingsboard使用教程

    thingsboard使用教程 CentOS版本安装配置: http://www.ithingsboard.com/docs/user-guide/install/rhel/ 启动服务 启动Thing ...

  3. 最简单DIY基于ESP32CAM的物联网相机系统②(在JAVAWEB服务器实现图片查看器)

    最简单DIY基于ESP32CAM的物联网相机系统系列文章目录 第一篇:最简单DIY基于ESP32CAM的物联网相机系统①(用网页实现拍照图传) 第二篇:最简单DIY基于ESP32CAM的物联网相机系统 ...

  4. 数据可视化工具-小马BI简单教程【大数据专业必学】

    数据可视化工具-小马BI简单教程[大数据专业必学] 高效处理数据 一.数据接入 二.数据处理 三.可视化分析 推荐一款轻量级数据可视化工具--小马BI 这款工具有助于发掘数据驱动业务的价值,对产品,运 ...

  5. mysql数据库根目录恢复_MySQL中数据导入恢复的简单教程

    有两个简单的方法MySQL中的数据加载到MySQL数据库从先前备份的文件. LOAD DATA导入数据: MySQL提供了LOAD DATA语句,作为一个大容量数据加载.下面是一个例子声明中,读取一个 ...

  6. emqx 使用端口_数据传输、存储、展现,EMQ X + TDengine 搭建 MQTT 物联网数据可视化平台...

    物联网数据采集涉及到大量设备接入.海量的时序数据传输,EMQ X 消息中间件与 TDengine 大数据平台的组合技术栈完全能够胜任场景中的海量时间序列监测数据的传输.存储和计算. 数据入库后,往往需 ...

  7. 最简单DIY基于ESP32CAM的物联网相机系统③(在JSP服务器图传相片给所有客户端欣赏)

    最简单DIY基于ESP32CAM的物联网相机系统系列文章目录 第一篇:最简单DIY基于ESP32CAM的物联网相机系统①(用网页实现拍照图传) 第二篇:最简单DIY基于ESP32CAM的物联网相机系统 ...

  8. 物联网数据 时序数据库_有关防止物联网数据泄露的方法的最终清单

    物联网数据 时序数据库 物联网的力量 (The Power of the Internet of Things) A popular definition says that IoT is " ...

  9. Python数据分析与案例教程:分析人口普查数据-欧阳桫-专题视频课程

    Python数据分析与案例教程:分析人口普查数据-379人已学习 课程介绍         本课程将带你全程实现对全国第六次人口普查数据的获取.分析.及可视化图表的制作 课程收益     熟悉和掌握使 ...

最新文章

  1. Syncthing源码解析 - 第三方库
  2. 【Python-ML】SKlearn库性能指标ROC-AUC
  3. Consul入门01 - 安装Consul
  4. Oracle分析函数——函数列表
  5. 牛客 - 降维打击(dp)
  6. python中sort和sorted区别_Python中的 sort 和 sorted的用法与区别
  7. 动态规划|Dynamic Programming
  8. 一周总结汇总_2016-09-18
  9. Vmware Linux设置固定IP
  10. Docker教程小白实操入门(14)--如何使用CMD和ENTRYPOINT指令指定容器启动时要运行的命令
  11. Ngnix 安装、信号量、虚拟主机配置
  12. 删除Navicat注册表
  13. 冯诺依曼计算机硬件系统,冯·诺依曼型计算机硬件组成
  14. 从期刊层面看科研!计算机顶级期刊大盘点(上)
  15. GPS GLONASS数据文件类型解析
  16. 单兵渗透工具-Yakit-Windows安装使用
  17. 基于MSP430G2553点亮TM1637数码管
  18. 国内常用的ntp服务器
  19. Java 字符串与集合练习——词频统计
  20. 拉卡拉支付的这些创新功能,你知道吗?

热门文章

  1. 数字化转型,我只推荐看这两本书
  2. 计算机学硕降20分!2020年中国农业大学硕士生招生考试初试成绩基本要求
  3. 电脑开机将在一分钟后自动重启问题
  4. 帝企鹅日记(史上第二受欢迎记录片 老少皆宜的冰雪童话)
  5. 计算机组成原理学习笔记————计算机指令,MIPS指令集,存储器操作数,数据传送指令,取数存数指令
  6. GB2312编码一级汉字表
  7. php字幕格式,如何给视频添加字幕 快速添加视频字幕|可设置文字样式、位置等...
  8. 气动调节阀的运行特征
  9. 《ZEMAX光学设计超级学习手册》一一2.5 其他
  10. WhatsApp的Erlang世界