初識百度天工


百度天工服務分為物接入IOT Hub物解析IOT Parser物管理IOT Device時序數據庫TSDB規則引擎Rule Engine還有物可視IOT Visualization,目前物可視在官方公測階段,需要開發者在物可視界面申請。

 

  首先打開百度雲https://cloud.baidu.com/?from=console,登錄自己的百度賬號,進入到控制台,然后點擊右上角用戶圖像,點擊用戶中心,進行實名認證。 然后點擊左側菜單產品服務,即可看到物聯網服務了。如下圖:

 

一、物接入IOT Hub

1、概述

物接入IoT Hub 是全托管的雲服務,通過主流的物聯網協議(如MQTT)通訊,可以在智能設備與雲端之間建立安全的雙向連接,快速實現物聯網項目。支持億級並發連接和消息數,建立海量設備與雲端安全可靠的雙向連接,無縫對接天工平台和百度雲的各項產品和服務。

物接入資源分為兩類:物接入、物接入(SIM版),本文主要講解物接入方式,SIM版讀者有興趣可以試試。

 

MQTT概述

MQTT(Message Queuing Telemetry Transport)是一個客戶端服務端架構的發布/訂閱模式的消息傳輸協議。它的設計思想是輕巧、開放、簡單、規范,易於實現。這些特點使得它對很多場景來說都是很好的選擇,特別是對於受限的環境如機器與機器的通信(M2M)以及物聯網環境(IoT)。

支持MQTT底層傳輸協議的相關設備有:

  • 客戶端--使用它連接服務端。
  • 服務端--全托管的雲服務,幫助建立設備與雲端之間安全可靠的雙向連接,以支撐海量設備的數據收集、監控、故障預測等各種物聯網場景。

 

MQTT客戶端

使用MQTT的程序或設備,推薦您使用MQTT.fx。客戶端總是通過網絡連接到服務端。它可以

  • 發布應用消息給其它相關的客戶端。
  • 訂閱以請求接受相關的應用消息
  • 取消訂閱以移除接受應用消息的請求。
  • 從服務端斷開連接。

 

MQTT服務端

全托管的雲服務,幫助建立設備與雲端之間安全可靠的雙向連接,以支撐海量設備的數據收集、監控、故障預測等各種物聯網場景。

  • 接受來自客戶端的網絡連接
  • 接受客戶端發布的應用消息
  • 處理客戶端的訂閱和取消訂閱請求。
  • 轉發應用消息給符合條件的客戶端訂閱。

更詳細的MQTT協議介紹請參考MQTT官網

 

名詞解釋

 

 

系統限制

 

2、快速接入IOT Hub

步驟一:注冊並登錄IoT Hub

在使用IoT Hub服務前,您需要創建一個百度雲賬號,請按照下述步驟進行注冊和登錄。

 

  1. 注冊並登錄百度雲平台,請參考注冊登錄

  2. 如果未進行實名認證,請參考實名認證操作方法完成認證。

  3. 登錄成功后,導航欄選擇“產品服務>物接入IOT Hub”,即可開始使用物接入服務。

 

步驟二:創建計費套餐

注意

對於產品公測期間已開通免費物接入服務的用戶,系統會自收費開始日起(具體日期以公告為准)創建一個3個月的免費配置(可發布、訂閱100萬條消息/月)訂單,請在3個月內登錄控制台升級或續費套餐。

創建實例之前應先創建計費套餐並設定每個月收發消息的額度,系統將根據額度自動計算每個月的服務費用。每個用戶只能創建一個計費套餐,所有實例將共享該套餐的額度。

  1. 登錄百度雲官網,點擊右上角的“管理控制台”,快速進入控制台界面。

  2. 選擇“產品服務>物接入IoT Hub”,進入服務頁面。

  3. 點擊“實例列表”,選擇一種計費方式,物接入或者物接入(SIM)版,關於產品的定價和費用計算方法,請參看產品定價

    完成配置后,點擊“下一步”進入在線支付頁面進行支付。支付成功后,用戶可進入“實例列表”,創建物接入實例。

 

 

步驟三:創建實例

