• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Постоянная загрузка данных.

ART_HA

Member
Здравствуйте.
Прошу совета.
Требуется постоянная передача одной переменной на ПК или в андроид.
Рабочим вариантом является создание HTTP сервера на ESP и периодический опрос его с браузера компа или смартфона.
Но во-первых, желательно опрашивать ESP чаще, чем раз в секунду, а во-вторых, уж больно все получается громоздко из-за всего лишь одного числового значения.
Неужели нет вариантов попроще?
 

tretyakov_sa

Moderator
Команда форума
Сокет сервер на ESP. Сокет клиент на ПК или android или другая ESP с экраном и тд. Если к серверу есть подключение передаем данные тогда когда они изменились, если подключения к серверу нет ничего не передаем.
 

nikolz

Well-known member
Здравствуйте.
Прошу совета.
Требуется постоянная передача одной переменной на ПК или в андроид.
Рабочим вариантом является создание HTTP сервера на ESP и периодический опрос его с браузера компа или смартфона.
Но во-первых, желательно опрашивать ESP чаще, чем раз в секунду, а во-вторых, уж больно все получается громоздко из-за всего лишь одного числового значения.
Неужели нет вариантов попроще?
Делал следующие варианты:
--------------
Вариант 1:
На компе ставите UDP сервер, (работает роутер) который следит за заданным портом.
На луа это примерно 5 строк текста.
На ESP ставите UDP клиент, который в бродкасте шлет на порт сервера сообщения.
Минимальное время не измерял.
Но если ESP отправлять спать , то минимальное интервал составит 0.3 сек.
Если спать не отправлять, то очевидно меньше.
---------------------
Вариант 2:
Без роутеров.
берем две ESP в режиме ESP-NOW.
Одна на компе (смартфоне).
Вторая - где угодно.
Примеры есть в документации на SDK.
Примерно строк 100 на СИ.
Раз 10 в секунду без проблем
------------------------
Но полагаю, что передавать очень часто сырые данные это плохая идея. Надо делать обработку на ESP а не гонять тупо данные забивая эфир.
 

ART_HA

Member
Спасибо.
Правильно ли я понял, что моя задача может быть решена двумя способами:
1. Вместо того, чтобы на ESP поставить сервер и с браузера компа посылать с него информацию через запросы, предлагается сервер поставить на комп и с ESP слать на него информацию "по расписанию" ESP?
2. Можно ли для данного случая представить себе ESP-NOW как систему из двух отдельных ESP, постоянно связанных между собой по радиоканалу, при этом один ESP отсылает данные, а второй принимает их и по проводу отдает в комп например по RS232?
 

tretyakov_sa

Moderator
Команда форума
Спасибо.
Правильно ли я понял, что моя задача может быть решена двумя способами:
1. Вместо того, чтобы на ESP поставить сервер и с браузера компа посылать с него информацию через запросы, предлагается сервер поставить на комп и с ESP слать на него информацию "по расписанию" ESP?
2. Можно ли для данного случая представить себе ESP-NOW как систему из двух отдельных ESP, постоянно связанных между собой по радиоканалу, при этом один ESP отсылает данные, а второй принимает их и по проводу отдает в комп например по RS232?
Вы можете и не выключать сервер. В этом случае вам не потребуется никакое дополнительное программное обеспечение ни на компьютере ни на телефоне. Браузер и все.
Если использовать ESP-NOW то вы действительно можете связать 2 esp без роутеров, но вот как вы реализуете интерфейс с ПК или adroid? Это создаст дополнительные задачи.
 

ART_HA

Member
Спасибо, Сергей.
Я уже однажды воспользовался Вашим: https://esp8266-arduinoide.ru/step2-webserver/
Всё получилось очень просто и удачно, сейчас коробочка на испытаниях.
Однако на этот раз из-за ограниченности ардуино мне придется перейти на: Михаил Григорьев
а у него в примерах websocket почему-то не просматривается.
Буду думать...
 

ART_HA

Member
Однако вижу такой выход из создавшегося положения.
Использовать наработку с WebSocket Сергея Третьякова, включив в ардуину нужные мне функции из ESP8266_NONOS_SDK-3.0.4
По крайней мере с помощью предварительных танцев с бубнами мне удалось добиться ошибок компиляции.
Проверка на физическом ESP8266 будет позже, когда придут заказанные WiFi Wemos D1 mini, так как имеющаяся находится в коробочке на испытаниях и вернется не скоро.
Всем огромное спасибо за ценные советы,
ИМХО толковый форум.
 

pvvx

