AWS IoT 1-Click 程式設計模型 - AWS IoT 1-Click

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

AWS IoT 1-Click 程式設計模型

若要使用 AWS IoT 1-Click 裝置建立應用程式,程式設計師會使用AWS IoT 1-Click 裝置 APIAWS IoT 1-Click 專案 API。裝置 API 與 AWS IoT 1-Click 裝置元件互動,並處理來自裝置的事件。這些事件包含啟用和停用裝置以及定義事件格式和其觸發的動作 (Lambda 函數)。裝置 API 與位於製造商註冊裝置所在區域的 AWS 元件緊密結合。這就是為什麼AWS 裝置區域可能與客戶使用該裝置的區域不同。專案 API 與 AWS IoT 1-Click 專案服務互動,並用來彙總管理 AWS IoT 1-Click 裝置,這使得它可以:

  • 將裝置群組到專案中。

  • 建立用於為專案中所有裝置設定動作的範本。

  • 定義儲存與專案相關的關聯資料屬性。

透過使用裝置 API,您可以使用 AWS IoT 1-Click 程式設計模型對各個裝置進行程式設計。在這種情況下,您將使用 AWS IoT 1-Click 裝置類型。API 定義了標準事件格式和為該類型的所有裝置形成程式設計界面的方法清單。為了叫用與特定裝置類型相關的方法,程式設計人員可以使用 InvokeDeviceMethod API 並將裝置方法指定為參數。

例如,具有裝置類型「按鈕」的所有 AWS IoT 1-Click 裝置將發出與按一下關聯的事件,並且具有設定在按一下裝置時叫用的回呼函數的方法。如需按鈕介面的相關資訊,請參閱依裝置類型分類的介面。以下是設置此回呼函數的程式碼:

String methodParameters = mapper.writeValueAsString( SetOnClickCallbackRequestParameters.builder() .deviceId(deviceId) .callback(DeviceCallback.builder() .awsLambdaArn(“arn:aws:lambda:us-west-2:123456789012:MyButtonListener”) .build()) .build()); InvokeDeviceMethodRequest request = new InvokeDeviceMethodRequest() .withDeviceMethod(new DeviceMethod() .withDeviceType("button") .withMethodName("setOnClickCallback")) .withDeviceMethodParameters(methodParameters);

您可以使用專案 API 來進行裝置機群的程式設計。使用 API 時,必須先定義每個配置的外觀,包括每個配置的裝置範本和屬性。完成後,您將建立具有特定裝置 ID 的置放位置。每個配置遵循相同的範本。以下是範例程式碼來做到這一點:

final Map<String, String> callbacks = new HashMap<>(); callbacks.put("onClickCallback", "arn:aws:lambda:us-west-2:123456789012:MyButtonListener"); final DeviceTemplate item = DeviceTemplate.builder() .withDeviceType(“button”) .withCallbackOverrides(callbacks) .build(); final Map<String, DeviceTemplate> deviceTemplateMap = new HashMap<>(); deviceTemplateMap.put(“MyDevice”, item); final Map<String, String> placementDefaultAttributes = new HashMap<>(); placementDefaultAttributes.put(“location”, “Seattle”) request = CreateProjectRequest.builder() .withProjectName(“HelloWorld”) .withDescription(“My first project!”) .withPlacementTemplate(PlacementTemplate.builder() .withDefaultAttributes(placementDefaultAttributes) .withDeviceTemplates(deviceTemplateMap) .build()) .build(); projectsClient.createProject(request)

AWS IoT 1-Click 回呼事件

AWS IoT 1-Click 可讓您透過註冊回呼來訂閱裝置事件。回呼範例是 AWS IoT 1-Click 客戶 (也就是 AWS IoT 1-Click 客戶) 擁有和實作的 AWS Lambda 函數。每當有可耗用的事件時,系統就會呼叫此回呼。如需事件及其承載的相關資訊,請參閱 AWS IoT 1-Click 事件AWS IoT 1-Click 運作 Health 活動 章節。

AWS IoT 1-Click 事件

button 類型的裝置每次被點選時都會發佈點選事件。您可以透過以下方式訂閱此事件:

  • 呼叫設備上的設備 SetOnClickCallback 方法。

  • 適當地設定相關聯的專案,如先前的建立專案程式碼範例所示。

在下列範例中,請注意只有在裝置有相關聯的置放位置時,才會出現 placementInfo 區段 如需詳細資訊,請參閱 專案、範本和置放

{ "deviceEvent": { "buttonClicked": { "clickType": "SINGLE", "reportedTime": "2018-05-04T23:26:33.747Z" } }, "deviceInfo": { "attributes": { "key3": "value3", "key1": "value1", "key4": "value4" }, "type": "button", "deviceId": " G030PMXXXXXXXXXX ", "remainingLife": 5.00 }, "placementInfo": { "projectName": "test", "placementName": "myPlacement", "attributes": { "location": "Seattle", "equipment": "printer" }, "devices": { "myButton": " G030PMXXXXXXXXXX " } } }

AWS IoT 1-Click 運作 Health 活動

裝置會根據 AWS IoT 1-Click 服務計算的運作狀態參數來發佈運作狀態事件,但您可以設定其對應的閾值。以下範例代表剩餘壽命為 10% 之裝置 G030PMXXXXXXXXXX (注意 "remainingLifeLowerThan":10 鍵/值對) 的運作狀態事件 JSON 承載。

{ "deviceEvent": { "deviceHealthMonitor": { "condition": { "remainingLifeLowerThan": 10 } } }, "deviceInfo": { "attributes": { "key2": "value2", "key1": "value1", "projectRegion": "us-west-2" }, "type": "button", "deviceId": "G030PMXXXXXXXXXX", "remainingLife": 5.4 } }

裝置方法

AWS IoT 1-Click 裝置方法是支援特定裝置類型的 API,如下表所示。任何裝置支援的裝置方法完整清單,可藉由呼叫 GetDeviceMethods 取得。

裝置類型 方法名稱 描述

device

getDeviceHealthParameters

取得裝置的運作狀態參數,例如 remainingLife

device

setDeviceHealthMonitorCallback

設定在裝置運作狀態參數低於閾值時呼叫回呼。

device

getDeviceHealthMonitorCallback

取得在裝置運作狀態參數低於閾值時呼叫的回呼設定。

button

setOnClickCallback

設定在按下按鈕時呼叫回呼。

button

getOnClickCallback

取得在按下按鈕時呼叫的回呼設定。