Go Down

Topic: Poca informacion acerca de la libreria Ethernet y el protocolo HTTP (Read 1 time) previous topic - next topic

lordcpu

Hola a todos, en primer lugar quiero agradecer de antemano por leer este post ya que al ver otros temas se ve que hay muy buena voluntad y por sobretodo conocimiento...

Paso a comentarles mi inquietud, como dice el titulo de mi post quisiera encontrar informacion detallada en referencia a la libreria Ethernet y el funcionamiento del protocolo HTTP, me explico, si bien en la propia pagina oficial de Arduino y en muchos lugares de Internet hay muchos codigos de ejemplo para hacer funcionar la Ethernet Shield tanto como cliente y servidor e incluso interactuar con los pines I/O o sensores, etc. No hay informacion detallada que le enseñe al usuario que es lo que realmente hace el codigo, no me refiero a las instrucciones propias de Arduino si no al codigo que Arduino le imprime al navegador web para que este lo interprete como HTML bajo el protocolo HTTP, ¿se entiende?, para ser un poco mas claro les pondre parte del codigo de ejemplo que viene con los Sketch de Arduino

Esto es un extracto del codigo "Web Server":

void loop()
{
 // listen for incoming clients
 Client client = server.available();
 if (client) {

Esto traducido al español seria: "Una respuesta HTTP termina con una linea en blanco" ¿que significa esto?
   // an http request ends with a blank line

   boolean currentLineIsBlank = true;
   while (client.connected()) {
     if (client.available()) {
       char c = client.read();

Esto otro seria: "Si se recibe una nueva linea y esa linea esta en blanco se envia la respuesta HTTP al navegador"


       // if you've gotten to the end of the line (received a newline
       // character) and the line is blank, the http request has ended,
       // so you can send a reply
       if (c == '\n' && currentLineIsBlank) {
         // send a standard http response header
         client.println("HTTP/1.1 200 OK");
         client.println("Content-Type: text/html");
         client.println();

         // output the value of each analog input pin
         for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
           client.print("analog input ");
           client.print(analogChannel);
           client.print(" is ");
           client.print(analogRead(analogChannel));
           client.println("<br />");
         }
         break;
       }
       if (c == '\n') {
         // you're starting a new line
         currentLineIsBlank = true;
       }
       else if (c != '\r') {
         // you've gotten a character on the current line
         currentLineIsBlank = false;
       }
     }
   }
   // give the web browser time to receive the data
   delay(1);
   // close the connection:
   client.stop();
 }
}

Por cierto trabajo con PHP y se programar formularios, etc, pero no hay mucha informacion con respecto a como el Arduino interactua con el protocolo HTTP que es lo que permite la comunicacion entre el navegador y el Arduino, aunque tambien puede ser que yo no he buscado bien... en fin

Me gustaria encontrar mas informacion acerca de como se trabaja con GET y POST para encender Leds o interactuar con botones en una pagina, se hacerlo en PHP para pasar datos entre paginas pero estoy recien empezando con la Ethernet Shield, me llega en 2 dias mas y estoy emocionadisimo, es la que trae el slot SD! :D

Muy agradecido de antemano y solo una aclaracion, no busco codigo ni que hagan el trabajo por mi, lo que quiero es comprender como funciona y no ver codigo escrito sin saber lo que realmente hace y de paso que este post sirva de ayuda a otros usuarios con esta misma duda

Estoy a vuestra disposicion
Luis Fuentes
Santiago de Chile
lordcpu2005@hotmail.com

Razorblade

Es que eso poco tiene que ver con Arduino en sí. La Ethernet Shield te brinda poder establecer una conexión TCP o UDP, y ya está.

Porque quien dice protocolo HTTP dice cualquier otro protocolo del IETF, o que te quisieras inventar tú mismo.

Para aprender sobre el protocolo HTTP, tienes de manera sencilla y en castellano la Wikipedia, y en inglés el documentos RFC donde se explica absolutamente todo.

lordcpu

Si tienes razon amigo, tal vez me estoy ahogando en un vaso de agua pero quisiera saber que opinan los demas, de todas formas no habia pensado eso de que el protocolo lo puedes inventar tu mismo

¿osea lo que entiendo es que la tarjeta te brinda la conectividad ethernet y tu eres el que gestiona la forma de transmitir o recibir esos datos y que hacer con ellos?

viendolo desde ese punto entonces se podrian crear cientos de aplicaciones, no solo relacionadas con ambiente web! :)

Arduino es un mundo de ideas...

SrDonGato

cierto, debes saber primero el protocolo http y como funciona.

una vez eso pues haces una web, y con el codigo fuente en texto lo adaptas a arduino para que envíe linea a linea el codigo fuente.
puedes hacerlo dinámico según variables de programa, como por ejemplo poner letras en rojo o verde dependiendo del valor de una variable.

lo primero es lo primero .. saber como funciona TCP/IP

Un saludo

jacobo

  Hola, como estan me parece muy interesante el post y hablando del tema de arduino y HTML, viendo que saben mas que yo del tema quisiera hacerles unas preguntas: yo estoy realizando un proyecto, en el cual se basa en la lectura de un sensor de temperatura, la cuestión es si es posible utilizar un Arduino UNO, y que este transfiera los datos por vía USB al PC, y de la PC enviar esa información  a una Página web que pueda verse en cualquier PC, Teléfono Celular con acceso a internet, sin la necesidad de comprar una Arduino Ethernet Shield?.

Hasta ahora eh logrado la comunicación de arduino y processing de manera tal que si envió constantemente la temperatura del Sensor a processing este me imprimirá la lectura, en grados Centígrados y Fahrenheit ( Seguí un tutorial muy bueno, un poco complicado porque está totalmente en ingles pero bueno)  ahora quisiera no solo ver esta información en la pantalla de mi PC, sino hacer que esto este por así decirlo en una página web, así podría ver los cambios de temperatura desde donde quiera, hay alguna manera de hacer esto integrando una librería en arduino o processing?

de antemano muchísimas Gracias...!




chiva

Para mandar de Processing a un servidor web:
http://processing.org/learning/library/httpclient.html
http://processing.org/reference/libraries/net/index.html

Ahora que ya tienes los datos en el servidor, mostrarlos con PHP es trivial

En vez de subirlos a un servidor propio, puedes mandarlos a Pachube que es lo ideal para mostrar datos y de conectar Processing y Pachube seguro que hay montones de guías

Go Up