中的偵測器模型輸入定義 AWS IoT Events - AWS IoT Events

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

中的偵測器模型輸入定義 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' 值可以是 truefalse。開啟加熱或冷卻裝置後,應保持開啟狀態一段時間,以保護裝置的完整性並延長其運作壽命。如果 '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' 欄位。