Страница 1 из 7

Блок для GPRS модулей, связь по MQTT

Добавлено: 27.07.2018{, 13:27}
Anydy
Разработка блоков для связи с микроконтроллером через GPRS по протоколу MQTT.
Блок Main должен быть всегда, там основные настройки.
Блоков подписки и публикации может быть несколько.
Важно! При компиляции проекта строку #define TINY_GSM_MODEM_SIM800 перенести на самый верх скетча т.к. ФЛпрог размещает ее не верно.
Строки для других модемов:
#define TINY_GSM_MODEM_SIM808
#define TINY_GSM_MODEM_SIM900
#define TINY_GSM_MODEM_UBLOX
#define TINY_GSM_MODEM_BG96
#define TINY_GSM_MODEM_A6
#define TINY_GSM_MODEM_A7
#define TINY_GSM_MODEM_M590
#define TINY_GSM_MODEM_ESP8266
#define TINY_GSM_MODEM_XBEE
Так же необходимо(желательно) установить модулю фиксированную скорость как и в скетче - 19200
Проверено на модуле SIM800
Блок основан на библиотеке TinyGSM
Поддерживаемые модемы:
SIMCom SIM800 series (SIM800A, SIM800C, SIM800L, SIM800H, SIM808, SIM868)
SIMCom SIM900 series (SIM900A, SIM900D, SIM908, SIM968)
AI-Thinker A6, A6C, A7, A20
ESP8266 (AT commands interface, similar to GSM modems)
Digi XBee WiFi and Cellular (using XBee command mode)
Neoway M590
u-blox Cellular Modems (LEON-G100, LISA-U2xx, SARA-G3xx, SARA-U2xx, TOBY-L2xx, LARA-R2xx, MPCI-L2xx)
(В данной версии блока только SIM800)
В блоке реализовано автоматическое переподключение к брокеру и к сети GPRS
Так же включен аппаратный Watchdog, но для этого нужно прошить загрузчик Optiboot (на UNO вроде должно работать со стандартным)
Пост будет дополнятся/редактироваться.

Пример программы:
Mqtt_Sim800_1.flp
(847.24 КБ) 553 скачивания
Архив с блоками:
MQTT_GPRS_1_1.zip
(95.23 КБ) 535 скачиваний

Блок для GPRS модулей, связь по MQTT

Добавлено: 28.07.2018{, 15:10}
Anydy
Блок позволяет отправлять данные с датчиков на сервис http://narodmon.ru по протоколу MQTT.
В прикрепленном примере отправка с датчика температуры DS18B20, в основном блоке вводим вводим свои данные полученные на сайте narodmon.ru, и в блоке публикации в константе задаем имя топика. На сайте народмон есть справка по API передачи показаний.
SIM800_MQTT_narodmon.flp
(794.26 КБ) 369 скачиваний

Блок для GPRS модулей, связь по MQTT

Добавлено: 03.03.2019{, 14:10}
KAnton
Еще раз здравствуйте!
Наткнулся на следующие грабли моего не знания.
После компиляции скетча наблюдаю за отображением данных в мониторе порта:
инициализация модема - ОК
соединение с оператором - ОК
соединение с narodmon.ru не проходит.

Ниже прикрепил изображение.
Монитор порта.jpg
Пожалуйста подскажите что делаю не так.

Блок для GPRS модулей, связь по MQTT

Добавлено: 03.03.2019{, 14:16}
Anydy
Вы верно прописали данные для доступа которые вам выдал narodmon?
Скиньте в ЛС ваш проект flp с вашими настройками ...посмотрю

Отправлено спустя 6 часов 24 минуты 3 секунды:
Итак, для narodmon.ru прежде лучше проверить отправку с компьютера с помощью любого MQTT клиента, например MQTT.fx ... не забываем - отправка данных на narodmon не чаще чем раз в 5 минут.
Указываем в настройках подключения :
сервер - narodmon.ru порт 1883
Client ID - указываем MAC адрес вашего устройства, можно например взять адрес какого либо устройства - типа F4:EC:38:F1:23:B9 .... он нам нужен будет при создании датчика на сервере.
Логин - ваш логин или почту при регистрации
Пароль - ищем в меню справка - API передачи показаний - в разделе MQTT, обычно 5 цифр ( при неверном вводе вас блокируют на 5-10 минут
Теперь можно попробовать подключиться!
Далее создаем датчик в меню Датчики - добавить мое устройство мониторинга, указываем MAC адрес который указали в клиенте MQTT. Настраиваем название (например hometemp) и адрес где он будет отображаться на карте.
Теперь можем передавать данные из клиента.
Формат такой - топик - вашlogin/hometemp/temp ну и само сообщение например 27
Все! Теперь на карте ваш датчик покажет температуру 27

То же самое настраиваем в настройках блока для ФЛпрог по примеру выше...не забываем - пароль не от входа на сайт а ваш личный код!

Блок для GPRS модулей, связь по MQTT

Добавлено: 02.04.2019{, 23:07}
KAnton
Доброго времени суток.
Спасибо Вам огромное за столь подробное описание процесса подключения.

Итоги:
Следуя по указанному Вами выше мануалу подключение все таки наладилось, но были обрывы/ошибки в подключении, это решилось подачей нормального питания (хоть и пишут что Sim900/Sim900A не капризный к питанию).

Блок для GPRS модулей, связь по MQTT

Добавлено: 03.04.2019{, 00:00}
Anydy
Ну и отлично!
А по питанию очень даже капризные ...2А минимум надо ! Хоть и говорят что только пиковое потребление ... но поверим все же даташиту)))

