I dati da Arduino a Google Spreadsheet


Uno dei motivi del successo di Arduino è la grande disponibilità di librerie che rendono lo sviluppo semplice e veloce. Realizzare un Web Server, un Web Client o inviare un Tweet, grazie alla libreria dell’ethernet shield, non è affatto complicato. 
Provate a fare la stessa applicazione con Stack TCP / IP Microchip …. Non è impossibile, ma per niente facile. 
Invece con lo shield Ethernet o WiFi si può connettere Arduino al mondo di internet, avere informazioni, inviare e-mail, pubblicare dati… 

Pubblicare dati? Ma dove?

Qualche sito si presta ad ospitare i vostri dati, alcuni mettono a disposizione anche elementi grafici come Pachube
Ma in qualche caso potrebbe essere utile avere i dati in un foglio di calcolo, in modo da poter poi fare operazioni e gestire i vari dati. 

In questo post voglio spiegare la soluzione trovata da RobertMParker per inviare i dati sul foglio di calcolo di Google. Un ringraziamento ad Andrea Fainozzi che ha adattato il codice. 
Il modo migliore per accedere al foglio di calcolo di Google non è l’accesso al foglio di calcolo di Google … 
Non ho trovato un modo per accedere direttamente al foglio di calcolo (magari qualcuno può darci una dritta), ma possiamo comunque inviare i dati al nostro foglio utilizzando un modulo (form). 
Tutti i risultati di un modulo vengono importati nel foglio corrispondente …. quindi … i dati sono su Google Spreadsheet. 

Il metodo passo dopo passo per inviare dati da Arduino a Google Spreadsheet 

1) Si deve creare un modulo dalla pagina di Google Documenti (è necessario essere registrati): 

 2) Selezionare “Crea nuovo” -> “Form” dal menu Google Documenti: 


 

3) Creare il form con campo di testo. È possibile inserire quanti campi volete. Date un nome al form e alle domande (i nomi delle domande saranno i nomi delle colonne): 

4) Clicca su “Done”. È stato creato il modulo. Nell’URL è possibile vedere la formkey. Nel mio caso è dDBMdUx3TmQ5Y2xvX2Z0V183UVp2U0E6MQ Prendere nota di questa chiave. La useremo nello sketch di Arduino. 

5) Normalmente le caselle di testo (Data 1 e Data 2 in questo esempio) sono chiamate entry.0.single e entry.1.single …. ecc, ma il nome può cambiare se si modifica la struttura di base. Quindi il modo migliore è esplorare il codice HTML per verificare effettivamente i nomi. 

6) Io uso Google Chrome, ma la procedura è simile con Firefox o IE. Il codice  mostra il nome esatto delle due caselle di testo. Prendete nota di questi nomi. 

7) Nel mio caso i nomi sono entry.0.single per Data 1 e entry.2.single per Data 2. Per inviare i dati al modulo dobbiamo usare questa sintassi: 
https://spreadsheets.google.com/formResponse?formkey=YOUR FORM KEY &ifq& YOUR ENTRY =THE VALUE TO STORE &submit=Submit
Per esempio: 
https://spreadsheets.google.com/formResponse?formkey=dDBMdUx3TmQ5Y2xvX2Z0V183UVp2U0E6MQ&ifq&entry.0.single=Boris&entry.2.single=Landoni&submit=Submit

Questo il risultato: 

8 ) I dati vengono copiati nel foglio di calcolo di Google. Questo è il mio foglio con i vari dati:

9) Ora dobbiamo inviare i dati con Arduino. Usiamo il metodo POST per inviare i dati al modulo. Il codice è molto semplice. 

/* Arduino to Google Docs
 created 2011

This example code is in the public domain.

http://www.open-electronics.org
http://www.futurashop.it

https://spreadsheets.google.com/formResponse?formkey=dDBMdUx3TmQ5Y2xvX2Z0V183UVp2U0E6MQ &ifq&entry.0.single=Boris&entry.2.single=Landoni&submit=Submit
Original from http://goodsite.cocolog-nifty.com/uessay/2010/07/arduinogoogle-d.html
Modified by John Missikos 11/6/11
Modified by Andrea Fainozzi 30/6/11
Modified by Boris Landoni 8/7/11

*/

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

