UDP передача переменных по локальной сети

Пользовательские блоки для коммкникации и связи GSM, GPRS, IR, Bluetooth и другие
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Phazz
Полковник
Сообщения: 2553
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

UDP передача переменных по локальной сети

#1

Сообщение Phazz » 13.11.2022{, 17:52}

Блок передачи данных по локальной сети через протокол UDP.
Очень быстрый и легкий протокол.
Нет необходимости знать ip адреса контроллеров.
Асинхронные прием и передача данных.
Есть контроль доставки данных.
Блоки совместимы с ESP8266 и ESP32.
Архив версийПоказать
UDP обмен данными 1.0.flp
(1.12 МБ) 263 скачивания
31.03.23 - версия блока 2.0 Добавил отправку по IP

Библиотека
ESPAsyncUDP-master.zip
(14.64 КБ) 299 скачиваний
Последний раз редактировалось Phazz 31.03.2023{, 22:29}, всего редактировалось 7 раз.

Аватара пользователя
Phazz
Полковник
Сообщения: 2553
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

UDP передача переменных по локальной сети

#41

Сообщение Phazz » 14.02.2023{, 23:16}

Sio, да без проблем, два блока один команду on обрабатывает включая пин через rs trig. Другая off - выключает.

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

UDP передача переменных по локальной сети

#42

Сообщение WildCat » 30.03.2023{, 23:16}

Phazz, здравствуйте.

поясните, пожалуйста, какой смысл во входе "топик"? На что он влияет и для чего нужен?

если мне нужно передать несколько переменных, как их разделить?
Правильно ли я понимаю, что топик и есть параметр для разделения переменных?
Например, нужно передать 10 значений температур.
Значит будет 10 топиков и 10 блоков приема/отправки с топиками (например): Т1, Т2, Т3... Т10 ?

Или не так?

Аватара пользователя
Phazz
Полковник
Сообщения: 2553
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

UDP передача переменных по локальной сети

#43

Сообщение Phazz » 30.03.2023{, 23:24}

WildCat, правильно, в передаче и приеме топики должны быть одинаковые

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

UDP передача переменных по локальной сети

#44

Сообщение WildCat » 30.03.2023{, 23:32}

Phazz, спасибо.

Ещё вопрос.
У меня один МК - клиент (выходит в инет через комп/мобилу для синхронизации RTC.). Может быть безболезненно отлучён от интернета, и переходит сам в режим точки доступа.
Как мне настроить второй МК? Тоже клиентом?
Им параметры сети какие следует указывать?

Аватара пользователя
Phazz
Полковник
Сообщения: 2553
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

UDP передача переменных по локальной сети

#45

Сообщение Phazz » 31.03.2023{, 00:11}

Если мк является точкой, то сообщения он может получать только по обращении по ip. То есть нужно в блоке отправки включить соответствующий параметр.

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

UDP передача переменных по локальной сети

#46

Сообщение WildCat » 31.03.2023{, 00:22}

Примерно понял, буду пробовать. Спасибо.

Аватара пользователя
Phazz
Полковник
Сообщения: 2553
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

UDP передача переменных по локальной сети

#47

Сообщение Phazz » 31.03.2023{, 03:09}

WildCat, viewtopic.php?p=120892#p120892
Оказывается я не обновил шапку. Актуальные блоки по этой ссылке

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

UDP передача переменных по локальной сети

#48

Сообщение WildCat » 31.03.2023{, 03:46}

Phazz, ничего страшного, когда я увидел сообщение про отправку по IP, и не нашел этого в базовом блоке, скачал проект из сообщения)

Спасибо

Аватара пользователя
Phazz
Полковник
Сообщения: 2553
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 367
Откуда: Сургут
Имя: Анатолий

UDP передача переменных по локальной сети

#49

Сообщение Phazz » 31.03.2023{, 12:55}

31.03.23 - версия блока 2.0 Добавил отправку по IP
Вложения
UDP обмен данными 2.0.flp
(1.41 МБ) 154 скачивания

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

UDP передача переменных по локальной сети

#50

Сообщение WildCat » 01.04.2023{, 03:34}

Phazz,
Попробовал, работает )
Но есть вопросы.
При передаче относительно большого количества переменых (в моем случае 15) существенно снижается быстродействие МК.
С диспетчером увы, не работает.
Есть ли какие-то способы разгрузить МК?
Может отправку разных параметров вразнобой делать?
У меня сейчас отправка раз в 5сек (для всех переменных). Tick - это ж по сути и есть таймер отправки?

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

UDP передача переменных по локальной сети

#51

Сообщение WildCat » 04.04.2023{, 00:50}

Phazz,
А вот ещё вопрос:
Какой реально допустимый тайминг отправки можно использовать?
Сколько времени длится передача одной переменой (допустим, стринг 4..10 знаков)?
Понятно, что в пакете ещё есть 32 бита IP адрес, 12 бит - номер порта, сколько-то на топик и несколько байт на сами данные. Итого- около сотни бит в одном пакете отправки (если не передавать целые текстовые предложения).
Если время на передачу одной переменной по UART я могу посчитать, то здесь немного теряюсь.

ecoins
Полковник
Сообщения: 2936
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

UDP передача переменных по локальной сети

#52

Сообщение ecoins » 04.04.2023{, 01:56}

