esp8266 и GET

iopq
Offline
Зарегистрирован: 05.07.2016

не получается отправить 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();
}

не пойму что ему надо? с сетью соединяется, с сайтом соединяется, запросы не доходят

b707
Offline
Зарегистрирован: 26.05.2017

проверьте синтаксис GET запроса, по моему "Connection: close" там лишнее.

И, главное - не надо долбить сервер в цикле каждые несколько миллисекунд, от этого любой нормальный сервер решит что это атака и перестанет отвечать. Вам, что,  нужны изменения давления 300 раз в секунду? - бред

Поставьте отправке данных на сервер через разумный интервал - я думаю от 30 мин до 2-3 часов будет в самый раз.

Или - это вам наверно будет проще - на время тестирования перенесите весь тот код. что у вас в loop() - в конец функции setup(), чтобы он исполнялся только один раз.

iopq
Offline
Зарегистрирован: 05.07.2016

да я уже по всякому пробовал - запрос не доходит почему то

step962
Offline
Зарегистрирован: 23.05.2011

А из командной строки браузера этот запрос до сервера доходит?

iopq
Offline
Зарегистрирован: 05.07.2016

конечно. 

iopq
Offline
Зарегистрирован: 05.07.2016

на сервере простой 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); 
?>

но проблема точно не в нем. что то с программой модуля-клиента

iopq
Offline
Зарегистрирован: 05.07.2016

разобрался. папку запаролил, в браузере авторизовался а модуль же не авторизован. как его научить проходить авторизацию (.htaccess)?

iopq
Offline
Зарегистрирован: 05.07.2016

датчик показывает температуру где то на марсе а не на балконе спб. больше 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, закрыт экраном, лежит в тени

b707
Offline
Зарегистрирован: 26.05.2017

iopq пишет:

что ему нужно? встроен в модуль esp8266, закрыт экраном, лежит в тени

Может сама плата при работе греется?

iopq
Offline
Зарегистрирован: 05.07.2016

я это учел. микросхема esp8266 действительно греется при работе, но - датчик я расположил как можно дальше от нее и у меня микросхема спит 15 мин (т.е остыть до t окр.среды явно успевает), а после пробуждения первым делом получает значения с датчика и только потом подключается к сети и отправляет

Sanyaba
Sanyaba аватар
Offline
Зарегистрирован: 27.07.2015

как то так, но погуглите я могу быть не прав

$_SERVER["PHP_AUTH_USER"] – логин;
$_SERVER["PHP_AUTH_PW"] – пароль;