char formkey[] = "dDBMdUx3TmQ5Y2xvX2Z0V183UVp2U0E6MQ"; //Replace with your Key
byte mac[] = { 0x90,0xA2,0xDA,0x00,0x55,0x8D};  //Replace with your Ethernet shield MAC
byte ip[] = { 192,168,0,109};  //The Arduino device IP address
byte subnet[] = { 255,255,255,0};
byte gateway[] = { 192,168,0,254};
byte server[] = { 209,85,229,101 }; // Google IP
Client client(server, 80);

void setup()
{
  Serial.begin(9600);
  Ethernet.begin(mac, ip , gateway , subnet);
  delay(1000);
  Serial.println("connecting...");
}

void loop(){
  String data;
  data+="";
  data+="entry.0.single=";
  data+=analogRead(A0);
  data+="&entry.2.single=";
  data+=analogRead(A1);
  data+="&submit=Submit";

  if (client.connect()) {
    Serial.println("connected");

    client.print("POST /formResponse?formkey=");
    client.print(formkey);
    client.println("&ifq HTTP/1.1");
    client.println("Host: spreadsheets.google.com");
    client.println("Content-Type: application/x-www-form-urlencoded");
    client.println("Connection: close");
    client.print("Content-Length: ");
    client.println(data.length());
    client.println();
    client.print(data);
    client.println();

    Serial.print("POST /formResponse?formkey=");
    Serial.print(formkey);
    Serial.println("&ifq HTTP/1.1");
    Serial.println("Host: spreadsheets.google.com");
    Serial.println("Content-Type: application/x-www-form-urlencoded");
    Serial.println("Connection: close");
    Serial.print("Content-Length: ");
    Serial.println(data.length());
    Serial.println();
    Serial.print(data);
    Serial.println();

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

  delay(10000);

}

Questo codice pubblica sul foglio di calcolo di Google il valore di ingresso analogico A0 e A1.
L’applicazione potrebbe essere differente. Si potrebbero inviare temperature, stato degli ingressi, tutto quello che si vuole. Una volta che i dati sono su Google è possibile realizzare grafici, scaricare i dati sul PC, condividerli con amici … 
Se avete qualche idea …. Inviatemi i vostri progetti e cercherò di soddisfare le vostre esigenze.

32 pensieri riguardo “I dati da Arduino a Google Spreadsheet

  • 08/12/2011 in 19:01
    Permalink

    Ciao! ho provato ad utilizzare la tua guida e il tuo programma. Innanzi tutto ho dovuto aggiungere un client.stop(); prima del delay(10000); perchè altrimenti il programma si bloccava dopo due invii.
    Però in realtà non invio nulla, o lo invio ad un indirizzo sbagliato perchè il foglio su google non si aggiorna!!!! hai qualche consiglio?

    Risposta
  • 09/12/2011 in 12:29
    Permalink

    Risulta difficile risponderti così.
    In ogni caso il firmware presentato funziona, forse è solo un problema di impostazioni. Infatti per scrivere correttamente all’interno del foglio devi conoscere il nome esatto della colonna.

    Risposta
  • 10/12/2011 in 14:33
    Permalink

    Ho controllato più e più volte! non riesco proprio ad inserire i dati. ho provato su più form. Il nome delle colonne è sempre quello entry.0.single ….. entry.1.single… etc etc….
    Tu sei riuscito a farlo andare al primo colpo? non hai avuto problemi?

    Risposta
  • 14/12/2011 in 20:35
    Permalink

    Forse ho trovato il problema. è il mio router che da problemi!!!

    Risposta
  • 11/07/2012 in 12:39
    Permalink

    Ciao Boris,
    complimenti per il post, finalmente ho avuto modo di leggerlo con attenzione (il codice) ed è abbastanza simile alla soluzione con lo stack tcp/ip Microchip.

    “Provate a fare la stessa applicazione con Stack TCP / IP Microchip …. Non è impossibile, ma per niente facile. ”

    Condivido questo tuo pensiero, anche se, una volta impostato (ed entrati nella mente che ha scritto lo stack) la cosa è abbastanza semplice.

    Eccola:
    http://it.emcelettronica.com/inviare-dati-google-doc-spreadsheets-con-picmicro-ftpmicro-temperature-monitor

    Risposta
  • Pingback: Arduino & Google Drive: monitor dei sensori con trigger e invio notifiche

  • 22/05/2013 in 10:47
    Permalink

    Ciao, dopo aver utilizzato arduino per fare un po’ di esperienza ho voluto provare il tuo sketch. Attualmente google è passata da documenti a drive, e nel codice trovo definizioni diverse (ad es. ) ho sostituito “entry.0.single=” con “entry.181623381” ma senza risultato. Sono a zero di html quindi probabilmente dico bestialità…. Per il resto il ping della la scheda funziona, il monitor seriale stampa una volta connesso e poi disconnesso ogni tot.
    Grazie Maurizio

    Risposta
  • 30/05/2013 in 16:37
    Permalink

    Si potrebbe avere una piccola guida, o un aggiornamento di questa, con l’utilizzo dell’ utilizzo della ethernet shield + google Drive?

    Risposta
  • 31/05/2013 in 08:23
    Permalink

    Per quanto sono riuscito a capire lo sketch non funziona più (è cambiato Google) io sono riuscito ad inviare valori a Google tramite pushing box, ma sono fermo poichè non riesco a capire come inviare una variabile in HTML…..

    Risposta
    • 31/05/2013 in 11:34
      Permalink

      Basta guardare il sorgente del modulo pubblico di google. Le entry non sono più con numero progressivo che va da 0 a n (es. entry.0.single, entry.1.single, entry.n.single) ma sono con numeri random entry.4864654135871343.single, entry.8674613796143874.single ecc
      Quindi nella pagina pubblica del google form, click con il tasto destro del mpuse e Visualizza Sorgente Pagina … scopri le entry e riporta i valori sullo sketch di arduino

      Risposta
  • 31/05/2013 in 16:30
    Permalink

    E’ quello che ho fatto, ma non mi passa nulla, sembra manchi l’invio, praticamente inserisce il valore nel campo form, ma non lo invia.
    Probabilmente le mie conoscenze non mi fnno capire l’errore, ma da quanto ho letto nei vari blog(anche in inglese) 🙁 il problema potrebbe essere il passaggio in HTTPs, per questo stò provando con pushing box…. anche se riesco a passare lo stato un numero ma non una variabile di arduino…. se hai consigli sono graditi visto che sono 5 giorni che tento….ps per info ora sto guardando Exosite….

    Risposta
  • 31/05/2013 in 18:46
    Permalink

    Non so a che punto sei arrivato, devi usare entry.xxxxxxx =tuo valore & submit=Submit Io ho anche cambiato questa riga Serial.print(“POST /formResponse?forms=”); ma continua a non inviarmi il valore….

    Risposta
    • 03/06/2013 in 21:27
      Permalink

      Ciao, sicuramente sbaglio a (passami il termine da profano) ricomporre il codice html. se clicco il link scritto sul blocco note mi inserisce la risposta ma quando lo invio da arduino non funziona…. Per capirci posto le righe dello sketch
      String data;
      data+=””;
      data+=”entry.xxxxxxx=”;
      data+=analogRead(A0);
      data+=”&amp&entry.xxxxxx=”;
      data+=analogRead(A1);
      data+=”&amp&submit=Invia”;
      if (client.connected()) {
      Serial.println(“connected”);

      client.print(“POST /forms/d/”);
      client.print(forms);
      client.println(“formResponse? HTTP/1.1”);
      client.println(“Host: docs.google.com”);
      client.println(“Content-Type: application/x-www-form-urlencoded”);
      client.println(“Connection: close”);
      client.print(“Content-Length: “);
      client.println(data.length());
      client.println();
      client.print(data);
      client.println();

      ciao e grazie Maurizio

      Risposta
      • 04/06/2013 in 11:02
        Permalink

        Se paragoni il tuo sketch in questo articolo ci sono un po’ di differenze tipo riga 50-53 e riga 60-72.

        Risposta
        • 11/06/2013 in 19:13
          Permalink

          Ciao, si ho visto, ma le ho cambiate per cercare di inviare i dati visto che ore il link è docs.google……. e il formkey è diventato form
          Ma evidentemente ci sono ancora errori visto che non funziona…

          Risposta
          • 12/06/2013 in 17:01
            Permalink

            Dando un occhio a tuo sketch che hai pubblicato il 3/6 noto che ci sono errori!
            Te scrivi questo

            data+=”&amp&entry.xxxxxx=”;

            ma così facendo &amp& è come se scrivessi 2 & commerciali, dei quali il primo è scritto male perchè manca il ; comunque & è uguale a &.
            Quindi lo sketch lo devi modifiare in questa maniera

            data+=”&entry.xxxxxx=”;

            stessa cosa anche per il submit.
            Ciao

  • 12/06/2013 in 17:05
    Permalink

    Anche il filtro html di questo blog ha ripulito il mio commento trasformado & a m p ; in & commerciale. Ho dovuto staccare i caratteri altrimenti me li avrebbe ripuliti.
    Per maggiori info sull’iso html http://www.w3schools.com/tags/ref_entities.asp
    Comunque ripeto che basta che tu scriva diettamente
    data+=”&entry.xxxxxx=”;
    Ciao

    Risposta
  • 26/06/2013 in 21:29
    Permalink

    Ciao, sto cercando di realizzzare un prototipo simile al tuo, l’unica differenza è che la comunicazione avviene via GPRS (SIM900), e non via Ethernet.
    Non essendo un programmatore ho qualche problema con il codice, sopratutto la parte con la quale invio i dati:

    mySerial.println(“AT+CGATT?”);
    delay(1000);

    mySerial.println(“AT+CSQ”);
    delay(100);

    mySerial.println(“AT+CSTT=\”internet.wind\””);
    delay(1000);

    mySerial.println(“AT+CIICR”);
    delay(3000);

    mySerial.println(“AT+CIFSR”);
    delay(2000);

    mySerial.println(“AT+CIPSPRT=0”);
    delay(3000);

    mySerial.println(“AT+CIPSTART=\”tcp\”,\”docs.google.com\”,\”80\””);
    delay(4000);

    mySerial.println(“AT+CIPSEND”);
    delay(3000);

    String sdata;
    sdata+=””;
    sdata+=”&”;
    sdata+=temp_code;
    sdata+=”=”;
    sdata+=temp_int;
    sdata+=”&”;
    sdata+=humi_code;
    sdata+=”=”;
    sdata+=humi_int;
    sdata+=”&submit=Submit”;

    mySerial.print(“POST /forms/d/”);
    delay(1500);

    mySerial.print(formkey);
    delay(1500);

    mySerial.println(“formResponse?”);
    delay(1500);

    mySerial.println(“formResponse? HTTP/1.1”);
    delay(1500);

    mySerial.println(“Host: docs.google.com”);
    delay(1500);

    mySerial.println(“Content-Type: application/x-www-form-urlencoded”);
    delay(1500);

    mySerial.println(“Connection: close”);
    delay(1500);

    mySerial.print(“Content-Length: “);
    mySerial.println(sdata.length());
    delay(1500);

    mySerial.print(sdata);
    delay(1500);

    mySerial.println((char)26);
    delay(5000);
    mySerial.println();

    delay(1000);

    mySerial.println(“AT+CIPSHUT”);
    delay(100);

    Quando eseguo il codice ottengo il seguente errore:
    HTTP/1.0 411 Length Required
    Content-Type: text/

    Di sicuro è legato alla sintassi di invio dati, sai dirmi qualcosa in merito?

    Grazie

    Risposta
  • 27/11/2013 in 18:51
    Permalink

    Io con il nuovo form non riesco a caricare i dati. come posso fare?ho provato a modificare il codice così:

    [quote]
    [color=#7E7E7E] created 2011[/color]
    [color=#7E7E7E] [/color]
    [color=#7E7E7E]This example code is in the public domain.[/color]
    [color=#7E7E7E] [/color]
    [color=#7E7E7E]http://www.open-electronics.org[/color]
    [color=#7E7E7E] [/color]
    [color=#7E7E7E] [/color]
    [color=#7E7E7E]http://www.futurashop.it[/color]
    [color=#7E7E7E] [/color]
    [color=#7E7E7E]https://docs.google.com/forms/d/1CDTuVKS6argJ6ue0qWHwldtEdT9YwiCFghRQ6rz2t7g/viewform &ifq&entry.0.single=Boris&entry.2.single=Landoni&submit=Submit[/color]
    [color=#7E7E7E]Original from http://goodsite.cocolog-nifty.com/uessay/2010/07/arduinogoogle-d.html[/color]
    [color=#7E7E7E]Modified by John Missikos 11/6/11[/color]
    [color=#7E7E7E]Modified by Andrea Fainozzi 30/6/11[/color]
    [color=#7E7E7E]Modified by Boris Landoni 8/7/11[/color]
    [color=#7E7E7E] [/color]
    [color=#7E7E7E]*/[/color]
     
    #include 
    #include 
     
    [color=#CC6600]char[/color] formkey[] = [color=#006699]”1CDTuVKS6argJ6ue0qWHwldtEdT9YwiCFghRQ6rz2t7g”[/color]; [color=#7E7E7E]//Replace with your Key[/color]
    [color=#CC6600]byte[/color] mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; [color=#7E7E7E]//Replace with your Ethernet shield MAC[/color]
    [color=#CC6600]byte[/color] ip[] = { 192,168,50,177}; [color=#7E7E7E]//The Arduino device IP address[/color]
    [color=#CC6600]byte[/color] subnet[] = { 255,255,255,0};
    [color=#CC6600]byte[/color] gateway[] = { 192,168,1,1};
    [color=#CC6600]byte[/color] server[] = {173,194,35,7}; [color=#7E7E7E]// Google IP[/color]
    [color=#CC6600]EthernetClient[/color] client; [color=#7E7E7E]//(server, 80);[/color]
     
    [color=#CC6600]void[/color] [color=#CC6600][b]setup[/b][/color]()
    {
      [color=#7E7E7E]/*if (Ethernet.begin(mac) == 0) {[/color]
    [color=#7E7E7E]    Serial.println(“Failed to configure Ethernet using DHCP”);[/color]
    [color=#7E7E7E]    // no point in carrying on, so do nothing forevermore:[/color]
    [color=#7E7E7E]    // try to congifure using IP address instead of DHCP:[/color]
    [color=#7E7E7E]    Ethernet.begin(mac, ip);[/color]
    [color=#7E7E7E]  }[/color]
    [color=#7E7E7E]  */[/color]
      [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]begin[/color](9600);
      [color=#CC6600]Ethernet[/color].[color=#CC6600]begin[/color](mac, ip, gateway, subnet);
      [color=#CC6600]delay[/color](1000);
      [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]([color=#006699]”connecting…”[/color]);
    }
     
    [color=#CC6600]void[/color] [color=#CC6600][b]loop[/b][/color](){
      [color=#CC6600]String[/color] data;
      data+=[color=#006699]””[/color];
      data+=[color=#006699]”entry.579615499=”[/color];
      data+=[color=#CC6600]analogRead[/color](A0);
      data+=[color=#006699]”&entry.1243639588=”[/color];
      data+=[color=#CC6600]analogRead[/color](A1);
      data+=[color=#006699]”&submit=Submit”[/color];
     
      [color=#CC6600]if[/color] (client.[color=#CC6600]connect[/color](server, 80)) {
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]([color=#006699]”connected”[/color]);
        
        [color=#7E7E7E]//client.println(“GET /forms/d/1CDTuVKS6argJ6ue0qWHwldtEdT9YwiCFghRQ6rz2t7g/formResponse?entry.579615499=DATA&entry.1243639588=Data1&submit=Submit HTTP/1.0”);[/color]
        [color=#7E7E7E]//client.println(“Host: docs.google.com”);[/color]
        [color=#7E7E7E]//client.println();[/color]
        client.[color=#CC6600]print[/color]([color=#006699]”POST /forms/d/”[/color]);
        client.[color=#CC6600]print[/color](formkey);
        [color=#7E7E7E]//client.print(“&submit=Submit HTTP/1.1”);[/color]
        client.[color=#CC6600]println[/color]([color=#006699]”/formResponse? HTTP/1.1″[/color]);
        client.[color=#CC6600]println[/color]([color=#006699]”Host: docs.google.com”[/color]);
        client.[color=#CC6600]println[/color]([color=#006699]”Content-Type: application/x-www-form-urlencoded”[/color]);
        client.[color=#CC6600]println[/color]([color=#006699]”Connection: close”[/color]);
        client.[color=#CC6600]print[/color]([color=#006699]”Content-Length: “[/color]);
        client.[color=#CC6600]println[/color](data.[color=#CC6600]length[/color]());
        client.[color=#CC6600]println[/color]();
        client.[color=#CC6600]print[/color](data);
        client.[color=#CC6600]println[/color]();
           
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]print[/color]([color=#006699]”POST /forms/d/”[/color]);
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]print[/color](formkey);
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]([color=#006699]”/formResponse? HTTP/1.1″[/color]);
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]([color=#006699]”Host: docs.google.com”[/color]);
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]([color=#006699]”Content-Type: application/x-www-form-urlencoded”[/color]);
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]([color=#006699]”Connection: close”[/color]);
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]print[/color]([color=#006699]”Content-Length: “[/color]);
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color](data.[color=#CC6600]length[/color]());
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]();
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]print[/color](data);
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]();
     
      }
      [color=#CC6600]delay[/color](1000);
      [color=#CC6600]if[/color] (!client.[color=#CC6600]connected[/color]()) {
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]();
        [color=#CC6600][b]Serial[/b][/color].[color=#CC6600]println[/color]([color=#006699]”disconnecting.”[/color]);
        client.[color=#CC6600]stop[/color]();
      }
     
      [color=#CC6600]delay[/color](10000);
     
    }

    [/quote]

    Risposta
  • 27/11/2013 in 18:53
    Permalink

    /* Arduino to Google Docs
     created 2011
     
    This example code is in the public domain.
     
    http://www.open-electronics.org
     
     
    http://www.futurashop.it
     
    https://docs.google.com/forms/d/1CDTuVKS6argJ6ue0qWHwldtEdT9YwiCFghRQ6rz2t7g/viewform &ifq&entry.0.single=Boris&entry.2.single=Landoni&submit=Submit
    Original from http://goodsite.cocolog-nifty.com/uessay/2010/07/arduinogoogle-d.html
    Modified by John Missikos 11/6/11
    Modified by Andrea Fainozzi 30/6/11
    Modified by Boris Landoni 8/7/11
     
    */
     
    #include <Ethernet.h>
    #include <SPI.h>
     
    char formkey[] = “1CDTuVKS6argJ6ue0qWHwldtEdT9YwiCFghRQ6rz2t7g”; //Replace with your Key
    byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; //Replace with your Ethernet shield MAC
    byte ip[] = { 192,168,50,177}; //The Arduino device IP address
    byte subnet[] = { 255,255,255,0};
    byte gateway[] = { 192,168,1,1};
    byte server[] = {173,194,35,7}; // Google IP
    EthernetClient client; //(server, 80);
     
    void setup()
    {
      /*if (Ethernet.begin(mac) == 0) {
        Serial.println(“Failed to configure Ethernet using DHCP”);
        // no point in carrying on, so do nothing forevermore:
        // try to congifure using IP address instead of DHCP:
        Ethernet.begin(mac, ip);
      }
      */
      Serial.begin(9600);
      Ethernet.begin(mac, ip, gateway, subnet);
      delay(1000);
      Serial.println(“connecting…”);
    }
     
    void loop(){
      String data;
      data+=””;
      data+=”entry.579615499=”;
      data+=analogRead(A0);
      data+=”&entry.1243639588=”;
      data+=analogRead(A1);
      data+=”&submit=Submit”;
     
      if (client.connect(server, 80)) {
        Serial.println(“connected”);
        
        //client.println(“GET /forms/d/1CDTuVKS6argJ6ue0qWHwldtEdT9YwiCFghRQ6rz2t7g/formResponse?entry.579615499=DATA&entry.1243639588=Data1&submit=Submit HTTP/1.0”);
        //client.println(“Host: docs.google.com”);
        //client.println();
        client.print(“POST /forms/d/”);
        client.print(formkey);
        //client.print(“&submit=Submit HTTP/1.1”);
        client.println(“/formResponse? HTTP/1.1”);
        client.println(“Host: docs.google.com”);
        client.println(“Content-Type: application/x-www-form-urlencoded”);
        client.println(“Connection: close”);
        client.print(“Content-Length: “);
        client.println(data.length());
        client.println();
        client.print(data);
        client.println();
           
        Serial.print(“POST /forms/d/”);
        Serial.print(formkey);
        Serial.println(“/formResponse? HTTP/1.1”);
        Serial.println(“Host: docs.google.com”);
        Serial.println(“Content-Type: application/x-www-form-urlencoded”);
        Serial.println(“Connection: close”);
        Serial.print(“Content-Length: “);
        Serial.println(data.length());
        Serial.println();
        Serial.print(data);
        Serial.println();
     
      }
      delay(1000);
      if (!client.connected()) {
        Serial.println();
        Serial.println(“disconnecting.”);
        client.stop();
      }
     
      delay(10000);
     
    }

    Risposta
  • 21/02/2014 in 17:15
    Permalink

    salve vorrei effettuare la connessione a google drive mediante lo shild wifi della futura elettronica. qualcuno di voi ha dei suggerimenti in merito. Ho provato a modificare il tutto ma non sono riuscito ad ottenere il risultato desiderato dal momento che il metodo print non e presente nella libreria MWIFi.
    grazie in anticipo

    Risposta
  • 23/02/2014 in 11:28
    Permalink

    Credo, ma non ho la conoscenza per averne certezza che il problema sia la connessione https, e Arduino non la supporta, sicuramente con lo Yun adeguando il codice è fattibile, hai provato a guardare Temboo ?

    Risposta
  • 08/10/2015 in 17:27
    Permalink

    buongiorno a tutti.
    vorrei inserire nel mio modulo creato con google un numero seriale progressivo ad ogni submit. si tratta di una scheda ricevimento campioni, quindi vorrei che questo numero venisse confermato e riportato nei risultati una volta che la persona ha spedito il modulo compilato.
    grazie

    Risposta
  • 17/12/2015 in 23:13
    Permalink

    iuuuu mi puoi aiutare? arduino stampa sulla seriale url che se metto nel browser scrive sul foglio ma da solo non riesce a scrivere.Ho cambiato ip
    char server[] = “173,194,201,99”; // Google IP poi

    l’ url sembra cambiata

    https://drive.google.com/forms/d/1M-6v_7Y9FkbVazYgTLNCp6S_glayLtsK1koqhzRW54c/viewform?formkey=1M-6v_7Y9FkbVazYgTLNCp6S_glayLtsK1koqhzRW54c&submit=Submit&ifq&entry.537905444=22:4:49&entry.1818608997=5509b3d74ca0f61a7c9ced62&entry.751126465=0

    Risposta
  • 12/01/2016 in 09:52
    Permalink

    non funziona piu!Arduino non puo piu scrivere li!bisogna scrivere in un db mysql importare in foglio con google app script

    Risposta

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ricevi un avviso se ci sono nuovi commenti. Oppure iscriviti senza commentare.