开源物联网云平台 Thingsboard入门
開源物聯網云平臺 Thingsboard入門
本文主要介紹一下Thingsboard 物聯網云平臺的簡單使用。
一. Thingsboard 基礎知識和架構
ThingsBoard具有以下特點:
1.遙測數據收集功能: 可以可靠地收集和存儲遙測數據,以應對網絡和硬件故障。使用可自定義的Web儀表板或服務器端API訪問收集的數據。
2.開箱即用的多租戶支持多租戶安裝: 單個租戶可能具有多個租戶管理員以及數百萬個設備和客戶。
3.數據可視化: 提供了現成的30個可配置小部件,并能夠使用內置編輯器創建自己的小部件。內置線圖,數字和模擬儀表,地圖等等。
4. 水平可伸縮性: 隨著以集群模式添加新的Thingsboard服務器,受支持的服務器端請求和設備的數量呈線性增加。無停機時間,服務器重啟或應用程序錯誤。
5. 物聯網規則引擎: 基于實體屬性或消息內容,使用靈活的規則鏈處理傳入的設備數據。使用自定義邏輯將數據轉發到外部系統或觸發警報。在警報上配置復雜的通知鏈。增強服務器端功能或使用高度可定制的規則來操作設備。使用拖放規則鏈設計器定義您的應用程序邏輯。
6.容錯: 所有物聯網服務器都是相同的。沒有主人工人或熱備用人員。自動檢測到節點故障。可以在不停機的情況下更換故障節點。使用可靠的NoSQL數據庫復制持久數據。
7.設備管理: 提供注冊和管理設備的功能。允許監視客戶端和供應服務器端設備屬性。為服務器端應用程序提供API,以將RPC命令發送到設備,反之亦然。
8.安全性支持: MQTT和HTTP協議的傳輸加密。支持設備認證和設備憑證管理。
9.資產管理: 提供注冊和管理資產的功能。允許供應服務器端資產屬性并監視相關警報。使用關系建立實體層次結構的能力。
10. 自定義和集成: 使用可自定義的規則鏈,窗口小部件和傳輸實現來擴展默認平臺功能。除了MQTT,CoAP和HTTP支持之外,ThingsBoard用戶還可以使用自己的傳輸實現或自定義現有協議的行為。
11.警報管理: 提供創建和管理與您的實體(設備,資產,客戶等)相關的警報的功能。允許實時警報監視以及將警報傳播到相關實體層次結構。在設備斷開連接或不活動事件時發出警報。
12.100%開源: ThingsBoard已獲得Apache許可2.0的許可,因此您可以在商業產品中免費使用任何它。您甚至可以將其托管為SaaS或PaaS解決方案。
13. 微服務或單片支持為入門或小型環境提供單片部署。提供升級到微服務的功能,以實現高可用性和水平可伸縮性。
14.SQL,NoSQL和混合數據庫支持: 各種數據庫選項,并能夠選擇在何處存儲主要實體以及在何處存儲遙測數據.
總體架構:
系統分層:
Device端:數據采集,需要支持MQTT或HTTP等協議
通訊通道:數據采集監聽
規則引擎:對數據進行過濾,處理
核心業務規則
服務側AIP和GW
用戶端:用戶和應用
測量數據處理:
RPC 過程:
規則引擎:
IoT網關:
規則引擎:
規則VS插件
生命周期
作用域
規則:過濾器,處理器,Action
插件:
處理消息
服務側API請求
WebSocket和應用
持久化和查詢事件
插件間RPC通信
遙測插件-系統插件,負責處理與設備屬性和遙測有關的各種請求。
RPC插件-允許使用REST API對設備執行RPC調用。 RPC調用將使用支持的網絡協議傳遞到設備。
設備消息傳遞插件-允許分配給相同客戶交換事件的設備。
發送郵件插件-允許發送電子郵件。您可以指定郵件服務器屬性。有關更多詳細信息,請參見插件文檔。
Kafka插件-允許將遙測消息推送到Apache Kafka。有關更多詳細信息,請參見插件文檔。
RabbitMQ插件-允許將遙測消息推送到RabbitMQ。有關更多詳細信息,請參見插件文檔。
REST API呼叫插件-允許使用REST API將遙測消息推送到外部服務器。有關更多詳細信息,請參見插件文檔。 時間RPC插件-允許從設備發送RPC請求以獲取當前服務器端時間戳。
API-REST API
http://YOUR_HOST:PORT/swagger-ui.html 比如:http://localhost:9090/swagger-ui.html#/
獲取tokens:
curl -X POST --header ‘Content-Type: application/json’ --header ‘Accept: application/json’ -d ‘{“username”:“tenant@thingsboard.org”, “password”:“tenant”}’ 'http://THINGSBOARD_URL/api/auth/login‘
使用tokens:X-Authorization
基本消息參見MQTT消息
設備連接:
Topic: v1/gateway/connect Message: {“device”:“Device A”}
Topic: v1/gateway/disconnect Message: {“device”:“Device A”}
屬性API:
Topic: v1/gateway/attributes Message: {“Device A”:{“attribute1”:“value1”, “attribute2”: 42}, “Device B”:{“attribute1”:“value1”, “attribute2”: 42}}
Topic: v1/gateway/attributes/request Message: {“id”: $request_id, “device”: “Device A”, “client”: true, “key”: “attribute1”}
二. 從源代碼編譯的方法和注意事項
mvn clean install -DskipTests
我第一次編譯時遇到了錯誤,折騰了好幾次,
靠譜的方法如下: 選擇一個你要編譯的release 分支
$ git branch -a
master
- release-2.4
remotes/origin/HEAD -> origin/master
remotes/origin/develop/2.4
remotes/origin/develop/3.0
remotes/origin/feature/backpressure
remotes/origin/feature/claiming
remotes/origin/feature/edge
remotes/origin/feature/geofencing
remotes/origin/feature/missing-translate-ua-ru
remotes/origin/feature/security-updates
remotes/origin/feature/spring-boot-2
remotes/origin/feature/sql-rate-limits
remotes/origin/feature/swagger-config-to-file
remotes/origin/master
remotes/origin/openjdk8
remotes/origin/pgrisu-features/add_optional_widget_title_tooltip
remotes/origin/pgrisu-features/widget_entity_datakeys_mixed_creation_order
remotes/origin/release-1.0
remotes/origin/release-1.1
remotes/origin/release-1.2
remotes/origin/release-1.3
remotes/origin/release-1.4
remotes/origin/release-2.0
remotes/origin/release-2.2
remotes/origin/release-2.3
remotes/origin/release-2.4
remotes/origin/revert-1637-release-2.3-entity-view-cn
remotes/origin/revert-1642-mqtt-keep-alive-fix
remotes/origin/revert-1692-1686-No-response-to-client-side-RPC-via-CoAP
git checkout release-2.4
#然后執行:
mvn clean install -DskipTests
中間遇到多次 node.js 編譯的問題, 基本都是權限問題引起的,
注意:1.要確保你的當前用戶可以修改和當前用戶目錄下的.npm/目錄
2.確保源代碼目錄下的文件夾你都有訪問權限。
之前因為遇到了權限問題,使用了sudo 導致編譯老是出問題。
正常情況下用當前用戶編譯即可。
三. 安裝部署
docker 單實例安裝: start-thingsboard-docker.sh
把下面的代碼拷貝到文件start-thingsboard-docker.sh,然后添加執行權限 chmod +x start-thingsboard-docker.sh ,然后執行即可.
首次啟動需要幾分鐘時間。
用戶類型有3種,密碼賬號如上所示.
系統管理員: sysadmin@thingsboard.org 密碼: sysadmin
租戶管理員: tenant@thingsboard.org 密碼: tenant
用戶賬號: customer@thingsboard.org 密碼: customer
四. 測試驗證
使用系統管理員登陸:
租戶管理員登陸:
測試: 添加一個IoT設備,然后持續持續的發送數據, 然后讀取和展示
使用租戶管理員登陸: 租戶管理員: tenant@thingsboard.org 密碼: tenant
添加成功后,點擊左上角的 設備–》(你的設備名稱)
復制令牌和復制設備ID 待會會用到.
測試往Thingsboard 發送數據.
把下面的python 腳本保存為simple-mqtt-python.py
#執行環境是python3
執行python simple-mqtt-python.py
這時打開網頁 設備–>happy-device 就可以看到 上傳到Thingsboard 的實時數據
然后點擊右下角的 紅色打勾, 應用更改。即可生效。
訪問實時數據:http://localhost:9090/api/v1/xWVlx8J6tkdxyrf8yvC7/attributes
export JWT_TOKEN=“xWVlx8J6tkdxyrf8yvC7”
curl -v -X GET http://localhost:9090/api/plugins/telemetry/DEVICE/2b58cc70-e9ab-11e9-9d84-7f35a90422a9/keys/timeseries
–header “Content-Type:application/json”
–header “X-Authorization: $JWT_TOKEN”
總結
以上是生活随笔為你收集整理的开源物联网云平台 Thingsboard入门的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++分治法求最大最小值实现_程序员:算
- 下一篇: pycharm自带python环境_Py