• Система автоматизации с открытым исходным кодом на базе 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".
Всем добра)
 
Сверху Снизу