问题标签 [aws-iot-core]

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.

0 投票
2 回答
156 浏览

amazon-web-services - AWS IOT 作业与主题订阅有何不同?

在 AWS IOT 中,我们可以让设备订阅一个主题。当收到有关某个主题的消息时,可以对设备进行编程以执行某些代码。

AWS IOT Jobs 看起来很相似,因为设备会侦听作业并在收到作业时执行某些代码。

AWS IOT 作业与主题订阅有何不同?

0 投票
0 回答
53 浏览

amazon-web-services - 连续 AWS-IoT 作业触发器

我在 AWS-IoT 客户端注册回调中不断接收 IoT 作业数据。

对于 AWS-IoT 客户端通信,我使用c 语言的 aws-iot-device-sdk-embedded-C-2.3.0 SDK。

使用此 SDK,我已成功连接 AWS-IoT 核心,并以事物名称成功订阅 AWS-IoT 核心。

对于订阅的方法,我正在使用这个 API(aws_iot_jobs_subscribe_to_all_job_messages)。

当为 OTA 操作创建作业时,我在订阅的回调函数中接收到连续的作业数据。

如果在收到第一个作业后我已将 JOB_EXECUTION_IN_PROGRESS 状态发布到 AWS-IoT 核心,则该消息将在回调中继续接收。

当我将 JOB_EXECUTION_SUCCEEDED 或 JOB_EXECUTION_FAILED 状态宏发布到 AWS-IoT 核心时。之后,在回调中停止连续的消息接收。

那么,对于如何停止这个连续的作业触发消息从 AWS-IoT 核心回调有什么建议吗?

API 描述如下,我用于 AWS-IoT 客户端订阅方法。

IoT_Error_t aws_iot_jobs_subscribe_to_all_job_messages(AWS_IoT_Client *pClient, QoS qos, const char *thingName, pApplicationHandler_t pApplicationHandler, void *pApplicationHandlerData, char *topicBuffer, uint16_t topicBufferSize);

0 投票
0 回答
20 浏览

amazon-web-services - 如何获取有关 aws iot 核心中事物报告状态的有效负载描述?

我正在构建一个服务,其中事物的更新状态被下游传输到处理有效负载的 HTTP 端点。该端点可以从不同的 aws iot 事物中获取数据,因此它需要知道有效负载的格式以进行解析。


例如:温度传感器可以发送: {reported: {temperature: 35}} ,而相机可以发送{reported: {event: "person-detected"}}

是否有 AWS IoT Thing SDK 来检索事物的有效负载描述,以便下游终端节点可以根据发布消息的事物类型或事物组自动处理有效负载?

0 投票
0 回答
59 浏览

amazon-web-services - 有没有办法通过 Lambda 在 AWS IoT Greengrass CoreDevice 上同步调用事件

我试图找出一种方法来启用从 Lambda 到 Greengrass 核心设备的同步通信流。

一个例子是设备将在核心设备上执行一些代码并且需要返回成功或失败的情况,例如检查一个特定的 SD 卡是否已满或在设备上可写。此检查需要通过带有参数(SD 卡插槽索引)的 api 公开,以便可以随意调用它。

是否可以同步调用 lambda 函数并以同步方式等待 IoT Core 的响应?

所有文档都指向通过 MQTT 到核心设备的异步调用方法,并在 AWSIoTCore 上创建规则以触发 lambda/通知 SQS。如果当时只有 1 个 Http 请求,这没关系,但在多个请求的情况下,我们如何从 SQS 队列中识别正确的消息。

我想知道如何在 lambda 中等待 IoTCore 的结果,然后再向 API 发送响应。

0 投票
0 回答
61 浏览

python - AWS IoT shadowGet Timeout

我尝试使用 AWS IoT Shadow 功能让 AWS IoT 脚本在 Raspberry Pi 上运行。

当我尝试使用 shadowGet(...) 获取当前状态时,返回回调(函数 customShadowCallback_Get)返回 responseStatus=timeout。

这是代码:

相关政策是:

有人知道为什么我会超时吗?我还尝试在 AWS IoT 控制台中创建一个名为“RPi3a-shadow”的影子,但它仍然不起作用。我错过了什么?

非常感谢!

0 投票
1 回答
611 浏览

aws-iot - 如何有效地配置 AWS IoT 规则以将数据写入设备特定的 Timestream 数据库?

