Протокол общения с mqtt сервером

Тема в разделе "Проводная и беспроводная связь", создана пользователем a1000, 3 мар 2021.

  1. a1000

    a1000 Гуру

    Чисто в познавательных целях пытаюсь пообщаться с MQTT сервером используя модуль SIM800L. Да, это извращение, но интересно. Выход в интернет и соединение с удалённым сервером особых проблем не вызвало. Модуль настраиваю на передачу данных в прозрачном режиме. Вот как этот режим описывает производитель
    То есть, что пихнул в UART модуля, то и пришло на сервер. Вот тут и возник дефицит знаний. К серверу я подключаюсь
    Код (C++):
    AT+CIPSTART="TCP","srv2.clusterfly.ru","9991"

    OK
    CONNECT OK
    но в каком виде надо отправлять логин, пароль и как оформить подписку на топик? Подскажите или ткните пальцем где об этом почитать.
     
  2. Andrey12

    Andrey12 Гик

    Вижу тему, все руки не дойдут зайти ответить.
    Читать лучше всего в описании MQTT. Я пятую версию пока не читал вообще, читал про 3.1.1
    Описание тут - https://mqtt.org/mqtt-specification/

    Если приконектился к серверу то надо командой AT+CIPSEND передать пакет CONNECT из чего состоит и как формируется написано тут
    http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718028
    ежели у тебя правильно все и команда AT+CIPSEND отработала от в ответ получишь SEND OK, ну не значит что приконектился, значит что отправлено :) лови ответы +IPD смотри что ответил сервер.

    после этого можно тем же AT+CIPSEND отправлять публикацию на канал пакетом PUBLISH, читать тут про состав пакета
    http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html#_Toc398718037

    с подпиской так же, типа отправил пакет SUBSCRIBE и ждешь когда от SIM800 в порт прилетит, отправляй каким нить MQTT клиентом сообщение и смотри что прилетело от SIM800

    Может сумбурно написал, но в принципе там по ссылкам все есть.
    И еще одна на соседний форум http://arduino.ru/forum/programmirovanie/snova-mqtt-1#comment-411540 тут и ниже этого поста насписаны команды, показаны ответы SIM800 и есть примеры коннекта с MQTT и отправки сообщений в топики.

    ну это если хочется разбираться прям с нуля. а если нет ставь pubsubclient и пользуйся им.
     
    a1000 нравится это.
  3. a1000

    a1000 Гуру

    Спасибо за ответ. Нашёл и я эту документацию. Плохо, конечно, без знания английского, но потихоньку разбираюсь. Какалерийским наскоком там не попрёшь. Сначала надо разобраться со всеми параметрами, которые передаются в пакетах.
    Нашёл готовую библиотеку под это дело.
    https://github.com/elementzonline/SIM800_MQTT
    может кому сгодится.:)
     
    Andrey12 нравится это.