物聯網平台 ThingsBoard 簡介
一、簡介
1. 背景
最近很多做設備的朋友和我說,設備接入物聯網並進行可視化管理存在困難,主要是以下兩點:
一方面,接入物聯網平台需要花費大量的時間精力金錢。而且適用性不強,也就是說如果加入新的設備,就需要大量的改動。同時由於沒有專業的可視化人員,可視化方面更是一塌糊塗。
另一方面,目前各大廠的物聯網平台產品生態封閉。物聯網平台之間無法互通,難以滿足自由互聯的需求。在可視化方面大廠則是各玩各的,無法形成軟件資產的有效沉淀。
有沒有一種幾乎不花錢,還功能強大、擴展性強、使用方便的物聯網平台呢?
答案就是Thingsboard。
2. 物聯網平台 ThingsBoard
ThingsBoard 作為目前 Github 上最流行的開源物聯網平台,可以實現物聯網項目的快速開發、管理和擴展, 是中小微企業物聯網平台的不二之選。
ThingBoard可以分為四個核心模塊:
- 設備管理
- 數據接入
- 規則引擎
- 部件面板
也就是說,ThingsBoard可用於:
- 設備管理,資產和客戶並定義他們之間的關系。
- 基於設備和資產收集數據並進行可視化。
- 采集遙測數據並進行相關的事件處理進行警報響應。
- 基於遠程RPC調用進行設備控制。
- 基於生命周期事件、REST API事件、RPC請求構建工作流。
- 基於動態設計和響應儀表板向你的客戶提供設備或資產的遙測數據。
- 基於規則鏈自定義特定功能。
- 發布設備數據至第三方系統。
- …
涵蓋了各種常見的物聯網需求,不常見的也可以通過配置和二次開發完美完成。
三個必須了解的網站:
二、安裝
方便起見,使用Docker安裝ThingsBoard。
- 安裝
Docker
和Docker-compose
參考Docker官網和Docker-compose官網安裝即可。 - 新建
docker-compose.yml
用於定義安裝環境:
vi docker-compose.yml
- 編寫
docker-compose.yml
:
由於docker
搭建環境非常方便,我們直接使用兼容性最好的thingsboard/tb-postgres
鏡像。
version: '2.2'
services:
zookeeper:
restart: always
image: "zookeeper:3.5"
ports:
- "2181:2181"
environment:
ZOO_MY_ID: 1
ZOO_SERVERS: server.1=zookeeper:2888:3888;zookeeper:2181
kafka:
restart: always
image: wurstmeister/kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
environment:
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_LISTENERS: INSIDE://:9093,OUTSIDE://:9092
KAFKA_ADVERTISED_LISTENERS: INSIDE://:9093,OUTSIDE://kafka:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
volumes:
- /var/run/docker.sock:/var/run/docker.sock
mytb:
restart: always
image: "thingsboard/tb-postgres"
depends_on:
- kafka
ports:
- "9090:9090"
- "1883:1883"
- "5683:5683/udp"
environment:
TB_QUEUE_TYPE: kafka
TB_KAFKA_SERVERS: kafka:9092
volumes:
- /data/.mytb-data:/data
- /data/.mytb-logs:/var/log/thingsboard
說明:
mytb
- ThingsBoard服務名稱restart: always
- 在系統重新啟動的情況下自動啟動ThingsBoard在出現故障的情況下自動重新啟動ThingsBoard。image: thingsboard/tb-postgres
- docker鏡像也可以是thingsboard/tb-cassandra或thingsboard/tb"PORT:PORT"
順序是 “本地端口:Docker容器內端口”
8080:9090 - 將本地端口9090轉發至Docker容器內的HTTP端口9090
1883:1883 - 將本地端口1883轉發至Docker容器內的MQTT端口1883
5683:5683 - 將本地端口5683轉發至Docker容器內的COAP端口5683"DIR:DIR"
順序是 “本地主機目錄:Docker容器內目錄”
/data/.mytb-data:/data - 將主機的目錄/data/.mytb-data掛載到ThingsBoard數據目錄
/data/.mytb-logs:/var/log/thingsboard - 將主機的目錄/data/.mytb-logs掛載到ThingsBoard日志目錄
- 授予目錄權限
在啟動Docker容器之前請運行以下命令以創建用於存儲數據和日志的目錄然后將其所有者更改為Docker容器用戶,以便能夠更改用戶使用chown命令該命令需要sudo權限(該命令將要求sudo訪問的密碼):
mkdir -p /data/.mytb-data && sudo chown -R 799:799 /data/.mytb-data
mkdir -p /data/.mytb-logs && sudo chown -R 799:799 /data/.mytb-logs
- 使用 docker-compose 啟動容器
在包含docker-compose.yml文件的目錄打開終端執行docker compose命令:
docker-compose pull
docker-compose up
如果需要后台啟動,就使用:
docker-compose up -d
執行完命令后等待啟動,
可以先看看 docker容器的狀態
docker ps
- 查看ThingsBoard平台並修改密碼
然后在瀏覽器中打開(例如http://localhost:9090)。
默認用戶名/密碼如下:
系統管理員: sysadmin@thingsboard.org / sysadmin
租戶管理員: tenant@thingsboard.org / tenant
客戶: customer@thingsboard.org / customer
安全起見,修改下密碼:
主頁右上角三個點 – 屬性 – 更改密碼
接下來就是發揮動手能力的時候了~
三、探索
1. 用戶
先簡單看下三類用戶的面板,
系統管理員
租戶
客戶
顯然租戶才是實際上的掌控者~
三者關系如下:
可以看到,默認租戶下面有三個客戶
客戶A的用戶有兩個,我們剛使用的是這個叫customer的用戶
可見客戶是一個抽象概念,也就是說客戶用戶才是真用戶。
2. 設備
設備主要分屬性和遙測,我們下一節會詳細講解,這里先看下最核心的遙測:
遙測也就是我們常說的設備測量狀態,比如溫度計的溫度,燈的亮度等等,
由於是新設備,所以是沒有遙測值的,我們可以用http協議發一個。
3. 模擬發送遙測值
3.1 獲取對接設備的訪問令牌
這里使用默認的A1_TEST_TOKEN
。
3.2 使用curl
發送HTTP請求
curl -v -X POST -d '{"turn":"1","light":"90"}' http://103.44.238.67:9090/api/v1/A1_TEST_TOKEN/telemetry --header "Content-Type:application/json"
3.3 查看更新后的遙測值
四、下一步
我們在這節簡單了解了 ThingsBoard 這個物聯網平台大殺器,
后面的主要工作就是通過在 ThingsBoard 上開發一個路燈的項目,幫助大家熟悉 ThingsBoard 的基本使用。
下節課,就從為用戶分配第一台設備開始。