У меня есть виртуальная машина, которая должна быть хостом, который может получать и отправлять данные. Первое изображение - это ошибка, которую я получаю на своей основной машине (с которой я пытаюсь отправить данные). Вторая картинка — это журнал комаров на моей виртуальной машине. Также я использую конфигурацию по умолчанию, которая, насколько я знаю, не может вызвать эти проблемы, по крайней мере, из того, что я видел в других примерах. Я очень мало понимаю, как все это работает, поэтому любая помощь приветствуется.
Что я пробовал на хост-машине:
Начиная с выпуска Mosquitto версии 2.0.0 (у вас установлена версия 2.0.2), конфигурация по умолчанию будет привязана только к localhost
в качестве перехода к более безопасному положению по умолчанию.
Если вы хотите иметь доступ к брокеру с других компьютеров, вам нужно будет явно отредактировать файлы конфигурации, чтобы либо добавить новый listener
, который привязывается к внешнему IP-адресу (или 0.0.0.0), либо добавить запись bind
для прослушивателя по умолчанию. .
По умолчанию он также разрешает только анонимные подключения (без имени пользователя и пароля) с локального хоста, чтобы разрешить анонимное удаленное добавление:
allow_anonymous true
listener 1883
Более подробную информацию можно найти в примечаниях к выпуску 2.0 здесь
Привет! Спасибо, что так быстро ответили и исправили мой пост. Я не могу проголосовать за ваш пост, но если бы я мог, я бы это сделал. ;) Я решил не заморачиваться с файлом конфигурации и просто скачать более старую версию mosquitto. Если бы у меня было больше времени, я бы покопался в конфигурационном файле и фактически исправил его таким образом.
Это просто случай добавления bind_interface device
или bind_address ip_address
в файл конфигурации.
@hardillb - это недавнее обновление полностью испортило мне день - я установил его через доморощенный на Mac OSX, вы знаете, какой файл конфигурации?
Это было серьезное изменение номера версии, поэтому ожидалось, что что-то сломается. У меня нет Mac, поэтому я могу только догадываться, что он может быть ниже /usr/local/etc
(как описано в выводе журнала, который вы отправили на свой вопрос)
слушатель 1883 также должен быть добавлен
@RandyWelt, что ясно из второго абзаца
Я обнаружил, что мне нужно добавить не только bind_address ip_address
, но и установить allow_anonymous true
, прежде чем устройства смогут успешно подключаться к MQTT. Конечно, я понимаю, что лучшим вариантом было бы установить пользователя и пароль на каждом устройстве. Но это следующий шаг после того, как все действительно заработает в минимальной конфигурации.
Вы должны бежать с
mosquitto -c mosquitto.conf
mosquitto.conf, который существует в той же папке, что и исполняемый файл (C:\Program Files\mosquitto и т. д.), должен включать следующую строку.
listener 1883 ip_address_of_the_machine(192.168.1.1 etc.)
Спасибо! Везде говорится об определении прослушивателя в mosquitto.conf, но это первое, с чем я столкнулся, когда нужно указать файл в качестве аргумента.
вы можете запустить его с включенным конфигурационным файлом «без аутентификации» следующим образом:
mosquitto -c /mosquitto-no-auth.conf
У меня была такая же проблема при запуске внутри контейнера докеров (созданного с помощью docker-compose). В файле docker-compose.yml это делается с помощью:
command: mosquitto -c /mosquitto-no-auth.conf
По умолчанию брокер Mosquitto будет принимать подключения только от клиентов на локальном компьютере (сервере, на котором размещен брокер). Поэтому для вашего экземпляра Mosquitto необходимо использовать пользовательскую конфигурацию, чтобы принимать подключения от удаленных клиентов.
listener 1883
allow_anonymous true
Это создает прослушиватель на порту 1883 и разрешает анонимные подключения. По умолчанию количество соединений бесконечно. Сохраните файл в «C:\Program Files\Mosquitto», используя имя файла с расширением «.conf», например «your_conf_file.conf».
Откройте окно терминала и перейдите в каталог mosquitto. Выполните следующую команду:
mosquitto -v -c your_conf_file.conf
где
-c : указать файл конфигурации брокера.
-v : подробный режим — включить все типы ведения журнала. Это отменяет любые параметры ведения журнала, указанные в файле конфигурации.
По какой-то причине, когда я запускаю это, я получаю сообщение об ошибке mosquitto -c /etc/mosquitto/conf.d/mosquitto.conf дает значение Duplicate pid_file в конфигурации, и ему не нравятся строки 6 и 13. Эти две строки были включены в файле конфигурации по умолчанию. Просто pid_file и include_dir. Понятия не имею, что я еще делаю не так.
Для тех, кто использует mosquitto с доморощенным на Mac.
Добавление этих двух строк в /opt/homebrew/Cellar/mosquitto/2.0.15/etc/mosquitto/mosquitto.conf
исправило мою проблему.
allow_anonymous true
listener 1883
Пожалуйста, не размещайте изображения текста!! Просто запости сюда текст ошибки. Во-вторых, это сайт для решения проблем с кодированием, и я не вижу здесь вообще никакого кода… измените его, иначе кто-то придет и закроет ваш пост.