Pages: [1] 2   Go Down
Author Topic: Arduino+ETH Shield e Google Spreadsheet  (Read 3697 times)
0 Members and 1 Guest are viewing this topic.
ITALY
Offline Offline
Full Member
***
Karma: 1
Posts: 188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buongiorno a tutti,
sono nuovo del forum e mi chiamo Francesco. Ho da poco tempo acquistato un Arduino UNO e un Ethernet Shield e ho già fatto vari programmini servendomi degli aiuti del forum e degli esempi sul sito.
Venendo al punto, vorrei sapere se come da titolo è possibile scrivere dati su google spreadsheet mediante l' invio di questi con ETH shield. Ho trovato il seguente topic, ma non sono riuscito a fare in modo di ottenere qualcosa di scritto sul foglio di calcolo. Qualcuno di voi ci è riuscito?
Grazie a tutti.

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1241360897
Logged

0
Online Online
Shannon Member
****
Karma: 132
Posts: 10508
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

codice pls :-)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ITALY
Offline Offline
Full Member
***
Karma: 1
Posts: 188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io ho semplicemente copiato il codice che ho trovato nel link postato sopra cambiando la KEY del documento.
Ecco qui:
Code:
/*
        * 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);
}
 
Logged

ITALY
Offline Offline
Full Member
***
Karma: 1
Posts: 188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ogni 10 secondi dovrebbe uploadare dei numeri a caso ma questo non accade. Non so cosa c' è che non va.
Logged

0
Online Online
Shannon Member
****
Karma: 132
Posts: 10508
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ad occhio il codice sembra corretto, però ho fatto un ping
Code:
ping spreadsheets.google.com
PING spreadsheets.l.google.com (74.125.79.102) 56(84) bytes of data.
e l'ip è diverso da quello nello sketch...

e poi sei sicuro che il tuo gateway sia 192.168.0.1? prova a scriverlo nella barra del browser, dovrebbe risponderti il router... comunque puoi verificare questo indirizzo, apri un terminale (in windows cerca cmd.exe)
e scrivi "traceroute www.google.it" oppure "tracepath www.google.it", il primo IP che compare nella lista dovrebbe essere il tuo gateway
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ITALY
Offline Offline
Full Member
***
Karma: 1
Posts: 188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma su "byte ipGoogle[]" ci devo mettere l' ip che mi risulta pingando www.google.com oppure quello che mi risulta pingando spreadsheet.google.com? Ho provato con tutti e due ma comunque non mi funziona.
Se inserisco 192.168.0.1 mi risponde la finestra di login configurazione del router.
Logged

ITALY
Offline Offline
Full Member
***
Karma: 1
Posts: 188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E..un' altra cosa..quando apro il mio foglio di calcolo sulla barra indirizzi trovo scritto:
https://spreadsheets.google.com/ccc?key=0ArTGw8....
e non
https://spreadsheets.google.com/formResponse?formkey=0ArTGw8....
centra qualcosa?
Logged

0
Online Online
Shannon Member
****
Karma: 132
Posts: 10508
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

l'ip va quello spreadshett...
centra qualcosa, devi modificare l'algoritmo per usare ccc?blbla e non l'altro modo (evidentemente l'algoritmo è vecchio)

ed infine tu stai usando HTTPS, mentre l'algoritmo supporta solo HTTP...
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ITALY
Offline Offline
Full Member
***
Karma: 1
Posts: 188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pensi dunque non ci sia maniera di andare a scr ivere sul foglio di calcolo con algoritmo https? smiley-cry
Logged

0
Online Online
Shannon Member
****
Karma: 132
Posts: 10508
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non lo so. in HTTPS tutte le comunicazioni sono criptate, bisogna vedere se arduino ha abbastanza potenza di calcolo per criptare i dati, oppure abbastanza memoria per criptare i dati o-line e poi spedirli una volta elaborati.

allora ho fatto qualche prova anch'io. Se non ti logghi in google, spreadsheet usa l'HTTP, però i dati restano salvato solo 24 ore, infatti se noti lo sketch che hai postato NON si autentica.

se vuoi implementare l'HTTPS, ecco tutto ciò che ti serve; la RFC: http://tools.ietf.org/html/rfc5246
per chi non lo sapesse le RFC sono i documenti tecnici che, se approvati, divengono standard di internet.
Ovviamente spiegano per filo e per segno come devono comportarsi i programmi per essere compatibili.
Per esempo lFTP, l'HTTP, e molti altri....

dopo di che puoi seguire questa guida:
http://code.google.com/apis/spreadsheets/data/3.0/developers_guide.html
che in pratica spiega il protocollo al di sopra dell'HTTPS ( e comunque credo che le api, ovvero le funzioni, siano le stesse per l'http)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ITALY
Offline Offline
Full Member
***
Karma: 1
Posts: 188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi sa che HTTPS è un pò troppo per me.. smiley-sad va bhe..grazie comunque per l' interesse e la spiegazione. C' è un tasto Thanks  su questo forum?
Logged

0
Online Online
Shannon Member
****
Karma: 132
Posts: 10508
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

no, ma ci vorrebbe in effetti smiley
comunque puoi usare l'http, però devi ricordarti di fare il backup dei dati ogni 24h e che il link al foglio cambia...
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

ITALY
Offline Offline
Full Member
***
Karma: 1
Posts: 188
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Volevo comunicare che sono riuscito a scrivere sul foglio di calcolo Google seguendo questa guida:
http://www.open-electronics.org/how-send-data-from-arduino-to-google-docs-spreadsheet/
Probabilmente c' è ancora qualcosa da sistemare perchè dopo qualche inserimento l' ETH shield sembra come incepparsi e conclude la trasmissione. Questa cosa mi serviva per rilevare dei dati di temperatura e umidità per poterli poi rappresentare comodamente su un grafico inserito in un sito Google.
Logged

Offline Offline
Full Member
***
Karma: 2
Posts: 105
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Anche io stò facendo la stessa cosa ma ho lo stesso tuo identico problema...dopo 5-6 scritture il sistema si ferma e non scrive più nelle label dello spreadsheet...come hai risolto  Devon ???
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 361
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho letto che l' Ethernet Shield (basato su WizNet5100) si blocca se usato con troppa insistenza.
Ho anche letto che c'e' un trucco per non farlo bloccare.

Cerca con la chiave "Wiznet 5100"
Logged

Pages: [1] 2   Go Up
Jump to: