MQTT Mosquitto в режиме моста не доставляет сообщения между Raspberry и Cloud

Я пытаюсь соединить два Mqtt Broker (Mosquitto). Я установил один на сервере в облаке, а другой на локальном Raspberry Pi. Raspeberry Pi Mosquitto должен установить соединение с облачным экземпляром. Это моя конфигурация на Raspberry (/etc/mosquitto/conf.d/bridge.conf):

connection crowdomat-cloud
address <myserver-hostname>
clientid crowdomat
start_type automatic
cleansession false
notifications true

#
# Send all messages from local /sensor topic to remote /sensor topic
#
topic # both 0 sensor/ sensor/

Я могу подключиться как к брокеру, так и отправлять и получать сообщения. Я также вижу, что соединение установлено в файле журнала, но сообщения между брокерами не передаются.

1411577927: mosquitto version 1.3.4 (build date 2014-08-22 06:10:51+0000) starting
1411577927: Config loaded from /etc/mosquitto/mosquitto.conf.
1411577927: Opening ipv4 listen socket on port 1883.
1411577927: Opening ipv6 listen socket on port 1883.
1411577927: Warning: Address family not supported by protocol
1411577927: Bridge crowdomat doing local SUBSCRIBE on topic sensor/#
1411577927: Connecting bridge crowdomat-server (my-server:1883)
1411577927: Bridge crowdomat sending CONNECT
1411577927: Received CONNACK on connection crowdomat.
1411577927: Bridge crowdomat sending SUBSCRIBE (Mid: 466, Topic: sensor/#, QoS: 0)
1411577927: Received PUBACK from crowdomat (Mid: 465)
1411577927: Received SUBACK from crowdomat
1411577986: Sending PINGREQ to crowdomat
1411577986: Received PINGRESP from crowdomat
1411578046: Sending PINGREQ to crowdomat
1411578046: Received PINGRESP from crowdomat
1411578069: Received PUBLISH from crowdomat (d0, q0, r0, m0, '/sensor/data', ... (14 bytes))
1411578106: Sending PINGREQ to crowdomat
1411578106: Received PINGRESP from crowdomat
1411578166: Sending PINGREQ to crowdomat
1411578166: Received PINGRESP from crowdomat
1411578193: mosquitto version 1.3.4 terminating
1411578193: Saving in-memory database to /var/lib/mosquitto/mosquitto.db.

Есть идеи?

Другая загадка заключается в том, что я могу увидеть вывод журнала только после того, как снял процесс комаров на Raspberry Pi.

Кроме того, сообщения, созданные Mqtt Lens:

2 ответа

Я пропустил это в вашем вопросе раньше.

Ваш мост подписывается на sensor/# но вы публикуете /sensor/data, Эти темы не соответствуют друг другу. Перед первой косой чертой есть строка иерархии нулевой длины /sensor/dataТак что эта тема состоит из трех элементов: '', 'sensor', 'data', '' не соответствует 'sensor' часть вашей подписки, поэтому сообщения не отправляются.

Короче говоря, удалите косую черту из /sensor/data и это должно работать нормально.

То, что я понял, подключив различные устройства к виртуальной машине Google CLoud, - это то, что вам нужно настроить параметр версии протокола в файлах конфигурации вашего устройства (локальных).

Итак, добавьте версию bridge_protocol_version в ваш файл mosquitto.conf на вашем RPi, как это для мостового соединения, соединяющегося с облаком (этот работал для меня):

bridge_protocol_version mqttv311

Вы также можете принудительно запустить конфигурационный файл в mosquttio при запуске следующим образом:

mosquitto -c /etc/mosquitto/conf.d/mosquitto.conf

with mosquitto.conf being the valid configuration file. 

Если у вас есть вопросы, пишите, я много сделал с Mosquitto и MQTT.

Другие вопросы по тегам