Hola,
Me gustaria saber si es posible con un arduino+ethernet subir informacion a una hoja de calculo de google docs.
Que se fueran añadiendo lineas al archivo.
Se me ocurren las siguiente aplicaciones:
· Subir a una hoja de calculo la temperatura y la hora
· Subir el estado de entradas y salidas cada 5 min de un arduino. Como un historico.
...
...
Saludos!!!!!
Si se puede. En la pagina de google existe mucha documentacion para usar el API que permite subir datos a Google Docs
Hola, ¿Conoceis algun proyecto de hack a day con alguna aplicación en concreto?
Gracias
No lo recuerdo, todo el mundo usa pachube
Ésto estaba en el foro.
/*
* A simple sketch that uses Ethernet Shield to send some values (via POST) to GoogleDocs
* Based on code by RobertMParker for the WiShield <http://asynclabs.com/forums/viewtopic.php?f=16&t=489>
*/
#include <Ethernet.h>
#include <SPI.h>
#define DEBUG_PRINT // comment to disable Serial.print
long unsigned int time =0;
//Wireless configuration parameters ----------------------------------------
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = {
192,168,0,3}; // IP address of Ethernet Shield
byte gateway[] = {
192,168,0,1}; // router or gateway IP address
byte subnet[] = {
255,255,255,0}; // subnet mask for the local network
// IP Address for spreadsheets.google.com
byte ipGoogle[] = {
74,125,67,102};
char hostname[] = "spreadsheets.google.com";
char url[] = "/formResponse?formkey=<ENTER_YOUR_KEY_HERE>";
// create a client that connects to Google
Client clientGoogle(ipGoogle,80);
void setup()
{
// Enable Serial output and ask WiServer to generate log messages (optional)
#ifdef DEBUG_PRINT
Serial.begin(115200);
#endif //DEBUG_PRINT
Ethernet.begin(mac, ip, gateway, subnet);
// give the Ethernet shield a second to initialize
delay(1000);
int time = millis();
clientGoogle.connect();
}
void loop()
{
float temperature = (float) random(1000)/10.; // create some random values to test
float humidity = 45 + (millis()%1000)/100.;
if ( millis() > time + 10000 && clientGoogle.connected()){ // update sheet each 10 s
String feedData = "entry.0.single=" + String((int)temperature) + "," + String(int(temperature*100)%100) + "&entry.1.single=" + String(int(humidity)) + "," + String(int(humidity*100)%100) + "&pageNumber=0&backupCache=&submit=Envoyer";
//Serial.println(feedData);
postRequest(clientGoogle, ipGoogle, 80, hostname, url, feedData);
time = millis();
}
delay(10);
}
void postRequest(Client client, byte *ip, unsigned int port, char *hostName, char *url, String feedData){
String buf = "POST " + String(url) + " HTTP/1.1";
#ifdef DEBUG_PRINT
Serial.println(buf);
Serial.println("Host: " + String(hostName));
Serial.println("Content-Type: application/x-www-form-urlencoded");
Serial.println("Content-Length: " + String(feedData.length()));
Serial.println("");
Serial.println(feedData);
Serial.println("");
Serial.println("");
#endif
client.println(buf);
client.println("Host: " + String(hostName));
client.println("Content-Type: application/x-www-form-urlencoded");
client.println("Content-Length: " + String(feedData.length()));
client.println("");
client.println(feedData);
client.println("");
client.println(""); // POST request as GET ends with 2 line breaks and carriage returns (\n\r);
}
Menos mal que hay gente como Pascual!
Gracias, lo voy a probar.
Saludos
conander:
Menos mal que hay gente como Pascual!
Gracias, lo voy a probar.
Saludos
haciendo amigos?
Es bastante descalificativo lo de "menoss mall"
Una simple busqueda en google te ofrece ese codigo como primer resultado junto con un tutorial completo
Por lo que de "menos mal" nada, haz tu parte!!!