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

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

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

  1. Beetle

    Beetle Новичок

    Сообщения:
    1
    Симпатии:
    0
    Роутер - OpenWRT (15.05.1, r48532)
    mosquitto - 1.4.7

    Создал как в статье пользователя тест.
    При попытке подключения в логах:
    Код (Text):
    1. mosquitto[8659]: Socket error on client <unknown>, disconnecting.
    mosquitto_sub -t test -u test -P test
    Код (Text):
    1. Connection Refused: not authorised.
    А вот если сервис остановить и запустить руками:
    Код (Text):
    1. # /etc/init.d/mosquitto stop
    2. # mosquitto
    3. mosquitto version 1.4.7 (build date 2016-01-31 13:11:12+0100) starting
    4. Using default config.
    5. Opening ipv6 listen socket on port 1883.
    6. Opening ipv4 listen socket on port 1883.
    7. New connection from 192.168.11.3 on port 1883.
    8. New client connected from 192.168.11.3 as test (c1, k60, u'test').
    Какой конфиг он грузит тогда?
    Или куда еще копать?

    В общем то использую конфиг по умолчанию, изменил только 4 строчки:
    Код (Text):
    1. log_dest syslog
    2. allow_anonymous false
    3. password_file /overlay/mosquitto/users.list
    4. acl_file /overlay/mosquitto/mosquitto.acl
     
    Последнее редактирование: 2 май 2016
  2. Lnbed

    Lnbed Новичок

    Сообщения:
    1
    Симпатии:
    0
    Beetle,у меня openwrt 15.05.1 mosquitto - 1.4.7. Сервис mosquitto не запускался.
    Изменил в /etc/init.d/mosquito :


    Код (Text):
    1. START=80
    2. #APP=`which mosquitto`
    3. APP=`mosquitto`
     
  3. Старый Дуб

    Старый Дуб Новичок

    Сообщения:
    26
    Симпатии:
    0
    Доброго времени суток! Очень хочется запустить систему описанную в
    "ESP8266 подключаемся к OpenWRT+Mosquitto+mqttwarn и передаем данные на ThingSpeak, EMAIL, Android, iOS, Twitter, CloudMQTT в 100 строчек кода в Arduino IDE". Но столкнулся с тем что во первых строка
    echo "nameserver 8.8.8.8" &gt;&gt; /etc/resolv.conf
    выдает ошибку - не нравится символ &. Во вторых подключиться удается почему-то по адресу 192.168.8.1 а не 192.168.1.100
     
  4. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.211
    Симпатии:
    386
    правильно будет
    Код (C):
    1. echo "nameserver 8.8.8.8" >> /etc/resolv.conf
     
  5. Старый Дуб

    Старый Дуб Новичок

    Сообщения:
    26
    Симпатии:
    0
    Наверное я что-то не то делаю... Прошивку рекомендованную скачал и установил из веб интерфейса. Но ни пакетов русификации, ни москуито не нахожу...
     
  6. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.211
    Симпатии:
    386
    Это не рекомендованная версия, а последний релиз на момент написания статьи, поэтому и вам стоит взять более позднюю, но стабильную версию - сейчас это Chaos Calmer 15.05.1
     
  7. Старый Дуб

    Старый Дуб Новичок

    Сообщения:
    26
    Симпатии:
    0
    Я может не совсем понял по ссылке куча директорий, а файл прошивки .bin?
     
  8. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.211
    Симпатии:
    386
    рекомендую вам сначала почитать статьи (раз, два и поищите еще сами по вашей модели) про выбор прошивки и ее установку, чтобы не получить кирпич.
     
  9. Старый Дуб

    Старый Дуб Новичок

    Сообщения:
    26
    Симпатии:
    0
    До кирпича я его таки довел! Зато теперь понял что к чему... Ставлю последние прошивки и настраиваются все заново... Только теперь наверное куплю флэшку,а то опять кирпичь....
     
  10. anchorman

    anchorman Новичок

    Сообщения:
    2
    Симпатии:
    0
    Доброго вечера всем!
    Дано:
    ESP8266, с прошивкой wifi-iot
    mosquito+node red на виртуалке Debian 8
    Domoticz тож на виртуалке Debian 8
    .............................................
    только начал изучать mqtt, поэтому просьба строго не судить...
    в прошивке ESP указал адрес брокера, в брокере данные получаю, все вижу в дебаге...
    домотикс в брокеру подключается - в логах connected!
    Как:
    1. Передавать нужные топики (все топики) в домотикс?
    2. Как отображать значения (например состояние выключателя) топиков в Домотикс. Думми устройство создал, виртуальнй датчик создал.. его idx указал по примеру .
    Видимо что то не так делаю... подскажите, уважаемые коллеги пожалуйста
     
  11. sepbiy

    sepbiy Новичок

    Сообщения:
    2
    Симпатии:
    0
    Здравствуйте,у меня сложилась проблема при установке москито на asus rt-n18 (Tomato Shibby v138)-не создается файл автозапуска москито,при запуске в ручную вываливается сообщение
    1483533237: Error: Invalid user 'mosquitto' a73e3-clip-12kb.png
    [​IMG]

    В чем может быть проблема?
     
    Последнее редактирование: 4 янв 2017
  12. sepbiy

    sepbiy Новичок

    Сообщения:
    2
    Симпатии:
    0
    Все,разобрался,работает!:)
    Осталось как то добавить москуито в автозапуск
     
  13. prmres

    prmres Читатель

    Сообщения:
    18
    Симпатии:
    10
    Здравствуйте, уважаемые.
    Собираюсь в будущем уже наступившем году строить дом, естественно задумался об автоматизации, Набрёл на "облачные" выключатели\патроны\реле китайской конторы Sonoff после чего выяснилась их "начинка", а дальше путь привёл на ваш форум и теперь я готовлюсь "вступать в ряды" ESP-шников, не в первые конечно, но надеюсь осилю сделать какие то несложные вещи. Форум изучаю, китайские модули и адаптеры USB-TTL вкупе с проводочками и прочей мелочёвкой уже едут. Скилл пайки имеется, образование профильное радиоэлектронное, так что я думаю вникнуть смогу, надо только освежить отыскать в голове позабытое за давностью лет и за непрофильной работой.

    Начну с самого простого - перепрошью выключатель Sonoff, отвяжу его от китайского облака и буду "ковырять" на предмет чего бы из него сделать ещё, наверняка как минимум можно прикрутить датчик температуры\влажности, превратив выключатель в мини-метеостанцию.

    А покамест детальки в пути - самое время заняться службами "обеспечения".
    Имея в наличии рабочий Web-сервер на CentOS7 + VestaCP провёл так сказать "удачный эксперимент" с комариком, результатами которого хочу поделиться.
    Думаю этот небольшой опыт кому то да пригодится

    небольшое уточнение: в линуксах опыт минимальный

    вооружаемся WinSCP (удобно ходить по каталогам и вносить правки в текстовые файлы встроенным редактором) + PuTTY и действуем

    1. подключаем mosquitto репозиторий
    Код (Text):
    1. cd /etc/yum.repos.d
    2. wget http://download.opensuse.org/repositories/home:/oojah:/mqtt/CentOS_CentOS-7/home:oojah:mqtt.repo
    3. yum -y update
    2. Установка Mosquitto
    Код (Text):
    1. yum -y install mosquitto
    2. yum -y install mosquitto-clients
    3. добавляем комарика в автозагрузку
    Код (Text):
    1. systemctl enable mosquitto.service
    при этом centos ругнётся мол москитто не является native серсивом, и сделает как нужно:
    т.е. ЦентОСь нам подсказала (да ещё и сама по-правильному сделала) что правильная команда на включение автозапуска москитты -
    Код (Text):
    1. /sbin/chkconfig mosquitto on
    проверять не стал, поверил на слово :)

    4. настраиваем конфиг\конфиги
    файл /etc/mosquitto/mosquitto.conf переносим в /etc/mosquitto/conf.d и переименовываем например в main.conf
    открываем main.conf двойным кликом и вносим в него следующее содержимое:
    Код (Text):
    1. # Place your local configuration in /etc/mosquitto/conf.d/
    2.  
    3. # =================================================================
    4. # General configuration
    5. # =================================================================
    6.  
    7. pid_file /var/run/mosquitto.pid
    8.  
    9. # =================================================================
    10. # Default listener
    11. # =================================================================
    12.  
    13. #bind_address 1.2.3.4     #если надо привязываем сервис к ip или domain.name
    14. #port 1883      #по умолчанию 1883 порт, можно задать другой
    15.  
    16. # =================================================================
    17. # Persistence
    18. # =================================================================
    19.  
    20. persistence true
    21. persistence_file mosquitto.db
    22. persistence_location /etc/mosquitto/
    23.  
    24. # =================================================================
    25. # Logging
    26. # =================================================================
    27.  
    28. log_dest syslog
    29. log_dest file /var/log/mosquitto/mosquitto.log
    30. log_facility 5
    31. log_type debug
    32. log_type error
    33. log_type warning
    34. log_type notice
    35. log_type information
    36.  
    37. # =================================================================
    38. # Default authentication and topic access control
    39. # =================================================================
    40.  
    41. password_file /etc/mosquitto/users.list
    42. acl_file /etc/mosquitto/mosquitto.acl
    файл /etc/mosquitto/mosquitto.conf.example переименовываем в /etc/mosquitto/mosquitto.conf (это полноценный конфиг с пояснениями для каждого параметра)
    дважды кликая (WinSCP) по переименнованному полноценному конфигу /etc/mosquitto/mosquitto.conf он открывается строенным текстовым редактором
    вносим единственную правку - в секцию External config files добавляем include_dir /etc/mosquitto/conf.d
    сие действо говорит сервису подгружать дополнительные конфиги из указанной папки (в нашем случае это main.conf )

    на мой неискушенный взгляд так просто удобно - "полноценны" конфиг существует в девственном виде (за исключением лишь строки указывающей откуда подгружать дополнительные конфиги) и используется для изучения комментариев к нужным опциям, нужные опции вносятся в конфиг\конфиги находящиеся в папке /etc/mosquitto/conf.d, например в файле main.conf можно сделать основные настройки сервиса, а для каждого бриджа с внешними сервисами создать отдельные конфиги в этой же папочке и с соответствующими названиями
    "основной" конфиг полон комментариев и потому его листать туда-сюда в поисках нужной строки очень неудобно, а так открыл "нужный" конфиг и всё сразу перед глазами

    5. логины\пароли\доступ

    создаём файл /etc/mosquitto/mosquitto.acl
    и сразу настраиваем нужный доступ по нужным пользователям (их ведь можно "придумать" заранее), для начала даём доступ пользователю test доступ ко всем топикам
    сдержимое:
    Код (Text):
    1. user test
    2. topic #
    создаём пустой файл /etc/mosquitto/users.list
    и сразу создаём пользователя\пользователей
    синтаксис очень простой:
    Код (Text):
    1. mosquitto_passwd /etc/mosquitto/users.list test
    попросит ввести и подтвердить пароль, в только что созданный файл users.list добавится пользователь test
    2017-01-18_21-14-07.png


    6. старт сервиса и проверка

    стартуем сервис:
    Код (Text):
    1. systemctl start mosquitto
    проверим стартовал ли:
    Код (Text):
    1. systemctl status mosquitto
    2017-01-18_16-11-00.png

    Видим что то похожее на " Active: active (running) since ...." и пары "SUCCESS" - хорошо, сервис стартовал

    в логе /var/log/mosquitto/mosquitto.log должно быть "mosquitto version 1.4.10 (build date 2016-12-05 08:26:01+0000) starting"

    это означает что всё получилось

    проверяем работу подключившись mqtt-spy
    2017-01-18_16-08-37.png

    используемые материалы:
    ESP8266 подключаемся к OpenWRT+Mosquitto+mqttwarn и передаем данные на ThingSpeak, EMAIL, Android, iOS, Twitter, CloudMQTT в 100 строчек кода в Arduino IDE – esp8266
    Installing Mosquitto Under CentOS 7
    Добавлении сервиса в автозагрузку (CentOS 6/7)
    Downloads | Mosquitto
     
    Последнее редактирование: 18 янв 2017
    A_AVL, alexandersciv и Victor нравится это.
  14. prmres

    prmres Читатель

    Сообщения:
    18
    Симпатии:
    10
    Продолжаю неспешный эксперимент. Мост (bridge) на CloudMQTT

    1. регистрируемся на сервисе ровно так как описано в статье IoT Manager - мобильное приложение для DIY устройств – esp8266
    в контрольной панели в разделе Instance info видим все "свои" параметры - имя сервера, порт, логин\пароль (я так понял это для доступа приложения по Websocket)
    в разделе Manage Users создаём учётки, я для пробы создал test1 и test2
    в разделе ACLs даём разрешения для этих пользователей на чтение\запись топиков (ставим обе галки), в поле Topic ставим #, что означает доступ ко всем топикам, в будущем, если надо можно сделать более тонкие настройки

    2. проверяет доступ с помощью MQTT-Spy , в настройках соединения указываем server: port (которые указаны в консоли CloudMQTT в разделе Instance info), на закладке Security указываем полшьзователя и его пароль, которые были созданы в п.1 (в моём случае test1 или test2)

    жмакаем соединиться и проверям постинги

    3. Мост (bridge) с CloudMQTT, конфиг mosquitto

    в /etc/mosquitto/conf.d создаём ещё один конфиг, обзываем его к примеру bridge1.conf
    пришлось порыться в этих наших энторнетах, поковыряться с серсиом и конфигом, в итоге соитие произошло со следующим конфигом:
    Код (Text):
    1. # Place your local configuration in /etc/mosquitto/conf.d/
    2.  
    3. # =================================================================
    4. # Bridges
    5. # =================================================================
    6.  
    7. connection cloudmqtt
    8. address servername:port
    9. try_private false
    10. notifications false
    11. start_type automatic
    12. remote_username username
    13. remote_password password
    14.  
    15. topic # both
    16. #topic # in
    17. #topic # out
    примечание 1:
    address servername: port
    имя сервера и порт из п.1

    remote_username username
    remote_password password
    имя и пароль пользователя из п.1

    примечание 2 (важно!):
    topic # in - обеспечивает передачу данных из облака на локальный сервер
    topic # out - обеспечивает передачу данных с локального сервера в облако
    topic # both - обеспечивает передачу данный в обоих направлениях, то есть публикация на облаке отображается на локальном сервере равно как и публикация на локальном сервере отображается в облаке

    рестартуем наш mosquitto что б "подцепил" новый конфиг
    Код (Text):
    1. systemctl restart mosquitto
    или
    Код (Text):
    1. systemctl stop mosquitto
    2. systemctl start mosquitto
    4. Проверяем что получилось
    заспускаем два mqtt-spy клиента, один "натравливаем" на наш локальный mosquitto, второй на cloudmqtt

    деаем постинг на локальный сервер и видим то же самое на облаке
    делаем постинг в облако и видим то же самое на локальном сервере

    МОСТ НАСТРОЕН!
     
    Последнее редактирование: 25 янв 2017
  15. Victor

    Victor Administrator Команда форума

    Сообщения:
    2.211
    Симпатии:
    386
    правильно настроенный мост должен работать в обе стороны.
    Смотрите раздел
    Configuring Bridges
     
  16. prmres

    prmres Читатель

    Сообщения:
    18
    Симпатии:
    10
    ага, спасибо
    я таки разобрался, надо было внимательней почитать каменты "главного" конфига
    сообщение выше подправил (ещё не видел вашего ответа), теепрь всё работает в обе стороны
     
  17. utya

    utya Новичок

    Сообщения:
    26
    Симпатии:
    1
    Ребят, а можно как-то зарезервировать mqtt брокер, в случаи если один отпал, все шло на второй?
     
  18. prmres

    prmres Читатель

    Сообщения:
    18
    Симпатии:
    10
    на два сразу передавать да и всё, два конфига на два моста
    имхо самое простое
     
  19. Dmitriytimofeyev

    Dmitriytimofeyev Новичок

    Сообщения:
    1
    Симпатии:
    1
    зашел по поиску - обрадовался, что у Вас получилось, Вообще пишите если, что получается - нам после того как узнаем искать легче, настроение поднимается и/т/п.

    и так
    если у вас
    Код (Text):
    1. Error: Invalid user 'mosquitto'
    нужно прописать пользователя, что собственно логично, правильного пользователя
    user root (или какой у вас там, у меня например sid wi-fi)

    в
    Код (Text):
    1. /etc/mosquitto/mosquitto.conf
    но при запуске

    Код (Text):
    1. # mosquitto
    по умолчанию не считываются эти настройки
    и потому запускать нужно с явным указанием файла настроек

    Код (Text):
    1. # mosquitto -c /etc/mosquitto/mosquitto.conf
    а иногда даже
    не забывая указать верный путь с /opt/
    Код (Text):
    1.  mosquitto -c /opt/etc/mosquitto/mosquitto.conf
     
    Последнее редактирование: 17 июн 2017
    Technik_91 нравится это.
  20. papasha03

    papasha03 Новичок

    Сообщения:
    5
    Симпатии:
    0
    Добрый день!
    Необходим совет.
    Есть GL iNET с OpenWrt. Настройки сделаны как по инструкции из статьи. Тест проводил на mqtt-spy и все работает. НО!
    Хочется только, что бы все ESP-шки подключались к домашней сети (домашний wifi роутер) и уже через него попадали на GL iNET, который подключается в первому, основному роутеру по wifi.
    В этом и загвоздка, GL iNET не видят ESP-шки внутри домашней сети. Не могу даже в админку зайти (Только через LAN получается). Мне не требуется, что бы GL iNET раздавал свой отдельный интернет, необходимо только, что бы он был частью домашней сети и к нему могли обращаться исполнительные устройства.

    Какие необходимы настройки сделать в Интерфейсах Lan и WWAN, режим wifi, что бы сделать вышеописанную идею? Идеально конечно согласно меню luci
    Заранее спасибо!
     

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