服务器和设备之间的 AWS IoT 连接会收到很多 [断开连接] 事件,并且设备没有接收到增量消息。
我正在使用 AWS IoT 允许在自写的“控制器”(在树莓派上使用 1.4.0 版的 AWSIoTPythonSDK 运行,通过 LTE 棒连接)和一些 AWS lambda 函数(使用带有 npm 包 aws-sdk 的节点)之间进行安全通信在 2.411.0 版中)。该设置通常工作,因此处理增量消息并不时更新影子状态。
我使用 python-iot-sdk 示例中的默认配置作为初始配置:
myAWSIoTMQTTShadowClient = AWSIoTMQTTShadowClient(self.clientId)
myAWSIoTMQTTShadowClient.configureEndpoint(self.host, self.port)
myAWSIoTMQTTShadowClient.configureCredentials(self.rootCAPath, self.privateKeyPath, self.certificatePath)
# AWSIoTMQTTShadowClient configuration - from AWS example
myAWSIoTMQTTShadowClient.configureAutoReconnectBackoffTime(1, 32, 20)
myAWSIoTMQTTShadowClient.configureConnectDisconnectTimeout(15) # 10 sec
myAWSIoTMQTTShadowClient.configureMQTTOperationTimeout(10) # 5 sec
不幸的是,控制器无法识别 AWS 中的许多影子更新,例如。没有记录有关新增量消息的信息。
我已经尝试了不同的超时设置,启用和禁用了 OfflinePublishQueue,但没有真正找到允许稳定使用的配置。
我确实收到了很多关于客户端断开事件的日志记录:
2019-06-02 14:03:03,933 AWSIoTPythonSDK.core.protocol.internal.workers - [DEBUG] - Produced [disconnect] event
2019-06-02 14:03:03,933 AWSIoTPythonSDK.core.protocol.internal.workers - [DEBUG] - Dispatching [disconnect] event
2019-06-02 14:03:04,333 AWSIoTPythonSDK.core.protocol.connection.cores - [DEBUG] - backOff: current backoff time is: 32 sec.
相应的 MQTT 主题也$aws/events/presence/disconnected/<clientId>
显示了很多连接/断开连接(使用 AWS IoT 测试菜单)。
我真的不知道如何获得更稳定的连接,GSM 信号很好,我们在早期版本的控制器中已经有了更好的连接质量。只要设备没有收到近 30% 的消息,整个设置就无法正常工作。