連接IoT Hub服務需要創建一個實例(endpoint),一個endpoint表示一個完整的IoT Hub服務。登錄IoT Hub控制台頁面,點擊“創建實例”,填寫需要創建IoT Hub服務的實例名稱。

說明:

  • 目前每個賬戶能創建100個endpoint,且每個實例的名稱是全局唯一的,不能重名。每個endpoint下可創建10000個thing、10000個policy和10000個principal。如果需要更多配額,請提交工單申請

創建實例時,IoT Hub默認提供三種地址,選擇不同的地址,意味着您可以通過不同的方式連接到百度雲IoT Hub。

  • tcp://yourendpoint.mqtt.iot.gz.baiduce.com:1883,端口1883,不支持傳輸數據加密,可以通過MQTT.fx客戶端連接。

  • ssl://yourendpoint.mqtt.iot.gz.baiduce.com:1884,端口1884,支持SSL/TLS加密傳輸,MQTT.fx客戶端連接,參考配置MQTT客戶端

  • wss://yourendpoint.mqtt.iot.gz.baidubce.com:8884,端口8884,支持Websockets瀏覽器方式連接,同樣包含ssl加密,參考Websockets Client

 

步驟四:配置實例

成功創建IoT Hub實例后,點擊實例名稱,進入配置IoT Hub實例頁面,創建設備、身份和策略。具體操作步驟如下:

  1、創建設備:選擇設備列表,點擊“創建設備”,輸入需要連接IoT Hub服務的設備名稱。為了便於靈活連接IoT Hub服務,每一台設備thing都需要綁定相應的身份principal。

  2、創建身份:在身份輸入框內點擊“創建”,快速創建身份principal。輸入principal名稱,以及為每個身份授權的策略policy。

  3、創建策略:在策略輸入框內點擊“創建”,快速創建策略policy。輸入policy名稱,主題topic,選擇該身份擁有的權限:發布消息(publish)、訂閱消息(subscribe)。

說明:

每個policy可以創建多個主題topic,在創建策略彈框右側,點擊“+”可以綁定更多的主題。

  4、成功創建身份principal后,返回密碼,在配置客戶端時會用到,需要復制保存,如下圖所示:

 

5、至此,成功配置了 IoT Hub 實例中的相關參數。

 

步驟五:配置MQTT客戶端

配置MQTT的應用客戶端,可以快速驗證是否可以實現與物接入服務交流發送或者接收消息。

前提條件:登錄MQTT.fx官網,找到適合的版本下載並安裝MQTT.fx客戶端。

操作步驟

  1、打開MQTT客戶端的設置頁面,點擊“+”按鍵,創建一個新的配置文件。

 

    a、填寫Connection profile相關信息:

參數名稱 說明
profile name 配置文件名稱
Broker Address 創建endpoint后返回的hostname
Broker Port 1884
Client ID 客戶端ID,支持“a-z”,“0-9”,“_”,“-”字符,
且不能大於128bytes,UTF8編碼

    b、選擇User Credential,輸入創建 IoT Hub 服務返回的username/password,參考配置實例

    c、配置SSL/TLS安全認證,勾選 Enable SSL/TLS,選擇CA signed server certificate認證。

    d、點擊“Apply”按鍵,完成客戶端配置。

  2、返回MQTT客戶端界面,選擇新創建的配置文件,點擊“connect”按鍵連接服務。

  3、成功連接后,即可開始訂閱消息。

    打開Subscribe標簽,填寫主題topic,創建設備時自己定義的主題,選擇默認的QoS 0,點擊“Subscribe”進行訂閱操作。

  4、發布消息。

    打開Publish標簽,填寫主題topic,創建設備時自己定義的主題,選擇默認的QoS 0,點擊“Publish”進行發布操作。

  5、返回Subscribe界面,即可看到已接收的訂閱消息。

 

二、規則引擎 Rule Engine

