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

 

 


Tema destacado: Tutorial básico de Quickjs


+  Foro de elhacker.net
|-+  Informática
| |-+  Electrónica
| | |-+  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 11,988 veces)
gabrielmellace

Desconectado Desconectado

Mensajes: 10


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

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 am 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 pm »

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

mariooo

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Re: codigo para controlar luces desde servidor web [arduino]
« Respuesta #2 en: 18 Mayo 2015, 00:57 am »

Hola me podrías ayudar, lo compilo y me tira  estos errores

sketch_may17b.ino:11:17: error: DHT.h: No such file or directory
sketch_may17b.ino: In function 'void setup()':
sketch_may17b:29: error: 'dht' was not declared in this scope
sketch_may17b.ino: In function 'float getTemperature()':
sketch_may17b:59: error: 'dht' was not declared in this scope
sketch_may17b.ino: In function 'float getHumidity()':
sketch_may17b:62: error: 'dht' was not declared in this scope
 
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: codigo para controlar luces desde servidor web [arduino]
« Respuesta #3 en: 18 Mayo 2015, 07:50 am »

este post es de hace 3 años, el usuario no publicó DHT.h y "void setup()" no se por qué te da error
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Hurdano


Desconectado Desconectado

Mensajes: 322


Se que puedo cambiar el futuro, pero no el pasado


Ver Perfil WWW
Re: codigo para controlar luces desde servidor web [arduino]
« Respuesta #4 en: 18 Mayo 2015, 10:24 am »

Para controlar el DHT11 o como se llame, que ahora no me aucerdo, necesitas agregar unas librerías especificas para él, por eso te tira ese error, porque no están instaladas, por lo que no lo reconoce y no sabe como trabajar con él.
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 2,308 Último mensaje 21 Noviembre 2005, 13:45 pm
por Slasher-K
libreria para controlar mouse desde el SO
Java
danielo- 8 7,927 Último mensaje 25 Enero 2010, 00:05 am
por danielo-
Problema con codigo arduino :S
Electrónica
Debci 4 4,578 Último mensaje 31 Mayo 2010, 17:01 pm
por SOMBRIO
como controlar luces de e dificio
Electrónica
dewloso 3 4,384 Último mensaje 16 Septiembre 2011, 00:49 am
por skapunky
µTorrent lanza una barra para controlar las descargas desde el navegador
Noticias
wolfbcn 0 2,169 Último mensaje 5 Febrero 2012, 18:48 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines