elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Personaliza-Escoge el diseño del foro que más te guste.


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica (Moderador: skapunky)
| | |-+  codigo para controlar luces desde servidor web [arduino]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: codigo para controlar luces desde servidor web [arduino]  (Leído 4,219 veces)
gabrielmellace

Desconectado Desconectado

Mensajes: 10


Ver Perfil
codigo para controlar luces desde servidor web [arduino]
« en: 21 Noviembre 2012, 06:36 »

Hola muchachos !!


Estuve preguntando varias cosas por el foro sobre wireless hacking y la verdad me sentia un poco mal de no aportar nada, por lo que les aporto este codigo que arme, sirve para controlar 2 (o mas, es muy facil tocarlo) luces desde un servidor web ubicado dentro de la plaqueta arduino con el shield ethernet, ademas, en el mismo sitio figura una lectura de humedad y temperatura.

Como feature adicional, le agregue que haga un handshake con los estados de los rele para que si hay mas de un cliente conectado y toca una luz, se actualize en tu vista.

Espero que a alguien le sirva !!  saludos !


/*
 Controlador de 2 luces bajo relees de negativo
 Controla 2 luces estableciendo un servidor en la plaqueta y actualizando su estado por jquery.
 Creado 28 Octubre. 2012
 por Gabriel Mellace
 
 */


#include <SPI.h>
#include <Ethernet.h>
#include "DHT.h"

#define DHTPIN 30    
#define DHTTYPE DHT11  
DHT dht(DHTPIN, DHTTYPE);

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192 ,168 ,1 ,102 };
byte gateway[] = { 192 ,168 ,1 ,1 };
byte subnet[] = { 255 ,255 ,255 ,0 };
EthernetServer server(80);
EthernetClient client;

String readString = String(30);


void setup(){
dht.begin();
Ethernet.begin(mac, ip, gateway, subnet);
delay(1000);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
digitalWrite(7, LOW);
Serial.begin(9600);
}

String checkState(int cual) {
 if(digitalRead(cual)==HIGH) {
  return "Apagado";
 }
 else {
  return "Prendido";
 }
}

String toogleState(int cual) {
  if(digitalRead(cual)==HIGH) {
  digitalWrite(cual, LOW);
  return "Prendido";
  }
  else {
  digitalWrite(cual,HIGH);
  return "Apagado";
  }
}

float getTemperature() {
  return dht.readTemperature();
}
float getHumidity() {
  return dht.readHumidity();
}