1、概述

  規則引擎並不是一個全新的概念,在傳統軟件業中已經有相關的產品。在傳統商業管理軟件中,由於市場要求業務規則變化頻繁,IT系統必須依據業務規則的變化而快速、低成本的更新。為了達到該目的,要求業務人員能夠直接管理IT系統中的規則而不需要開發人員的參與,這就是規則引擎曾經在傳統軟件中的功能。

  類似地,在物聯網中,由於數據量巨大,業務規則可能多種多樣,也需要將規則的設置變得簡單和友好以適應業務規則的多樣和變化。大量的數據往往對應着不同的應用分析場景,如監控廠區的溫度濕度監控點,每十分鍾都會有溫度和濕度數據傳往雲端;對於這些數據,我們往往希望它們發揮不同的作用,例如以下應用場景:

  • 實時告警異常的數據;

  • 兩個小時內的溫度最大最小和均值等;

  • 將全部的數據做冷備份以便查詢;

  • 對去除異常數據之后的正常數據做數據分析和預測。

  規則引擎就是通過靈活的設定規則,將設備傳上雲端的數據,送往不同的數據目的地(如時序數據庫TSDB、Kafka、對象存儲BOS等)以達到不同的業務目標。

優勢:

  • 多種服務支持

    支持將消息轉發到時序數據庫、Kafka、對象存儲,無縫對接MapReduce、機器學習、雲推送等各種服務。

  • 靈活易用

    規則設置靈活簡單,一鍵啟停規則,支持各種事件和動作。

  • 多場景支持

    支持設備與雲端之間的轉發,設備與設備之間的轉發,設備與第三方服務的轉發。

  • 強大的API

    提供開放標准的API,可通過調用API實現控制台操作,方便第三方應用快速集成雲端服務。

 

:城市路燈管理屬於一個典型的物聯網場景,該場景可以復制到很多其它的領域。

 

  傳統情況下,路燈管理基本上靠人力,例如:巡查、維護,甚至是靠人工控制路燈開關;而城市路燈數量巨大,分布復雜,對於管理部門來說可能已經投入了大量的人力成本,但仍然會出現故障發現和搶修不及時的情況。同時在傳統情況下,由於缺少路燈的運行環境(例如:電壓、溫度),使用壽命等數據,很難有針對性改進使用方法,進而延長使用壽命,也很難指定准確的維護策略和備件策略。

  路燈接入可以采用多種方式,例如:3G/4G,電力載波,LPWAN等,無論采用哪種方式,用戶只需在接入設備中預裝Edge SDK,都能輕松打通路燈和百度雲之間的雙向安全通道,實現將路燈接入百度雲的物接入服務。路燈可以實時將設備狀態、電壓電流、環境溫度、地理坐標等信息發送至物接入服務。同時在工程師的智能終端上預裝APP對接百度雲,可實時上報工程師的地理位置坐標。

  物接入接收到路燈上送的消息后,可將消息分別轉發至物管理和規則引擎服務。用戶可在規則引擎上制定策略,實現以下操作:

  • 當路燈下線或電壓電流超過閾值時,檢索距離現場最近的維護工程師,並自動發送告警、路燈坐標等信息給指定的維護工程師。工程師的智能終端可對接百度地圖服務,自動在地圖上顯示待維修路燈的位置。

  • 將電壓電流、環境溫度等信息轉發至時序數據庫,並對接天算大數據平台,用於后續的數據挖掘。

 

2、快速創建規則引擎

操作流程介紹:

  2.1、創建數據源:規則引擎需要通過物接入獲取設備端發往雲端的消息,因此在配置規則引擎之前,需先配置物接入IoT Hub打通雲端和設備端之間的雙向通道。物接入主要用於在智能設備與雲端之間建立安全的雙向連接,實現從設備到雲端以及從雲端到設備的消息傳輸。

  2.2、創建目的地:規則引擎可根據預先設置的規則將消息轉發至百度雲的其它服務,例如時序數據庫、百度Kafka或物接入主題。在配置規則引擎前,建議您先創建好需要用到的其它服務。

       百度Kafka

  百度Kafka是基於Apache Kafka的分布式、高可擴展、高通量、多分區和多副本的消息托管服務。百度Kafka封裝了Kafka集群細節,並以托管服務形式提供,您可以直接使用百度Kafka創建主題來集成大規模分布式應用,而無需考慮集群運維,僅按照使用量支付處理數據的費用。

     時序數據庫TSDB

  TSDB是用於管理時間序列數據的專業化數據庫。區別於傳統的關系型數據庫,TSDB針對時間序列數據的存儲、查詢和展現進行了專門的優化,從而獲得極高的數據壓縮能力、極優的查詢性能,特別適用於物聯網應用場景。

  物接入主題

  物接入主題是物接入服務與前端設備進行消息傳播的媒介。規則引擎支持將在一個主題中收到的信息,轉發至另一個主題中。如將主題temperature訂閱到的消息,篩選出大於閾值的消息,轉發至主題alarm中,再用其他客戶端訂閱alarm客戶端主題即可。

   創建規則:設置篩選規則、消息來源主題、觸發條件和數據目的地。

   驗證規則:構建Json格式的Payload,對已經創建的規則的篩選結果進行驗證。

 

