Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Настройка MQTT брокера mosquitto

Тема в разделе "Домашние IoT серверы", создана пользователем Casper, 5 июн 2015.

  1. shuraf

    shuraf Читатель

    Сообщения:
    132
    Симпатии:
    6
    Существует пошаговая инструкция с пояснениями по НАСТРОЙКЕ Mosquitto под Windows?
     
  2. shuraf

    shuraf Читатель

    Сообщения:
    132
    Симпатии:
    6
    В принципе MQTT может выдавать какие данные 'по-запросу'?
    У меня Mosquitto кладет данные в MS-SQL. Потом запускается какая-то железяка и запрашивает у сервера из базы какой нибудь параметр. Такое возможно? Или только 'по-подписке'?
     
  3. kvint

    kvint Новичок

    Сообщения:
    3
    Симпатии:
    0
    Прошу помочь начинающему пользователю. Это мой первый опыт использования OpenWRT и mosquitto в частности.
    Уже несколько дней пытаюсь поставить mosquitto на роутер Keenetic Extra II (прошивка 2.10, OpenWRT, репозиторий Entware-3x), по команде
    opkg install mosquitto
    у меня установился mosquitto-nossl, в статье было написано, что надо ставить нет nossl, но в чем там отличия и почему этого делать не надо, я пока не разобрался.
    Далее внес указанные в сатье изменения в файл mosquitto.conf, поскольку папки overlay у меня нет, то в mosquitto.conf указал следующие адреса

    password_file /etc/mosquitto/users.list
    acl_file /etc/mosquitto/mosquitto.acl

    Далее создал в папке (/etc/mosquitto/..) файлы mosquitt.acl и users.list, точно так, как указанно в статье.

    Но при запуске mosquito, возникает ошибка связанная с пользователем.
    Подскажите, что не так я делаю и как зарегистрировать пользователя?

    ~ # mosquitto
    1512922009: mosquitto version 1.4.14 (build date 2017-09-25 19:05:16+0000) starting
    1512922009: Using default config.
    1512922009: Opening ipv4 listen socket on port 1883.
    1512922009: Opening ipv6 listen socket on port 1883.
    1512922009: Error: Invalid user 'mosquitto'.
     

    Вложения:

  4. shuraf

    shuraf Читатель

    Сообщения:
    132
    Симпатии:
    6
    Не знаю как в опенврт, в винде файл с паролями надо скормить пороге mosquitto_pass, и он шифрует его под себя.
    Видил где-то на линуксе не могли этого сделать и конвертили под виндой и кидали в линукс готовый файл
     
  5. kvint

    kvint Новичок

    Сообщения:
    3
    Симпатии:
    0
    если я правильно понял, то вы предполагаете, что mosquitto не воспринимает файл "users.list" и можно попробовать предварительно создать его в винде и потом перенести в линукс. Надо попробовать ...
     
  6. telobezumnoe

    telobezumnoe Новичок

    Сообщения:
    15
    Симпатии:
    3
    настроил мост меду mosquitto и mqttcloud,
    connection cloudmqtt
    address m**.cloudmqtt.com:****
    try_private false
    notifications false
    start_type automatic
    remote_username *******
    remote_password *****"
    topic # both
    столкнулся с проблемой, сообщения пометкой retained отправляемые в mqttcloud на локальном mosquitto теряют этот флаг, и локальные клиенты подписанные на эти топики получают их только в случае нахождения онлайн, читал описание настроек, но единственное что нашёл так это cleansession false, но после этих настроек мост перестает работать, может кто знает как победить?
     
  7. shuraf

    shuraf Читатель

    Сообщения:
    132
    Симпатии:
    6
    Флаг retain устанавливает отправляющий.
    Не совсем понял вашу ситуацию. Если клиенты отправляют с этим флагом, то когда он теряется?
     
  8. telobezumnoe

    telobezumnoe Новичок

    Сообщения:
    15
    Симпатии:
    3
    клиент1 подключен к cloudmqtt, он публикует в топик данные с пометкой retain, локальный сервер mosquitto мостом подключен к cloudmqtt, к нему подключен другой клиент2, который подписан на тот же топик, проблема в том, что если клиент2 подключенный к локальному mosquitto был офлайн, то при подключении ему не приходят обновившиеся данные с топика на который он подписан. по идее флаг retain должен означать, что при подключении сообщение вновь отправляется сервером всем вновь подключившимся клиентам подписанным на этот топик, но этого не происходит.
     
  9. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    617
    Симпатии:
    72
    Очень странное поведение, это только с мостом происходит? Если клиент 2 подключается без моста происходит тоже самое?
    Спрашиваю потому что сам с мостом не работал, а хотелось узнать особенности.
    Клиент, с определенным идентификатором, однажды подписавшись на топик и находящийся в офлайне в момент публикации, следующий раз в онлайне опять подписывается на тот же топик и получает как раз ту публикацию, которую он проспал, так почему то у меня работает без моста.
    Может у Вас идентификатор клиента (не логин) меняется?
     
  10. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    617
    Симпатии:
    72
    :):):)
    на линуксе добавляем пользователя myclient2 и вводим пароль два раза
    root@my-host:~# mosquitto_passwd -c /etc/mosquitto/passwd myclient2
    Password:
    Reenter password:

    и если уж хотите удалить
    mosquitto_passwd -D /etc/mosquitto/passwd myclient2
     
    Последнее редактирование: 15 дек 2017
  11. telobezumnoe

    telobezumnoe Новичок

    Сообщения:
    15
    Симпатии:
    3
    @Алексей. если без моста, то оба сервера работают нормально, и сообщения с retain доставляются заново после подключения клиентов, вероятно отправляя сообщение подписанному клиенту сервер не указывает что это сообщение retain, эта информация остаётся на сервере и он просто заново отправляет сообщения клиентам. а сервер mosquitto для mqttcloud выглядит просто клиентом подписанным на все топики.
     
  12. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    617
    Симпатии:
    72
    Такое впечатление что мост работает почти как тонкий клиент, если подписчик был в онлайне, то прилетевшая публикация от основного брокера доставляется подписчику через мост, если подписчик ушел в офлаайн, то прилетевшая публикация просто теряется в этом мосту.
    Зачем тогда нужен такой мост не понятно...
     
  13. shuraf

    shuraf Читатель

    Сообщения:
    132
    Симпатии:
    6
    Это через добавление юзера из командной строки. А Автор вопроса, насколько я понял, добавил юзеров и пароли создав файл в текстовом редакторе. Потом этот файл надо 'зашифровать'. Вот это и не понятно делал автор или не делал.
    *У меня винда и у меня работает и по первому и по второму варианту.
     
  14. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    617
    Симпатии:
    72
    shuraf, Ключевое слово для меня было
    "Видил где-то на линуксе не могли этого сделать и конвертили под виндой"
    это меня и позабавило, ну конечно на линуксе ничего толкового не сделаешь.
     
  15. shuraf

    shuraf Читатель

    Сообщения:
    132
    Симпатии:
    6
    Ну на линуксе можно много сделать, чего нельзя на винде, хотя и наоборот есть прецеденты.
     
  16. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    617
    Симпатии:
    72
    telobezumnoe, и я тоже настроил мост :)
    установил москиту на ПК и в /etc/mosquitto/mosquitto.conf добавил настройку листнера (сознательно перевесил на другие порты листнеров) и настройки моста

    listener 3883

    connection bridge-01
    address mqtt.my-host.ru:3883
    remote_username myclient
    remote_password mypassword
    topic # both 0 "" ""
    и проблем нет, публикую на основном брокере, стартую клиента, работающего с мостом и он получает подписку.
    оба брокера москита версии 1.4.8
     
    telobezumnoe нравится это.
  17. telobezumnoe

    telobezumnoe Новичок

    Сообщения:
    15
    Симпатии:
    3
    @Алексей. спасибо за помощь, но после подключения лисентера на порт cloudmqtt ничего не изменилось, так же при публикации данных с локального сервера, клиент на облачном сервере получает данные при подключении к нему, а локальный клиент не получает сообщение при подключении, если данные публиковались на облачный сервер
     
  18. Игорь_163

    Игорь_163 Новичок

    Сообщения:
    5
    Симпатии:
    0
    Как выглядит готовый заголовок на сервер mqtt?
     
  19. Алексей.

    Алексей. Авторитетный участник сообщества

    Сообщения:
    617
    Симпатии:
    72
    сервер - брокер, возможно опечатка
    на версию 3.1.1 смотрите на оазисе
     
  20. Игорь_163

    Игорь_163 Новичок

    Сообщения:
    5
    Симпатии:
    0
    Там только теория. А как на практике?
     

Поделиться этой страницей