#mqtt #azure-iot-hub #mosquitto
#mqtt #azure-iot-hub #mosquitto
Вопрос:
Я новичок в MQTT, так что, возможно, это банально, но я не понимаю.
У меня есть устройства Интернета вещей, которые публикуют данные в облачном брокере MQTT. Я не могу это изменить. Я хочу иметь возможность получать сообщения от облачного брокера и передавать их в IoT Hub в Azure. Вот что я сделал до сих пор:
- Настроил виртуальную машину под управлением CentOS для размещения моего сервера Mosquitto
- Установлен Mosquitto и настроен как мост к IoT Hub (IoTHubBridge)
- Создал отдельную конфигурацию 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