本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
中的偵測器模型輸入定義 AWS IoT Events
我們希望建立一個偵測器模型,可用於監控和控制幾個不同區域的溫度。每個區域都可以有數個報告溫度的感應器。我們假設每個區域都由一個加熱裝置和一個冷卻裝置提供,這些裝置可以開啟或關閉,以控制區域中的溫度。每個區域都由一個偵測器執行個體控制。
由於我們監控和控制的不同區域可能具有不同的特性,需要不同的控制參數,因此我們定義 'seedTemperatureInput'
來為每個區域提供這些參數。將其中一個輸入訊息傳送至 時 AWS IoT Events,會建立新的偵測器模型執行個體,其中包含要在該區域中使用的參數。以下是該輸入的定義。
CLI 命令:
aws iotevents create-input --cli-input-json file://seedInput.json
檔案: seedInput.json
{ "inputName": "seedTemperatureInput", "inputDescription": "Temperature seed values.", "inputDefinition": { "attributes": [ { "jsonPath": "areaId" }, { "jsonPath": "desiredTemperature" }, { "jsonPath": "allowedError" }, { "jsonPath": "rangeHigh" }, { "jsonPath": "rangeLow" }, { "jsonPath": "anomalousHigh" }, { "jsonPath": "anomalousLow" }, { "jsonPath": "sensorCount" }, { "jsonPath": "noDelay" } ] } }
回應:
{ "inputConfiguration": { "status": "ACTIVE", "inputArn": "arn:aws:iotevents:us-west-2:123456789012:input/seedTemperatureInput", "lastUpdateTime": 1557519620.736, "creationTime": 1557519620.736, "inputName": "seedTemperatureInput", "inputDescription": "Temperature seed values." } }
備註
-
會針對任何訊息中
'areaId'
接收的每個唯一項目建立新的偵測器執行個體。請參閱'areaDetectorModel'
定義中的'key'
欄位。 -
在為 區域啟用加熱或冷卻裝置
'desiredTemperature'
'allowedError'
之前,平均溫度可能會與 不同。 -
如果有任何感應器回報溫度超過
'rangeHigh'
,偵測器會回報尖峰並立即啟動冷卻裝置。 -
如果有任何感應器回報溫度低於
'rangeLow'
,偵測器會回報尖峰,並立即啟動加熱裝置。 -
如果有任何感應器回報高於
'anomalousHigh'
或低於 的溫度'anomalousLow'
,偵測器會回報異常的感應器讀數,但會忽略回報的溫度讀數。 -
會
'sensorCount'
告訴偵測器該區域的感應器報告數量。偵測器會針對接收到的每個溫度讀取提供適當的權重因數,以計算區域中的平均溫度。因此,偵測器不需要追蹤每個感應器報告的內容,而且可以視需要動態變更感應器的數量。不過,如果個別感應器離線,偵測器就不會知道這一點或為其提供限額。建議您建立另一個偵測器模型,專門用於監控每個感應器的連線狀態。有兩個互補偵測器模型可簡化兩者的設計。 -
'noDelay'
值可以是true
或false
。開啟加熱或冷卻裝置後,應保持開啟狀態一段時間,以保護裝置的完整性並延長其運作壽命。如果'noDelay'
設定為false
,偵測器執行個體會在關閉冷卻和加熱裝置之前強制執行延遲,以確保它們在最短時間內執行。由於我們無法使用變數值來設定計時器,因此在偵測器模型定義中已硬式編碼延遲的秒數。
'temperatureInput'
用於將感應器資料傳輸至偵測器執行個體。
CLI 命令:
aws iotevents create-input --cli-input-json file://temperatureInput.json
檔案: temperatureInput.json
{ "inputName": "temperatureInput", "inputDescription": "Temperature sensor unit data.", "inputDefinition": { "attributes": [ { "jsonPath": "sensorId" }, { "jsonPath": "areaId" }, { "jsonPath": "sensorData.temperature" } ] } }
回應:
{ "inputConfiguration": { "status": "ACTIVE", "inputArn": "arn:aws:iotevents:us-west-2:123456789012:input/temperatureInput", "lastUpdateTime": 1557519707.399, "creationTime": 1557519707.399, "inputName": "temperatureInput", "inputDescription": "Temperature sensor unit data." } }
備註
-
'sensorId'
範例偵測器執行個體不會使用 直接控制或監控感應器。它會自動傳入偵測器執行個體傳送的通知。從那裡,它可用來識別正在失敗的感應器 (例如,定期傳送異常讀數的感應器可能即將失敗),或已離線的感應器 (當它用作監控裝置活動訊號的其他偵測器模型的輸入時)。如果區域中的暖區或冷區讀數經常與平均值不同,'sensorId'
也可以協助識別該區域的冷區。 -
'areaId'
用於將感應器的資料路由至適當的偵測器執行個體。系統會針對任何訊息中'areaId'
接收的每個唯一項目建立偵測器執行個體。請參閱'areaDetectorModel'
定義中的'key'
欄位。