ThingsBoard是一个开源平台,用于收集和可视化物联网设备的数据。可以将来自任意数量设备的数据发送到云服务器,在云服务器中可以通过可自定义的仪表板查看或共享。
本指南将介绍如何在Linode上安装ThingsBoard并使用Raspberry Pi将简单的遥测数据发送到云仪表板。
注意: 本指南将使用带有Sense HAT的Raspberry Pi 3 。您可以替换任何能够发送遥测数据的设备,或者
curl
在不使用任何外部设备的情况下用于试验ThingsBoard。
ThingsBoard在Java 8上运行,建议使用Oracle JDK。
software-properties-common
:
sudo apt install software-properties-commonjava8
请java9
在命令中更改为:
sudo apt install oracle-java8-installerthingsboard
用户设置密码并授予对数据库的访问权限:
sudo -u postgres psql thingsboard ALTER USER thingsboard WITH PASSWORD 'thingsboard'; GRANT ALL PRIVILEGES ON DATABASE thingsboard TO thingsboard; \q/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:}"
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}"
localhost:8080
默认情况下,ThingsBoard会监听。出于安全考虑,最好通过反向代理服务仪表板。本指南将使用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;
}
}
模拟账户登录tenant@thingsboard.org
和密码是tenant
。登录后,您应该将其更改为更安全的密码。
注意以下步骤假定您具有对Raspberry Pi的终端访问权限,并且已配置Sense HAT及其库。有关Sense HAT入门的更多信息,请参阅Raspberry Pi 官方文档。如果您更愿意使用
curl
将模拟数据发送到ThingsBoard,则可以跳过本节。
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 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)
print
语句并取消注释该r = requests.post()
行。还要增加sleep()
时间间隔:
thingsboard.pywhile 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[Unit]
Description=Push telemetry data from Sense HAT to ThingsBoard.
[Service]
Type=simple
ExecStart=/usr/bin/thingsboard.py
[Install]
WantedBy=multi-user.target
注意: 如果您使用的是Raspberry Pi,请跳过此部分。
{
"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"如果服务成功运行,则应每隔60秒将数据传输到ThingsBoard服务器。
ThingsBoard提供的小部件可以轻松编辑,也可以创建新的小部件。可以组合表示来自多个设备的多个数据流的多个小部件,以生成定制的仪表板。然后,这些仪表板可以公开或与客户共享。
有关如何自定义和设置控件和仪表盘的更多信息,请参阅ThingsBoard 部件库和仪表板页面的ThingsBoard Github上回购也有例如仪表板的图像。
有关此主题的其他信息,您可能需要参考以下资源。虽然提供这些是希望它们有用,但请注意,我们无法保证外部托管材料的准确性或及时性。
更多教程请前往腾讯云+社区学习更多知识。
参考文献:《https://www.linode.com/docs/development/iot/install-thingsboard-iot-dashboard/》