国外物联网平台初探(一) ——亚马逊AWS IoT

  设备影子保留每台设备的最后报告状态和期望的未来状态,即便设备处于离线状态。

  通过 API 或使用规则引擎,获取设备的最后报告状态或设置期望的未来状态。

  应用程序可以设置设备的期望未来状态,而无需说明设备的当前状态。AWS IoT 将比较期望未来状态和最后报告状态之间的差异,并命令设备"弥补差异"。

  设备 SDK 能够轻松地同步其状态及其影子,并响应通过影子设置的期望的未来状态。

  设备影子免费存储设备状态多达一年。如果至少每年更新一次状态,则设备影子将永久保留状态;否则状态将过期。

  设备影子(Shadow)流程

  设备影子(Shadow)格式

  设备影子(Shadow)服务

  设备影子服务使用MQTT话题,便于应用和设备之间的通信,下面是相关的MQTT QoS 1话题:

  $aws/things/{thingName}/shadow/update

  $aws/things/{thingName}/shadow/get

  $aws/things/{thingName}/shadow/delete

  $aws/things/{thingName}/shadow/update/accepted

  $aws/things/{thingName}/shadow/update/rejected

  $aws/things/{thingName}/shadow/update/delta

  $aws/things/{thingName}/shadow/get/accepted

  $aws/things/{thingName}/shadow/get/rejected

  $aws/things/{thingName}/shadow/delete/accepted

  $aws/things/{thingName}/shadow/delete/rejected

  设备SDK(C-SDK、JS-SDK)将影子功能内置在设备中,能够使设备与影子服务之间自动同步状态。

  规则引擎

  规则引擎验证发布到 AWS IoT 的入站消息,并根据定义的业务规则转换这些消息并将它们传输到另一台设备或云服务。规则可以应用至一台或多台设备中的数据,并且它可以并行执行一个或多 个操作。

  规则引擎还可以将消息路由到 AWS 终端节点,包括 AWS Lambda、Amazon Kinesis、Amazon S3、Amazon Machine Learning、Amazon DynamoDB、Amazon CloudWatch 和内置 Kibana 集成的 Amazon Elasticsearch Service。外部终端节点可以使用 AWS Lambda、Amazon Kinesis 和 Amazon Simple Notification Service (SNS) 进行连接。

  使用类似 SQL 的语句编写规则。例如:如果温度读数超出特定阈值,则它可以触发规则以便将数据传输到 AWS Lambda;如果此温度超出其他 5 台设备的平均值 15%,则应采取措施。

  规则引擎将提供数十个可用于转换数据的可用功能,并且可以通过 AWS Lambda 创建无限个功能。例如,如果正在处理各种不同的数值,则可以取传入数字的平均值。规则还会触发在 AWS Lambda 中执行 Java、Node.js 或 Python 代码,从而提供最高灵活度以及处理设备数据的能力。

  规则引擎集成其它云服务

  规则引擎验证发布至AWS IoT的消息请求,基于业务规则转换消息请求并发布至其它服务,例如:

  富集化或过滤从设备收集的数据

  将设备数据写入一个亚马逊DynamoDBm数据库

  保存文件至亚马逊S3

  发送一个推送通知到所有亚马逊SNS用户

  向亚马逊SQS队列发布数据

  调用Lambda函数抽取数据

  使用亚马逊Kinesis处理大量的设备消息数据

  发送数据至亚马逊Elasticsearch服务

  捕获一条CloudWatch测量数据

  更新一条CloudWatch告警

  把一条MQTT消息数据发送至亚马逊机器学习服务,基于亚马逊机器学习模型进行预测

  规则引擎&实时流式数据处理

  N:1 入站的传感器流式数据(数据降噪)

  规则引擎过滤、转换、汇总传感器数据后,发送至亚马逊Kinesis处理实时流式数据

  Kinesis流式数据共享至其它业务系统

  将流式数据的实时处理结果导入至数据库、应用或其它亚马逊服务

  规则引擎&推送通知服务