服务器和设备之间的AWS IoT连接获得很多[断开连接]事件,并且设备未接收到增量消息。
我正在使用AWS IoT在自写的“控制器”(在树莓派上与版本1.4.0的AWSIoTPythonSDK运行,并通过LTE棒连接)和某些AWS lambda函数(使用带有npm包的节点)之间进行安全通信版本2.411.0中的aws-sdk)。该设置通常可以正常运行,因此可以处理增量消息,并不时更新影子状态。
我使用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
不幸的是,Controller无法识别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%的消息,整个设置将无法正常工作。