thingsboard開源項目提供了一個專用的開源流處理服務,其官網命名爲“規則鏈”,如下圖
其功能應該說還是相當強大的,其中有各種傳輸協議的RPC調用及處理,還有地理圍欄功能,以及一些API的調用以及消息的發佈,在物聯網這個大環境下還是相當的實用的。
本篇我大概說一下一些簡單的用法,可能不太全面,需要用到其他功能的小夥伴們可以移至官網底下,其中有詳細的介紹:官網規則鏈
在這之前,我們需要理解幾個東西:
- 消息 - 任何傳入的事件。它可以是來自設備的傳入數據,設備生命週期事件,REST API事件,RPC請求等。
- 規則節點 - 在傳入消息上執行的功能。有許多不同的Node類型可以對傳入的Message進行過濾,轉換或執行某些操作。
- 規則鏈 - 節點通過關係相互連接,因此來自規則節點的出站消息被髮送到下一個連接的規則節點。
然後是一些需要注意的參數:
- 消息ID:基於時間的通用唯一標識符;
- 消息的發起者:設備,資產或其他實體標識符;
- 消息類型:“發佈遙測”或“不活動事件”等;
- 消息的有效載荷:具有實際消息有效載荷的JSON主體;
- 元數據:包含有關消息的其他數據的鍵值對列表。
消息類型包括以下幾種:
- POST_ATTRIBUTES_REQUEST:發佈屬性
- POST_TELEMETRY_REQUEST:發佈遙測
- TO_SERVER_RPC_REQUEST:來自設備的RPC請求
- RPC_CALL_FROM_SERVER_TO_DEVICE:RPC請求到設備
- ACTIVITY_EVENT:活動事件
- INACTIVITY_EVENT:不活動事件
- CONNECT_EVENT:連接事件
- DISCONNECT_EVENT:斷開事件
- ENTITY_CREATED:實體創建
- ENTITY_UPDATED:實體更新
- ENTITY_DELETED:實體刪除
- ENTITY_ASSIGNED:實體已分配
- ENTITY_UNASSIGNED:實體未分配
- ADDED_TO_ENTITY_GROUP:添加到組
- REMOVED_FROM_ENTITY_GROUP:已從組中刪除
- ATTRIBUTES_UPDATED:屬性已更新
- ATTRIBUTES_DELETED:屬性已刪除
- ALARM:告警事件
- REST_API_REQUEST:REST API請求到規則引擎
然後我們先將每個節點的功能說一下
過濾器
首先我們講一下過濾器,顧名思義,就是過濾消息或者用作判斷的節點
TB提供了上圖中的這些過濾器,其中我們比較常用的就是腳本了
我們只需要在其中將傳入數據的一些鍵上的值進行判斷,就可以將不符合條件的數據過濾掉,從而將正確的數據引入下一個節點進行處理。
下面是我自己漢化的一些解釋,大家可以參考一下:
屬性集
屬性集主要針對的是實體的屬性配置
變換
變換主要說的是轉化消息體中的數據爲其他類型
動作
動作模塊的節點全部都是用以處理數據的,比如數據的保存、關係的刪除、消息的生成等等
這塊由於截圖量比較大,所以就不截圖了,有需要的可以在我們的QQ羣裏聯繫我
外部數據處理
主要用以與外部系統的通信
剩下還有個節點叫做“規則鏈”的,這個主要用於與創建的其他規則鏈的關聯
QQ羣