问题标签 [aws-iot-analytics]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
amazon-web-services - 是否可以向 AWS IoT Analytics 中的管道添加多个通道输入?
我有多个物联网设备将相同类型的数据发送到他们的影子。我想使用 IoT Analytics 分析这些数据。我为这些设备中的每一个创建了一个通道,并希望使用活动处理来自所有设备的数据。UI 建议管道可以附加多个通道,但我不知道如何。我也没有在 API 文档中找到任何关于此的信息。
是否有可能或者我必须为这些渠道中的每一个添加新管道?难道没有更简单的方法来组织这些东西,让它们都将数据发送到单个通道(因为无论如何它都是同一种数据)?
amazon-web-services - AWS IoT Analytics 增量窗口
我在让 AWS IoT Analytics Delta Window ( docs ) 工作时遇到了真正的问题。
我正在尝试对其进行设置,以便每天运行查询以仅获取最后 1 小时的数据。根据文档,该schedule
功能可用于使用 cron 表达式(在我的情况下是每小时一次)运行查询,并且delta window
应该将我的查询限制为仅包括指定时间窗口内的记录(在我的情况下是最后一小时)。
我正在运行的 SQL 查询很简单SELECT * FROM dev_iot_analytics_datastore
,如果我不包含任何增量窗口,我会按预期获得记录。不幸的是,当我包含一个 delta 表达式时,我什么也得不到(永远)。我现在将数据累积了大约 10 天,因此数据库中有几百万条记录。鉴于我不确定最佳格式是什么,我在条目中包含了以下时间字段:
AWS 还自动添加了一个名为的值__dt
,它使用与我相同的格式,datetime
但它似乎在 1 天内准确。即在给定日期内输入的所有值都具有相同的值(例如2019-05-15 00:00:00.00
)
我已经尝试了标准 SQL 和 Presto 中的一系列表达式(包括建议的 AWS 表达式),因为我不确定哪个用于此查询。我知道他们使用 Presto 的一个子集进行分析,所以他们将它用于 delta 是有道理的,但文档只是说' ......任何有效的 SQL 表达式'。
到目前为止,我尝试过的表达式没有运气:
amazon-web-services - AWS IOT 分析以在属性更改状态时触发事件
是否可以检测 iOT 消息的属性是否从 false 更改为 true 并触发操作?我想捕获所有状态变化。我想知道物联网分析是否是正确的工具。通过本教程,似乎选择一个增量时间窗口并查询数据可能会触发一个事件。时间窗口越小,我的闹钟就越实时。我看到的一个问题是警报会被反复触发。
这是在正确的方向吗?
amazon-web-services - 如何按影子状态/属性监控 AWS IOT 连接设备历史记录和分组
鉴于我有 xK 设备,它们中的每一个都连接到 AWS IoT,并且它们中的每一个都有属性/影子状态来对它们进行分组
设备影子示例:{ "factory": "factoryA", "pipeInstalledVersion: "1.5.6" }
分组监控这些设备的最简单方法是什么(基于影子状态)
例如,我想知道 A 工厂在 11:05、15:30、20:50 连接了多少设备。我还想知道设备在特定时间间隔(例如每 5 分钟)具有的 pipeInstalledVersion。我还想知道,例如,工厂 A 在 09:00 连接的设备是否少于 X,然后发送警报。
AWS IoT 有一个用于连接设备的监控仪表板,但无法通过影子状态/属性对其进行分组
我研究了 AWS IoT 分析,但似乎存在一些限制 - 推荐的用于可视化数据的平台 QuickSight 具有有限的自动刷新周期(我相信 1 小时),即使基础数据集可以每 5 分钟刷新一次。- 数据集仅在 IOT 设备在该时间传输数据时才会显示数据。如果物联网设备已连接但在该时间段内没有传输数据怎么办?就好像它没有连接一样。
amazon-web-services - AWS IoT:限制连接、来自设备的消息
我正在使用 AWS IoT。我想限制来自特定设备的连接和消息。(主要是防止成本)
有什么办法可以做到这一点?
AWS IoT Device Defender 可用于解决安全漏洞、检测异常等。
但是我想设置一些阈值(例如每天 100 条消息),之后应该拒绝来自同一设备的消息。
aws-lambda - 通配符主题名称和从所有主题中捕获消息
我们正在使用 AWS IoT。
我们有预定义的主题 (+/device/),设备会在其中发布消息。
但是有可能,设备可以将消息发布到任何其他主题。
我想计算这些单个设备发布到所有主题的消息数量并实施限制。
我尝试使用 ( +/* 或/ ) 等通配符主题名称创建 IoT 规则,但这些通配符主题似乎都不起作用。
是否有任何通配符主题名称,我可以使用它来捕获来自所有主题的消息?
或者有没有办法将所有主题的所有消息转储到 DynamoDB 或 S3 中的某个地方,并计算特定时间段内来自各个设备的消息数量?
aws-lambda - 如何验证 AWS lambda 函数是否在用于 Greengrass 的树莓派 3 上运行?
我更喜欢在 RaspberryPi3 中设置 AWS Greengrass 的官方 AWS 文档。我已经完成了
模块 2:安装 AWS IoT Greengrass 核心软件
到那个时刻
模块 3(第 1 部分):AWS IoT Greengrass 上的 Lambda 函数 ,我被困在“验证 Lambda 函数是否在核心设备上运行”。
因为通过订阅主题“hello/world”,我在 MQTT 客户端仪表板上看不到“hello world!从运行在平台上的 greengrass 核心发送:Linux - 4.19.86-v7+-armv7l-with-debian9.0”。
我已经为我的 greengrass 组成功部署了此类部署,并提供了订阅和 Lambda 函数,如 AWS 文档中所述。我还通过命令在 RaspberryPi3 上启动了守护进程
sudo ./greengrassd start
在路径位置
我还检查了路径位置的 GGConnManager.log 文件
这显示了这样的最后一个日志,
但是在 MQTT 客户端仪表板上仍然没有得到任何预期的结果。
我错过了什么吗?我应该如何发布或订阅此任务的此类主题?
或者我应该尝试任何其他方法来验证这个 AWS lambda 函数吗?请帮忙。
amazon-web-services - 如何设计一个 AWS IoT Analytics Pipeline,每个设备都有单独的数据集?
我有一个从传感器获取数据并将这些数据推送到 AWS IoT Core 主题的移动应用程序。我想将此数据中继到 AWS IoT Analytics,然后使用我自己的机器学习代码进行分析 - 使用容器数据集。重要的是要确保device_id
在 30 分钟的时间窗口内对事件进行隔离、批处理和分析。在我的例子中,只有一起分析由同一 device_id 生成的一组事件才有意义。事件负载已包含唯一的 device_id 属性。想到的第一个解决方案是Channel -> Pipeline -> DataStore -> SQL DataSet -> Container Data Set
为每个移动客户端单独设置。视觉描绘如下:
鉴于设备的数量是 N,这个架构的问题是我需要有 N 个通道,N 个实际上相同的管道,N 个存储相同类型/模式的数据存储,最后是 2*N 个数据集。因此,如果我有 50.000 台设备,那么资源的数量是巨大的。这让我意识到这不是一个好的解决方案。我想到的下一个想法是所有设备只有一个 Channel、一个 Pipeline 和一个 Datastore,并且每个设备只有不同的 SQL 数据集和不同的容器数据集。看起来像这样:
这种架构现在感觉好多了,但如果我有 50.000 台设备,我仍然需要 100.000 个不同的数据集。默认的 AWS 限制是每个账户 100 个数据集。当然,我可以请求增加限制,但如果默认限制是 100 个数据集,那么我想知道请求增加限制是否有意义,即默认限制的 x1000 倍?这两种架构中的任何一种应该如何使用 AWS IoT Analytics 还是我遗漏了什么?
python - 在 IoT Analytics 中触发的 Lambda 函数将 POST 请求发送到外部 API
我正在尝试在 Python 中设置 AWS Lambda 函数,该函数在 IOT 分析处理期间触发,并将两个连续的 POST 请求发送到外部 API(如果满足条件)。我无法直接导入“请求”包,因为它对于内联编辑来说太大了,所以我已经将我的 Python 脚本以及包上传到 zip 文件中,然后将其上传到 AWS。
运行 lambda 时,我在请求包文件上收到错误,我不太明白。我也不确定如何返回 API 响应,因为我的响应出现序列化错误。这是我的 lambda 代码:
您知道如何解决这些错误吗?
如果我用“reponse_1 : json.dumps(response1)”更改返回,我会收到这些错误(无论是使用 zip 包还是 SDK):
aws-iot - 如何让 IoT Analytics 为输入 JSON 数组中的每个元素创建一个新行?
如果我一次从我的频道中的 IoT 设备接收数据记录作为 JSON 数组。收到的消息如下所示:
数据存储是:
我想要的结果是:
如何让 IoT Analytics 在数据存储中为接收到的 JSON 数组中的每个元素创建一个新行?