步驟一:創建規則

規則引擎需要通過物接入獲取設備端發往雲端的消息,因此在配置規則引擎之前,需先配置物接入打通雲端和設備端之間的雙向通道。有關物接入的配置操作,請參看物接入IoT Hub

規則引擎從物接入獲取到的消息的payload應當是Json格式的,因此在創建規則時,需要使用Json表達式引用。在執行以下操作之前,用戶應對Json表達式引用方法有所了解。有關Json表達式的介紹請參看附錄-Json表達式

       1、登錄百度雲官網,點擊右上角的“管理控制台”,快速進入控制台界面。

  2、選擇“產品服務>規則引擎>規則列表”,進入“規則列表”頁面。

  

  3、點擊“新建規則”,進入規則創建頁面,填寫以下配置信息:

    查詢字段:從消息中篩選出來用於后續操作(如:轉發至TSDB或百度Kafka)的數據。如果填寫“*”,則將原樣轉發payload中的所有數據至目的地。

    如果將消息轉發至TSDB,需要預先對消息格式進行調整,具體操作請查看將消息轉發至TSDB

    主題:消息來源的物接入主題。

    約束條件:后續操作的觸發條件。缺省情況下,轉發每一條消息至目的地。

  其中,查詢字段和約束條件中支持的操作符如下:

運算符 語義 示例
JSON擴展表達式 JSON的屬性訪問 info.contact.tel,關於Json表達式的更多內容,請參看附錄
= 相等比較 age = 9
<> 不等 name <> 'abc'
AND 邏輯與 age = 9 AND name <> 'abc'
OR 邏輯或 age = 9 OR name <> 'abc'
() 括號 age =9 AND (name <> 'abc' OR score > 60.0)
+,-,*,/ 數值的加減乘除 2+3, age - 1, score * 100.0, age / 3
<, <=, >, >= 比較操作符 age < 10, age <= 9, score > 60.0, score >= 60.0
in 集合操作 WHERE name in ('jack', 'jim')
SQL函數 標准的SQL函數 如:ceil, floor等,常見SQL函數,請參看附錄
CURRENT_TIMESTAMP 返回當前時間戳(毫秒),即UTC時間 SELECT CURRENT_TIMESTAMP AS TS
LOCALTIMESTAMP() 返回本地時間戳(毫秒),即UTC+8 SELECT LOCALTIMESTAMP AS localTS
NEWID() 返回一個guid(global unique identifier,全球唯一標識),規則引擎會為每一條消息新增一個guid SELECT NEWID() AS id from t
clientid() 返回消息的發送者id SELECT clientid() FROM...
clientip() 返回消息發送者的IP SELECT clientip() FROM...
topic() 返回消息所在的主題 SELECT topic() FROM...
qos() 返回消息發送所用的QoS SELECT qos() FROM...

 

  4、點擊“添加數據目的地”,新增一個數據目的地,此處可添加多個。

  規則引擎支持將數據轉發至“時序數據庫TSDB”、“百度Kafka”或“其它物接入主題”。

  將數據轉發至“其它物接入主題”是,支持將數據轉發至同一個endpoint(即消息來源的物接入主題所在的endpoint)下的其它主題,不支持轉發至其它endpoint。

  如果將數據轉發至TSDB,需要對數據格式進行調整,具體操作請參看將消息轉發至TSDB

  返回“規則列表”頁面,查看已經創建的規則。

 

