Go Down

Topic: ethernet y metodo get (mas dudas) (Read 6839 times) previous topic - next topic

PascuaL


He avanzado y creo que no poco, os pego el código:
Este es el formulario en html que esta en el servidor, las XXX corresponden a la ip publica seguida del puerto que previamente hemos redireccionado en nuestro router hacia la ip interna asignada a arduino.

<html>
<body>

   <form method=get name=LED action="XXXXXXXX">
      <input type=checkbox name=L value=1>LED<br>
      <input type=submit value=submit>
   </form>
</body>
</html>


código de arduino, hay mas pero solo os pongo la comprobación con la cual enciende el led:

if(readString == ("GET /?L=1 HTTP/1.1") )
         {
           digitalWrite(ledPin, HIGH); 
         }

¿Podrías compartir lo anterior entero?(para que funcione )
Gracias.

Jossema106

Ok en canto tenga tiempo te lo oongo
Proyecto:
http://duinoblog.blogspot.com.es/


Jossema106



He avanzado y creo que no poco, os pego el código:
Este es el formulario en html que esta en el servidor, las XXX corresponden a la ip publica seguida del puerto que previamente hemos redireccionado en nuestro router hacia la ip interna asignada a arduino.

<html>
<body>

   <form method=get name=LED action="XXXXXXXX">
      <input type=checkbox name=L value=1>LED<br>
      <input type=submit value=submit>
   </form>
</body>
</html>


código de arduino, hay mas pero solo os pongo la comprobación con la cual enciende el led:

if(readString == ("GET /?L=1 HTTP/1.1") )
         {
           digitalWrite(ledPin, HIGH); 
         }

¿Podrías compartir lo anterior entero?(para que funcione )
Gracias.







          #include <EthernetUdp.h>
         
          #include <Ethernet.h>
          #include <SPI.h>

          //internet
         
          byte mac[] = {yyyy, yyyy, yyyy, yyyy, yyyy, yyyy }; //physical mac address
          byte ip[] = {192, 168, 1, 33 };            // ip in lan
          byte gateway[] = {192, 168, 1, 254 };            // internet access via router
          byte subnet[] = {255, 255, 255, 0 };                   //subnet mask
          EthernetServer server(5675);                                      //server port
          byte sampledata=50;            //some sample data - outputs 2 (ascii = 50 DEC)     ç
 
          //pines       
          int ledPin = 7;  // LED pin
          int relayPin = 2;                 // PIN al que va conectado el relé
          int pinTemperatura = 0; // Damos un nombre al pin de la temp
         
         //variables
          String readString = String(30); //string for fetching data from address
          int tempValor ; // La variable donde guardaremos la temperatura
          char url[100];     
          char meta[200] ;

         
          void setup(){
           //start Ethernet
           Ethernet.begin(mac, ip, gateway, subnet);
           //Set pin 4 to output
           pinMode(ledPin, OUTPUT); 
           //enable serial datada print 
           pinMode(relayPin, OUTPUT);
           
           Serial.begin(9600);
           
           
          }
         
          void loop(){
           
            digitalWrite(relayPin, HIGH);   // ENCENDIDO
   delay(1000);                   
   digitalWrite(relayPin, LOW);    // APAGADO
   delay(1000);
           
           
           
          tempValor = ( 5.0 * analogRead(pinTemperatura) * 100.0) / 1024.0;
         
           // Create a client connection
           EthernetClient client = server.available();
           if (client) {
             while (client.connected()) {
               if (client.available()) {
                 char c = client.read();
                 //read char by char HTTP request
                 if (readString.length() < 30)
                 {
                   //store characters to string
                   readString += c;
                 } 
                 //output chars to serial port
               
                 //if HTTP request has ended
                 if (c == '\n') {
                   //lets check if LED should be lighted
                   readString.trim();
                   if(readString == ("GET /?L=1 HTTP/1.1") )
                   {
                     //led has to be turned ON
                     digitalWrite(ledPin, HIGH);    // set the LED on
                     
                      //redireccionar a la web
                     client.println("HTTP/1.1 200 OK");
                     client.println("<body><html>");
                     client.println("Content-Type: text/html");
                     client.println();
                     client.println("<meta http-equiv='Refresh' content='0;url=xxx'>");     
                     client.println("</body></html>");

                   }
                   else{
                     //led has to be turned OFF
                     digitalWrite(ledPin, LOW);    // set the LED OFF
                     
                      //redireccionar a la web
                     client.println("HTTP/1.1 200 OK");
                     client.println("<body><html>");
                     client.println("Content-Type: text/html");
                     client.println();
                     client.println("<meta http-equiv='Refresh' content='0;url=XXXX>");     
                     client.println("</body></html>");     
                   }
                   
                  if(readString == ("GET /?T=1 HTTP/1.1") )
                   {
                     
                     
                    //CONSTRUIMOS LA URL PARA LA REDIRECCION
                    sprintf(url, "XXXX?temp=%d", tempValor);
                    sprintf(meta, "<meta http-equiv='Refresh' content='0;url=%s'>", url);

                   
                     client.println("HTTP/1.1 200 OK");
                     client.println("<body><html>");
                     client.println("Content-Type: text/html");
                     client.println();
                     client.println(meta);     
                     client.println("</body></html>");
                   }
                 
                   
                   //clearing string for next read
                   readString="";
                   //stopping client
                   client.stop();
                 }
               }
             }
           }
          }


