首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有被蚊虫经纪人发送到adafruit iot门户的离线消息

没有被蚊虫经纪人发送到adafruit iot门户的离线消息
EN

Stack Overflow用户
提问于 2017-11-06 10:43:39
回答 1查看 152关注 0票数 1

我有一个树莓皮,在里面我安装了蚊子经纪人和mqtt。Pi连接到传感器,我需要将这些数据发送到adafruit IOT protal。当pi被连接时,我能够发送所有的数据,但是当pi离线时,我只能发送20-30秒的数据。如果pi离线超过2-3分钟,则该数据不会传输到门户。

我创建了一个bridge.conf文件并添加了所有要使用我的蚊子的配置。以下是内容:

代码语言:javascript
复制
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分钟,我就不会收到任何数据。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-07 08:48:34

在pi离线的情况下,传感器端有什么样的持久化机制?

据我所知,如果代理脱机,mqtt默认只在客户端存储少量数据。

事实上,我认为只要客户端仍然试图向代理发送数据,它就会存储数据。换句话说,只要不点击超时。我认为这是默认的15秒。

编辑

如果要增加这个超时,就必须增加keep-alive时间。使用Paho Python库,它看起来如下所示。

代码语言:javascript
复制
client.connect(host="localhost", port=1883, keepalive=60)

记住,这是最大的。保活时间为18h 12分15秒。

来自绿洲文献

保持活着是一个以秒为单位的时间间隔。以16位字表示,它是允许客户端发送的两个连续控制数据包之间的最大时间间隔。

当您将65535s (16位字的最大值)计算为更具可读性的格式时,您将得到18h 12分15秒的时间。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47135056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档