華為云計算 云知識 【IoT Openlab】華為云IoT平臺規(guī)則引擎的入門簡介
【IoT Openlab】華為云IoT平臺規(guī)則引擎的入門簡介

規(guī)則引擎

         規(guī)則引擎就是指用戶在華為云平臺對接入的設(shè)備設(shè)定相應(yīng)的規(guī)則,然后在條件滿足響應(yīng)的規(guī)則后,平臺便會觸發(fā)的動作來滿足用戶需求。規(guī)則引擎包含了設(shè)備聯(lián)動和數(shù)據(jù)轉(zhuǎn)發(fā)兩個部分。

規(guī)則引擎思維導(dǎo)圖:

設(shè)備聯(lián)動

         設(shè)備聯(lián)動是通過條件觸發(fā),基于預(yù)設(shè)的規(guī)則,引發(fā)多設(shè)備的協(xié)同反應(yīng),實現(xiàn)設(shè)備聯(lián)動、智能控制。例如,當(dāng)執(zhí)行動作為“發(fā)送通知”時,物聯(lián)網(wǎng)平臺對接華為云的 消息通知 服務(wù) SMN ,進(jìn)行主題消息的設(shè)置和下發(fā)。

觸發(fā)條件:

要想觸發(fā)一個規(guī)則動作,就必須首先要有個觸發(fā)條件,在華為云設(shè)備聯(lián)動的規(guī)則有匹配設(shè)備觸發(fā)、指定設(shè)備觸發(fā)、定時觸發(fā)三個部分。

指定設(shè)備觸發(fā):對使用相同產(chǎn)品模型的設(shè)備進(jìn)行條件設(shè)置。

指定設(shè)備出發(fā):對指定設(shè)備進(jìn)行條件設(shè)置。

定時觸發(fā):可以設(shè)置規(guī)則觸發(fā)的時間點。值得注意的是當(dāng)指定的觸發(fā)條件選擇“定時觸發(fā)”,則執(zhí)行動作中不能設(shè)置為“發(fā)送通知”、“上報告警”、“恢復(fù)告警”的動作。

執(zhí)行動作:

       當(dāng)擁有一個觸發(fā)條件的時候,必定會有一個與之對應(yīng)的執(zhí)行動作,執(zhí)行動作可分為下發(fā)命令、發(fā)送通知、上報告警、恢復(fù)告警。

下發(fā)命令:下發(fā)命令時需指定要執(zhí)行的設(shè)備,對服務(wù)的執(zhí)行命令參數(shù)進(jìn)行重新配置下發(fā)給設(shè)備。

發(fā)送通知:發(fā)送通知需要您授權(quán)當(dāng)前 設(shè)備接入服務(wù) (IoTDA) 訪問所有區(qū)域的消息通知服務(wù)(SMN) 的權(quán)限。即對接華為云的消息通知服務(wù)SMN,進(jìn)行主題消息的設(shè)置和下發(fā)。

上報告警:定義告警級別、告警名稱、告警內(nèi)容等。當(dāng)滿足觸發(fā)設(shè)置的條件后,產(chǎn)生的告警將統(tǒng)一上報到 應(yīng)用運維管理 服務(wù)( AOM )管理界面。

恢復(fù)告警:定義告警級別、告警名稱、告警內(nèi)容等,當(dāng)滿足觸發(fā)設(shè)置的條件后,產(chǎn)生的告警將統(tǒng)一上報到應(yīng)用運維管理服務(wù)(AOM)管理界面。

數(shù)據(jù)轉(zhuǎn)發(fā)

          設(shè)備接入IoTDA 與華為云上的其他服務(wù)實現(xiàn)無縫對接,就是借助于規(guī)則引擎中的數(shù)據(jù)轉(zhuǎn)發(fā)來實現(xiàn)的。當(dāng)滿足數(shù)據(jù)轉(zhuǎn)發(fā)的觸發(fā)條件時,IoTDA便能根據(jù)所設(shè)定的觸發(fā)事件將數(shù)據(jù)轉(zhuǎn)發(fā)到其他服務(wù)或是推送給應(yīng)用。例如DIS、OBS等。

觸發(fā)事件:

在設(shè)備接入IoTDA與其他服務(wù)對接,首先需要確認(rèn)需要轉(zhuǎn)發(fā)的事件,觸發(fā)事件主要有設(shè)備的添加更新或刪除、設(shè)備屬性的上報、設(shè)備消息狀態(tài)的變更、設(shè)備狀態(tài)變更、批量任務(wù)變更。