void loop(){
  
client = server.available();

if (client) {
  while (client.connected()) {
    if (client.available()) {
      char c = client.read();
        if (readString.length() < 30)
        {
          readString = readString + c;
        }
if (c == '\n') {

  
  if(readString.indexOf("/main") >= 0) {

    
    client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
  client.println("access-control-allow-origin: *");
  client.println("Cache-Control: no-cache, must-revalidate");
  client.println("Expires: Sat, 26 Jul 1997 05:00:00 GMT");

client.println();

client.print("<script src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\"></script>");

client.print("<style>");

client.print("body {");
client.print("background-color: #000000;");

client.print("}");

client.print("#contenedor {");
client.print("width:620px;");
client.print("margin:0 auto;");
client.print("background-color:#EDEDED;");
client.print("border-radius:10px;");
client.print("box-shadow: 0px 0px 15px white;");
client.print("border:1px solid #DBDBDB;");
client.print("}");


client.print("#header {");
client.print("width:600px;");
client.print("height:20px;");
client.print("border-bottom:2px solid white;");
client.print("border-radius:10px 10px 0px 0px;");
client.print("padding:20px 10px;");
client.print("}");

client.print("#titulo {");
client.print("width:160px;");
client.print("float:left;");
client.print("}");


client.print("#temperatura {");
client.print("width:115px;");
client.print("float:right;");
client.print("}");

client.print("#cuerpo {");
client.print("border-top:2px solid #CCCCCC;");
client.print("background-color:#F2F2F2;");
client.print("min-height:600px;");
client.print("border-radius:0px 0px 10px 10px;");
client.print("}");


client.print(".boton {");
client.print("width:120px;");
client.print("height:80px;");
client.print("border:1px solid #737373;");
client.print("text-align:center;");
client.print("padding-top:20px;");
client.print("border-radius:10px;");
client.print("margin:20px;");
client.print("float:left;");
client.print("}");

client.print(".boton:hover {");
client.print("background-color: #999999;");
client.print("color:white;");
client.print("cursor:pointer;");
client.print("}");

client.print("</style>");



client.print("<script type=\"text/javascript\">");

client.print("$(document).ready(function() {");
   


client.print("$('#viga').click(function() {");   
   client.print("$.get('http://192.168.1.102/?cambiar=1' , function(data) { ");      
       client.print("document.getElementById('vigaStatus').innerHTML = data");
      client.print("});");   
client.print("});");

client.print("$('#escritorio').click(function() {");   
   client.print("$.get('http://192.168.1.102/?cambiar=2' , function(data) { ");        
       client.print("document.getElementById('escritorioStatus').innerHTML = data");
      client.print("});");   
client.print("});");


client.print("});");

client.print("function actualizarViga() {");
   client.print("$.get('http://192.168.1.102/?estado=1' , function(data) { ");
                   client.print("document.getElementById('vigaStatus').innerHTML = data");
      client.print("});");   
client.print("};");
client.print("setInterval(\"actualizarViga()\",9000);");

client.print("function actualizarEscritorio() {");
   client.print("$.get('http://192.168.1.102/?estado=2' , function(data) { ");        
                 client.print("document.getElementById('escritorioStatus').innerHTML = data");
      client.print("});");   
client.print("};");
client.print("setInterval(\"actualizarEscritorio()\",9000);");

client.print("function actualizarTemperaturaHumedad() {");
   client.print("$.get('http://192.168.1.102/?temperatura' , function(data) { ");
                  client.print("document.getElementById('temperatura').innerHTML = data");   
      client.print("});");   
client.print("};");
client.print("setInterval(\"actualizarTemperaturaHumedad()\",9000);");

client.print("</script>");

client.print("<div id=\"contenedor\">");


   client.print("<div id=\"header\">");
   
      client.print("<div id=\"titulo\">Control del cuarto</div>");
      client.print("<div id=\"temperatura\">Leyendo informacion</div>");
   
   client.print("</div>");
   
   client.print("<div id=\"cuerpo\">");
      client.print("<div id=\"viga\" class=\"boton\">");
      client.print("<span id=\"vigaTitle\" >Viga</span>");
      client.print("<br />");
      client.print("<span id=\"vigaStatus\">Encendido</span>");
      client.print("</div>");
      
      client.print("<div id=\"escritorio\" class=\"boton\">");
      client.print("<span id=\"escritorioTitle\">Escritorio</span>");
      client.print("<br />");
      client.print("<span id=\"escritorioStatus\">Encendido</span>");
      client.print("</div>");
      
   client.print("</div>");

client.print("</div>");

  }
  
if(readString.indexOf("GET /?cambiar=1") >=0)
{
  client.print(toogleState(7));
  
}
if(readString.indexOf("GET /?cambiar=2") >=0)
{
  client.print(toogleState(8));
}
if(readString.indexOf("GET /?estado=1") >=0)
{
  client.print(checkState(7));
}
if(readString.indexOf("GET /?estado=2") >=0)
{
  client.print(checkState(8));
}

if(readString.indexOf("GET /?temperatura") >=0) {
  
  client.print(getTemperature());
  client.print(" ºC ");
  client.print(getHumidity());
  client.print(" % ");
}


readString="";
client.stop();
}
}
}
}
else {
 client.stop();
}

}

/*
 Controlador de 2 luces bajo relees de negativo
 Controla 2 luces estableciendo un servidor en la plaqueta y actualizando su estado por jquery.
 Creado 28 Octubre. 2012
 por Gabriel Mellace
 
 */


dejo un videito para que lo vean :D




« Última modificación: 21 Noviembre 2012, 06:37 por gabrielmellace » En línea

R0BERT0

Desconectado Desconectado

Mensajes: 7


Ver Perfil WWW
Re: codigo para controlar luces desde servidor web [arduino]
« Respuesta #1 en: 19 Agosto 2013, 18:57 »

Buen codigo.
Como haces para conectarte al servidor web arduino remotamente?
Para hacer eso tal vez te sea interesante esta aplicacion.

Permite la conexión a tu servidor remotamente con ip dinámica con tan solo añadir unas lineas de código a tu proyecto

Puedes ver el proyecto en esta direccion.
http://excontrol.es/Domotica-Arduino/Arduino-WebServer/Default.aspx

Un saludo


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA PARA EXPLICAR ESTE CODIGO DE SERVIDOR DE PAGINA
Programación Visual Basic
dyanyta21 2 789 Último mensaje 21 Noviembre 2005, 13:45
por Slasher-K
libreria para controlar mouse desde el SO
Java
danielo- 8 4,797 Último mensaje 25 Enero 2010, 00:05
por danielo-
Controlar servidor VNC desde internet
Redes
Siciem 7 2,896 Último mensaje 11 Febrero 2010, 16:16
por ikary
como controlar luces de e dificio
Electrónica
dewloso 3 2,021 Último mensaje 16 Septiembre 2011, 00:49
por skapunky
Ayuda para controlar cmd desde netbeans
Java
Magedd 0 1,721 Último mensaje 12 Abril 2012, 17:05
por Magedd
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines