thingsboard 简单教程:使用 thingsboard 查看物联网数据 · 物联网平台-威尼斯人最新

tb · 2020年07月15日 · 最后由 回复于 2022年08月19日 · 1126 次阅读
本帖已被设为精华帖!

好东西分享给大家

==========================================================

什么是 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

安装 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 登录页面:

模拟账户登录 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 python

import json
import requests
from sense_hat import sensehat
from time import sleep
# constants

api_key          = ""
thingsboard_host = ""
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 仪表板,然后在 “ 设备” 菜单中单击设备的卡。从结果详细信息页面中选择最新的遥测选项卡。您应该看到设备的温度,湿度和压力数据:
  • 单击其中一种数据类型旁边的复选框,然后单击 “在小组件上显示”。

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

下一步

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

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

更多信息

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

来源:

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

iotschool 物联网社区 q 群:121202538

thingskit 将本帖设为了精华贴 07月15日 20:42
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
网站地图