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

Beetle

New member
Роутер - OpenWRT (15.05.1, r48532)
mosquitto - 1.4.7

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

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

Lnbed

New member
Beetle,у меня openwrt 15.05.1 mosquitto - 1.4.7. Сервис mosquitto не запускался.
Изменил в /etc/init.d/mosquito :


Код:
START=80
#APP=`which mosquitto`
APP=`mosquitto`
 
Доброго времени суток! Очень хочется запустить систему описанную в
"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
 
Наверное я что-то не то делаю... Прошивку рекомендованную скачал и установил из веб интерфейса. Но ни пакетов русификации, ни москуито не нахожу...
 

Victor

Administrator
Команда форума
Прошивку рекомендованную скачал и установил из веб интерфейса
Это не рекомендованная версия, а последний релиз на момент написания статьи, поэтому и вам стоит взять более позднюю, но стабильную версию - сейчас это Chaos Calmer 15.05.1
 
Это не рекомендованная версия, а последний релиз на момент написания статьи, поэтому и вам стоит взять более позднюю, но стабильную версию - сейчас это Chaos Calmer 15.05.1
Я может не совсем понял по ссылке куча директорий, а файл прошивки .bin?
 

Victor

Administrator
Команда форума
Я может не совсем понял по ссылке куча директорий, а файл прошивки .bin?
рекомендую вам сначала почитать статьи (раз, два и поищите еще сами по вашей модели) про выбор прошивки и ее установку, чтобы не получить кирпич.
 
рекомендую вам сначала почитать статьи (раз, два и поищите еще сами по вашей модели) про выбор прошивки и ее установку, чтобы не получить кирпич.
До кирпича я его таки довел! Зато теперь понял что к чему... Ставлю последние прошивки и настраиваются все заново... Только теперь наверное куплю флэшку,а то опять кирпичь....
 

anchorman

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

sepbiy

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


В чем может быть проблема?
 
Последнее редактирование:

sepbiy

New member
Все,разобрался,работает!:)
Осталось как то добавить москуито в автозапуск
 

prmres

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

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

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

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

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

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

4. настраиваем конфиг\конфиги
файл /etc/mosquitto/mosquitto.conf переносим в /etc/mosquitto/conf.d и переименовываем например в main.conf
открываем main.conf двойным кликом и вносим в него следующее содержимое:
Код:
# Place your local configuration in /etc/mosquitto/conf.d/

# =================================================================
# General configuration
# =================================================================

pid_file /var/run/mosquitto.pid

# =================================================================
# Default listener
# =================================================================

#bind_address 1.2.3.4     #если надо привязываем сервис к ip или domain.name
#port 1883      #по умолчанию 1883 порт, можно задать другой

# =================================================================
# Persistence
# =================================================================

persistence true
persistence_file mosquitto.db
persistence_location /etc/mosquitto/

# =================================================================
# Logging
# =================================================================

log_dest syslog
log_dest file /var/log/mosquitto/mosquitto.log
log_facility 5
log_type debug
log_type error
log_type warning
log_type notice
log_type information

# =================================================================
# Default authentication and topic access control
# =================================================================

password_file /etc/mosquitto/users.list
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 доступ ко всем топикам
сдержимое:
Код:
user test
topic #
создаём пустой файл /etc/mosquitto/users.list
и сразу создаём пользователя\пользователей
синтаксис очень простой:
Код:
mosquitto_passwd /etc/mosquitto/users.list test
попросит ввести и подтвердить пароль, в только что созданный файл users.list добавится пользователь test
2017-01-18_21-14-07.png


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

стартуем сервис:
Код:
systemctl start mosquitto
проверим стартовал ли:
Код:
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
 
Последнее редактирование:

prmres

New member
Продолжаю неспешный эксперимент. Мост (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
пришлось порыться в этих наших энторнетах, поковыряться с серсиом и конфигом, в итоге соитие произошло со следующим конфигом:
Код:
# Place your local configuration in /etc/mosquitto/conf.d/

# =================================================================
# Bridges
# =================================================================

connection cloudmqtt
address servername:port
try_private false
notifications false
start_type automatic
remote_username username
remote_password password

topic # both
#topic # in
#topic # out
примечание 1:
address servername: port
имя сервера и порт из п.1

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

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

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

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

МОСТ НАСТРОЕН!
 
Последнее редактирование:

prmres

New member
правильно настроенный мост должен работать в обе стороны.
Смотрите раздел
Configuring Bridges
ага, спасибо
я таки разобрался, надо было внимательней почитать каменты "главного" конфига
сообщение выше подправил (ещё не видел вашего ответа), теепрь всё работает в обе стороны
 

utya

New member
Ребят, а можно как-то зарезервировать mqtt брокер, в случаи если один отпал, все шло на второй?
 

prmres

New member
на два сразу передавать да и всё, два конфига на два моста
имхо самое простое
 
Все,разобрался,работает!:)
Осталось как то добавить москуито в автозапуск
зашел по поиску - обрадовался, что у Вас получилось, Вообще пишите если, что получается - нам после того как узнаем искать легче, настроение поднимается и/т/п.

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

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

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

Код:
# mosquitto -c /etc/mosquitto/mosquitto.conf
а иногда даже
не забывая указать верный путь с /opt/
Код:
 mosquitto -c /opt/etc/mosquitto/mosquitto.conf
 
Последнее редактирование:

papasha03

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

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