• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

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

Casper

Member
@Victor mqtt мне понравилось, интересная штука, но я не могу разобраться с сервером(mosquitto), как его настроить, создать публикации и смотреть их данные...
 

Victor

Administrator
Команда форума
Укажите платформу, на которой вы настраиваете mosquitto (я пробовал Win7 x64 и OpenWRT Chaos Calmer 15.05-rc1)
Укажите версию mosquitto (у меня 1.4.2, в более ранних версиях много проблем с bridge)
Включите логгирование и пришлите логи
Попытайтесь подключиться к mosquitto с помощью mqtt-spy
Ну и собственно самое важное: что именно не получается?
Полная конфигурация mosquitto из статьи во вложении
 

Вложения

Daxtil

New member
OpenWrt Barrier Breaker 14.07
Mosquitto 1.3.5

На первый взгляд все сделано как в примерах, запущено и включено в автозагрузку..
НО никак не удается подключиться к брокеру..
Причем даже с консоли:

root@OpenWrt:~# mosquitto_sub -t test
Error: Connection refused
 

Daxtil

New member
Решено: пришлось ставить из другого репозитория Chaos Calmer 15.05-rc3 версию 1.4.2
 

M-a-x-x

New member
По поводу ошибки "Error: Connection refused" - у меня дело было в конфиге mosquitto. Можно протестировать так (для Debian):
1.сделать бэкап своего конфига
cp /etc/mosquitto/conf.d/mosquitto.conf{,.old}
2.запустить напрямую mosquitto с настройками по умолчанию
/usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf -d
3.проверить порт
lsof -i:1883
4.если строчка с процессом mosquitto есть, запустить
mosquitto_sub -t test
Если после этого видим вывод команды, значит проблема была в конфиге, если нет нужно думать дальше)
 

ZemaAD

New member
Всем привет!
Ребят не подскажите, почему когда я создаю второго юзера в пасворд листе, у меня не подключается вообще к москито?
Не могу понять где ошибка...
 

ZemaAD

New member
Да юзера добавил, вопрос в другом есть файл с паролями:
user : pass
user1 : pass1
И файл с разрешением читать\записывать топики
user
topic /MyHome/#
user1
topic /MyHome/#
user1 не видит топики, хотя user видит и пишет во все топики
 

iapet

New member
Да юзера добавил, вопрос в другом есть файл с паролями:
user : pass
user1 : pass1
И файл с разрешением читать\записывать топики
user
topic /MyHome/#
user1
topic /MyHome/#
user1 не видит топики, хотя user видит и пишет во все топики
Только что проверил, все работает именно при таком раскладе. Пароли делаете чем? mosquitto_passwd?
 

ZemaAD

New member
Только что проверил, все работает именно при таком раскладе. Пароли делаете чем? mosquitto_passwd?
Да, делаю именно им, если в настройках openHAB указать user : pass, а в mqtt-spy подключиться под user1 : pass1 и отправлять с esp от имени user1, то mqtt-spy видит данные а вот openHAB нет...
 
