Paso 5: Enviar los datos
Primero necesita comprender los conceptos básicos del HTTP. El protocolo de transferencia de hipertexto (HTTP) está diseñado para permitir a las comunicaciones entre clientes y servidores.
HTTP es un protocolo de solicitud-respuesta entre un cliente y un servidor. Un navegador web puede ser el cliente, y una aplicación en un equipo que aloja un sitio web puede ser el servidor. Ejemplo: Un cliente (navegador) envía una solicitud HTTP al servidor; entonces el servidor devuelve una respuesta al cliente. La respuesta contiene información de estado acerca de la petición y también puede contener el contenido solicitado. En nuestro ejemplo el esp8266 es el cliente y el servidor que aloja nuestro sitio web es el servidor.
Para realizar una solicitud Post de HTTP tiene que ser en cierta forma:
POST /esppost.php HTTP/1.0
Host: serverconnect.site88.net
Aceptar: * / *
Content-Length: "name1 = value1 & nombre2 = valor2". Longitud
Content-Type: aplicación/x--www-form-urlencoded
NAME1 = value1 & nombre2 = valor2
Usted puede encontrar explicación más e informaciones en el Arduino esbozar a continuación. Después de cargar el Sketch, esperar unos segundos luego actualizar la Página Web.
#include "SoftwareSerial.h"
Cadena ssid = "yourSSID";
Contraseña de la cadena = "SuContraseña";
SoftwareSerial esp (6, 7); / / RX, TX
Datos de la cadena;
Server String = "yourServer"; // www.example.com
Cadena uri = "yourURI"; / nuestro ejemplo es /esppost.php
int DHpin = 8; //sensor pin
bytes dat [5];
String temp, zumbido;
void setup() {}
pinMode (DHpin, salida);
ESP.Begin(9600);
Serial.Begin(9600);
RESET();
connectWifi();
}
restablecer el módulo de esp8266
{} void reset()
ESP.println("at+RST");
Delay(1000);
if(ESP.Find("OK")) Serial.println ("módulo de Reset");
}
conectar a tu red wifi
void connectWifi() {}
String cmd = "AT + CWJAP = \" "+ ssid"\\\"\\\" "+ clave +"\"";
ESP.println(CMD);
Delay(4000);
{if(ESP.Find("OK"))}
Serial.println("Connected!");
}
Else {}
connectWifi();
Serial.println ("no se puede conectar a Wi-Fi"); }
}
byte read_data () {}
datos del octeto;
para (int i = 0; i < 8; i ++) {}
Si (digitalRead (DHpin) == LOW) {}
mientras que (digitalRead (DHpin) == LOW); / / espere 50us
delayMicroseconds (30); / / determinar la duración del nivel alto para determinar los datos es ' 0 'o 1'
Si (digitalRead (DHpin) == HIGH)
datos | = (1 << (7-i)); / alta frente y baja en el post
mientras que (digitalRead (DHpin) == HIGH);
datos '1', espere para el siguiente receptor
}
} datos; }
void start_test () {}
digitalWrite (DHpin, bajo); / / bus hacia abajo, empezar a enviar señal
retardo (30); / retardo mayor de 18ms, por lo que puede detectarse la señal de arranque DHT11
digitalWrite (DHpin, alto);
delayMicroseconds (40); / / Esperar respuesta DHT11
pinMode (DHpin, entrada);
mientras que (digitalRead (DHpin) == HIGH);
delayMicroseconds (80);
DHT11 respuesta, tiró el autobús 80us
Si (digitalRead (DHpin) == LOW);
delayMicroseconds (80);
80us DHT11 después del autobús tiró a empezar a enviar datos
para (int i = 0; i < 4; i ++)
reciben la temperatura y los datos de humedad, el bit de paridad no se consideran
DAT [i] = read_data ();
pinMode (DHpin, salida);
digitalWrite (DHpin, alto);
enviar los datos una vez despues de soltar el autobús, esperar a que el host abrir la siguiente señal de inicio
}
void loop () {}
start_test ();
convertir los datos de pedacito en forma de cadena
Hum = String(dat[0]);
Temp = String(dat[2]);
datos = "temperatura =" + temp + "& humedad =" + zumbido; / datos enviados deben estar bajo esta forma //name1=value1 & nombre2 = valor2.
HttpPost();
Delay(1000);
}
httppost nula () {}
ESP.println ("AT + CIPSTART = \"TCP\", \" "+ servidor +"\",80"); //start una conexión TCP.
Si (esp.find("OK")) {}
Serial.println ("conexión TCP lista");
} delay(1000);
PostRequest cadena =
"POST" + uri + "HTTP/1.0\r\n" +
"Host:" + servidor + "\r\n" +
"Aceptar: *" + "/" + "* \r\n" +
"Content-Length:" + data.length() + "\r\n" +
"Content-Type: aplicación/x--www-form-urlencoded \r\n" +
"\r\n" + datos;
SendCmd de cadena = "AT + CIPSEND ="; //determine el número de caracteres a.
ESP.Print(sendCmd);
ESP.println(postRequest.length());
Delay(500);
Si (esp.find(">")) {Serial.println("Sending.."); esp.print(postRequest);
Si (esp.find ("enviar OK")) {Serial.println ("paquete enviado");
mientras (esp.available()) {}
String tmpResp = esp.readString();
Serial.println(tmpResp);
}
cerrar la conexión
ESP.println("at+CIPCLOSE");
}
}}
Si todo ha ido bien debería ver un resultado similar a la imagen de arriba si no desconecte luego vuelva a conectar el Arduino y espere unos segundos.