Mosquitto - подпишитесь на темы на местном мосту

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

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

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

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

Все идет нормально. IoT Hub может получать тестовые сообщения, которые проходят через IoTHubBridge, а CloudBridge получает сообщения от облачного брокера. Вот где я застрял - как мне получить сообщения для передачи из CloudBridge в IoTHubBridge?

Спасибо!


person auaero    schedule 07.01.2021    source источник
comment
Почему у вас 2 брокера? Вы можете настроить несколько мостов для одного брокера.   -  person hardillb    schedule 08.01.2021
comment
как я уже сказал - новичок. Я думал, что каждый мост должен быть отдельным экземпляром Mosquitto. Вы хотите, чтобы конфигурация обоих мостов была помещена в главный файл mosquitto.conf?   -  person auaero    schedule 08.01.2021
comment
Хорошо, я вижу, куда ты собираешься. У меня настроены оба моста в файле mosquitto.conf, я получаю сообщения от CloudBridge и получаю отправку сообщений с помощью mosquitto_pub в IoT Hub через IoTHubBridge. Я все еще не понимаю исходный вопрос - как я могу заставить IoTHubBridge отправлять сообщения в IoT Hub, которые получает CloudBridge?   -  person auaero    schedule 08.01.2021
comment
Вы ничего не делаете, если у вас есть конфигурации моста, правильные сообщения будут просто проходить через вашего брокера моста туда, где им нужно идти, на основе сопоставлений тем.   -  person hardillb    schedule 08.01.2021


Ответы (1)


Как отмечалось в комментариях.

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

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

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

person hardillb    schedule 08.01.2021
comment
Спасибо, hardillb, вчера вечером мне удалось заставить его работать с некоторой помощью из этого сообщения в блоге - busbyland.com/mosquitto-mqtt-broker-to-iot-hub-iot-edge. В конечном итоге ваше предложение приложения для обработки сообщений и перевода тем, вероятно, будет правильным решением. На данный момент он работает с мостом к облачному брокеру, мостом к Центру Интернета вещей и скриптом Python в середине для перевода темы. - person auaero; 08.01.2021
comment
@auaero, также обратите внимание на мост IoT Plug and Play: github.com/ Azure / iot-plug-and-play-мост - person asergaz; 02.02.2021