• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

MQTT протокол для начинающих

Evgen

New member
С MQTT протоколом никогда дела не имел, но по ходу придется. На сколько я понял что-бы сделать свою иотрозетку с использованием этого протокола надо раскурить вот этот документ http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/MQTT_V3.1_Protocol_Specific.pdf, но там блин все на английском. Может кто знает где есть описание на русском, ну или уже сам раскурил?
Вопросов дофига:
создать тему (топик) это: подключиться по TCP к, например, iot.eclipse.org на порт 1883 и отправить специальный пакет с указанием названия темы. Правильно?
подписаться на тему это: так-же подключиться, отправить пакет, грубо говоря, с именем прослушиваемой темы и не отключаться, сидеть слушать когда в теме ченить появиться. Так?
сообщения отправляются только тем "слушателям" которые в данный момент подключены, т.е. установлено TCP соединение?
а если соединение прервалось и в это время в теме чета появилось при восстановлении соединения что-нибудь будет получено?
в тему может публиковать кто угодно? а если этот кто угодно на тему подписан то, если он в ней ченить опубликует, ему это сразу-же вернется?

Если кто в этом шарит то проявляем социальную активность, в партизанов не играем))
 
Последнее редактирование:

dzanis

New member
С MQTT протоколом никогда дела не имел, но по ходу придется. На сколько я понял что-бы сделать свою иотрозетку с использованием этого протокола
надо раскурить вот этот документ http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/MQTT_V3.1_Protocol_Specific.pdf, но там блин все на английском. Может кто знает где есть описание на русском, ну или уже сам раскурил?
Вопросов дофига:
создать тему (топик) это: подключиться по TCP к, например, iot.eclipse.org на порт 1883 и отправить специальный пакет с указанием названия темы. Правильно?
подписаться на тему это: так-же подключиться, отправить пакет, грубо говоря, с именем прослушиваемой темы и не отключаться, сидеть слушать когда в теме ченить появиться. Так?
сообщения отправляются только тем "слушателям" которые в данный момент подключены, т.е. установлено TCP соединение?
а если соединение прервалось и в это время в теме чета появилось при восстановлении соединения что-нибудь будет получено?
в тему может публиковать кто угодно? а если этот кто угодно на тему подписан то, если он в ней ченить опубликует, ему это сразу-же вернется?

Если кто в этом шарит то проявляем социальную активность, в партизанов не играем))
Сегодня займусь портом на Arduino IDE for ESP8266
 

dzanis

New member
Это что значит? Библиотека что-ли будет?
Порт - портировать это значит переписать с одной платформы на другую.Я нашол простой пример для MQTT https://github.com/knolleary/pubsubclient MQTT я хочу написать для связи с https://www.devicehub.net/ Жаль в си знаний немного,я больше на яве программировал.На данный момент не компилится,кучу типов менять нужно.Ардуиновская иде хардкорная,ловит ошибки только в консоли.Даже немогу сказать сколько времени уйдёт на порт.
 

Evgen

New member
А кто-нибудь знает для чего в MQTT протоколе нужны логин/пароль?
В MQTT-SPY создаю новое подключение, на вкладке security вбиваю логин/пароль, подключаюсь к iot.eclipse.org и подписываюсь на # (т.е. на все темы). В результате мне выдаются все сообщения опубликованные во всех темах. То-же самое происходит при подключении без логина/пароля. И нафига тогда они нужны?
 

M-a-x-x

New member
А кто-нибудь знает для чего в MQTT протоколе нужны логин/пароль?
В MQTT-SPY создаю новое подключение, на вкладке security вбиваю логин/пароль, подключаюсь к iot.eclipse.org и подписываюсь на # (т.е. на все темы). В результате мне выдаются все сообщения опубликованные во всех темах. То-же самое происходит при подключении без логина/пароля. И нафига тогда они нужны?
Так ты в конфиге "mosquitto.conf" прописал "password_file /etc/mosquitto/passwd"? Где "passwd" файл созданный командой "mosquitto_passwd -c /etc/mosquitto/passwd %USER%", затем вводишь свой пароль.
 

Evgen

New member
Нигде ничего не прописывал, я MQTT-SPY на компе запускаю, а не на роутере и мне надо чтобы (если я подключился с логином и паролем) мои сообщения никому кроме меня не отправлялись, даже если кто-то подписался на все сообщения во всех темах.
 

M-a-x-x

New member
Нигде ничего не прописывал, я MQTT-SPY на компе запускаю, а не на роутере и мне надо чтобы (если я подключился с логином и паролем) мои сообщения никому кроме меня не отправлялись, даже если кто-то подписался на все сообщения во всех темах.
А надо)) Я написал как у меня на Debian Linux работает, если у тебя Mosquitto на винде установлен, то там, я думаю, примерно то же самое настроить надо. Здесь посмотри http://mosquitto.org/man/mosquitto_passwd-1.html. Потом уже в настройках соединения MQTT-SPY вписываешь данные созданного юзера. У меня Mosquitto на своем серваке установлен. В общем тебе надо не MQTT-SPY настраивать, а вебсервис.
 

Evgen

New member
У меня Mosquitto на своем серваке установлен. В общем тебе надо не MQTT-SPY настраивать, а вебсервис.
Мне нужно использовать внешний сервер Mosquitto который на iot.eclipse.org работает, значит получается что надо его настраивать?
 

M-a-x-x

New member
Мне нужно использовать внешний сервер Mosquitto который на iot.eclipse.org работает, значит получается что надо его настраивать?
Получается что да. Там скорее всего должны быть какие-нибудь инструменты для этого. Можешь еще с сертификатами заморочится - "You can also access the server using encrypted port 8883. The encrypted port support TLS v1.2, v1.1 or v1.0 with x509 certificates and require client support to connect. In all cases you should use the certificate authority file iot.eclipse.org.crt to verify the server connection."
 
А кто-нибудь знает для чего в MQTT протоколе нужны логин/пароль?
В MQTT-SPY создаю новое подключение, на вкладке security вбиваю логин/пароль, подключаюсь к iot.eclipse.org и подписываюсь на # (т.е. на все темы). В результате мне выдаются все сообщения опубликованные во всех темах. То-же самое происходит при подключении без логина/пароля. И нафига тогда они нужны?
Логин/пароль нужен для того, чтобы защитить MQTT сервер от неавторизованного использования.
 
Сверху Снизу