Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mqtt MOSQUITO代理未将脱机邮件发送至adafruit物联网门户_Mqtt_Mosquitto_Paho - Fatal编程技术网

Mqtt MOSQUITO代理未将脱机邮件发送至adafruit物联网门户

Mqtt MOSQUITO代理未将脱机邮件发送至adafruit物联网门户,mqtt,mosquitto,paho,Mqtt,Mosquitto,Paho,我有一个raspberry pi,其中安装了mosquitto代理和mqtt。Pi已连接到传感器,我需要将此数据发送到adafruit IOT protal。当pi连接时,我能够发送所有数据,但当pi离线时,我只能传输20-30秒的数据。如果pi离线时间超过2-3分钟,则该数据不会传输到门户 我已经创建了一个bridge.conf文件,并添加了我的MOSQUITO要使用的所有配置。内容如下: connection iothub address io.adafruit.com:1883 remot

我有一个raspberry pi,其中安装了mosquitto代理和mqtt。Pi已连接到传感器,我需要将此数据发送到
adafruit IOT protal
。当pi连接时,我能够发送所有数据,但当pi离线时,我只能传输20-30秒的数据。如果pi离线时间超过2-3分钟,则该数据不会传输到门户

我已经创建了一个bridge.conf文件,并添加了我的MOSQUITO要使用的所有配置。内容如下:

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 
连接中心
地址:io.adafruit.com:1883
远程用户名
远程密码
远程客户端ID传感器1
桥文件/etc/ssl/certs/ca-certificates.crt
试一试你的私生活
净化假
启动类型自动
桥不安全的错误
网桥协议版本mqttv311
桥接器\u tls\u版本tlsv1
虚假通知
最大队列消息数0
自动保存间隔5
主题#输出2/传感器/传感器1
主题#在2/传感器/传感器1中

我已经将cleansession设置为false,并使用QOS 2。我还将max_queued_messages设置为0,这表示最大值。我面临的问题是,如果pi仅脱机1-2分钟,我就能够获得所有脱机数据,但如果它脱机超过3-4分钟,我就不会收到任何数据。

如果pi脱机,传感器端有什么持久机制

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

事实上,我认为只要客户机仍试图向代理发送数据,它就会存储数据。换句话说,只要它没有达到超时。我认为默认情况下这是15秒

编辑

如果要增加此超时,则必须增加
保持活动时间
时间。对于Paho Python库,它看起来是这样的

client.connect(host="localhost", port=1883, keepalive=60)
请记住,最大保留时间为18小时12分钟15秒

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


当您将65535s(16位字的最大值)计算为更可读的格式时,您将在15秒内获得18小时12秒

在raspberry pi方面,我有一个python代码,它以5秒的延迟在循环中持续发布数据。因此,我确信代码将始终发送数据,甚至我也可以从日志中看到它。
15秒
你说的默认值,我们可以增加吗。?更新了我的答案。希望它有帮助,所以如果我将keep alive设置为60,它将在60秒后到达超时,因此在这60秒后它可能不会对数据排队,因此数据将丢失。?我说得对吗?你在哪里发现保持活动时间的最大限制是18小时12分钟15秒。?请向iTunes添加链接,并使用链接更新