好東西分享給大家
==========================================================
什么是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登錄頁面:

模擬賬戶登錄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 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儀表板,然后在“ 設備”菜單中單擊設備的卡。從結果詳細信息頁面中選擇最新的遙測選項卡。您應該看到設備的溫度,濕度和壓力數據:

-
單擊其中一種數據類型旁邊的復選框,然后單擊“在小組件上顯示”。
-
使用下拉菜單和輪播菜單選擇一個預設小組件,以在儀表板上顯示此數據類型。選擇窗口小部件后,單擊“ 添加到儀表板”。

下一步
ThingsBoard提供的小部件可以輕松編輯,也可以創建新的小部件。可以組合表示來自多個設備的多個數據流的多個小部件,以生成定制的儀表板。然后,這些儀表板可以公開或與客戶共享。
有關如何自定義和設置控件和儀表盤的更多信息,請參閱ThingsBoard 部件庫和儀表板頁面的ThingsBoard Github上回購也有例如儀表板的圖像。
更多信息
有關此主題的其他信息,您可能需要參考以下資源。雖然提供這些是希望它們有用,但請注意,我們無法保證外部托管材料的准確性或及時性。
來源:https://cloud.tencent.com/developer/article/1343322
感謝社區,感謝作者,源與社區一起進步:
IoTSchool物聯網社區Q群:121202538
Thingsboard 話題討論區:https://forum.iotschool.com/topics/node8
歡迎大家加入thingsboard 二次開發討論群:121202538

