我有一个树莓皮,在里面我安装了蚊子经纪人和mqtt。Pi连接到传感器,我需要将这些数据发送到adafruit IOT protal。当pi被连接时,我能够发送所有的数据,但是当pi离线时,我只能发送20-30秒的数据。如果pi离线超过2-3分钟,则该数据不会传输到门户。
我创建了一个bridge.conf文件并添加了所有要使用我的蚊子的配置。以下是内容:
connection iothub
address io.adafruit.com:1883
remote_username <username>
remote_password <password>
remote_clientid sensor1
bridge_cafile /etc/ssl/certs/ca-certificates.crt
try_private false
cleansession false
start_type automatic
bridge_insecure false
bridge_protocol_version mqttv311
bridge_tls_version tlsv1
notifications false
max_queued_messages 0
autosave_interval 5
topic # out 2 /sensors/sensor1
topic # in 2 /sensors/sensor1 我已经设置了清理假,并使用QOS 2。我还将max_queued_messages设置为0,这意味着最大值。我面临的问题是如果π离线仅1-2分钟,我就能得到所有离线数据,但如果它离线超过3-4分钟,我就不会收到任何数据。
发布于 2017-11-07 08:48:34
在pi离线的情况下,传感器端有什么样的持久化机制?
据我所知,如果代理脱机,mqtt默认只在客户端存储少量数据。
事实上,我认为只要客户端仍然试图向代理发送数据,它就会存储数据。换句话说,只要不点击超时。我认为这是默认的15秒。
编辑
如果要增加这个超时,就必须增加keep-alive时间。使用Paho Python库,它看起来如下所示。
client.connect(host="localhost", port=1883, keepalive=60)记住,这是最大的。保活时间为18h 12分15秒。
来自绿洲文献
保持活着是一个以秒为单位的时间间隔。以16位字表示,它是允许客户端发送的两个连续控制数据包之间的最大时间间隔。
当您将65535s (16位字的最大值)计算为更具可读性的格式时,您将得到18h 12分15秒的时间。
https://stackoverflow.com/questions/47135056
复制相似问题