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

Управление и контроль

Создаем свой блок. Вопросы, помощь знатоков.
Аватара пользователя
Anydy
Администратор
Сообщения: 3013
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 244
Имя: Андрей

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

#1

Сообщение Anydy » 27.07.2018{, 13:27}

Разработка блоков для связи с микроконтроллером через 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
Администратор
Сообщения: 3013
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 244
Имя: Андрей

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

#2

Сообщение Anydy » 28.07.2018{, 15:10}

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

KAnton
Рядовой
Сообщения: 2
Зарегистрирован: 02.03.2019{, 21:19}
Репутация: 0
Имя: Антон

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

#3

Сообщение KAnton » 03.03.2019{, 14:10}

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

Ниже прикрепил изображение.
Монитор порта.jpg
Пожалуйста подскажите что делаю не так.
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
Anydy
Администратор
Сообщения: 3013
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 244
Имя: Андрей

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

#4

Сообщение Anydy » 03.03.2019{, 14:16}

Вы верно прописали данные для доступа которые вам выдал 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

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

KAnton
Рядовой
Сообщения: 2
Зарегистрирован: 02.03.2019{, 21:19}
Репутация: 0
Имя: Антон

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

#5

Сообщение KAnton » 02.04.2019{, 23:07}

Доброго времени суток.
Спасибо Вам огромное за столь подробное описание процесса подключения.

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

Аватара пользователя
Anydy
Администратор
Сообщения: 3013
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 244
Имя: Андрей

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

#6

Сообщение Anydy » 03.04.2019{, 00:00}

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

bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15.01.2018{, 00:58}
Репутация: 1
Откуда: истра
Имя: роман

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

#7

Сообщение bayeck » 19.09.2019{, 10:05}

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

Аватара пользователя
Anydy
Администратор
Сообщения: 3013
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 244
Имя: Андрей

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

#8

Сообщение Anydy » 19.09.2019{, 11:29}

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

bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15.01.2018{, 00:58}
Репутация: 1
Откуда: истра
Имя: роман

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

#9

Сообщение bayeck » 19.09.2019{, 17:40}

Anydy, на народмон отправлять сразу несколько показателей как я понял можно только JSON. или извращаться с сборкой разборкой в одной переменной?

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

Аватара пользователя
Anydy
Администратор
Сообщения: 3013
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 244
Имя: Андрей

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

#10

Сообщение Anydy » 19.09.2019{, 21:42}

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

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

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

bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15.01.2018{, 00:58}
Репутация: 1
Откуда: истра
Имя: роман

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

#11

Сообщение bayeck » 19.09.2019{, 23:04}

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

Аватара пользователя
Anydy
Администратор
Сообщения: 3013
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 244
Имя: Андрей

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

#12

Сообщение Anydy » 19.09.2019{, 23:16}

bayeck, да, верно поняли....во время соединения основная программа не выполняется....

bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15.01.2018{, 00:58}
Репутация: 1
Откуда: истра
Имя: роман

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

#13

Сообщение bayeck » 19.09.2019{, 23:29}

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

Аватара пользователя
Anydy
Администратор
Сообщения: 3013
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 244
Имя: Андрей

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

#14

Сообщение Anydy » 20.09.2019{, 02:00}

Ну в принципе все возможно сделать....у меня сейчас этот стенд не собран..... говорите что не получается..попробую в теории помочь!)))

bayeck
Сержант
Сообщения: 140
Зарегистрирован: 15.01.2018{, 00:58}
Репутация: 1
Откуда: истра
Имя: роман

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

#15

Сообщение bayeck » 20.09.2019{, 07:46}

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

Аватара пользователя
Anydy
Администратор
Сообщения: 3013
Зарегистрирован: 30.12.2017{, 12:10}
Репутация: 244
Имя: Андрей

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

#16

Сообщение Anydy » 20.09.2019{, 07:50}

Скиньте проект ....посмотрю.....

Timur14
Рядовой
Сообщения: 4
Зарегистрирован: 25.09.2019{, 05:47}
Репутация: 0
Имя: Тимур

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

#17

Сообщение Timur14 » 27.09.2019{, 06:48}

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

Аватара пользователя
Sancho
Полковник
Сообщения: 3722
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 505
Откуда: Ярославль.
Имя: Александр
Контактная информация:

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

#18

Сообщение Sancho » 27.09.2019{, 11:35}

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

Сори, заработался- print выводит как надо. write - байты.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Timur14
Рядовой
Сообщения: 4
Зарегистрирован: 25.09.2019{, 05:47}
Репутация: 0
Имя: Тимур

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

#19

Сообщение Timur14 » 27.09.2019{, 15:24}

Спасибо попробую)

Аватара пользователя
Sancho
Полковник
Сообщения: 3722
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 505
Откуда: Ярославль.
Имя: Александр
Контактная информация:

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

#20

Сообщение Sancho » 27.09.2019{, 15:39}

Timur14, Глянул код - там в сериал шлётся дохр много всякой инфы и так.
Но !!! Скорость 115200 выставляется после всего Вашего. Смотрите Ваше тоже там.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Ответить

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

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

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