我有raspberry pi
我安装了mosquitto。我正在使用pub和sub在pi和我的ubuntu机器之间发送和接收消息。我创建了一个文件iot.conf
并将其放在/etc/mosquitto/conf.d/iot.conf
中。以下是文件的内容:
connection CONIOT
log_type all
address 192.168.1.154:8883
remote_clientid sensor1
bridge_cafile /etc/ssl/certs/ca-certificates.crt
try_private false
cleansession true
start_type automatic
bridge_insecure false
bridge_protocol_version mqttv311
bridge_tls_version tlsv1
notifications false
topic # out 0 sensor/sensor1 sensor/sensor1
topic # in 0 sensor/sensor1 sensor/sensor1
ip地址是我的覆盆子pi的ip地址。在树莓派上,我制作了一个小型python脚本,用于发布传感器1的数据。在我的ubuntu机器上,我可以使用以下命令接收数据:
mosquitto_sub -t sensor/sensor1 -h 192.168.1.154
在上面的命令中,我给出了主题和主机IP地址。所以这种方式我能够从pi接收所有消息。但我想测试pi是否脱机(没有wifi / lan)然后消息是本地存储在pi上,当它重新联机时,我是否可以收到所有消息。
我使用上述配置对此进行了测试,但无法接收离线消息。我按照here {{3}}将cleansession
设为真。
任何人都可以指出我在哪里做错了。当pi未连接到wifi / lan时,我希望mosquitto保存离线消息。我该如何测试呢?
以下是/etc/mosquitto/mosquitto.conf文件的内容:
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example
pid_file /var/run/mosquitto.pid
persistence true
persistence_location /var/lib/mosquitto/
log_dest file /var/log/mosquitto/mosquitto.log
include_dir /etc/mosquitto/conf.d
答案 0 :(得分:1)
将cleansession
设置为true,您将不会获得任何排队的消息,因为它指示代理放弃任何排队的消息。
如果您希望ubuntu计算机上的代理为pi的消息排队,则需要将cleansession
设置为false,并确保您正在为pi代理和mosquitto_sub客户端使用固定的clientid,然后到把它们转发给客户。
答案 1 :(得分:0)
我已经在hardilb的帮助下解决了这个问题。这就是我做的离线消息:
感谢。