步驟二:驗證規則

用戶可以自己構建Json格式的Payload,對已經創建的規則的篩選結果進行驗證。在執行以下操作前,用戶應先創建規則。

1、選擇“產品服務>規則引擎>規則列表”,進入“規則列表”頁面,查看已經創建的規則。

2、找到指定的規則,點擊規則名稱,進入規則詳情頁面;點擊“規則驗證”,驗證已經創建的規則。

3、在“輸入數據”中構建Json格式的原始數據,選擇數據目的地並點擊“驗證”,此時系統將根據已經創建的規則自動輸出篩選后的數據。

 

步驟三:將消息轉發至數據目的地

1、存入TSDB數據庫

通過簡單規則調整數據格式:以下方法僅針對value存放在消息中,如果value存放在數組中,請看下面的通過"_TSDB_META"調整數據格式。

TSDB數據庫要求數據必須包含metric、value和timestamp三個字段,以及額外一個或多個數據作為tag。如果原始消息中不包含這些字段,在將數據轉發至TSDB前,需要對數據格式進行調整,如下所示:

 

原始數據:

{     

  "time": 1465376157007,     

  "name": "cpu_idle",     

  "score": 51,     

  "host": "server1",     

  "rack": "rack1",     

  "other": "something"

}

原始數據中的"score": 51為整型,數據沒有放在引號""中。如果原始數據為"score": "51",此時該數據為字符串類型。字符串類型數據寫入TSDB后將無法在查看面板中生成圖表。

 

規則引擎設置

  查詢字段:name AS metric, score AS _value, `time` AS _timestamp, host, rack

  由於time為SQL的關鍵字,使用時需要加反單引號(重音符)。

  主題:消息來源的物接入主題。

  約束條件:score > 50

 

輸出數據:

{     

  "metric":"cpu_idle",    

   "_value":51,     

  "_timestamp":1465376157007,     

  "host":"server1",     

  "rack":"rack1"

}

 

 

通過"_TSDB_META"調整數據格式:

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

 

2、轉發到MQTT主題

規則引擎可以從接收到的消息中自動提取MQTT主題,並將消息轉發至該主題,具體操作如下所示:

原始數據:

{     

  "msg": "hello",     

  "info": {         

    "name": "chiller-2016"     

  }

}

下圖是規則調試的結果

 

 

 

以下是規則編輯界面,查詢字段和查詢主題是必填項,查詢主題代表需要處理的是哪個主題的消息,也可以寫通配符“#”,代表所有主題消息

添加數據目的地:

以上是兩個數據庫和一個轉發的主題,共3個數據目的地。

 

規則引擎還有很多東西,我以后實驗過了再補上!!!!!!

 

三、時序數據庫TSDB

1、概述

  在物聯網時代,企業需要處理各種設備產生的帶有時間標簽的數據,即時間序列數據。時間序列數據主要由各類型實時監測、檢查與分析設備所采集或產生,涉及電力行業、化工等行業。這些工業數據的典型特點是:產生頻率快、嚴重依賴於采集時間、測點多信息量大等。普通關系型數據庫無法高效地處理此類數據。

  為了更好的處理時間序列數據,時序數據庫(Time Series Database,下簡稱TSDB)應運而生。TSDB是用於管理時間序列數據的專業化數據庫。區別於傳統的關系型數據庫,TSDB針對時間序列數據的存儲、查詢和展現進行了專門的優化,從而獲得極高的數據壓縮能力、極優的查詢性能,特別適用於物聯網應用場景。

 

產品功能:

  • 數據寫入

    支持通過REST API方式高並發寫入時間序列數據,可線性擴展。

  • 極速查詢

    支持海量時序數據的極速查詢,每秒可返回1億數據點的聚合查詢結果。

  • 豐富的函數

    提供豐富的數據處理能力,支持多達16種聚合函數。

  • Web圖表

    查詢的結果可以通過Web圖表方式生動、靈活的展現。

 

名詞解釋:

TSDB :Time Series Database,時序數據庫,用於保存時間序列(按時間順序變化)的海量數據。

 

