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 函数)。设备开发工具包与驻留在制造商注册设备的区域中的 AWS 组件紧密结合。这就是为什么AWS 设备区域可能不同于客户使用设备的区域。项目 API 与 AWS IoT 1-Click 项目服务交互,用于总体上管理 AWS IoT 1-Click 设备,这使得可以:

  • 将设备分组到项目中。

  • 创建用于为项目中的所有设备设置操作的模板。

  • 定义存储与项目相关的上下文数据的属性。

通过使用设备开发工具包,您可以使用 AWS IoT 1-Click 编程模型为单个设备编程。在本例中,您将使用 AWS IoT 1-Click 设备类型。该开发工具包定义了标准事件格式和为该类型的所有设备形成编程接口的方法的列表。要调用与指定设备类型相关的方法,程序员可以使用 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,您可首先定义每个放置的外观,包括每个放置的设备模板和属性。完成该操作后,您可使用特定设备 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 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 的运行状况事件的 JSON 负载(记下 "remainingLifeLowerThan":10 键/值对)。

{ "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

获取经过配置、在单击按钮时调用的回调。