lunes, 29 de octubre de 2012

Avances

Ya tenemos la conexión en ambos sentidos y recibimos el dato que le pedimos tanto en un lado como en otro.

Codigo de la pagina web


<html>

 <body>

<?php
if(isset($_GET['modTiempo'])){
?>
<form method=get name=LED action="URL">

  <input type=text name=cambiartiempo>
  <input type=submit value=submit>
</form>
<?php
}

 echo "temp: ".$_REQUEST['temp'];
?>

     <form method=get name=LED action="URL">
<input type=radio name=opcion value=LED>LED ON<br>
<input type=radio name=opcion value=TEMP>TEMPERATURA<br>
<input type=radio name=opcion value=TIEMPO>MOD. TIEMPO 
<input type=submit value=submit>
      </form>
 </body>

</html>


Extracto de codigo de arduino, gestiona las peticiones:

if(readString == ("GET /?opcion=TIEMPO HTTP/1.1") ) //MOD TIEMPO

                  
    sprintf(url, "URL");
   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>");
 }
 else if(readString.substring(6,19) == ("cambiartiempo") )
 {
  int Triego = readString.substring(20,22).toInt();
  modificarTiempo(Triego);
                    
  //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= URL'>");      
  client.println("</body></html>");
                    
 }
  else if(readString == ("GET /?opcion=LED 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= URL'>");      
  client.println("</body></html>");
                    
 }
  else if(readString == ("GET /?opcion=TEMP HTTP/1.1") ) //PEDIR TEMPERATURA
 { 
 //CONSTRUIMOS LA URL PARA LA REDIRECCION
 sprintf(url, "URL?temp=%d", tempValor);
 sprintf(meta, "<meta http-equiv='Refresh' content='0;url=%s'>", url);
 //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= URL'>");      
  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= URL'>");      
  client.println("</body></html>");
}
                    

viernes, 12 de octubre de 2012

Comunicación Arduino -> Web

Una vez que estamos dentro de arduino y una vez obtenidos los datos necesarios tenemos que enviarlos a la web para ser tratados, para esto tenemos varias opciones:

  • Un formulario en el que la propiedad action mande a la web.
  • Otra opción es utilizar la etiqueta <meta http-equiv="Refresh" content="5;url=xxxxxxxxxx">
Cualquiera de estas dos opciones hay que ponerlas dentro de client.println(""); para que se ejecuten como etiquetas html.

Comunicación Web -> Arduino

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="http://XX.X.XX.XXX:YYYY">
<input type=checkbox name=L value=1>LED<br>
<input type=submit value=submit>
</form>
</body>
</html>

Y este el código de arduino:


if(readString == ("GET /?L=1 HTTP/1.1") )
{
//led has to be turned ON
digitalWrite(ledPin, HIGH); // set the LED on

LEDON = true;
}

Simplemente comprueba lo que tiene la variable L.