我想将 IoT 设备数据存储在 Timestream 数据库中的设备特定表中。这将允许我们仅根据特定的 IAM 或 Cognito 策略授予用户访问其特定设备数据的权限。

来自设备的数据看起来像这样,id具有时间流维度和temperature度量。

并将发布到主题

有一个 Timestream 数据库device_data,其中每个设备都有一个表,在这种情况下device_12345

现在我们可以创建一个规则,将数据从该设备推送到特定表,如下所示:

设备到时间流规则

它从确切的端点中选择相关数据。动作如下所示:

时间流规则动作

该角色配置为仅允许写入 Timestream 数据库中的特定表。可以将策略附加到设备以仅允许特定设备写入该特定 MQTT 端点(防止其他设备意外写入)。

然后可以为用户配置一个策略,只允许对该表进行读取访问,以便仅从他们的设备查询数据。

在这种情况下,必须为每个设备准备好以下内容:

  1. 将 MQTT 发布端点限制为设备端点的策略(在这种情况下devices/data/device_12345
  2. 将数据推送到正确设置特定设备端点以及特定设备数据库表的时间流的规则
  3. 允许该规则将数据写入数据库中设备特定表的 IAM 策略

现在的问题:

  1. 是否可以配置一个通用规则来查看设备 ID 或有关 IoT 事物的一些信息并根据此信息将其推送到正确的数据库表?例如,规则是否可以查看id维度并​​在此基础上将其推送到正确的表格?
  2. 如果我们必须为数以百万计的设备中的每一个都设置这些项目,如何实现自动化?
  3. 拥有数百万个特定于设备的策略和规则是最有效/最有效的方法吗?
0 投票
1 回答
69 浏览

python - Python AWS IoT Core:创建 thingName 影子

在 AWS 文档中,只有关于如何 update_thing_shadow 的说明。(https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iot-data.html#IoTDataPlane.Client.update_thing_shadow

我们如何创建事物影子?

谢谢!

0 投票
0 回答
35 浏览

python - 如何使用 python 订阅 IoT Core 主题

我能够将消息发布到 IoT Core 主题,即 "testTopic" 。

但我无法在客户端上使用订阅,因此我阅读了使用 python 代码发送到主题的消息。

我不想编写规则,因为我需要编写功能测试用例并希望订阅和读取来自 testTopic 的消息。

它给我一个订阅方法不存在的错误。我怎样才能做到这一点。

0 投票
1 回答
330 浏览

iot - 使用 IOT 将数据写入 AWS 时间流表 - 时间戳不起作用

我正在尝试使用 iot 核心规则来定义一个将 JSON 对象发送到时间流表的操作。该对象如下所示:

{ "Time": 1483715700000, "TimeUnit": "MILLISECONDS", "endpointID": "ahu3", "Introduction_temperature": 15.8 }

sql查询:

我想在对象中使用时间戳:(在规则中定义)

Value: ${Time} Unit: MILLISECOND

当我尝试使用我的时间戳时,表中没有任何内容!只有当我不使用我的时间戳时它才有效。有没有人遇到过这个问题?谢谢

0 投票
1 回答
471 浏览

amazon-web-services - 在 greengrass 核心 AWS 上运行 mqtt 代理

我目前在运行完美的 ubuntu 容器中运行 AWS greengrass 核心。我想要的是使用核心 mqtt 代理将数据发送到 AWS IOT。到目前为止,我读到的是 greengrass 核心有自己的可以配置的 MQTT 代理。为此,我尝试更新此链接中提到的部署:https ://docs.aws.amazon.com/greengrass/v2/developerguide/configure-greengrass-core-v2.html

但我仍然看不到 mqtt 经纪人出现。我还有一个容器正在向其他 mqtt 代理发送数据,我想将相同的数据发送到 AWS IoT 核心。为此,我需要在应用程序中配置在 AWS greengrass 核心上运行的 mqtt 代理。

我再次有两个问题:

  1. 我采取的方法是否正确?我们能否将 mqtt 代理配置为在 AWS greengrass 核心上本地运行。如果是,那么我们该怎么做?
  2. 如果我们无法在 AWS greengrass 上运行 mqtt 代理,那么我们可以将数据发送到 IoT 核心的方式是什么。我们可以通过创建像 lambda 函数这样的自定义组件来实现它吗?

任何帮助,将不胜感激。