使用 AWS IoT Events 监控您的物联网设备
您可以使用 AWS IoT Events 监控您的设备或流程,并根据重大事件采取行动。为此,请遵循以下基本步骤:
- 创建输入
-
您的设备和流程必须有一种方法来获取遥测数据 AWS IoT Events. 要执行此操作,只需将消息作为 输入 至 AWS IoT Events. 您可以通过多种方式将消息作为输入进行发送:
-
使用 BatchPut消息 操作。
-
英寸 AWS IoT Core,写下 AWS IoT Events 行动 规则 AWS IoT Core 将消息数据转发至 AWS IoT Events. 这将通过名称识别输入。
-
英寸 AWS IoT Analytics,使用 创建数据集 操作创建数据集
contentDeliveryRules
。这些规则指定 AWS IoT Events 输入,其中数据集内容自动发送。 -
定义 iot事件 操作 AWS IoT Events 检测器模型
onInput
,onExit
或transitionEvents
事件。有关检测器模型实例和触发操作的事件的信息作为输入以您指定的名称反馈到系统中。
在设备以这种方式开始发送数据之前,您必须定义一个或多个输入。要执行此操作,请为每个输入命名并指定输入监控的传入消息数据中的哪些字段。 AWS IoT Events 以JSON有效负载的形式从许多来源接收其输入。每个输入可以单独操作或与其他输入组合以检测更复杂的事件。
-
- 创建检测器模型
-
定义 检测器型号 (您的设备或工艺型号) 状态. 对于每种状态,您定义条件(布尔值)逻辑,该逻辑评估传入的输入以检测重要事件。当检测到事件时,它可以使用其他 AWS 服务。您可以定义其他事件,这些事件将在进入或退出某个状态以及满足某个条件(可选)时触发动作。
在本教程中,您将 Amazon SNS 消息,当模型进入或退出特定状态时。
- 监控设备或流程
-
如果您正在监控多个设备或进程,请在每个输入中指定标识特定设备或进程的域。(参见
key
字段CreateDetectorModel
。)当标识新设备时(在输入字段中看到新值,所述输入字段由key
),会创建一个检测器。(每个检测器都是检测器模型的实例。)然后,新的检测器继续响应来自该设备的输入,直到其检测器型号被更新或删除。如果您正在监控单个进程(即使多个设备或子进程正在发送输入),则不会指定唯一的标识
key
字段。在这种情况下,当第一个输入到达时,将创建单个检测器(实例)。 - 将消息作为输入发送到您的检测器模型
-
有几种方式可以从设备或进程发送消息,作为输入 AWS IoT Events 不需要您在消息中执行其他格式化的检测器。在本教程中,您使用 AWS IoT 控制台以编写 AWS IoT Events 行动 规则 AWS IoT Core 将消息数据转发至 AWS IoT Events. 为此,您可以用名称识别输入。然后您继续使用 AWS IoT 以生成一些作为输入转发到 AWS IoT Events.
您如何知道在探测器型号中需要哪些状态?
要确定您的检测器模型应处于什么状态,首先确定可以采取什么操作。例如,如果您的汽车使用汽油,您在开始旅行时查看燃油量表,以了解是否需要加油。这里有一项操作:告诉司机“去取气”。您的探测器型号需要两种状态:“汽车不需要燃油”和“汽车确实需要燃油”。通常,您要为每个可能的操作定义一个状态,如果不需要任何操作,则再定义一个状态。即使操作本身更复杂,这也会起作用。例如,您可能想要查找并包含查找最近的加油站或最便宜价格的信息,但当您向“gogetgas”发送消息时,您会这样做。
要决定输入下一个状态,请查看输入。输入包含决定中应处于什么状态所需的信息。要创建输入,请在设备或进程发送的消息中选择一个或多个字段,以帮助您决定。在本示例中,您需要一个输入,告诉您当前的燃油水平(“满油百分比”)。也许您的汽车正在向您发送几个不同的信息,每个信息都有几个不同的字段。要创建此输入,您必须选择消息和报告当前气量计级别的字段。您要乘坐的行程长度(“距离目的地的距离”)可以硬编码,以保持简单;您可以使用平均行程长度。您将根据输入(该百分比的满负荷转换到多少加仑?考虑到您所使用的加仑数和您的平均“每加仑英里数”,平均行程长度是否大于您可以旅行的英里数)进行一些计算。执行这些计算并在中发送消息 事件.
到目前为止,您有两个状态和一个输入。您需要处于第一个状态的事件,以根据输入执行计算并决定是否进入第二个状态。这是过渡事件。(transitionEvents
处于某个州的 onInput
事件列表。 开启 接收 输入 在第一个状态下, 事件 执行 过渡 到第二状态,如果事件的 condition
满足。)到达第二状态时,一旦进入状态,即会立即发送消息。(您使用 onEnter
活动。进入第二状态时,此事件将发送消息。不需要等待其他输入到达。)有其他类型的事件,但对于简单示例,您只需要这样做。
其他类型的事件是 onExit
和 onInput
。一旦接收到输入并且满足条件, onInput
事件执行指定的操作。当操作退出其当前状态且满足条件时, onExit
事件执行指定的操作。
你有没有遗漏任何东西? 是的,您如何回到第一个“汽车不需要燃油”状态? 加注气罐后,输入会显示满罐。在第二个状态下,您需要一个转换事件,回到接收输入时的第一个状态(第二个状态
onInput:
事件)。如果它的计算显示您现在有足够的气体来让您到达您想要到达的位置,则应转换回第一个状态。
这就是基础。有些检测器型号通过添加反映重要输入的状态而变得更加复杂,而不仅仅是可能的操作。例如,在检测器模型中,您可能会有三种状态,用于跟踪温度:“正常”状态、“过热”状态和“潜在问题”状态。当温度上升到某个水平以上,但尚未变得太热时,您就会过渡到潜在的问题状态。您不希望发送警报,除非它在此温度下停留超过15分钟。如果温度在那之前恢复正常,则检测器会转换回正常状态。如果计时器到期,检测器将过渡到过热状态并发送警报,这只是要小心。您可以使用变量和一组更复杂的事件条件执行相同的操作。但实际上,使用其他状态来存储计算结果通常更容易。
您如何知道是否需要一个或几个检测器实例?
要确定您需要多少个实例,问问自己“您对了解什么感兴趣?” 假设您想了解今天的天气。是否下雨(状态)? 您需要使用伞吗? 您可以有一个报告温度的传感器、另一个报告湿度的传感器,以及报告气压、风速和方向以及降水的其他传感器。但您必须监控所有这些传感器,以确定天气状态(雨、雪、过播、阳光)以及要采取的适当操作(戴上雨伞或涂抹防晒霜)。尽管有传感器数量,但您希望一个检测器实例监控天气状态并告知您要采取哪些操作。
但是,如果您是您所在区域的天气预报员,您可能会有多个此类传感器阵列的实例,位于整个区域的不同位置。每个地点的人员都需要了解该地点的天气情况。在这种情况下,您需要检测器的多个实例。每个位置的每个传感器报告的数据必须包含您被指定为
key
字段。此字段启用 AWS IoT Events 为该区域创建检测器实例,然后在检测器继续到达时继续将此信息路由到该检测器实例。不会再有头发受损或鼻子晒伤!
基本上,如果您有一种情况(一个进程或一个位置)来监控,则需要一个检测器实例。如果您有许多需要监控的情况(位置、进程),则需要多个检测器实例。