• Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу