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

Создаем свой блок. Вопросы, помощь знатоков.
Anydy

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

Сообщение 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
Архив с блоками:
MQTT_GPRS_1_1.zip
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Anydy

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

Сообщение Anydy »

Блок позволяет отправлять данные с датчиков на сервис http://narodmon.ru по протоколу MQTT.
В прикрепленном примере отправка с датчика температуры DS18B20, в основном блоке вводим вводим свои данные полученные на сайте narodmon.ru, и в блоке публикации в константе задаем имя топика. На сайте народмон есть справка по API передачи показаний.
SIM800_MQTT_narodmon.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Anydy

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

Сообщение 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

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

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

Сообщение Anydy »

Ну и отлично!
А по питанию очень даже капризные ...2А минимум надо ! Хоть и говорят что только пиковое потребление ... но поверим все же даташиту)))
bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15 янв 2018, 00:58
Откуда: истра
Имя: роман

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

Сообщение bayeck »

[ref=#aa0000]Anydy[/ref], вот бы еще реализовать передачу JSON, потыкался часа 4 не хватило мне знаний. Не можете или модернизировать блок или какой то JSON блок для создания сообщений сваять? А то посылать одну циферку за 5 мин грустно)
Anydy

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

Сообщение Anydy »

bayeck писал(а): 19 сен 2019, 10:05 А то посылать одну циферку за 5 мин грустно)
Не понял вас?
Сервис народмон принимает данные не чаще чем раз в 5 мин, для донаторов или разработчиков у них есть исключения....
В остальных случаях как часто вам позволят так и отправляйте, на свой сервер хоть каждую секунду!
bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15 янв 2018, 00:58
Откуда: истра
Имя: роман

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

Сообщение bayeck »

[ref=#aa0000]Anydy[/ref], на народмон отправлять сразу несколько показателей как я понял можно только JSON. или извращаться с сборкой разборкой в одной переменной?

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

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

Сообщение Anydy »

Ну давайте будем исправлять ошибки....не зря тема в разработке ПБ ...

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

Отправлено спустя 4 минуты 10 секунд:
Поэтому если нужна стабильность используют два МК - один для выхода в сеть - второй для обеспечения стабильной работы устройства....
bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15 янв 2018, 00:58
Откуда: истра
Имя: роман

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

Сообщение bayeck »

[ref=#aa0000]Anydy[/ref], То есть выполнение программы во время коннекта невозможно в принципе, или это сделано для стабильности установки соединения? И не понял дисконнект происходит из за плохой работы модема или принудительный ,со стороны брокера ,или вашего блока?
Anydy

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

Сообщение Anydy »

[ref]bayeck[/ref], да, верно поняли....во время соединения основная программа не выполняется....
bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15 янв 2018, 00:58
Откуда: истра
Имя: роман

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

Сообщение bayeck »

[ref=#aa0000]Anydy[/ref], невозможно в принципе, или это сделано для стабильности установки соединения? просто хочу понять в какую сторону смотреть)
Anydy

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

Сообщение Anydy »

Ну в принципе все возможно сделать....у меня сейчас этот стенд не собран..... говорите что не получается..попробую в теории помочь!)))
bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15 янв 2018, 00:58
Откуда: истра
Имя: роман

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

Сообщение bayeck »

[ref=#aa0000]Anydy[/ref], Хм,не получается чтобы работала основная программа когда идет коннект) может на блоке сделать точку выхода в ожидании коннекта? стек все равно какой то же есть?
Anydy

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

Сообщение Anydy »

Скиньте проект ....посмотрю.....
Timur14
Рядовой
Сообщения: 4
Зарегистрирован: 25 сен 2019, 05:47
Имя: Тимур

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

Сообщение Timur14 »

Здравствуйте Anydy. Да блоки MQTT SIM 800 работают отлично, и я согласен с вами что лучше всё это делать на отдельном МК, но вот какое дело. Собрал на отдельном МК это всё и решил попробовать отправлять значение в сериал компьютера отправляю значение в брокер 255 лампочка на МК загорелась а в ком порт идёт латинская какая-то ахинея. Должны идти числа а они не идут только буквы! Удалил блоки MQTT Подципил аналоговый вход к сериалу и всё работает! А с блоками MQTT когда я шлю значения в порт полная охинея! Так вопрос как я могу С МК с MQTT слать значения на другой МК по SERIAL если там всякая бурда идёт в порт а не цифры которые мне нужны! Помогите разобраться! Спасибо
Последний раз редактировалось Timur14 27 сен 2019, 15:56, всего редактировалось 1 раз.
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

[ref]Timur14[/ref], Вы для начала уберите конвертор строка-число, посмотрите чего приходит.
Далее.
Блок отправки в UART отсылает только переменные типа стринг и чар. Любой поданный байт будет интерпретирован как чар.
Соответственно, что-бы увидеть число, его необходимо конвертировать в строку и только потом отправлять.

Сори, заработался- print выводит как надо. write - байты.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Timur14
Рядовой
Сообщения: 4
Зарегистрирован: 25 сен 2019, 05:47
Имя: Тимур

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

Сообщение Timur14 »

Спасибо попробую)
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

[ref]Timur14[/ref], Глянул код - там в сериал шлётся дохр много всякой инфы и так.
Но !!! Скорость 115200 выставляется после всего Вашего. Смотрите Ваше тоже там.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Timur14
Рядовой
Сообщения: 4
Зарегистрирован: 25 сен 2019, 05:47
Имя: Тимур

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

Сообщение Timur14 »

Не понял вас что надо с скоростью сделать

Отправлено спустя 3 минуты 29 секунд:
Я просто пробовал разные скорости в том числе и 115200 всё одно и тоже

Отправлено спустя 35 секунд:
Попробую конвертёрёр убрать
Аватара пользователя
Sancho
Полковник
Сообщения: 4066
Зарегистрирован: 25 дек 2015, 17:32
Откуда: Ярославль.
Имя: Александр
Поблагодарили: 5 раз
Контактная информация:

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

Сообщение Sancho »

Даже без Ваших блоков он шлёт сначала статусы подключения к сети, а потом к mqtt.
Всё на 115200.
Это типа отладочная инфа.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.
Ответить

Вернуться в «Разработка пользовательских блоков»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость