esp8266, передача данных
- Войдите на сайт для отправки комментариев
Сб, 09/05/2020 - 04:25
Привет всем.
Помогите разобраться, куда дальше копать не знаю.
ESP8266, банальная передача температуры get запросом на сервер.
Подключается к точке доступа, получает ip.
Далее в CoolTerm:
AT+CWMODE=1
OK
AT+CIPMODE=0
OK
AT+CIPMUX=0
OK
AT+CIPSTART="TCP","мойсервер.org",80
OK
AT+CIPSEND=71
OK
>
Recv 71 bytes
SEND OK
CLOSED
И все. ни ответа, ни записи в бд
запрос:
GET http://мойсервер.org/weather/?temp=15 HTTP/1.1
Host: мойсервер.org
Если захожу по строке из запроса через браузер, все ок, температура в бд пишется. Запрос взял из Fiddler-a. Но пробовал и другие варианты, например
GET /weather/?temp=15 HTTP/1.1
Host: мойсервер.org
Тупик...
А доступ к логам апача (или что там?) имеется?
А доступ к логам апача (или что там?) имеется?
[09/May/2020:16:27:07 +0300] "GET http://мойсервер.org/weather/?temp=15 HTTP/1.1" 408 0 "-" "-" "-"
[09/May/2020:16:29:40 +0300] "GET /weather/?temp=27 HTTP/1.1" 200 4398 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 YaBrowser/20.3.2.242 Yowser/2.5 Safari/537.36" "-"
nginx
первая запись - из esp, вторая - из браузера
Ошибка 408 - неполный запрос..что ж еще передать...
Ошибка 408 Request Timeout - превышение времени ожидания ответа от сервера на запрос (тот самый get-запрос).
Почему запрос из браузера по другому выглядит? Я имею ввиду адрес относительный, а не абсолютный. Это одна и таже машина?
Ошибка 408 Request Timeout - превышение времени ожидания ответа от сервера на запрос (тот самый get-запрос).
Почему запрос из браузера по другому выглядит? Я имею ввиду адрес относительный, а не абсолютный. Это одна и таже машина?
Залил уже в esp свой скетч из Arduinо IDE, и все равно 408-ошибка.
Пробовал искусственно 403ю к примеру или 404ю вызвать? Ну там запрос, к примеру, "GET http://ip/combo" ?
Какой результат?
Пробовал искусственно 403ю к примеру или 404ю вызвать? Ну там запрос, к примеру, "GET http://ip/combo" ?
Какой результат?
Да там все просто оказалось. Нужно было в конце запроса две пары \r\n. Сервер ждал окончания запроса и закрывал соединение по тайм-ауту.
Спасибо что поделился решением! Я думал о подобном, поэтому и предложил «левый запрос», молодец, что сам разобрался.
Эту проблему-то решил. Но возникла другая. У меня связка UNO + esp по Serial, ,,и если раньше передать значение переменной температуры было просто с помощью АТ команд сразу в get запросе, то сейчас, когда перепрошил модуль для соединения без АТ-команд, нужно как-то это значение туда передать
Правильно ли я понимаю, что для этого на Ардуино нужно создать ещё один софт serial, например espport (10, 11), соединить ее с модулем (rx-tx, tx-rx) и при необходимости писать в него температуру, а в родном порту модуля Serial ловить ее?
зачем второй порт? Что мешает передавать и данные и команды по одному порту?