設(shè)備添加更新與刪除:是指新增一個設(shè)備、刪除、更新一個設(shè)備時觸發(fā)規(guī)則引擎,然后將數(shù)據(jù)轉(zhuǎn)發(fā)到所設(shè)定的轉(zhuǎn)發(fā)目標(biāo)服務(wù)。值得注意的是設(shè)備更新指的是設(shè)備的一些基本信息,如設(shè)備名稱、描述、版本信息等,而是不是所屬服務(wù)的屬性。

設(shè)備屬性上報:是指當(dāng)設(shè)備上報其屬性時觸發(fā)規(guī)則通過設(shè)定的轉(zhuǎn)發(fā)目標(biāo)將其轉(zhuǎn)發(fā)到其他的華為云服務(wù)或是推送給應(yīng)用。

設(shè)備消息上報:是指當(dāng)設(shè)備上報其消息時觸發(fā)規(guī)則通過設(shè)定的轉(zhuǎn)發(fā)目標(biāo)將其轉(zhuǎn)發(fā)到其他的華為云服務(wù)或是推送給應(yīng)用。

設(shè)備消息狀態(tài)變更:是指當(dāng)設(shè)備消息狀態(tài)發(fā)生變更時觸發(fā)規(guī)則通過設(shè)定的轉(zhuǎn)發(fā)目標(biāo)將其轉(zhuǎn)發(fā)到其他的華為云服務(wù)或是推送給應(yīng)用。消息的狀態(tài)分為以下四種:PENDING,DELIVERED,F(xiàn)AILED和TIMEOUT,PENDING指設(shè)備不在線,消息被緩存起來,等設(shè)備上線之后下發(fā): DELIVERED指消息發(fā)送成功;FAILED消息發(fā)送失敗;TIMEOUT指消息在平臺默認(rèn)時間內(nèi)(1天)還沒有下發(fā)送給設(shè)備,則平臺會將消息設(shè)置為超時,狀態(tài)為TIMEOUT。

設(shè)備狀態(tài)變更:是指當(dāng)設(shè)備的狀態(tài)發(fā)生變更時觸發(fā)規(guī)則通過設(shè)定的轉(zhuǎn)發(fā)目標(biāo)將其轉(zhuǎn)發(fā)到其他的華為云服務(wù)或是推送給應(yīng)用。設(shè)備的狀態(tài)分為以下四種:未激活,在線、離線、異常。

設(shè)備批量任務(wù)變更:是指針對任務(wù)類型為固件升級或是軟件升級的任務(wù)狀態(tài)發(fā)生變更時觸發(fā)規(guī)則通過設(shè)定的轉(zhuǎn)發(fā)目標(biāo)將其轉(zhuǎn)發(fā)到其他的華為云服務(wù)或是推送給應(yīng)用。設(shè)備的批量任務(wù)狀態(tài)分為以下六種:任務(wù)正在等待被執(zhí)行、任務(wù)正在被執(zhí)行、任務(wù)成功、任務(wù)部分成功、任務(wù)失敗、任務(wù)被停止。

轉(zhuǎn)發(fā)目標(biāo)

         在我們對觸發(fā)事件設(shè)置完成之后,就會設(shè)置其轉(zhuǎn)發(fā)的目標(biāo)。轉(zhuǎn)發(fā)目標(biāo)可以是華為云上的其他服務(wù),也可以直接是通過http推送的方式推送給第三方應(yīng)用又或者是AMQP消息隊列.

關(guān)于規(guī)則引擎的黑名單:

        規(guī)則引擎的黑名單是指:當(dāng)觸發(fā)規(guī)則引擎時,根據(jù)觸發(fā)事件通過http訂閱推送的方式將數(shù)據(jù)推送給應(yīng)用,但如果推送失?。捶祷氐臓顟B(tài)碼不為200)并且連續(xù)推送十次失敗,這時這個應(yīng)用地址便會被平臺加入到黑名單,不再進(jìn)行推送。當(dāng)三十秒過后,這時平臺將會放開黑名單一次,此時當(dāng)觸發(fā)事件條件滿足時再去推送,如果返回的狀態(tài)碼為200,即推送成功,如果返回的狀態(tài)碼不為200即推送失敗,且又再次連續(xù)十次失敗,此時應(yīng)用地址又會加入黑名單。如此反復(fù)。