• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

esp8266 передача данных по websocket через at-команды

verbmaks

New member
Исходные данные: на основном контроллере (STM32) работает основная логика. Есть необходимость передачи данных с контроллера на сервер через вебсокет. Для этой цели взяли обычную ESP-01. Подключиться к вебсокету я смог двумя запросами:

AT+CIPSTART="TCP","192.168.100.5",5000

AT+CIPSEND=119
GET /socket.io/ HTTP/1.1
Origin: 192.168.100.20
Connection: Upgrade
Host: 192.168.100.5:5000
Upgrade: websocket


После этого запроса сервер отвечает и передает sid

+IPD,427:HTTP/1.1 200 OK
Set-Cookie: io=05ff7d0da3444cc3a099929011cfc599; path=/; SameSite=Lax
Content-Type: application/octet-stream
Access-Control-Allow-Origin: 192.168.100.20
Access-Control-Allow-Credentials: true
Content-Length: 154
Date: Mon, 23 Nov 2020 12:45:54 GMT


Затем выполняется тот же запрос, но уже с подставленными параметрами

AT+CIPSEND=176
GET /socket.io/?transport=websocket&sid=05ff7d0da3444cc3a099929011cfc599 HTTP/1.1
Origin: 192.168.100.20
Connection: Upgrade
Host: 192.168.100.5:5000
Upgrade: websocket


После чего сервер отвечает:

+IPD,234:HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: 192.168.100.20
WebSocket-Location: ws://192.168.100.5:5000/socket.io/?transport=websocket&sid=05ff7d0da3444cc3a099929011cfc599


С вебом я знаком слабо, но, насколько я понял из описания вебсокета, после "рукопожатия" вебсокет готов принимать данные, но при попытке отправить через AT+CIPSEND "Hello world", сервер выдает ошибку, так как пытается прочитать Hello как запрос.

Отсюда вопрос: возможно у кого-то был опыт реализации подобной схемы, каким образом необходимо передавать данные на вебсокет с помощью AT-команд?
 
Сверху Снизу