Всем добрый день! Подскажите в статье (http://esp8266.ru/esp8266-openwrt-m...mail-android-ios-twitter-cloudmqtt/#mosquitto) сказано :
"В одну строку без переносов. Это мы определили пароль test пользователю test. Еще создаем файл /overlay/mosquitto/mosquitt.acl следующего содержания"
а в файле конфигурации mosquitto.conf прописывается файл с именем mosquitto.acl
Так и надо ? или просто опечатка ? в конце имени файла нет буквы О
 

M-a-x-x

New member
PavelNikolaevich,
Опечатка. Можно хоть как этот файл (mosquitto.acl) назвать, главное в конфиге его прописать.
 
всем добрый день! есть еще вопрос, пробую делать по статье (http://esp8266.ru/esp8266-openwrt-m...mail-android-ios-twitter-cloudmqtt/#mosquitto).. дошел до пункта где загружаем скетч mqtt.ino .. прописал свой сервер и пароль.. при компиляции выдает ошибку
Код:
mqtt:8: error: no matching function for call to 'PubSubClient::PubSubClient(IPAddress&, int)'
mqtt.ino:8:32: note: candidates are:
In file included from mqtt.ino:2:0:
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:89:4: note: PubSubClient::PubSubClient(Client&, String, uint16_t)
  PubSubClient(Client& c, String hostname, uint16_t port = 1883);
  ^
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:89:4: note:  no known conversion for argument 1 from 'IPAddress' to 'Client&'
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:87:4: note: PubSubClient::PubSubClient(Client&, IPAddress&, uint16_t)
  PubSubClient(Client& c, IPAddress &ip, uint16_t port = 1883);
  ^
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:87:4: note:  no known conversion for argument 1 from 'IPAddress' to 'Client&'
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:84:4: note: PubSubClient::PubSubClient(Client&)
  PubSubClient(Client& c);
  ^
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:84:4: note:  candidate expects 1 argument, 2 provided
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(const PubSubClient&)
 class PubSubClient {
  ^
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:20:7: note:  candidate expects 1 argument, 2 provided
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:20:7: note: PubSubClient::PubSubClient(PubSubClient&&)
C:\ArduinoSketch\libraries\pubsubclient-master\src/PubSubClient.h:20:7: note:  candidate expects 1 argument, 2 provided
mqtt.ino:13:18: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
mqtt.ino:14:22: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
mqtt.ino:15:19: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
no matching function for call to 'PubSubClient::PubSubClient(IPAddress&, int)'
на строке PubSubClient client(server,1883);
подскажите, ему нужны доополнительные параметры в функцию передать или что?
 

M-a-x-x

New member
Можно еще так попробывать, но не обещаю, что будет работать)
const char* mqtt_server = "192.168.1.5";
WiFiClient espClient;
PubSubClient client(espClient);
...
client.setServer(mqtt_server, 1883);
UPD:
В общем там небольшая путаница, или я запутался. Есть два проекта PubSubClient:
для Arduino - https://github.com/knolleary/pubsubclient
для ESP8266 - https://github.com/Imroy/pubsubclient
Нам нужна последняя. Но Arduino IDE ее обновляет до последней версии. Нужно в папке библиотек удалить PubSubClient, скачать https://github.com/Imroy/pubsubclient/archive/master.zip и установить эту версию (1.99.1). Тогда в mqtt.ino нужно заменить
IPAddress server(192, 168, 1, 100); // mosquitto address
PubSubClient client(server, 1883);
на
WiFiClient espClient;
IPAddress server(192, 168, 1, 100); // mosquitto address
PubSubClient client(espClient, server);
У меня так заработало.
 
Последнее редактирование:
  • Like
Реакции: Azat
Можно еще так попробывать, но не обещаю, что будет работать)
const char* mqtt_server = "192.168.1.5";
WiFiClient espClient;
PubSubClient client(espClient);
...
client.setServer(mqtt_server, 1883);
Эх... спасибо за совет.. дейтсвительно на строке
Код:
client.setServer(mqtt_server, 1883);
выдает такую ощибку
Код:
mqtt:12: error: 'client' does not name a type
закоментировал её
компиляция прошла
Так же попробовал строку
Код:
PubSubClient client(espClient);
заменить на
Код:
PubSubClient client(espClient,mqtt_server,1883);
компиляция проходит, в работе проверить не успел.. как что отпишусь
 
в итоге оставил такой вариант
Код:
const char* mqtt_server = "192.168.1.200";
WiFiClient espClient;
PubSubClient client(espClient,mqtt_server,1883);
//client.setServer(mqtt_server, 1883);
последняя строка закоментирована, так как ней компилятор выдает ошибку.
работает, приходят сообщения. буду настраивать дальше. спасибо M-a-x-x за помощь
 
Еще раз всем добрый день!
в инструкции такая строка
Далее создаем в /overlay/mosquitto файл mqttwarn.ini следующего содержания:
..........
там текст настроек...
а ниже, где получаем данные с ТинСпик.. идет такая строка:
Тут же получаем Write API Key. Добавляем в /overlay/mosquitto/mqttwarn.init

Вопрос в следующем:
mqttwarn.ini и mqttwarn.init - это разные файлы? или опечатка? и если опечатка, то какой файл должен быть

заранее спасибо

UPD
с именем разобрался.. судя по тексту ниже - это опечатка и имя должно быть mqttwarn.ini
 
Сверху Снизу