esp8266 и GET
- Войдите на сайт для отправки комментариев
Пт, 09/06/2017 - 03:58
не получается отправить GET запрос серверу
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
WiFiClient client;
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bme;
void setup()
{
Serial.begin(115200);
if (!bme.begin())
{
while (1);
}
WiFi.begin("name", "pass");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
}
void loop() {
if (!client.connect("site.ru",80))
{
client.stop();
return;
}
String url = "/111/bmp280.php?Temp="+(String)bme.readTemperature()+"&Press="+(String)bme.readPressure();
client.println("GET "+url+" HTTP/1.1\r\nHost: "+"site.ru"+"\r\nConnection: close\r\n\r\n");
client.stop();
}
не пойму что ему надо? с сетью соединяется, с сайтом соединяется, запросы не доходят
проверьте синтаксис GET запроса, по моему "Connection: close" там лишнее.
И, главное - не надо долбить сервер в цикле каждые несколько миллисекунд, от этого любой нормальный сервер решит что это атака и перестанет отвечать. Вам, что, нужны изменения давления 300 раз в секунду? - бред
Поставьте отправке данных на сервер через разумный интервал - я думаю от 30 мин до 2-3 часов будет в самый раз.
Или - это вам наверно будет проще - на время тестирования перенесите весь тот код. что у вас в loop() - в конец функции setup(), чтобы он исполнялся только один раз.
да я уже по всякому пробовал - запрос не доходит почему то
А из командной строки браузера этот запрос до сервера доходит?
конечно.
на сервере простой php скрипт, который заносит полученные методом GET значения в sql базу
<?PHP include ('config.php'); $db = @mysql_connect($db_loc,$db_user,$db_pass); @mysql_select_db($db_name,$db); mysql_query("SET TIME_ZONE='+3:00'"); $a=$_GET["Temp"]; $b=$_GET["Press"]; mysql_query("INSERT INTO bmp280 (Temp,Press) VALUES ('$a','$b')"); mysql_close($db); ?>но проблема точно не в нем. что то с программой модуля-клиента
разобрался. папку запаролил, в браузере авторизовался а модуль же не авторизован. как его научить проходить авторизацию (.htaccess)?
датчик показывает температуру где то на марсе а не на балконе спб. больше 40 градусов!!
extern "C" { #include "user_interface.h" uint16 readvdd33(void); } #include <ESP8266WiFi.h> WiFiClient client; #include <Adafruit_BMP280.h> Adafruit_BMP280 bme; char server[] = "site.ru"; String url =""; void setup() { if (!bme.begin()) { while (1); } url = "/bmp280.php?Temp="+(String)bme.readTemperature()+"&Press="+(String)bme.readPressure()+"&Volt="+readvdd33(); WiFi.begin("name", "pass"); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void loop() { httpRequest(); ESP.deepSleep(1000000000); } void httpRequest() { client.stop(); if (client.connect(server, 80)) { client.println("GET "+url+" HTTP/1.1"); client.println("Host: www.site.ru"); client.println("User-Agent: ArduinoWiFi/1.1"); client.println("Connection: close"); client.println(); } }что ему нужно? встроен в модуль esp8266, закрыт экраном, лежит в тени
что ему нужно? встроен в модуль esp8266, закрыт экраном, лежит в тени
Может сама плата при работе греется?
я это учел. микросхема esp8266 действительно греется при работе, но - датчик я расположил как можно дальше от нее и у меня микросхема спит 15 мин (т.е остыть до t окр.среды явно успевает), а после пробуждения первым делом получает значения с датчика и только потом подключается к сети и отправляет
как то так, но погуглите я могу быть не прав