leer valor en una base de datos

Buenas tardes a tod@s,

estoy realizando un proyecto con Arduino Uno R3 y Arduino Ethernet Shield.

Lo que quiero es guardar en una base de datos alojada en internet un valor que recojo cada x segundos en una entrada del arduino.

Por otro, también quiero desde el arduino obtener el valor de un campo guardado en esa misma base de datos, y dependiendo de ese valor activar o desactivar una salida del arduino.

La parte de guardar los valores que recojo en la entrada de arduino en la base de datos ya la tengo hecha. Me queda leer el valor de un campo de la base de datos.

¿Alguno tiene idea de como leer un valor desde el arduino en una base de datos alojada en un servidor en internet?

Saludos y gracias desde Canarias

http://www.instructables.com/id/Interface-Arduino-to-MySQL-using-Python/all/?lang=es

no dices en que trabajas, tal vez esto sirva, tal vez estes en php y esto pueda ser de guia

http://www.instructables.com/id/Save-data-of-temperature-and-humidity-on-MySQL-wit/all/?lang=es

Lo que intento es controlar un relé que activará un enchufe de mi vivienda desde una web alojada en internet.

La idea es desde la web poder activar o desactivar la salida al relé.

El arduino actualizará el estado de la salida al relé en un campo de una tabla de la base de datos en mysql y desde la web se verá cual es su estado.

Esta parte ya está hecha.

Me queda la parte en la que el arduino lee el valor de un campo de la base de datos y según ese valor activa o desactiva la salida al relé.

Una vez consiga esto lo siguiente será poder programar franjas horarias en las cuales la salida este activa.

Por lo poco que he visto en los enlaces sólo escriben en base de datos no leen.

Otra opción que he visto es usar el arduino como servidor web, lo que esta opción la descarto por el momento ya que no cuento con ip fija, he visto como solucionarlo pero prefiero intentarlo con el método que propongo.

P.D. Lo que se quiere controlar es el encendido y apagado de un termo para calentar el agua de la vivienda.

Saludos

Pues si has conseguido actualizar un campo de una base de datos desde arduino, el leer otro debería resultar una tarea muy similar. Sencillamente crea otra página php a la que llame el arduino que devuelva ese valor de la base de datos. El arduino leerá el resultado y actuará en consecuencia.
De todas formas, si muestras tu código actual sería más sencillo ayudarte.
Saludos.

Pero si te he dado justamente ese ejemplo en los links o algo muy parecido. Lo leíste?

Si los he mirado por encima y lo que veo que hacen es insertar en base de datos, eso ya lo tengo yo.

Me queda leer un valor desde la base de datos y según ese valor activar o no una salida del arduino. Esa parte no la he visto en los link.

Les pongo el código usado: (está un poco revuelto ya que estoy en pruebas)

// Script que obtiene el estado de un puerto
// y lo envia a un servidor web

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

// Mac EthernetShield
byte mac[] = { 0x06, 0xCC, 0x9C, 0x80, 0xDE, 0x94 };

// IP fijo, si se comenta el router le asignará la IP
//IPAddress ip(192,168,1,220);

// Descomentar esta linea para asignar un DNS fijo
//IPAddress myDns(172,17,17,1);

// Inicializa la instancia client
EthernetClient client;

// Direccion del servidor
char server[] = "www.midominio.es";

// Variable de tiempo de la ultima conexion en milisegundos
unsigned long ultimaConexion = 0;
// Estado de la ultima conexion
boolean ultimoEstado = false;
// Intervalo en milisegundos entre conexiones
const unsigned long intervaloConexion = 30000;

// Datos del puerto de entrada
int ValorActual = 0;

void setup() {
// Configura el pin que se va a usar como entrada
pinMode(7,INPUT);

// Inicializa puerto serial
Serial.begin(9600);
Serial.println("########");
Serial.println("Prueba lectura pin");
// Espera 1 segundo para que se inicie la tarjeta Ethernet
delay(1000);
// Si deseas usar un ip fijo y un DNS fijo descomentar esta linea y comentar la linea 39
// Ethernet.begin(mac, ip, myDns);
// Inicializa la tarjeta ethernet mediante DHCP
Ethernet.begin(mac);
// Imprime la direccion IP de la tarjeta
Serial.print("Direccion IP: ");
Serial.println(Ethernet.localIP());

ValorActual = digitalRead(7);
Serial.print("ValorPuerto_7: ");
Serial.println(ValorActual);
}

// Loop principal
void loop()
{
/*
// Espera 30sg
delay(30000);

// Lee el pin de entrada
ValorActual = digitalRead(7);
Serial.print("ValorPuerto_7: ");
Serial.println(ValorActual);
*/

// Si hay datos que llegan por la conexion los envia a la puerta serial
if (client.available()) {
char c = client.read();
Serial.print(c);
}

// Si no hay conexion de red y se conecto correctamente la ultima vez
// detiene el cliente Ehternet
if (!client.connected() && ultimoEstado) {
Serial.println();
Serial.println("Desconectando...");
client.stop();
}

// Si no esta conectado y han pasado X segundos (intervaloConexion)
// despues de la ultima conexion envia datos al servidor
if(!client.connected() && (millis() - ultimaConexion > intervaloConexion)) {
ValorActual = digitalRead(7);
httpRequest();
}
// Actualiza la variable ultimoEstado
ultimoEstado = client.connected();
}
// Fin del loop principal

// Realiza la conexion http al servidor
void httpRequest() {
// Se conecta al servidor en el puerto 80 (web)
if (client.connect(server, 80)) {
// Envia el dato al puerto serial
Serial.print("ValorPuerto 7: ");
Serial.println(ValorActual);

//Inserta Valor
// Envia el requerimiento al servidor via GET
Serial.println("Iniciando conexion...");
client.print("GET /index.php?valor=");
client.print(ValorActual);
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("User-Agent: Arduino-Ethernet");
client.println("Connection: close");
client.println();

// Actualiza el tiempo en milisegundos de la ultima conexion
ultimaConexion = millis();
}
else {
// Si la conexion fallo se desconecta
Serial.println("Error al conectarse al servidor");
Serial.println("Desconectando...");
client.stop();
}

}

Una vez ejecutado esto en el monitor serial me aparece:

########
Prueba lectura pin
Direccion IP: 192.168.1.39
ValorPuerto_7: 1
ValorPuerto 7: 1
Iniciando conexion...
HTTP/1.1 200 OK
Server: nginx
Date: Wed, 03 Sep 2014 19:58:13 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
Vary: Accept-Encoding
X-Powered-By: PHP/5.3.29

1b
Se ha insertado el valor: 1
0

Desconectando...

Si algo valoro de ayudar en este foro es que me lleva a lugares insospechados como este.
Yo creo que esta solución es la mejor para tu caso.
Este es un Conector para Arduino que tiene todo lo que necesitas.
https://code.launchpad.net/mysql-arduino

Espero te sirva.