MQTT клиент для Arduino, ESP8266, ESP32

Пользовательские блоки для коммкникации и связи GSM, GPRS, IR, Bluetooth и другие
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
texbez
Лейтенант
Сообщения: 406
Зарегистрирован: 20 ноя 2016, 19:57
Откуда: Ростов на дону
Имя: Сергей
Благодарил (а): 4 раза
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение texbez »

Добрый день!
Помогите разобраться -пытаюсь первый раз разобраться с MQTT.
При прошивке esp IDE выкидывает вот это[spoiler]
Screenshot_2.png
[/spoiler].
Что ей надо?
Проект:
Проба MQTT esp.flp
У вас нет необходимых прав для просмотра вложений в этом сообщении.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

smol писал(а): 17 фев 2019, 22:27вопрос. на выходе блока подписки сообщение присутствует на время ?? цикла? до смены сообщения в этом топике? еще как?
всегда, пока не придет новое сообщение в топик.
texbez писал(а): 17 фев 2019, 23:13Что ей надо?
Скачайте https://github.com/me-no-dev/ESPAsyncTC ... master.zip и установите в arduino ide.
int2246
Рядовой
Сообщения: 17
Зарегистрирован: 31 авг 2017, 08:31
Благодарил (а): 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение int2246 »

smol писал(а): 17 фев 2019, 22:27Привет Всем!
Не смейтесь, чей-то никак ни могу подсоенить блоки для Arduino ....

no matching function for call to 'PubSubClient::PubSubClient(EthernetClient&, const char [14], int)'
PubSubClient client(mqttClient, "192.168.0.104", 1883);

Отправлено спустя 30 минут 40 секунд:
уфф разобрался....
подскажи что сделал? использую блок MQTT Ethernet Pub v4.1 ардуину нано и ентернет w5100 выскакивает такоеже сообщение при компеляции
exit status 1
no matching function for call to 'PubSubClient::PubSubClient(EthernetClient&, const char [13], int)'
PubSubClient client(mqttClient, "192.168.12.2", 1883);
чем лечил?
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

MQTT для Arduino, ESP8266, ESP32

Сообщение smol »

Снес все библиотеки publishclient , она у меня в двух местах лежала и поставил рекомендуемую
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

MQTT для Arduino, ESP8266, ESP32

Сообщение smol »

Блок отличный, но вот проблем как и где можно выцепить признак прихода сообщения по подписке

Отправлено спустя 5 минут 32 секунды:
никак не могу логику сделать, так чтобы переменную (выход) можно было установить True/False подпиской и паралельно кнопкой сбросить если True и установить если False.
Что скажет коллективный разум?
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]smol[/ref], примерно так, не проверял работает или нет.
try.png
У вас нет необходимых прав для просмотра вложений в этом сообщении.
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

MQTT для Arduino, ESP8266, ESP32

Сообщение smol »

Спасибо, идею понял ....
int2246
Рядовой
Сообщения: 17
Зарегистрирован: 31 авг 2017, 08:31
Благодарил (а): 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение int2246 »

подскажите, а есть у блока какое то ограничение на использование Pub и Sub? Использую нано и W5500 блоки серии MQTT Ethernet Main v4.1 и больше 4 Pub не работает. Это я что то делаю не так или какое то ограничение?
starshoy81
Лейтенант
Сообщения: 530
Зарегистрирован: 05 апр 2016, 23:30
Откуда: Санкт-Петербург
Имя: Илья

MQTT для Arduino, ESP8266, ESP32

Сообщение starshoy81 »

[ref]int2246[/ref], посмотрите при компиляции, сколько места занимает программа. Если больше половины оперативки, то может глючить.
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

MQTT для Arduino, ESP8266, ESP32

Сообщение smol »

Еще вопрос обществу.
Возможно ли принять по подписке импульс - изменение значения т.е. подаем в топик к примеру "1" на выходе формируется импульс, через некоторое время опять "1" и опять импульс. в предлагаемом блоке значение подписки постоянно находится на выходе до момента изменения.
Anydy

MQTT для Arduino, ESP8266, ESP32

Сообщение Anydy »

starshoy81 писал(а): 08 мар 2019, 22:53Если больше половины оперативки, то может глючить.
Ну не половины, а больше 80% ...хотя наверное зависит от конкретного скетча....
smol писал(а): 10 мар 2019, 00:29Возможно ли принять по подписке импульс - изменение значения
Не вижу ничего сложного такое сделать, думаю будет полезно!
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]smol[/ref], создайте переменную, подключите к выходу sub и изменяйте как хотите. Я выше схему прилагал, там так и работает или я не понял чего вам надо.
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

MQTT для Arduino, ESP8266, ESP32

Сообщение smol »