度量(metric):數據指標的類別,如發動機的溫度、發動機轉速、模擬量等。

 

域(field):在指定度量下數據的子類別。即一個metric支持多個field,如metric為wind,該metric可以有兩個field:direction和speed。

 

時間戳(timestamp):數據產生的時間點。

 

數值(value):度量(metric)對應的數值,如56°C、1000r/s等(實際中不帶單位)。如果有多個field,每個field都有相應的value。不同的field支  持不同的數據類型寫入。對於同一個field,如果寫入了某個數據類型的value之后,相同的field不允許寫入其他數據類型。

 

標簽(tag):一個標簽是一個key-value對,用於提供額外的信息,如"設備號=95D8-7913"、“型號=ABC123”、“出廠編號=1234567890”等。

 

數據點(data point):“1個metric + 1個field(可選) + 1個timestamp + n個tag(n>=1)”唯一定義了一個數據點。當寫入的metric、field、timestamp、n個tag都相同時,后寫入的value會覆蓋先寫入的value。

 

時間序列 :“1個metric +1個field + n個tag(n>=1)”定義了一個時間序列。如 metric為wind,field為speed,tag為“型號=ABC123”、“出廠編號=1234567890"的數據點都屬於同一個時間序列。

  • tag的key值和value值都相同才算過同一個tag,即deviceid=1和deviceid=2是兩個標簽。

  • 請不要將時間戳作為tag,否則會導致時間序列超過限制,關於時間序列的限制請參考費率表

 

分組(group):可以按標簽(tag)對數據點進行分組。

 

聚合函數(aggregator):可以對一段時間的數據點做聚合,如每10分鍾的和值、平均值、最大值、最小值等。

 

數據庫(database):一個用戶可以有多個數據庫,一個數據庫可以寫入多個“度量”的“數據點”。

 

栗子:

  單域:

  監測溫度的值,把溫度(temperature)作為一個度量(metric),用標簽(tag)來標識每一個數據的額外信息,比如每個數據點都有3個tag,tag是一個key-value對,tag的key分別是deivceID、floor、room。

  如圖所示,表示對溫度的時間序列監測值,共4個數據點。在該圖中的4個數據點使用的metric、tag是相同的,所以是同一個時間序列。

 

  多域:

  監測風力的值,把風力(wind)作為一個度量(metric),風力(wind)分為兩個域:風向(direction)和速度(speed)。這些監測數據是從不同的傳感器傳輸到雲端的,用標簽(tag)來標識每一個數據的額外信息,比如每個數據點有三個tag,tag是一個key-value對;tag的key分別是sensor、city、province。

  為了表示在廣東省深圳市傳感器編號95D8-7913上傳風向(direction)數據,可以將這個數據點的tag為標記為sensor=95D8-7913、city=深圳、province=廣東。

  如圖,展示了metric為wind的兩個域(speed和direction)的監測數據。當使用的是metric、field和tag是相同的時,是同一個時間序列。即圖中有2個時間序列,8個數據點。

  

  將數據采用metric+field的方式存儲的優勢在於,可以在同一個時間序列下聯合查詢。以上圖為例,要查詢1467627246000-1467627249000時間內風力(wind)的情況,可以聯合查詢多個field的值,得到下圖的數據。

如果寫入時沒有數據,在查詢時,可以采用插值方案將值補充完整,插值的使用說明見數據庫操作相關文檔。????????

 
系統限制:

 

2、快速使用TSDB

步驟一:創建數據庫

1、登錄百度雲,點擊右上角的“管理控制台”,快速進入控制台界面。

2、選擇“產品服務>時序數據庫TSDB”,進入“數據庫列表”頁面。

3、點擊“創建數據庫”,進入創建數據庫頁面,填寫配置信息,包括:

  • 數據庫名稱:設置數據庫名稱,由小寫字母和數字組成,6~40個字符。
  • 寫入額度:目前支持1~500000百萬點/月。
  • 購買時長:TSDB為預付費產品,最少每次購買1個月。

 

4、完成配置后點擊“確認訂單”,完成TSDB數據庫的創建

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM