Forum: Projekte & Code ESP32 und Google Tabellen (Sheets), Script und Sketch


von Mischa N. (mischaka)


Angehängte Dateien:

Lesenswert?

Beispiel für direkte Messwert Übertragung von ESP32 in  Google Tabellen 
(Sheets)

Bei dem ESP8266 gab es die Möglichkeit mit Hilfe externe Bibliothek 
HTTPSRedirect mit Google über SSL zu kommunizieren. ESP32 hat schon 
passende Mittel dabei.  WiFiClientSecure.h ermöglicht eine HTTPS  SSL 
Verbindung direkt zum Google Tabellen (Sheets) herzustellen. Ok nicht 
ganz so direkt. Dazwischen soll noch ein Google Apps Script verwendet 
werden. Google Script kann von überall gestartet werden und in der GET 
(oder auch POST) Anfrage werden die Daten von ESP32 übertragen und von 
Google Script in die Google Tabelle eingetragen. Vorteil von dieser 
Methode ist, dass keine zusätzlichen Service verwendet werden. Kein 
IFTTT oder PushingBox ist nötig. Vorgehensweise:

Google Tabelle erzeugen (Tabellen ID Merken)
Google Apps Script (JavaScript) anlegen und als Web-App einrichten
In ESP32 Beispiel Sketch  das Web-App-URL eintragen.
1
var id = '11DaCrAGtFplNqW5VJOsvTELR2oHoyJ9bhiCbrfwertz';  // ID der Tabelle
2
3
function doGet(e) {                 // GET Parameter Empfangen
4
5
  if (e.parameter == undefined) {   // Wenn keine Parametr über GET Empfangen
6
    result = 'Parameter fehlen';
7
  }
8
  else {
9
    var sheet = SpreadsheetApp.openById(id).getActiveSheet(); // Zuweisung des Tabellendokuments und AktiverTabelle einer Variable
10
    var newRow = sheet.getLastRow() + 1;  // Letzte beschriebene Zeile + 1 
11
    var rowData = [];        // Array anlegen
12
    rowData[0] = new Date(); // Timestamp in Spalte A Erste Elemet des Arrays rowData
13
    
14
    for (var param in e.parameter) {    // Alle empfangenen Parametr Durchgenen
15
      var value = e.parameter[param];   // Werte einlesen
16
      rowData[parseInt(param)] = value; // Werte in Array Speichern. Position bestimmt die Zahl im Parametr
17
    } 
18
    
19
    // Lege neue Zeile an in der Länge des Arrays mit Werten
20
    var newRange = sheet.getRange(newRow, 1, 1, rowData.length);
21
    newRange.setValues([rowData]);    // Zeile  mit Daten aus Array befüllen
22
    var result =  'Ok'// Text des Anworts
23
  }
24
25
  // Antwort als Text an Browser senden
26
  return ContentService.createTextOutput(result);
27
}

Anleitung: Google Script als Web-App einrichten 
http://esp32-server.de/google-sheets/#Script

: Bearbeitet durch User
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.