Go Down

Topic: Arduino y php consulta (SOLUCIONADO) (Read 12979 times) previous topic - next topic

Sergegsx


Pipper

Bueno serg no te me enojes je  :*, no he leido bien perdon ahi va todo el codigo:

Code: [Select]

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 88 };
byte server[] = {192, 168, 1,33  };
Client client(server, 80);
int g=0;
int posicion=0;
int prend;
int foco;
long tiempofuncion1 = 1000; // cada segundo
long tiempofuncion2 = 10000; // cada 3 segundos
long TiempoInicial1;
long TiempoInicial2;
int data = 0;
int tempPin = 1;

void setup()
{
Serial.begin(9600);         
Ethernet.begin(mac, ip);       
TiempoInicial1=millis(); // inicia la variable al momento actual para temporizador 1
TiempoInicial2=millis(); // inicia la variable al momento actual para temporizador 2
}
void loop()
{
if (millis() >= (TiempoInicial1+tiempofuncion1)) {
      recibirdatos();
      TiempoInicial1=millis();    // reset de inicio
   }
 
   if (millis() >= (TiempoInicial2+tiempofuncion2)) {
      senddata();
      TiempoInicial2=millis();    // reset de inicio
   }       

while (client.available()) {
    if (g<15){
    char dato_recibido = client.read();
   if (dato_recibido=='B' && posicion==0){
      posicion=1;
      Serial.println("POSICION 1");
      Serial.println(dato_recibido);
    }
    if (((dato_recibido=='H')) && posicion==1){
      posicion=2;
      Serial.println("POSICION 2");
      Serial.println(dato_recibido);
    }
    if (((dato_recibido=='1')||(dato_recibido=='2')||(dato_recibido=='3')||(dato_recibido=='4')||(dato_recibido=='5')) && posicion==2){
      posicion=3;
      if (dato_recibido=='1')  foco=13;
      if (dato_recibido=='2')  foco=28;
      if (dato_recibido=='3')  foco=30;
      Serial.println("POSICION 3");
      Serial.println(dato_recibido);
    }
    if (((dato_recibido=='A')||(dato_recibido=='Y')) && posicion==3){
      posicion=4;
      if (dato_recibido=='A')  prend=1;
      if (dato_recibido=='Y')  prend=0;
      Serial.println("POSICION 4");
      Serial.println(dato_recibido);
      Serial.println(prend);
    }
    if (dato_recibido=='F' && posicion==4){
      posicion=0;
      pinMode(foco, OUTPUT);
      digitalWrite(foco,prend);
      Serial.println("POSICION 5");
      Serial.println(dato_recibido);
      //Serial.println(prend);
      //Serial.println(foco);
    }
    g=g+1;
    }
    else{
    //Serial.flush();
    char d = client.read();
    Serial.print("");}
}
}

void recibirdatos()
{
g=0;
//Serial.println("Dentro de la funcion");
delay(100);                 

if (client.connect()) {
Serial.println("Connected");
client.println("GET /prueba2.php?led=1&led1=2&led2=3");
client.println();
}
else
{
Serial.println("");
}
  if (!client.connected()) {                     
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
}
}

void senddata()
{
data = analogRead(tempPin);      //leemos la temperatura
//Serial.println(data);
Serial.println();
Serial.println("Next");
delay(100);

if (client.connect()) {
Serial.println("Connected");
client.print("GET /prueba1.php?");
client.print("data");
Serial.print("data");
client.print("=");
Serial.print("=");
client.print(data);
Serial.print(data);
client.println(" HTTP/1.1");
client.println("Host: localhost");
client.println();
Serial.println();    
}
else
{
Serial.println("Connection unsuccesfull");
}
//}
//stop client
client.stop();
while(client.status() != 0)
{
  delay(5);
}
}


Saludos.

Sergegsx

no se si tendra algo que ver pero en una funcion lo haces asi

Code: [Select]

  if (!client.connected()) {                     
    Serial.println();
    Serial.println("disconnecting.");
    client.stop();
}


y enla otra no compruebas y haces el stop forzado
Code: [Select]
//stop client
client.stop();
while(client.status() != 0)
{
  delay(5);
}


tampoco se para que haces lo del client.status

spiquer

buenas, me estoy uniendo, de La Rioja -Argentina. me interesa este tema. estoy intentando hacer lo mismo. un casa domotica. no para lucrar sino para mi tesis final de lic en sistema. grande aporte
"PIPPER" muy bueno lo tuyo. viendo lo de temperatura creo que no sera tan dificl, por que lo digo. por  es algo que no utilizaria arduino. solo lo almacenarias en la BD para visualizarlo en tu web

christianalatorre

hola!!, unos compañeros y yo estamos haciendo algo parecido, un control domótico desde web para encender y apagar varios dispositivos (focos, persianas, ventiladores, etc.), estamos trabajando con raspberry como servidor local, arduino, reles y los dispositivos, y necesito trabajar con el estado de cada dispositivo, mis conocimientos de programación son bastante basicos, estuve buscando info y me tope con que con una base de datos se puede hacer simplemente le doy ordenes al arduino enviando desde php lo que se necesita para que encienda, entonces arduino lo procesa lo ejecuta y con un sistema de regreso al arduino obtiene si esta encendido o apagado (a nivel serial con arduino todo funciona bien), de hecho ya logramos enviar un update desde el arduino hasta la base de datos pero no tenemos bien definido como seria el codigo de arduino para todo eso ya que tenemos todo por separado la recepcion en un codigo y el envio en otro, y no sabemos como juntarlos ayudenme por favor, no se preocupen yo subo la información para compartirla con todos ya que se me hace un proyecto muy práctico e interesante, de antemano gracias.

surbyte

Gente. Dejen de responder mensajes abandonados desde 2012. Creen un nuevo hilo y canalicen por ahi sus dudas o inquietudes.

Go Up