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 Commenti

  1. 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?
  2. 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.
  3. 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?
  4. Si mai avuto problemi e in molti lo stanno utilizzando. Credo che il problema sia un altro. http://www.open-electronics.org/how-send-data-from-arduino-to-google-docs-spreadsheet/
  5. 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
  6. 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
  7. Si potrebbe avere una piccola guida, o un aggiornamento di questa, con l'utilizzo dell' utilizzo della ethernet shield + google Drive?
  8. 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.....
    • 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
      • Sono riuscito a trovare le entry che non finiscono con "single", cioè mi ritrovo "entry.1603674163" e "entry.493743991" . Quindi provo a fare il settimo passaggio della guida creando il ling seguente: https://spreadsheets.google.com/formResponse?formkey=1dn4gdaoKgWYcbW3pOkAwlW2cSOMmCy9zaCiUBlxSqpU&ifq&entry.1603674163.single=Boris&entry.493743991.single=Landoni&submit=Submit provo anche con lo stesso link privo delle parole ".single" ma la risposta del browser è sempre "Siamo spiacenti, il file che hai richiesto non esiste" Qualche idea?
        • con questo link invii i dati al foglio, il mio problema è che quando lo faccio fare ad arduino non invia nulla....... https://docs.google.com/forms/d/"TUA KEY "/formResponse?entry.xxxxxxx="TUO VALORE "&submit=Submit sono fermo qui...
  9. 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....
  10. 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....
  11. A me funzione e utilizzo un url di questo tipo. https://docs.google.com/forms/d/xxxxxxxxxx/formResponse?entry.xxxxx=123&entry.xxxxx=123&entry.xxxxx=123&entry.xxxxx=123&entry.xxxxx=123&submit=Invia L'html della pagina inserimento di drive dice tutto quello che serve. Ciao, Gianni
    • 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
        • 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...
          • 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. 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
  13. 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
  14. Ciao, potresti aggiornare lo sketch per Arduino YUN? La riga di comando per l'aggiornamento del documento è cambiata in: https://docs.google.com/forms/d/KEY/formResponse?entry.588250022=AAA&entry.1482796764=BBBB&submit=Submit Grazie mille Ciao
  15. 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]
  16. /* 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);   }
  17. 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
  18. 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 ?
  19. 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
  20. 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
  21. ops questo... https://drive.google.com/forms/d/1M-6v_7Y9FkbVazYgTLNCp6S_glayLtsK1koqhzRW54c/formResponse?formkey=1M-6v_7Y9FkbVazYgTLNCp6S_glayLtsK1koqhzRW54c&submit=Submit&ifq&entry.537905444=22:4:49&entry.1818608997=5509b3d74ca0f61a7c9ced62&entry.751126465=0

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Menu