问题标签 [aws-iot-greengrass]

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 回答
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 回答
37 浏览

ota - IDT greengrass - OTA 失败 - 错误代码:128

我的问题是,在为 IDTgreengrass 测试我的设备时,OTA 失败了。

版本详情: greengrass V1、IDT 4.1.0、suite1.3.0。

核心设备详情: TX2、linuzAArch64、Ubuntu18

IDT 日志:

我查看了它显示的 OTA 错误日志:https : //forums.aws.amazon.com/-TES 以状态代码响应:400 和正文:{ "Message" : "You need to attach an IAM role to this deployment group."

还有在核心设备中,在 /greengrass-core 文件夹下。没有 usr/脚本。我找不到 .sh 文件:ggc_pre_update.sh。

0 投票
3 回答
206 浏览

exception - AWS IOT ShadowManager - 同步错误

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

{greengrass-root}/logs/greengrass.log

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

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

我的 ShadowManager 的配置是:

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

有人可以帮助我吗?

谢谢

0 投票
0 回答
24 浏览

amazon-web-services - 无法使用创建 Greengrass Core 设备

希望你一切顺利。
我在 AWS 上设置 Greengrass v2 核心设备时遇到问题。运行 AWS IoT Greengrass Core 软件安装程序后,将创建设备。日志中没有错误。但是从控制台查看时,仍然没有创建核心设备和组件。虽然创建了事物、事物组和部署。
我正在关注以下链接: https ://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started.html

0 投票
0 回答
80 浏览

android - 将 Android 应用程序连接到 AWS greengrass v2 Core

将 MQTT 消息从移动应用程序(Android)发送到离线 AWS greengrass v2 核心设备(边缘设备)的最佳方式是什么?

我可以使用 Python SDK greengrass Core Device(也是 Raspberry Pi)从 Raspberry Pi 发送 MQTT 消息。这是 - 我不会说简单但 - 可能。

如何从 Android 应用程序管理它?

大多数链接都指向 aws Amplify,但这始终连接到云。

胡乱猜测:

  • 我必须将所有 aws“事物”证书添加到应用程序(而不是使用 cognito)
  • 使用一些软件来构建身份验证文件(这是主要问题)
  • 使用一些 mqtt 模块发送和订阅主题
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% 清楚在哪个阶段将属性之间的转移转换为公共数据存储。

0 投票
0 回答
115 浏览

java - AWSIotMqttManager:onFailure:连接失败。MqttException (0) - java.io.IOException: 已经连接

我目前正在使用 Android Studio 开发一个移动应用程序,该应用程序应该通过 AWS Cognito 进行身份验证,我使用 AWS Amplify 进行验证。Amplify 似乎工作正常,但是当我尝试连接到我的 Greengrass 事物的设备影子时,我从这个问题的标题中得到了错误:

AWSIotMqttManager:onFailure:连接失败。MqttException (0) - java.io.IOException: 已经连接

这很奇怪,因为我还没有调用连接命令,所以我不应该连接。

这是我的代码:

0 投票
1 回答
78 浏览

aws-iot - AWS DUPLICATE_CLIENT_ID

我有一个 Jetson,设置为核心设备。它上面安装了 greengrass(包括部署、组件等)我想设置一个 AWS SSH 隧道,安装并配置 aws-iot-device-client,但它断开了连接。在 MQTT Test 的 AWS 控制台中,我收到错误消息 DUPLICATE_CLIENT_ID。任何想法或想法都受到高度赞赏。

0 投票
0 回答
25 浏览

amazon-web-services - 调用 RegisterThing 操作时出现 ResourceRegistrationFailureException - 事物组冲突

尝试使用 AWS IoT 中的 RegisterThings 操作时出现以下错误。在 API 调用中,我尝试设置事物组,但出现以下错误:

调用 RegisterThing 操作时发生错误 (ResourceRegistrationFailureException):Existing ThingGroups: [] 与模板中的 ThingGroups: [mythingggroup] 冲突

这是我的配置模板:

然后我像这样调用 boto3 客户端:

我认为这可能是权限错误,但即使在我给调用者 iot:* 之后,我仍然遇到同样的问题。

AWS 没有提供很好的文档说明为什么会发生此错误。有没有人有任何想法?

0 投票
0 回答
19 浏览

amazon-web-services - 我需要在具有以下触发规则的 AWS Lambda 处理请求方法中放入哪些参数?

我目前正在使用 Java 设置 AWS Lambda 函数,该函数应该在每次更新我的 Greengrass IoT 事物的设备影子时触发。通过遵循文档和不同的教程,我设法设置了这样一个 lambda 函数并成功部署它。它工作得很好,我有以下触发它的规则:

SELECT * , topic(3) as thingName FROM '$aws/things/ThingName/shadow/update/documents'

这是一个 AWSIoT 触发器。

基于此,我的问题是 - 我的 handleRequest 应该如何在 LambdaFunction 中实际获得此触发器的结果。

我当前的 handleRequest 如下所示:

我不知道如何处理参数以及为什么。这是我唯一没有找到文档的东西。

提前致谢。