Bien hola a todos, en las siguientes lineas del dejare un código de como hacer un servido HTML, para controlar leds desde internet.
con este codigo, te permite tener una clave de acceso para poder controla los leds.
#include <Ethernet.h>
#include <SPI.h>
/*
Simple Ethernet Test
Arduino server outputs simple text to browser
The circuit:
* Arduino Duemilanove
* Arduino Ethernet shield
* Basic FTDI breakout 5V
*LED connected to GND and digital pin 4 via resistor
By Minde
http://www.sciencprog.com/
*/
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {xxx,xxx,xxx,xxx}; // IP address of WiShield
byte gateway[] = {xxx,xxx,xxx,xxx}; // router or gateway IP address
byte subnet[] = {255,255,255,0};
Server server(80); //server port
int ledPin = 4; // LED pin
word Adc = 0;
String readString = String(30); //string for fetching data from address
boolean LEDON = false; //LED status flag
void Pasword();
void Portada();
void setup(){
//start Ethernet
Ethernet.begin(mac, ip, gateway, subnet);
//Set pin 4 to output
pinMode(ledPin, OUTPUT);
//enable serial datada print
Serial.begin(9600);
}
void loop(){
// Create a client connection
Client client = server.available();
if (client) {
while (client.connected()){
char c = client.read();
if (readString.length() < 30){
readString += c;
}
Serial.print(c);
if (c == '\n') {
if(readString.trim() == ("GET /?C=1678 HTTP/1.1")){
//client.println("<h1>Clave Ok</h1>");
Portada();
}else{
//client.println("<h1>Clave Erronea</h1>");
}
//client.println("HTTP/1.1 200 OK");
//client.println("Content-Type: text/html");
client.println();
client.print("<body style=background-color:#ffffff>");
client.println("<h1>Control de Acceso</h1>");
client.println("<form method=get name=LED>");
client.println("<input type=""password"" name=C>");
client.println("<input type=submit value=submit></form>");
//clearing string for next read
readString="";
//stopping client
client.stop();
}
}
}
}
void Portada(){
while(1){
// Create a client connection
Client client = server.available();
if (client) {
while (client.connected()) {
// Leemos el ADC
Lectura_Analoga();
if (client.available()) {
char c = client.read();
//read char by char HTTP request
if (readString.length() < 30){
//store characters to string
readString += c;
}
//if HTTP request has ended
if (c == '\n') {
//controla el on of de los leds
if(readString.trim() == ("GET /?L=1 HTTP/1.1")){
//led on
LEDON = true;
}else if(readString.trim() == ("GET /?L=2 HTTP/1.1")){
//led OFF
LEDON = false;
}
//color de fondo, blanco
client.print("<body style=background-color:#ffffff>");
//visualizamos datos en nuestra pagian
client.println("<font color='blue' size='5'>Sample data: ");
client.print(Adc);//lets output some data
//controlling led via checkbox
client.println("<h1>Control de Dispositivos</h1>");
//le damos el nombre al nuestra caja de texto, la llamamos LED, este es el texto que sale al frente de ella
client.println("<form method=get name=LED>");
//le decimos que nuesta caja de texto es una entrada y le asignamos la letra L, para que guade los datos
client.println("<input type=campo name=L>");
//client.println("LED");
//client.println("<br>");
client.println("<input type=submit value=Ok></form>");
//printing LED status
client.println("<hr />");
client.print("<font size='5'>LED status: ");
if (LEDON){
client.println("<font color='green' size='5'>ON");
digitalWrite(ledPin, HIGH); // set the LED on
}else{
digitalWrite(ledPin, LOW); // set the LED OFF
client.println("<font color='grey' size='5'>OFF");
client.println("</body></html>");
}
client.println("<hr />");
//clearing string for next read
readString="";
//stopping client
client.stop();
}
}
}
}
}
}
void Lectura_Analoga(){
Adc = analogRead(0);
}
Excelente aporte, pero tengo una pregunta, es posible hacer mas segura la entrada del usuario a la pagina, no se con un metodo post o algo asi. Pero teniendo siempre la servidor web en el arduino.
ResponderEliminarHola, al compilar el programa me presenta el siguiente error:
ResponderEliminarLed_Ethernet.cpp: In function 'void loop()':
Led_Ethernet:39: error: void value not ignored as it ought to be
en la linea de código:
if (readString.trim()==("GET /?Led=On HTTP/1.1"));{digitalWrite(PinLed,HIGH); }
En realidad estoy usando otro código distinto al que publicaste, pero solo acá encuentro esta misma instrucción, por lo tanto creo que me puedes ayudar.
Gracias de antemano, espero tu respuesta ;)
Hola a todos, perdón por demorarme en contestar. Primero que todo el error que me comentan, se genera si utilizan el compilador arduino-1.0.3, si utilizan el arduino23 no genera ningún error.
Eliminarun saludo
jarain78
Ola usei o codigo mais ele esta dando erro nao codigo
ResponderEliminarif(readString.trim() == 'GET/?pwd="password" HTTP/1.1'){
o que pode ser??
Hola a todos, perdón por demorarme en contestar. Primero que todo el error que me comentan, se genera si utilizan el compilador arduino-1.0.3, si utilizan el arduino23 no genera ningún error.
Eliminarun saludo
jarain78
Este comentario ha sido eliminado por el autor.
ResponderEliminarCual es la contraseña??????
ResponderEliminarla contraseña si no me equivoco es: 1678
Eliminarsegun el codigo que postea el compañero
Es correcto, esa es la clave, pero la pueden modificar.
Eliminarsaludos