Активный участник сообщества
Если использовать ESP-NOW то вы действительно можете связать 2 esp без роутеров, но вот как вы реализуете интерфейс с ПК или adroid? Это создаст дополнительные задачи.
Все платки с ESP8266 имеют USB-COM порт. Браузер без проблем работает с COM портами (включая и Android), или вообще с любым USB.
WebSocket будет так-себе решением такой задачи. Не далеко от HTTP-Web.
Самый простой способ задачи посылки пару байт на сегодня предоставляет BLE. Он для этого и создан.
 

tretyakov_sa

Moderator
Команда форума
Вопрос в теме к
Здравствуйте.
Прошу совета.
Требуется постоянная передача одной переменной на ПК или в андроид.
Я вам дал пример как это можно сделать используя одну esp подключенную к сети или в режиме работы точки доступа.
Подключили перешли по адресу в браузере и получили живые значения. Зачем USB-com зачем терминалы?
Вы не рассказали куда эти данные потом будите передавать. Число на экране видите и ответ на ваш вопрос получен. Какая разница в браузере вы видите число или в программе терминал?
 

ART_HA

Member
Я вам дал пример как это можно сделать используя одну esp подключенную к сети или в режиме работы точки доступа.
Очень даже хороший пример, и, судя по предыдущему опыту пользования Вашими примерами, наверняка работоспособный. Можно смело сказать, что Вы меня выручили.
Зачем USB-com зачем терминалы?
Этот вариант мною виделся при использовании ESP-NOW. То есть я так его понял для решения моей задачи - второй ESP принимает информацию от первого и конвертирует её в RS232 для терминала компа.
Вы не рассказали куда эти данные потом будите передавать.
Никуда. Числа на экране более чем достаточно. Проблема была в том, что я не мог найти способа, чтобы эта информация могла меняться автоматически, т.е. без запроса приемника, и к тому же чаще, чем раз в секунду. Причем ненамного чаще.
Какая разница в браузере вы видите число или в программе терминал?
Насколько я понимаю, браузер позволяет оформить представление это числа. И хотя в данном случае это не имеет значения, ИМХО если есть возможность сделать лучше, грех не воспользоваться этой возможностью.
 

pvvx

Активный участник сообщества
Простейшая :) (>200 килобайт в сек) передача данных через Websocket ("чаще, чем раз в секунду." :))

Или простейшее (>100 килобайт в сек) чтение adc c платки JDY-10 c BLE за 80 руб через его всторенный USB-COM:
 

pvvx

Активный участник сообщества
Нельзя на любом ESP в Arduino делать AJAX чаще чем один раз в секунду. Иначе полностью нарушатся сетевые нормативы TCP. У ESP нет памяти для хранения структур TCP соединений перешедших в состояние TIME_WAIT (а они обязательно появятся при работе через некоторые прокси) – всё обрезано, т.к. Arduino не дружит ни с какими стандартами, а Ардуинщикам на всё наплевать, тем более на внешнее коммуникационное оборудование…
 

ART_HA

Member
Нельзя на любом ESP в Arduino делать AJAX чаще чем один раз в секунду.
Ну вот поэтому я и жду прихода заказанных ESP8266, чтобы выяснить практические негативные последствия получения информации с ESP8266 чаще, чем раз в секунду. Тем более, что это будет не единственное нарушение рекомендованных изготовителем правил применения ESP8266. :)
 

ART_HA

Member
ESP8266 пришли, и испытания показали, что вышеупомянутый проект С. Третьякова работает. Мало того, он оказался исключительно удобен, т.к. почти не потребовал модификации.
Но есть вопрос: спустя некоторое время после запуска сеанса наблюдается прекращение передачи данных с ESP8266 в браузер, и обновление страницы не всегда помогает. Это наблюдается и при "штатном" графике - раз в секунду. С чем это может быть связано?
 

pvvx

Активный участник сообщества
Но есть вопрос: спустя некоторое время после запуска сеанса наблюдается прекращение передачи данных с ESP8266 в браузер, и обновление страницы не всегда помогает. Это наблюдается и при "штатном" графике - раз в секунду. С чем это может быть связано?
Точнее технически описывайте -
какой метод получения данных? AJAX, websockets, HTTP/socket Keep-Alive, ...
WiFi к примеру использует смену ключа шифрования (время смены устанавливается в роутере) и на ESP8266 это иногда не очень хорошо отражается...
И ещё куча вариантов возможных причин...
 

pvvx

Активный участник сообщества
Можно погадать, но обычно детские примеры на AJAX построены на таймере в js. Они не смотрят пришел ли ответ и посылают новый запрос.... :) Да и таймер в js может менять ход времени если страница не активна.
 
Сверху Снизу