Mosquitto — подписка на темы на локальном мосту

#mqtt #azure-iot-hub #mosquitto

#mqtt #azure-iot-hub #mosquitto

Вопрос:

Я новичок в MQTT, так что, возможно, это банально, но я не понимаю.

У меня есть устройства Интернета вещей, которые публикуют данные в облачном брокере MQTT. Я не могу это изменить. Я хочу иметь возможность получать сообщения от облачного брокера и передавать их в IoT Hub в Azure. Вот что я сделал до сих пор:

  1. Настроил виртуальную машину под управлением CentOS для размещения моего сервера Mosquitto
  2. Установлен Mosquitto и настроен как мост к IoT Hub (IoTHubBridge)
  3. Создал отдельную конфигурацию Mosquitto для подключения к облачному брокеру MQTT (CloudBridge)

Обратите внимание, что оба экземпляра Mosquitto bridge работают на одной и той же виртуальной машине.

Пока все хорошо. Центр интернета вещей может получать тестовые сообщения, которые проходят через IoTHubBridge, а CloudBridge получает сообщения от облачного брокера. Вот где я застрял — как мне передать сообщения из CloudBridge в IoTHubBridge?

Спасибо!

Комментарии:

1. Почему у вас есть 2 брокера? Вы можете настроить несколько мостов для одного брокера.

2. как я уже сказал — новичок. Я думал, что каждый мост должен быть отдельным экземпляром Mosquitto. Вы хотите сказать, что поместите конфигурацию для обоих мостов в основной файл mosquitto.conf?

3. Хорошо, я понимаю, к чему вы клоните. У меня оба моста настроены в файле mosquitto.conf, и я получаю сообщения от CloudBridge, и я отправляю сообщения с mosquitto_pub в IoT Hub через IoTHubBridge. Я все еще в тупике по первоначальному вопросу — как я могу заставить IoTHubBridge отправлять сообщения в IoT Hub, которые принимаются CloudBridge?

4. Вы ничего не делаете, если у вас правильные конфигурации моста, сообщения просто будут проходить прямо через ваш посредник моста туда, куда им нужно, на основе сопоставлений тем

Ответ №1:

Как указано в комментариях.

Здесь нет необходимости в 2 брокерах MQTT. Вы должны настроить оба моста в одном брокере, таким образом, при правильных topic объявлениях для мостов сообщения должны просто передаваться между центром Интернета вещей и облачными брокерами.

Это предполагает, что структура темы / сообщения для облачного брокера совместима с тем, что вам нужно отправить в IoT hub. Мост позволит вам добавлять / удалять префикс из темы, но не полностью переназначать его. И нет способа изменить формат полезной нагрузки.

Если вам нужно внести изменения в формат полезной нагрузки или серьезные изменения в структуру темы, тогда мост не является правильным решением. Вам нужно будет создать приложение, которое подписывается на облачный брокер, а затем повторно отправляет преобразованное сообщение брокеру IoT Hub. Есть много способов сделать это на любом количестве языков, но я мог бы предложить вам взглянуть на что-то вроде Node-RED, если вас еще не устраивает существующая комбинация language / MQTT client.

Комментарии:

1. Спасибо, hardillb, мне удалось заставить его работать прошлой ночью с некоторой помощью из этого сообщения в блоге — busbyland.com/mosquitto-mqtt-broker-to-iot-hub-iot-edge . В конечном счете, ваше предложение о приложении для обработки сообщений и перевода тем, вероятно, является правильным решением. На данный момент он работает с мостом к облачному брокеру, мостом к IoT Hub и скриптом python в середине для перевода темы.

2. @auaero также взгляните на IoT Plug and Play bridge: github.com/Azure/iot-plug-and-play-bridge