Está en la página 1de 8

Construcción

dispositivo IoT
ALGORITMO
#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0,179);
EthernetServer server(80); se conoce como Puerto 80 al que puerto
por default, por el medio del cual un
IPAddress subnet(255, 255, 255, 0); servidor HTTP “escucha” la petición hecha
int led = 8; por un cliente.

String estado = "OFF";


ALGORITMO
void setup()
{
Serial.begin(9600);
Ethernet.begin(mac, ip);
server.begin();
Serial.print("servidor iniciado: ");
Serial.println(Ethernet.localIP());
pinMode(led,OUTPUT);
digitalWrite(led,LOW);
}
void loop()
{
EthernetClient client = server.available(); //Creamos un cliente Web
if (client) { //Cuando detecte un cliente a través de una petición HTTP
Serial.println("new client"); //Avisamos por comunicacion serie
boolean currentLineIsBlank = true; //Una petición HTTP acaba con una línea en blanco, ponemos la
variable en TRUE
String cadena=""; //Definimos una variable de tipo string vacía para almacenar el mensaje
while (client.connected()) { //Si el cliente esta conectado...
if (client.available()) { //Y hay datos para recibir...
char c = client.read(); //Leemos la petición HTTP carácter por carácter
Serial.write(c); //Visualizamos la petición HTTP por el Monitor Serie
cadena.concat(c); //Unimos todos los caracteres de la petición HTTP "c", en la variable de tipo
String "Cadena"
//Ya que hemos convertido la petición HTTP a una cadena de caracteres, ahora podremos buscar partes del texto.

int posicion=cadena.indexOf("LED="); //Nos fijamos en el texto "LED="


if(cadena.substring(posicion)=="LED=ON") //Si en esa posición tenemos "LED=ON"
{
digitalWrite(led,HIGH); //Encendemos el LED
estado="ON"; //Asignamos el valor "ON" a la variable "estado"
}
if(cadena.substring(posicion)=="LED=OFF") //Si en esa posición tenemos "LED=OFF"
{
digitalWrite(led,LOW); //Apagamos el LED
estado="OFF"; //Asignamos el valor "OFF" a la variable "estado"
}
HTTP
El cliente una vez conectado al puerto 80 debe enviar un GET a través de una URL, indicando el
protocolo, servidor y recurso que quiere obtener, terminando con una línea nueva. El servidor
procesa dicha información y devuelve un mensaje de respuesta, normalmente con el HTML de la
página que se va a visualizar,…
//Cuando reciba una línea en blanco, quiere decir que la
petición HTTP ha acabado y el servidor Web está listo
para enviar una respuesta

if (c == '\n' && currentLineIsBlank) {

// Enviamos al cliente una respuesta HTTP


(cabecera)
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connection: close");
HTML
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
//Damos tiempo al navegador para recibir los datos
delay(1);
client.stop();// Cierra la conexion
}
}

También podría gustarte