WildCat писал(а):
04.04.2023{, 00:50}
Phazz,
А вот ещё вопрос:
Какой реально допустимый тайминг отправки можно использовать?
Сколько времени длится передача одной переменой (допустим, стринг 4..10 знаков)?
Понятно, что в пакете ещё есть 32 бита IP адрес, 12 бит - номер порта, сколько-то на топик и несколько байт на сами данные. Итого- около сотни бит в одном пакете отправки (если не передавать целые текстовые предложения).
Если время на передачу одной переменной по UART я могу посчитать, то здесь немного теряюсь.
В новой версии 8.2.1 появилась возможность измерить быстродействие платы. Это значение можно вывести как в монитор порта, так и на LCD.

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

UDP передача переменных по локальной сети

#53

Сообщение WildCat » 04.04.2023{, 02:12}

ecoins писал(а):
04.04.2023{, 01:56}
быстродействие платы
Спасибо.
Но быстродействие выполнения равно ли физическому времени отправки данных?
Для WiFi другое ядро используется же?
Не может быть такого, что из платы (ядро 1) отправляется команда в ядро 0 (управление WiFi)? И по факту, плата отработала, а переменная ещё в буфере отправки?

Или я ошибаюсь?

И, кстати, а есть информация, есть ли вообще буфер у WiFi , и какого он размера?
Я с наскоку не нашёл. Видел только информацию, что скорость обмена по UDP до 20 Мбит/с.
То есть, те же 100 бит улетят за 5 мкс.

ecoins
Полковник
Сообщения: 2936
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 453
Откуда: Шатура
Имя: Энвер

UDP передача переменных по локальной сети

#54

Сообщение ecoins » 04.04.2023{, 08:42}

WildCat писал(а):
04.04.2023{, 02:12}
Для WiFi другое ядро используется же?
Не может быть такого, что из платы (ядро 1) отправляется команда в ядро 0 (управление WiFi)?
То, что ядро 0 используется для WiFi для меня не очевидно. Из Arduino IDE следует, что по умолчанию скетч грузится ядро 1.
WildCat писал(а):
04.04.2023{, 02:12}
И, кстати, а есть информация, есть ли вообще буфер у WiFi , и какого он размера?
Полагаю все гораздо проблематичнее и это связано с архитектурой контроллеров ESP32 - в них нет внутреннего FLesh под программы, связь с которой реализуется через SPI.

waswas
Рядовой
Сообщения: 44
Зарегистрирован: 04.04.2023{, 18:39}
Репутация: 2
Имя: Вася

UDP передача переменных по локальной сети

#55

Сообщение waswas » 04.04.2023{, 19:01}

WildCat писал(а):
13.11.2022{, 17:52}
И, кстати, а есть информация, есть ли вообще буфер у WiFi , и какого он размера
буфер (размер/длина) для сообщений по udp составляет:

AsyncUDPMessage::AsyncUDPMessage(size_t size)
{
_index = 0;
if(size > 1460) {
size = 1460;
}
_size = size;
_buffer = (uint8_t *)malloc(size);
}

vladi5700
Рядовой
Сообщения: 6
Зарегистрирован: 27.06.2023{, 07:59}
Репутация: 0
Имя: Влад

UDP передача переменных по локальной сети

#56

Сообщение vladi5700 » 18.07.2023{, 13:40}

Подскажите, а можно этим блоком как-то отправить пакет с содержимым " GL,0,1 " на определенный порт? Чтобы ничего кроме в пакете не было. Хочу включать и выключать GyverLamp2 по UDP. C компа успешно включается и выключается пакетом как на скрине
test.png
test.png (6.81 КБ) 720 просмотров

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

UDP передача переменных по локальной сети

#57

Сообщение WildCat » 18.07.2023{, 13:44}

Блок отправляет строку (string). Что там напишите, то и отправит.

vladi5700
Рядовой
Сообщения: 6
Зарегистрирован: 27.06.2023{, 07:59}
Репутация: 0
Имя: Влад

UDP передача переменных по локальной сети

#58

Сообщение vladi5700 » 18.07.2023{, 14:07}

WildCat писал(а):
18.07.2023{, 13:44}
Блок отправляет строку (string). Что там напишите, то и отправит.
В лоб пробовал, не работает. А ID, топик и т д он в пакет не вставляет разве? Мне надо чтобы строка ушла в чистом виде, тоесть чтобы кроме строки в пакете ничего не было. Можно так как-то реализовать отправку?

WildCat
Лейтенант
Сообщения: 426
Зарегистрирован: 04.06.2022{, 04:14}
Репутация: 48
Имя: Михаил

UDP передача переменных по локальной сети

#59

Сообщение WildCat » 18.07.2023{, 14:13}

vladi5700 писал(а):
18.07.2023{, 14:07}
Можно так как-то реализовать отправку?

Гайвер лампа - готовое устройство?
Может в топик записать GL, а в данные 0,1?

В лампе нет возможности из пакета UDP только данные вытащить?

vladi5700
Рядовой
Сообщения: 6
Зарегистрирован: 27.06.2023{, 07:59}
Репутация: 0
Имя: Влад

UDP передача переменных по локальной сети

#60

Сообщение vladi5700 » 18.07.2023{, 14:20}

WildCat писал(а):
18.07.2023{, 14:13}
Гайвер лампа - готовое устройство?
Да, там проект довольно сложный от Алекса Гайвера, что либо менять там знаний не хватает, но у него есть подробное описание его протокола, откуда я вытащил эту строку GL,0,1 и GL,0,0 на вкл/выкл. Попробовал с компьютера отправлять эти строки и все работает. Теперь ищу способ как с ЕСП этим рулить :smile37: С данным блоком я так понимаю вся проблема в том, что он отправляет не только строку, но и служебную информацию. Возможно можно что-то из кода блока удалить, чтобы отправлялась только строка без всех остальных атрибутов

Ответить

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