问题标签 [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.
java - 在 GreenGrass 组件之间共享 Java 对象的最佳方式?
如果将对象声明为static
,它们对所有组件都可见吗?还有其他机制吗?它们相当大,所以我不想通过序列化它们并通过 MQTT 发送来传递它们......
amazon-web-services - AWS Greengrass v2 - 对本地资源的 Lambda 函数访问
希望你们在那些covid时期都做得尽可能好。
概述
我有一个 lambda 函数,它在带有 Greengrass 版本 1 的 raspberry 设备上运行。这个 lambda 访问我的带有 XBee 的 USB 端口(/dev/ttyUSB0
)并将此数据发送到 IoT Core 上的 MQTT,它可以工作几个月。它的功能是这样的:我的 GGC 每 5 分钟从一个有一些传感器的远程站接收 5 个包,解包这些数据后,它通过 MQTT 将其作为 JSON 发送。
我目前正在尝试将我的 GGC_v1 更新为 GGC_v2,并且在部署它时遇到了问题。在运行相同的 lambda 函数时,我无法访问版本 2 的本地资源,即使配方有权在设备上进行读写。
在 GGC_V1 上使用以下配置:
- 使此功能长期存在并使其无限期运行
- 使用组默认值(当前:Greengrass 容器)
- 使用组默认值(当前:ggc_user/ggc_group)还添加了对资源的访问
/dev/ttyUSB0
。
问题日志:
食谱:
amazon-web-services - Provision 设置为 true,但 /root/.aws/credentials 中不存在凭证文件。请安装到此位置并重试。适用于 AWSGreengrassV2
希望一切都好,
所以我正在研究 AWS Greengrass v2,我想通过 Docker 运行并想运行简单的 hello world 程序,但是当我运行这个 Docker 命令时——
我收到这个错误
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 物联网开发工具包
- 存储库链接:https ://github.com/aws/aws-iot-device-sdk-python-v2
- 版本:V1.7.1
使用了自动配置的 Greengrass V2。
平台/操作系统/设备 1.OS:Ubuntu 18.04.5 LTS(Bionic Beaver) 2. Greengrass 核心设备(容器):arm64v8/debian:buster 基础镜像。3. 客户端设备(容器):arm64v8/debian:buster 基础镜像。
密切关注的文档:
- https://aws.amazon.com/blogs/iot/implementing-local-client-devices-with-aws-iot-greengrass/
- 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
密切关注的问题:
- https://github.com/aws/aws-iot-device-sdk-cpp-v2/issues/110
- https://github.com/aws/aws-iot-device-sdk-python-v2/issues/191
已经测试的方法:
- 将超时从 5 秒更改为 30 秒(mqtt_connection)。
- 提供所有本地地址 192.168.10.125、17.17.0.1 等。发现开始正常工作。地址必须是静态的。(虽然 ip 检测器会自动获取它)
- 容器通信中必须没有冲突。(无 Conjusted 网络:在本地环境中测试)
- 可能的原因:重复的客户端 ID,或者是因为发布函数一次又一次地调用,或者(其他设备使用相同的证书:不可能)。(已创建名为 TestThing 的新事物)备注:无效果。
- 使用本地 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" 备注:同样的错误。
- 没有报价问题。(最大大小 128Kb)(测试用例:通过 basic_discovery.py 发送 hello world。备注:失败)
- 更改了客户 ID。Find Client Id 必须是 Iot Thing Name。
- 使用通配符审查和重新部署授权和桥接策略,以提供额外的特权。
- 查看绿草日志。通道不活动错误。表示客户端已断开连接。
- 删除 GroupDeployment(多个部署冲突):备注:无效果
- 防火墙已禁用。(未检测到防火墙 ufw.. 已禁用,备注:无效)
- 更改端口(moquette)(AWS_IO_SOCKET_CONNECTON_REFUSED...因为默认协议是 mqtt,而不是 web socket 上的 mqtt。所以我们不能将端口从 8883 更改为其他)
- 在办公室 jetson nano 上测试过,它之前工作得很好。备注:同样的错误。
- 创建了新的 TestThing 来检查证书问题。备注:无影响
- 可能是新加坡地区有问题,因为测试 us-west-2 工作得很好。备注:同样的错误。挂断
- 有时连接后!信息。光标挂断是因为它没有看到消息参数或连接实际上是挂断。
- io.moquette.broker.NewNettyMQTTHandler:处理 MQTT 消息时出现意外异常。关闭 Netty 频道。CId=Volttron 事物。{} java.io.IOException: invalid message 备注:仅在消息过大时接收。
格林格拉斯日志:
- https://drive.google.com/file/d/1eIBmE3OCiEleDZyvPnWSkEPWWxs1LA0_/view?usp=sharing
- https://drive.google.com/file/d/1qruKd__LglRagQHJb4Htf7jStmFgfO3E/view?usp=sharing
基本发现日志(客户端脚本:Aws-iot-sdk/Samples/basic_discovery.py)
注意:有时即使连接挂断错误也不会出现,并且光标一直闪烁而不会向核心设备发送 hello world 消息。
exception - AWS IOT ShadowManager - 同步错误
我正在使用 AWS IoT 和 Greengrass v2 开发一个 IoT 项目,并且我正在尝试集成 ShadowManager 组件以使用本地阴影,但是当我将它部署到我的设备上时,它在同步步骤中返回了一个致命异常
{greengrass-root}/logs/greengrass.log
似乎 ShadowManager 没有良好的访问权限,但我多次检查并添加了良好的策略:
我已经用经典阴影和命名阴影进行了测试,但结果相同。
我的 ShadowManager 的配置是:
同样重要的是要知道它在我第一次部署它时工作但几分钟后发布的一些更新消息失败了(没有改变任何东西)。
有人可以帮助我吗?
谢谢
amazon-web-services - 如何从 AWS IoT Core 测量 IoT 传感器延迟?
我想比较和分析使用 AWS GreenGrass 的延迟。所以我有 1 个 esp32+dht11 直接连接到 AWS iot 核心,还有 1 个 esp32+dht11 连接到 Raspi 上的 AWS greengrass。我可以测量它们的延迟吗?或者有什么工具可以用来查看来自 AWS 或任何第三个应用程序的数据流量?也许像wireshark之类的。我已经搜索了文件,但我找不到任何文件。
amazon-web-services - 无法使用创建 Greengrass Core 设备
希望你一切顺利。
我在 AWS 上设置 Greengrass v2 核心设备时遇到问题。运行 AWS IoT Greengrass Core 软件安装程序后,将创建设备。日志中没有错误。但是从控制台查看时,仍然没有创建核心设备和组件。虽然创建了事物、事物组和部署。
我正在关注以下链接:
https ://docs.aws.amazon.com/greengrass/v2/developerguide/getting-started.html
amazon-web-services - 如果需要,AWS Greengrass 能否在核心中使用 Lambda?
我在我的 AWS Greengrass 上运行了一个 AWS Lambda,这与我在 AWS Lambda Core 中的 Lambda 相同。我的问题是,如果需要,我是否可以使用 AWS Core 水平扩展我的边缘容量。
我的应用程序是一个机器学习应用程序,它在本地 IoT 服务器内边缘的 Greengrass 上运行。我是否可以使用 Greengrass 将请求/数据流转发到 AWS 核心,以便在边缘容量达到最大时它可以在核心中使用相同的 Lambda?
linux - 为什么 AWS 队列预置插件不会在云中创建 Greengrass Core 设备?
我正在关注 AWS 的“为 Greengrass 核心设备设置 AWS IoT 队列预置”和“使用 AWS IoT 队列预置安装 AWS IoT Greengrass Core 软件”中的文档。
我确保我正确地遵循它。所有策略和角色都按描述附加,但最后我设法在我的 Linux 设备上下载并安装了 Greengrass Core 软件,但在 AWS 云中看不到。我的意思是,没有在云中创建 Greengrass 核心设备,我只在本地拥有它。
有人能告诉我为什么会这样吗?或者它不应该在云中创建它?如果是这种情况,我如何将它也放在云中,以便我可以将组件部署到它?
我使用此命令执行安装:
amazon-web-services - 为什么我会因错误授权失败而导致 AWS Greengrass Core Fleet Provisioning 失败?
我正在尝试使用 AWS 设置队列配置,并且我正在遵循 AWS 文档中的所有指示。一切似乎都很好,当我运行安装 Greengrass Core 的命令时,出现授权失败错误。我真的不明白为什么它会失败。我希望你能帮助我。
这是我来自 AWS CloudWatch 的日志:
以下是核心设备上 greengrass.log 的日志:
这是我用来安装 Greengrass Core 的命令:
这是 config.yaml 文件,它应该在其中获取所需的数据: