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

Нужна помощь Организация обмена данными посредством WebSockets

vavanvanvanovich

New member
Я тоже долго возился с этим но в итоге перешел на MQTT, и никаких проблем. ТЗ какое если не секрет?
как то всё не просто даётся, попробую изучит MQTT просто насколько это правильно переходить на другую тему не поняв предыдущей)) ф что за Т3?
 

Atom

Member
попробую изучит MQTT
Там и изучать то нечего. и никакой магии. Отладка сообщений идет в консоли любого компа.
но не стоит зацикливаться только на MQTT. Большинство устройств взаимодействует через параметры http/https запросов. Если и его впихнешь туда - хуже не будет, но описаний этому полный Интернет.
 

Dukalis2004

New member
Вижу здесь давно писали, но может кто отзовется. Подключил я ВебСокет и вроде всё работает, но одна проблема, соединение перегружается и данные пропадают, я пока просто с яркостью Леда пытыюсь научиться. пока сокет подключен, все работает, но как перезагрузка- лед гаснет и надо все сначала его включать. вот код если кто поможет

void sliderWebSocket( char* data, AsyncWebSocketClient *client) {
val = atoi(data);
val = map(val, MIN, MAX, 0, 255);
Serial.println(val);
Здравствуйте. Можете поделиться наработками?
 

Goldz

Member
Всем доброго дня! Нужна помощь!
Хочу передать файл с ПК на ESP сервер

Со стороны страницы выбираю файл и отправляю его на сервер ESP по websocket
//*** websocket Setup ***
var connection;
connection = new WebSocket('ws://' + window.location.hostname + ':81/');
connection.onmessage = function (e)
{
//...............
}
//*** websocket Setup End ***
Button4.onclick = function(e)
{

var input = document.createElement('input');
input.type = 'file';
var reader = new FileReader();

input.onchange = e =>
{
var fileUp = e.target.files[0];
let fileLen=fileUp.size;
reader.readAsArrayBuffer(fileUp);

reader.onload = function loaded(evt) {
var binaryString = evt.target.result;
connection.send(binaryString);
}

}
input.click();
}
На стороне ESP

void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length)
{
Serial.print("WStype = "); Serial.println(type);
Serial.print("WS payload = ");

for(int i = 0; i < length; i++) { Serial.print((char) payload); }
Serial.println();
}

На мониторе порта вижу

WStype = 1
WS payload =
[0] Disconnected!

Т.е. ни чего не передано, соединение закрыто
Перелопатил массу сайтов, не помогло

Подскажите что не так делаю
 

Roborlex

New member
Здравствуйте. Приминительно к Андройду и связи с esp посредством сокетов. У меня был абсолютно такой же результат, как и у DernKov. После чего я нашел решение: https://www.esp8266.com/viewtopic.php?f=160&t=16741. Необходимо написать инициализацию через Draft: mWebSocketClient = new WebSocketClient(uri, new Draft_17()).
Важно!!! Просто так из коробки, с последней версией Draft_17() найден не будет. Необходимо использовать версию 1.3.0: implementation "org.java-websocket:Java-WebSocket:1.3.0".
Всем добра)
 

impfromliga

New member
Скорость передачи через WebSocket нормальная? Т.е. передается больше 5-ти блоков в секунду? Или как всегда - ограничение связанное со стеком в пазу на 200 ms на одиночные пакеты TCP?
Если по 80-му порту с Google Chrome с паузами в 200 мсек - то такой WebSocket никому не нужен. :(
можете пояснить кажется я наступил на это "как всегда" пытаюсь написать WiFi-"осцилограф" (на связке ( Arduino.h ESP8266WiFi.h ESPAsyncTCP.h ESPAsyncWebServer.h )
- частота оцифровки у esp8266 приличная, но как только начинаешь слать пакеты больше чем 320Б/сек (причем я пробовал разные размеры передачи) начинает сеть отваливаться...
 

pvvx

Активный участник сообщества
можете пояснить кажется я наступил на это "как всегда" пытаюсь написать WiFi-"осцилограф" (на связке ( Arduino.h ESP8266WiFi.h ESPAsyncTCP.h ESPAsyncWebServer.h )
- частота оцифровки у esp8266 приличная, но как только начинаешь слать пакеты больше чем 320Б/сек (причем я пробовал разные размеры передачи) начинает сеть отваливаться...
Прием с АЦП необходимо писать по прерываниям – иначе когда будет работать WiFi и TCP стек ?
( Предел при использовании NMI прерывания примерно до 50 кГц из-за остатка времени на обработку WiFi...)

У АЦП в ESP8266 при работе WiFi дает очень много шумов. Т.е. никакого смысла в передачи такого шума нет.
 
Сверху Снизу