Переменная на выходе sub существует до момента прихода следующего значения. А здесь так сказать самосброс, переменная существует определенное время а потом возвращается в исходное.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]smol[/ref], ну так я и говорю выход sub на переменную и уже с этой переменной делайте что хотите, или лучше после блока сравнения строк на переменную, чтобы память не терять лишнюю используя переменные String.
texbez
Лейтенант
Сообщения: 406
Зарегистрирован: 20 ноя 2016, 19:57
Откуда: Ростов на дону
Имя: Сергей
Благодарил (а): 4 раза
Поблагодарили: 1 раз

MQTT для Arduino, ESP8266, ESP32

Сообщение texbez »

Вопрос сообществу-пробую осваивать MQTT.Установил брокер пока на винде,подцепил датчик температуры и влажности,часы.В качестве панели использую virtunio mqtt.Данные передаются успешно,ещё есть кнопка которая зажигает светодиод и ползунок задатчик числа-всё работает.
Теперь я подключаю ещё одну панель с другого телефона к брокеру ,в нём все компоненты как и в первом,но данные температуры и влажности идут,задатчик в в виде ползунка работает с обеих телефонов,а кнопка только с первого,даже если первый телефон отключить,то со второго кнопка всё равно не работает.И ещё когда к брокеру подключены два телефона ,то работают по очереди(индикаторы подключения моргают и сообщения постоянно всплывают).Это что брокер нен поддерживает одновременно два соединения?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Parashutik
Рядовой
Сообщения: 32
Зарегистрирован: 13 окт 2017, 19:10
Контактная информация:

MQTT для Arduino, ESP8266, ESP32

Сообщение Parashutik »

User8 писал(а): 03 янв 2019, 01:04 Блоки для Arduino Ethernet:

Библиотека: https://github.com/Imroy/pubsubclient

Если при компиляции или загрузке выдает ошибку, удалите папку pubsubclient по пути flprog\ideV2\libraries\
Если у вас portable версия flprog, удалите папку pubsubclient по пути flprog\ideV2\portable\sketchbook\libraries\
Столкнулись с такой проблемой. На меге работал modbus. С неё же запуcтили клиента MQTT. Modbus перестал работать. Выяснилось, что шилд 5100 получает два MAC адреса и два IP соответственно. Проблема в пользовательском блоке main. Получается вызов два раза библиотеки ethernet.h и присвоение двух MAC адресов. Подкорректировали Ваш блок. Теперь всё работает. Если использутся только MQTT на шилде 5100, то брать Ваш main блок. Если используется ещё какой нибудь стандартный блок(WEB сервер или modbus TCP), то исправленный наш блок. Тогда всё работает нормально.
MQTT_Ethernet_Main_4_1_без_5100_(CODE).ubi
Исправленный блок main.flp
Отправлено спустя 1 минуту 43 секунды:
texbez писал(а): 10 мар 2019, 15:39Вопрос сообществу-пробую осваивать MQTT.Установил брокер пока на винде,подцепил датчик температуры и влажности,часы.В качестве панели использую virtunio mqtt.Данные передаются успешно,ещё есть кнопка которая зажигает светодиод и ползунок задатчик числа-всё работает.
Теперь я подключаю ещё одну панель с другого телефона к брокеру ,в нём все компоненты как и в первом,но данные температуры и влажности идут,задатчик в в виде ползунка работает с обеих телефонов,а кнопка только с первого,даже если первый телефон отключить,то со второго кнопка всё равно не работает.И ещё когда к брокеру подключены два телефона ,то работают по очереди(индикаторы подключения моргают и сообщения постоянно всплывают).Это что брокер нен поддерживает одновременно два соединения?
У Вас на телефонах должен быть разный ID. Это обязательное условие.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

MQTT для Arduino, ESP8266, ESP32

Сообщение smol »

Проблема решена подправил блок подписки теперь выход срабатывает на время цикла при приходе в топик соответсвующего значения

Отправлено спустя 1 минуту 8 секунд:
Спасибо User8
У вас нет необходимых прав для просмотра вложений в этом сообщении.
User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12 июн 2017, 14:44
Имя: Евгений

MQTT для Arduino, ESP8266, ESP32

Сообщение User8 »

[ref]smol[/ref], я догнал что вы хотите, чтобы каждый раз при отправки единицы в топик срабатывала единица на выходе. Это не совсем правильное решение, так как если в топик будет приходить например температура, то после прихода она сразу же сбросится и текущей температуры мы не увидим. Решить ваш вопрос можно проще не переделывая блок, можно сразу после прихода единицы, отправлять в этот же топик 0, в таком случае все будет работать как вам нужно.
smol
Рядовой
Сообщения: 62
Зарегистрирован: 16 ноя 2017, 18:25

MQTT для Arduino, ESP8266, ESP32

Сообщение smol »

Это для управления порт дернуть. Заметил больше 4 блоков контроллер не переваривает.

Отправлено спустя 1 минуту 40 секунд:
Для передачи температуры использую не патченый блок.
Anydy

MQTT для Arduino, ESP8266, ESP32

Сообщение Anydy »

[ref]User8[/ref], сделайте просто в каждом цикле программы отправку еденички на выход ..и сброс после .....это же вроде просто!
Ответить

Вернуться в «Коммуникация и связь»

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

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