las xxx corresponde a la url a la que lo envias y las yyy a la mac de tu tarjeta
         
         
Proyecto:
http://duinoblog.blogspot.com.es/


Anakinspain

Muy completo tu codigo, pero estoy aprendiendo y me gustaria poder saber exactamente las ordenes para crear el codigo de manera que:

Pueda asignar un valor en la web dentro de cuandro por ejemplo, y ese sea el valor que tiene que tomar el codigo.

Por ejemplo, quiero que un rele funcione a una temperatura determinada, pero quisiera poder cambiar esos valores mediante una pagina web y que al dar a aceptar, modifique el valor preasignado en el codigo y lo guarde en la eprom...

:smiley-roll:

Jossema106

Yo estoy más pegado que vosotros, estoy aprendiendo.

Pero me acabas de solucionar el tema de cambiar los parametros desde la web, ahora falta saber si mejor desde la eeprom o desde la tarjeta de memoria.

Si te he entendido bien, lo que quieres se puede hacer mandando el parametro por formulario en html y recibirlo tal y como esta en el codigo,
if(readString == ("GET /?L=1 HTTP/1.1") )

Proyecto:
http://duinoblog.blogspot.com.es/

karagos

hola.
os dejo la web y el pde para que le echeis un vistazo.
en el loop tengo comentado un menu por que ya no me es necesario pues configuro todo desde la web.

el index.html llama cada 60seg al arduino este recoje toda la info de los sensores y los envia creando una mini web con un formulario precargado con toda la info que se auto envia al index para verlo nosotros.

y nosotros desde la web podemos configurar temperaturas. hora, reles.... todo es enviado por la url.

es mucho codigo el pde pero espero que podais cojer algunas ideas. ;)
si quereis algo mejor un correo a zoyverde@hotmail.com , que es mas facil que os conteste.

un saludo

M46EM

Buenas tardes compañeros

estoy intentando comunicarme con mi web externa a mi arduino y he estado leyendo el post, pero hay cosas que no entiendo..

yo he conseguido comunicar de mi arduino a mi pagina web enviando datos del arduino, a la carpeta dadessql.php que tengo en el servidor.

lo he echo de la siguiente manera:

primeramente definiendo la ip del arduino y la ip de mi servidor web


byte ip[] = { 192,168,11,101 };
byte server[] = { 10,138,42,151 };


y luego utilizando el comando GET que lo direcciono a la carpeta dadessql.php


if (priona.connect (server, 80) >0 ){

    priona.print("GET /dadessql.php?id=M46EM&t=");
    priona.print(t);
    priona.println(" HTTP/1.0");
    priona.println("User-Agent: Arduino 1.0");
    priona.println();
    Serial.println("Conexio realitzada amb exit");
  }



y las dudas las tengo cuando yo, por ejemplo quiero activar un led desde mi pagina web.


yo representa que des de mi web modifico el valor de una variable y luego esta variable la guardo en un fichero como dadessql.php y luego el arduino cada momento va mirando este archivo y si canvia algun valor hace algo al respeto… esto funciona asi ?????


f(readString == ("GET /?L=1 HTTP/1.1") )
         {
           digitalWrite(ledPin, HIGH); 
         }




gracias !!!!


ALbert !

Go Up