Блок для GPRS модулей, связь по MQTT

Добавлено: 19.09.2019{, 10:05}
bayeck
Anydy, вот бы еще реализовать передачу JSON, потыкался часа 4 не хватило мне знаний. Не можете или модернизировать блок или какой то JSON блок для создания сообщений сваять? А то посылать одну циферку за 5 мин грустно)

Блок для GPRS модулей, связь по MQTT

Добавлено: 19.09.2019{, 11:29}
Anydy
bayeck писал(а):
19.09.2019{, 10:05}
А то посылать одну циферку за 5 мин грустно)
Не понял вас?
Сервис народмон принимает данные не чаще чем раз в 5 мин, для донаторов или разработчиков у них есть исключения....
В остальных случаях как часто вам позволят так и отправляйте, на свой сервер хоть каждую секунду!

Блок для GPRS модулей, связь по MQTT

Добавлено: 19.09.2019{, 17:40}
bayeck
Anydy, на народмон отправлять сразу несколько показателей как я понял можно только JSON. или извращаться с сборкой разборкой в одной переменной?

Отправлено спустя 1 час 40 минут 15 секунд:
Anydy, и еще один косячок. во время инициализации модема и установки связи вся остальная программа не выполняется. то есть висяк намертво когда устанавливается связь.

Блок для GPRS модулей, связь по MQTT

Добавлено: 19.09.2019{, 21:42}
Anydy
Ну давайте будем исправлять ошибки....не зря тема в разработке ПБ ...

Отправлено спустя 9 минут 35 секунд:
bayeck писал(а):
19.09.2019{, 19:20}
и еще один косячок. во время инициализации модема и установки связи вся остальная программа не выполняется. то есть висяк намертво когда устанавливается связь.
ну как бы да....вам шашечки или ехать...)))) .....вы как хотите? чтобы программа выполнялась? тогда и выполняйте ее! и задействуйте подключение к сети раз в в час....

Отправлено спустя 4 минуты 10 секунд:
Поэтому если нужна стабильность используют два МК - один для выхода в сеть - второй для обеспечения стабильной работы устройства....

Блок для GPRS модулей, связь по MQTT

Добавлено: 19.09.2019{, 23:04}
bayeck
Anydy, То есть выполнение программы во время коннекта невозможно в принципе, или это сделано для стабильности установки соединения? И не понял дисконнект происходит из за плохой работы модема или принудительный ,со стороны брокера ,или вашего блока?

Блок для GPRS модулей, связь по MQTT

Добавлено: 19.09.2019{, 23:16}
Anydy
bayeck, да, верно поняли....во время соединения основная программа не выполняется....

Блок для GPRS модулей, связь по MQTT

Добавлено: 19.09.2019{, 23:29}
bayeck
Anydy, невозможно в принципе, или это сделано для стабильности установки соединения? просто хочу понять в какую сторону смотреть)

Блок для GPRS модулей, связь по MQTT

Добавлено: 20.09.2019{, 02:00}
Anydy
Ну в принципе все возможно сделать....у меня сейчас этот стенд не собран..... говорите что не получается..попробую в теории помочь!)))

Блок для GPRS модулей, связь по MQTT

Добавлено: 20.09.2019{, 07:46}
bayeck
Anydy, Хм,не получается чтобы работала основная программа когда идет коннект) может на блоке сделать точку выхода в ожидании коннекта? стек все равно какой то же есть?

Блок для GPRS модулей, связь по MQTT

Добавлено: 20.09.2019{, 07:50}
Anydy
Скиньте проект ....посмотрю.....

Блок для GPRS модулей, связь по MQTT

Добавлено: 27.09.2019{, 06:48}
Timur14
Здравствуйте Anydy. Да блоки MQTT SIM 800 работают отлично, и я согласен с вами что лучше всё это делать на отдельном МК, но вот какое дело. Собрал на отдельном МК это всё и решил попробовать отправлять значение в сериал компьютера отправляю значение в брокер 255 лампочка на МК загорелась а в ком порт идёт латинская какая-то ахинея. Должны идти числа а они не идут только буквы! Удалил блоки MQTT Подципил аналоговый вход к сериалу и всё работает! А с блоками MQTT когда я шлю значения в порт полная охинея! Так вопрос как я могу С МК с MQTT слать значения на другой МК по SERIAL если там всякая бурда идёт в порт а не цифры которые мне нужны! Помогите разобраться! Спасибо

Блок для GPRS модулей, связь по MQTT

Добавлено: 27.09.2019{, 11:35}
Sancho
Timur14, Вы для начала уберите конвертор строка-число, посмотрите чего приходит.
Далее.
Блок отправки в UART отсылает только переменные типа стринг и чар. Любой поданный байт будет интерпретирован как чар.
Соответственно, что-бы увидеть число, его необходимо конвертировать в строку и только потом отправлять.

Сори, заработался- print выводит как надо. write - байты.

Блок для GPRS модулей, связь по MQTT

Добавлено: 27.09.2019{, 15:24}
Timur14
Спасибо попробую)

Блок для GPRS модулей, связь по MQTT

Добавлено: 27.09.2019{, 15:39}
Sancho
Timur14, Глянул код - там в сериал шлётся дохр много всякой инфы и так.
Но !!! Скорость 115200 выставляется после всего Вашего. Смотрите Ваше тоже там.