設備遙測與展示
一、設備基礎概念
觀察下設備面板,有以下幾部分構成:
- 屬性:基礎信息,比較穩定
- 遙測:需要測量的狀態信息
- 警告:設備或者設備監控的狀態出現問題
- 事件:發生在設備上的事件
- 關聯:設備屬於誰,在哪個資產上等等
- 審計日志:誰在平台上對設備做了什么操作
其中屬性是基礎,遙測是核心。
二、屬性
ThingsBoard能夠給實體分配自定義屬性並進行管理。
屬性 代表設備基本信息, 以key-value格式存在, 可以與IoT設備無縫兼容。
屬性分客戶端屬性
,服務端屬性
和共享屬性
, 使用官方的圖示比較容易理解。
-
客戶端屬性
-
服務端屬性
-
共享屬性
三、遙測
物聯網的核心目的之一就是通過傳感器采集相應的遙測數據上傳。對此,ThingsBoard 提供了大量與遙測數據操作相關的功能:
- 采集 使用MQTT, CoAP或者HTTP協議采集設備數據。
- 存儲 在Cassandra(高效、可擴展、能容錯的NoSQL數據庫)中存儲時序數據。
- 查詢 查詢最新時序數據值,或查詢特定時間段內的所有數據。
- 訂閱 使用websockets訂閱數據更新(用於可視化或實時分析)。
- 可視化 使用可配置和可配置的小部件以及儀表盤可視化時序數據。
- 過濾和分析 使用靈活的規則引擎過濾和分析數據(/docs/user-guide/rule-engine/)。
- 事件警報 根據采集的數據觸發事件警報。
- 數據傳輸 過規則引擎節點實現與外部數據交互(例如Kafka或RabbitMQ規則節點)
官方有個說明藍圖,一目了然:
四、路燈設備定義
先定義一個簡單的路燈設備,具有4個遙測狀態:
- 開關
- 亮度
- 電量
- 位置信息
通過章節的進行,逐步將這幾個遙測狀態進行處理和展示。
五、設備模擬
想要連接設備,首先要搞清楚下載上傳數據的API 以及 設備和平台連接的API。
設備API
和雲平台進行通信的主要api是device api,
部署好平台就直接可以在瀏覽器中訪問http://IP:9090/swagger-ui/#/device-api-controller
遙測模擬
從Github下載有設備信息上傳功能
的設備客戶端的sdk
。
https://github.com/thingsboard/thingsboard-python-client-sdk
或者直接使用pip3安裝:
pip3 install tb-mqtt-client
通過mqtt鏈接,向設備平台上傳模擬設備的遙測數據:
import random
from time import sleep
from tb_device_mqtt import TBDeviceMqttClient, TBPublishInfo
def send_to(token,telemetry):
client = TBDeviceMqttClient("IP", token)
client.connect()
client.send_telemetry(telemetry)
result = client.send_telemetry(telemetry)
success = result.get() == TBPublishInfo.TB_ERR_SUCCESS
print(success)
client.disconnect()
def mock_telemetry():
t = {
"turn": 1,
"light": random.choice(range(0,100)),
"battery":random.choice(range(10,60)),
}
return t
if __name__ == '__main__':
while True:
sleep(3)
tokens = ["token_lamp_1"]
for token in tokens:
telemetry = mock_telemetry()
send_to(token,telemetry)
請注意!
pip上並不是最新版本,如果需要使用http,需要下載然后直接本地安裝
git clone git@github.com:thingsboard/thingsboard-python-client-sdk.git
六、電量展示
儀表盤
部件:電量展示
按圖操作就好。
設為首頁
可以看到, 首頁已經變成了設備的電量圖示。
七、下一步
這節我們主要講解了設備遙測的模擬和展示,下節是另一個核心功能:命令下發。