0

描述 我们正在尝试让我们的本地客户端设备与 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 消息。

4

0 回答 0