问题标签 [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 投票
0 回答
37 浏览

boto3 - AWS IoT Core - 配置模板不受支持的参数类型

通过批量注册将多台设备注册到 AWS IoT Core 时,官方示例配置模板适用于本示例。但是,当向提供不同类型(例如整数)的配置模板添加新参数时,会引发以下错误。

而供应数据文件如下;

0 投票
0 回答
6 浏览

android - 如何与其他 AWS 账户共享 AWS Thing(物联网设备)?

我的问题是如何与我使用 Android 移动 SDK 的其他 AWS 账户共享我的IoT 事物,如果此选项可用,它是如何完成的?有电子邮件/电话号码?

0 投票
0 回答
73 浏览

amazon-web-services - 带有 IoT 核心的 AWS API 网关

我们正在尝试使用 API 从设备(使用 mqtt 客户端)检索数据。

架构如下:Api Gateway 触发发布到某个主题的 Lambda,作为回报,我们的设备(mqtt 客户端)将响应发布回另一个触发 Lambda 的主题(通过 IoT Core Rule)。计划是通过 API 端点返回此响应。

我不太熟悉 AWS 架构,想知道是否有针对它的优化设计?

非常感谢。

在此处输入图像描述

0 投票
0 回答
457 浏览

mqtt - 错误:AWS_ERROR_MQTT_UNEXPECTED_HANGUP(无限连接中断/连接恢复循环)

描述 我们正在尝试让我们的本地客户端设备与 AWS IoT Greengrass V2 连接和通信。最初,一切都按预期工作,并且在本地环境中通信同样成功。在 greengrass 中,我们看到客户端设备成功通过身份验证,但在即时会话中关闭。主机解析后任务调度程序立即关闭 TLS 通道,导致无限 RECONNECTING <> AWS_ERROR_MQTT_UNEXPECTED_HANGUP 循环。从未建立到端点的 SDK 连接。TLS 以非常快的速度打开和关闭会话。

预期行为: mqtt 消息已成功发布到 moquette 代理并传递到 iot 核心。Samples 目录中的 basic_discovery.py 脚本应该在断开连接之前向核心设备发送 10 条消息。

AWS 物联网开发工具包

  1. 存储库链接:https ://github.com/aws/aws-iot-device-sdk-python-v2
  2. 版本:V1.7.1

使用了自动配置的 Greengrass V2。

平台/操作系统/设备 1.OS:Ubuntu 18.04.5 LTS(Bionic Beaver) 2. Greengrass 核心设备(容器):arm64v8/debian:buster 基础镜像。3. 客户端设备(容器):arm64v8/debian:buster 基础镜像。

密切关注的文档:

  1. https://aws.amazon.com/blogs/iot/implementing-local-client-devices-with-aws-iot-greengrass/
  2. https://docs.aws.amazon.com/greengrass/v2/developerguide/client-devices-tutorial.html 3.https://docs.aws.amazon.com/greengrass/v2/developerguide/troubleshooting-client-devices .html

密切关注的问题:

  1. https://github.com/aws/aws-iot-device-sdk-cpp-v2/issues/110
  2. https://github.com/aws/aws-iot-device-sdk-python-v2/issues/191

已经测试的方法:

  1. 将超时从 5 秒更改为 30 秒(mqtt_connection)。
  2. 提供所有本地地址 192.168.10.125、17.17.0.1 等。发现开始正常工作。地址必须是静态的。(虽然 ip 检测器会自动获取它)
  3. 容器通信中必须没有冲突。(无 Conjusted 网络:在本地环境中测试)
  4. 可能的原因:重复的客户端 ID,或者是因为发布函数一次又一次地调用,或者(其他设备使用相同的证书:不可能)。(已创建名为 TestThing 的新事物)备注:无效果。
  5. 使用本地 bash 命令进行手动测试:python3 basic_discovery.py --thing-name VolttronThing --topic test/topic --root-ca ~ /rootCA1.pem --key ~ /private.pem.key --region ap-southeast- 1 --cert ~ /certificate.pem.crt --message "hello" --mode "anything" 备注:同样的错误。
  6. 没有报价问题。(最大大小 128Kb)(测试用例:通过 basic_discovery.py 发送 hello world。备注:失败)
  7. 更改了客户 ID。Find Client Id 必须是 Iot Thing Name。
  8. 使用通配符审查和重新部署授权和桥接策略,以提供额外的特权。
  9. 查看绿草日志。通道不活动错误。表示客户端已断开连接。
  10. 删除 GroupDeployment(多个部署冲突):备注:无效果
  11. 防火墙已禁用。(未检测到防火墙 ufw.. 已禁用,备注:无效)
  12. 更改端口(moquette)(AWS_IO_SOCKET_CONNECTON_REFUSED...因为默认协议是 mqtt,而不是 web socket 上的 mqtt。所以我们不能将端口从 8883 更改为其他)
  13. 在办公室 jetson nano 上测试过,它之前工作得很好。备注:同样的错误。
  14. 创建了新的 TestThing 来检查证书问题。备注:无影响
  15. 可能是新加坡地区有问题,因为测试 us-west-2 工作得很好。备注:同样的错误。挂断
  16. 有时连接后!信息。光标挂断是因为它没有看到消息参数或连接实际上是挂断。
  17. io.moquette.broker.NewNettyMQTTHandler:处理 MQTT 消息时出现意外异常。关闭 Netty 频道。CId=Volttron 事物。{} java.io.IOException: invalid message 备注:仅在消息过大时接收。

格林格拉斯日志:

  1. https://drive.google.com/file/d/1eIBmE3OCiEleDZyvPnWSkEPWWxs1LA0_/view?usp=sharing
  2. https://drive.google.com/file/d/1qruKd__LglRagQHJb4Htf7jStmFgfO3E/view?usp=sharing

基本发现日志(客户端脚本:Aws-iot-sdk/Samples/basic_discovery.py)

  1. https://drive.google.com/file/d/1vm14pO7QIqKl5QlOibjs5N61dAlMGA1S/view?usp=sharing

注意:有时即使连接挂断错误也不会出现,并且光标一直闪烁而不会向核心设备发送 hello world 消息。

0 投票
0 回答
105 浏览

keystore - 将 AWS IoT SDK v2 与来自 java 密钥库的证书一起使用

我正在使用 AWS IoT SDK for Java v2(基于公共运行时)将 AWS 连接添加到现有 Java 应用程序,并且我想使用现有密钥库中的证书和私钥来建立与 MQTT 的连接。

对于旧的 v1(基于 Paho)库,有一个 API 和相当简单的说明:https ://github.com/aws/aws-iot-device-sdk-java#load-keystore-from-file-to -initialize-the-client,但我想遵循建议并尽可能使用更新/更好支持的 v2 库。看起来 v2 库没有用于与 Java 密钥库交互的简单 API——最接近的是采用 PEM 格式字符串的 newMtlsBuilder 函数。

最好的答案是我必须使用 Java 密钥库 API 加载证书,然后自己将它们转换为 PEM,例如将 x509 证书写入 Java 中的 PEM 格式字符串?? 还是使用 v1 SDK,即使它已被弃用?还是我在 v2 SDK 中遗漏了什么?

更广泛地说,任何人都可以推荐一个面向 Java 的 CRT 概念和用法的优秀文章吗?或者也许是关于如何从 SDK 的 v1 迁移到 v2 的指南?C 库的 github 文档有些有用(例如https://github.com/awslabs/aws-c-io)但我对 C 不是很熟悉,弄清楚 C 概念的方式有点棘手/方法/结构将映射到 Java 绑定。

0 投票
3 回答
206 浏览

exception - AWS IOT ShadowManager - 同步错误

我正在使用 AWS IoT 和 Greengrass v2 开发一个 IoT 项目,并且我正在尝试集成 ShadowManager 组件以使用本地阴影,但是当我将它部署到我的设备上时,它在同步步骤中返回了一个致命异常

{greengrass-root}/logs/greengrass.log

似乎 ShadowManager 没有良好的访问权限,但我多次检查并添加了良好的策略:

我已经用经典阴影和命名阴影进行了测试,但结果相同。

我的 ShadowManager 的配置是:

同样重要的是要知道它在我第一次部署它时工作但几分钟后发布的一些更新消息失败了(没有改变任何东西)。

有人可以帮助我吗?

谢谢

0 投票
0 回答
70 浏览

amazon-web-services - AWS IoT:多种事物的证书

在 AWS IoT 中,可以将多个内容附加到单个证书。设备 SDK 还支持将多个设备/事物附加到同一个 IoT 客户端。

如何为这样的客户端定义策略以仅允许属于附属事物的影子的主题?

存在一个策略变量${iot:Connection.Thing.ThingName},但仅适用于与客户端 ID 匹配的事物,但不适用于其他附加的事物。${iot:Connection.Thing.IsAttached}另一方面,策略变量似乎不适Resource用于特定主题的部分。

在我们的案例中,并非所有事物都直接连接到 AWS IoT,因此我们希望与来自同一 IoT 客户端/证书(充当 IoT 网关)中的多个事物影子进行交互。我们确实有一个(取消)链接发生的钩子,但是在那里更新策略以添加“硬编码”的东西感觉不对。

什么是保持此设置安全的好方法?允许访问链接事物的所有主题并拒绝访问其他人?

对于安全地实现这个单一客户端、多个事物/影子交互的不同方法,我们持开放态度。

0 投票
0 回答
64 浏览

c# - 如何使用证书将 curl 命令传输到 C# HttpClient

我写了一个 curl 示例来使用“aws iot core”的rest api,并确认它正在运行。但是在c#http客户端的认证过程中,不知道怎么插入下面三个认证值。

如果我能得到帮助,我将不胜感激。

下面是卷曲短语。

0 投票
0 回答
70 浏览

amazon-web-services - 如何从 AWS IoT Core 测量 IoT 传感器延迟?

我想比较和分析使用 AWS GreenGrass 的延迟。所以我有 1 个 esp32+dht11 直接连接到 AWS iot 核心,还有 1 个 esp32+dht11 连接到 Raspi 上的 AWS greengrass。我可以测量它们的延迟吗?或者有什么工具可以用来查看来自 AWS 或任何第三个应用程序的数据流量?也许像wireshark之​​类的。我已经搜索了文件,但我找不到任何文件。

0 投票
0 回答
13 浏览

amazon-web-services - AWS IoT 多架构导入

我有多个 IOT 设备,它们发送每个值的串行更新,而不是同一 json 中所有值的完整更新。我得到一个

然后是一个新的有效载荷:

另一个喜欢

属性 device 和 TS 始终可用,但属性是动态的 4099 值为 0、4097 值为 232000 和 146 值为 9.249749

我一直在研究https://aws.amazon.com/blogs/iot/designing-dataflows-for-multi-schema-messages-in-aws-iot-analytics/的类型 2 架构,这绝对是有道理的。然而,不清楚的是如何编写一个 SELECT 规则,它只给我出现属性的消息,以便我可以将它重定向到正确的管道。

或者这是否意味着做SELECT * FROM topic 一个管道然后以某种方式添加属性。似乎是一个非常基本的问题,我相信其他人已经遇到过但不是 100% 清楚在哪个阶段将属性之间的转移转换为公共数据存储。