參考網(wǎng)址:https://thingsboard.io/docs/getting-started-guides/helloworld/
github地址:https://github.com/thingsboard/thingsboard
演示環(huán)境:https://demo.thingsboard.io/login馆衔。
總架構(gòu)
文檔:https://thingsboard.io/docs/reference/architecture/
并發(fā)模型: Actor模型akka
集群協(xié)作:zookeeper
支持協(xié)議:mqtt束凑、coap级解、http
持久化: Postgresql、Cassandra烹困,datastax(數(shù)據(jù)訪問)
環(huán)境搭建(Mac)
使用 idea 工具,jdk1.8+環(huán)境
lombok插件安裝:thingsboard使用了lombok的@Getter @Setter注解。所以需要安裝lombok插件.
包括模塊:
application:應(yīng)用相關(guān)
common(data,message,transport):data用于與不同db之間的中間數(shù)據(jù)結(jié)構(gòu)凰锡。message定義不同的消息類型堕花。transport定義一個公共的接口文狱,供與客戶端的transport層使用dao: dao抽象了對不同數(shù)據(jù)庫的統(tǒng)一接口。
dao的接口數(shù)據(jù)一般都data缘挽,根據(jù)不同的數(shù)據(jù)庫在不同的接口中轉(zhuǎn)換為對應(yīng)的實體類與數(shù)據(jù)庫交互.通過@ConditionalOnProperty(prefix = "database", value = "type", havingValue = "cassandra")動態(tài)注入不同的數(shù)據(jù)庫tools:
extensions(extension-kafka,extension-mqtt,extension-rabbitmq,extension-rest-api-call):分別調(diào)用不同協(xié)議的后端服務(wù)
extensions-api:定義aciton瞄崇,filter,plugin壕曼,processor及其他基本對象
extensions-core:實現(xiàn)一些公用aciton苏研,filter,plugin腮郊,processortransport(http,caop,mqtt): mqtt基于netty開發(fā)mqtt服務(wù)器摹蘑。
http提供基于rest的http服務(wù)≡桑基于californium搭建coap服務(wù)衅鹿。對不同的客戶端設(shè)備提供不同類型的接口.同時將消息轉(zhuǎn)換成不同的message,通過DefaultActorService與后端的actor交互
強(qiáng)大的規(guī)則引擎
規(guī)則與插件过咬,基于actors執(zhí)行塘安,規(guī)則包含F(xiàn)ilters,Processors,Action
前端ui
使用nodejs開發(fā),需要安裝 yarn
相關(guān)概念
- 租戶tenant:可以將ThingsBoard租戶視為獨立的業(yè)務(wù)實體:擁有或生產(chǎn)設(shè)備的個人或組織援奢。
- 部件庫
- 客戶管理:租戶和客戶的關(guān)系兼犯,每個客戶有對應(yīng)的資產(chǎn)和設(shè)備
- 實體視圖:
類似于SQL數(shù)據(jù)庫視圖,它限制了基礎(chǔ)表暴露給外部世界的程度集漾,TB EV限制了設(shè)備或資產(chǎn)遙測和屬性暴露給客戶的程度切黔。 作為租戶管理員,您可以為每個設(shè)備或資產(chǎn)創(chuàng)建多個EV具篇,并將其分配給不同的客戶纬霞。
use case:
與多個客戶同時共享特定設(shè)備或資產(chǎn)數(shù)據(jù)。 由于TB安全模型的限制驱显,以前的EV功能無法實現(xiàn)诗芜。
允許特定客戶用戶查看收集的數(shù)據(jù)(例如傳感器讀數(shù))瞳抓,但隱藏調(diào)試信息,如電池電量伏恐,系統(tǒng)錯誤等孩哑。
設(shè)備即服務(wù)(DaaS)模型,其中設(shè)備在不同時間段收集的數(shù)據(jù)屬于不同的客戶翠桦。
儀表板庫:可以定制 dashboard
Attributes:設(shè)備屬性横蜒,文檔:https://thingsboard.io/docs/user-guide/attributes/
Telemetry:設(shè)備數(shù)據(jù),比如溫度销凑、濕度等丛晌,文檔:https://thingsboard.io/docs/user-guide/telemetry/
RPC:服務(wù)器與設(shè)備間通信,文檔:https://thingsboard.io/docs/user-guide/rpc/
總結(jié)
thingsboard 的功能還是相當(dāng)全面的斗幼,文檔資料比較全澎蛛,官網(wǎng)上也有應(yīng)用場景的方案。自定義的規(guī)則引擎功能很強(qiáng)大蜕窿,頁面雖然丑了點瓶竭,好在可以優(yōu)化,各種widget 挺全渠羞,可以直接拿來作為 iot 數(shù)據(jù)收集和展現(xiàn)使用斤贰,還是值得好好研究一下的。如果能結(jié)合數(shù)據(jù)挖掘應(yīng)該能做出很牛B 的方案次询。