設(shè)備影子保留每臺設(shè)備的最后報(bào)告狀態(tài)和期望的未來狀態(tài),即便設(shè)備處于離線狀態(tài)。
通過 API 或使用規(guī)則引擎,獲取設(shè)備的最后報(bào)告狀態(tài)或設(shè)置期望的未來狀態(tài)。
應(yīng)用程序可以設(shè)置設(shè)備的期望未來狀態(tài),而無需說明設(shè)備的當(dāng)前狀態(tài)。AWS IoT 將比較期望未來狀態(tài)和最后報(bào)告狀態(tài)之間的差異,并命令設(shè)備"彌補(bǔ)差異"。
設(shè)備 SDK 能夠輕松地同步其狀態(tài)及其影子,并響應(yīng)通過影子設(shè)置的期望的未來狀態(tài)。
設(shè)備影子免費(fèi)存儲設(shè)備狀態(tài)多達(dá)一年。如果至少每年更新一次狀態(tài),則設(shè)備影子將永久保留狀態(tài);否則狀態(tài)將過期。
設(shè)備影子(Shadow)流程

設(shè)備影子(Shadow)格式

設(shè)備影子(Shadow)服務(wù)
設(shè)備影子服務(wù)使用MQTT話題,便于應(yīng)用和設(shè)備之間的通信,下面是相關(guān)的MQTT QoS 1話題:
$aws/things/{thingName}/shadow/update
$aws/things/{thingName}/shadow/get
$aws/things/{thingName}/shadow/delete
$aws/things/{thingName}/shadow/update/accepted
$aws/things/{thingName}/shadow/update/rejected
$aws/things/{thingName}/shadow/update/delta
$aws/things/{thingName}/shadow/get/accepted
$aws/things/{thingName}/shadow/get/rejected
$aws/things/{thingName}/shadow/delete/accepted
$aws/things/{thingName}/shadow/delete/rejected
設(shè)備SDK(C-SDK、JS-SDK)將影子功能內(nèi)置在設(shè)備中,能夠使設(shè)備與影子服務(wù)之間自動同步狀態(tài)。
規(guī)則引擎

規(guī)則引擎驗(yàn)證發(fā)布到 AWS IoT 的入站消息,并根據(jù)定義的業(yè)務(wù)規(guī)則轉(zhuǎn)換這些消息并將它們傳輸?shù)搅硪慌_設(shè)備或云服務(wù)。規(guī)則可以應(yīng)用至一臺或多臺設(shè)備中的數(shù)據(jù),并且它可以并行執(zhí)行一個(gè)或多 個(gè)操作。
規(guī)則引擎還可以將消息路由到 AWS 終端節(jié)點(diǎn),包括 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch 和內(nèi)置 Kibana 集成的 Amazon Elasticsearch Service。外部終端節(jié)點(diǎn)可以使用 AWS Lambda、Amazon Kinesis 和 Amazon Simple Notification Service (SNS) 進(jìn)行連接。
使用類似 SQL 的語句編寫規(guī)則。例如:如果溫度讀數(shù)超出特定閾值,則它可以觸發(fā)規(guī)則以便將數(shù)據(jù)傳輸?shù)?AWS Lambda;如果此溫度超出其他 5 臺設(shè)備的平均值 15%,則應(yīng)采取措施。
規(guī)則引擎將提供數(shù)十個(gè)可用于轉(zhuǎn)換數(shù)據(jù)的可用功能,并且可以通過 AWS Lambda 創(chuàng)建無限個(gè)功能。例如,如果正在處理各種不同的數(shù)值,則可以取傳入數(shù)字的平均值。規(guī)則還會觸發(fā)在 AWS Lambda 中執(zhí)行 Java、Node.js 或 Python 代碼,從而提供最高靈活度以及處理設(shè)備數(shù)據(jù)的能力。
規(guī)則引擎集成其它云服務(wù)

規(guī)則引擎驗(yàn)證發(fā)布至AWS IoT的消息請求,基于業(yè)務(wù)規(guī)則轉(zhuǎn)換消息請求并發(fā)布至其它服務(wù),例如:
富集化或過濾從設(shè)備收集的數(shù)據(jù)
將設(shè)備數(shù)據(jù)寫入一個(gè)亞馬遜DynamoDBm數(shù)據(jù)庫
保存文件至亞馬遜S3
發(fā)送一個(gè)推送通知到所有亞馬遜SNS用戶
向亞馬遜SQS隊(duì)列發(fā)布數(shù)據(jù)
調(diào)用Lambda函數(shù)抽取數(shù)據(jù)
使用亞馬遜Kinesis處理大量的設(shè)備消息數(shù)據(jù)
發(fā)送數(shù)據(jù)至亞馬遜Elasticsearch服務(wù)
捕獲一條CloudWatch測量數(shù)據(jù)
更新一條CloudWatch告警
把一條MQTT消息數(shù)據(jù)發(fā)送至亞馬遜機(jī)器學(xué)習(xí)服務(wù),基于亞馬遜機(jī)器學(xué)習(xí)模型進(jìn)行預(yù)測
規(guī)則引擎&實(shí)時(shí)流式數(shù)據(jù)處理

N:1 入站的傳感器流式數(shù)據(jù)(數(shù)據(jù)降噪)
規(guī)則引擎過濾、轉(zhuǎn)換、匯總傳感器數(shù)據(jù)后,發(fā)送至亞馬遜Kinesis處理實(shí)時(shí)流式數(shù)據(jù)
Kinesis流式數(shù)據(jù)共享至其它業(yè)務(wù)系統(tǒng)
將流式數(shù)據(jù)的實(shí)時(shí)處理結(jié)果導(dǎo)入至數(shù)據(jù)庫、應(yīng)用或其它亞馬遜服務(wù)
規(guī)則引擎&推送通知服務(wù)