Entdecken Sie eBooks
Kategorien
Entdecken Sie Hörbücher
Kategorien
Entdecken Sie Zeitschriften
Kategorien
Entdecken Sie Dokumente
Kategorien
Scalyr DOWNLOAD
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:
der Google Script Empfängt Daten per Get-Anfrage und platziert die Werte in die nächste freie Zeile. Damit der Script auf Ihre
Google Tabelle den Zugri erhält, fügen sie in die Zeile 1 des Google Scripts die ID der Google Tabelle. ID der Tabelle
entnehmen Sie dem URL der Google Tabelle.
In die erste Spalte (A) wird automatisch Timestamp eingetragen. Weitere Zellen werden mit den Daten gefüllt. Die Zahl mit
der das Argument der GET-Anfrage anfängt, bestimmt die Spalte wo der Wert eingetragen wird. „2_Spalte=200“ Spalte 2 (C)
wird mit dem Wert „200“ beschrieben. Anzahl der Argumente-Wert Paare ist nicht begrenzt. Wichtig ist das Argument mit
einer Zahl anfängt, der Text dahinter kann beliebig sein. Bei erfolgreicher Ausführung des Google Scripts erscheint im
Browser ein „Ok“ als Text.
Der Sketch erzeugt HTTPS Verbindung mit script.google.com und sendet eine GET Anfrage an Web-App (Google Script).
Diese Anfrage sieht so aus:
„https://script.google.com/macros/s/AKrycby0T0QaLhhdlDRiBNyYSWYwq9bNM-Y17YrzFVeZ8V6im9FL42c/exec?
1_Spalte=100&2_Spalte=200&3_Spalte=300&4_Spalte=400&5_Spalte=500&6_Spalte=600“
Das URL bis zum Fragezeichen erhalten Sie beim Anlegen des Google Scripts als Web-App. Text Nach dem Fragezeichen sind
Die Daten die zum Google Script übertragen werden. Google App Script antwortet erst mit einem Redirect. Und auf der
umgeleiteten Webseite be ndet sich der Antwort des Google App Scripts.
Das Beispielprogramm sendet die Werte 100,200,300,400,500,600 zum Google Sheet beim jeden Start. Wenn das Google
Script Web-App mit einem „Ok“ antwortet Geht die Eingebaute LED an. Das Beispielprogramm sollte die Grundfunktion
zeigen und als Vorlage für weitere Entwicklungen dienen.
1 #include <WiFiClientSecure.h>
2 #define LED_BUILTIN 22 // LED an ESP32 LOLIN32
3
4 const char* ssid = "Bitte eintragen";
5 const char* password = "Bitte eintragen";
6
7 const char* server = "script.google.com"; // Server URL
8 // google script key
9 const char* key = "AKfycby0T0QaLhodlDRiBNyYSWYwq9bNM-Y17YrzFVeZ8V6im9FL42c";
10
11 WiFiClientSecure client;
12 #define debug true
13
14 boolean SendeZumGoogle(String URL)
15 {
16 String movedURL;
17 String line;
18
19
if (debug)Serial.println("Verbinde zum script.google.com");
esp32-server.de/google-sheets/ 2/8
6/12/2020 ESP32, Google Tabellen (Sheets) und Google Apps Script
20 if (!client.connect(server, 443))
21 {
22 if (debug) Serial.println("Verbindung fehlgeschlagen!");
23 return false;
24 }
25
26 if (debug) Serial.println("Verbunden!");
27 // ESP32 Erzeugt HTTPS Anfrage an Google sheets
28 client.println("GET " + URL);
29 client.println("Host: script.google.com" );
30 client.println("Connection: close");
31 client.println();
32
33 // ESP32 empfängt antwort vom Google sheets
34 while (client.connected()) // ESP32 empfängt Header
35 {
36 line = client.readStringUntil('\n');
37 if (debug) Serial.println(line);
38 if (line == "\r") break; // Ende Des Headers empfangen
39 if (line.indexOf ( "Location" ) >= 0) // Weiterleitung im Header?
40 { // Neue URL merken
41 movedURL = line.substring ( line.indexOf ( ":" ) + 2 ) ;
42 }
43 }
44
45 while (client.connected()) // Google Antwort HTML Zeilenweise Lesen
46 {
47 if (client.available())
48 {
49 line = client.readStringUntil('\r');
50 if (debug) Serial.print(line);
51 }
52 }
53 client.stop();
54
55 movedURL.trim(); // leerzeichen, \n entfernen
56 if (debug) Serial.println("Weiterleitungs URL: \"" + movedURL + "\"");
57
58 if (movedURL.length() < 10) return false; // Weiterleitung nicht da
59
60 if (debug) Serial.println("\n Starte Weiterleitung...");
61 if (!client.connect(server, 443))
62 {
63 if (debug) Serial.println("Weiterleitung fehlgeschlagen!");
64 return false;
65 }
66
67 Serial.println("Verbunden!");
68 // // ESP32 Erzeugt HTTPS Anfrage an Google Tabellen
69 client.println("GET " + movedURL);
70 client.println("Host: script.google.com");
71 client.println("Connection: close");
72 client.println();
73
74 while (client.connected()) // ESP32 empfängt Header
75 {
76 line = client.readStringUntil('\n');
77 if (debug) Serial.println(line);
78 if (line == "\r")break;
79 }
80
81 while (client.connected()) // Google Antwort HTML Zeilenweise Lesen
82 {
83 if (client.available())
84 {
85 line = client.readStringUntil('\r');
86 if (debug) Serial.print(line);
87 }
88 }
89 client.stop();
90 if (line == "Ok") return true;
91 }
92
93
94 void setup()
95 {
96 pinMode(LED_BUILTIN, OUTPUT);
97 digitalWrite(LED_BUILTIN, 1);
98 Serial.begin(115200);
99 Serial.println("Warte auf Verbindung");
100 WiFi.begin(ssid, password);
101 while (WiFi.status() != WL_CONNECTED)
102 {
103 delay(500);
104 Serial.print(".");
105 }
106 Serial.println("");
107 Serial.print("IP Addresse: ");
108 Serial.println(WiFi.localIP());
109 String URL="https://script.google.com/macros/s/";
110 URL += key;
111 URL += "/exec?";
112 URL += "1_Spalte=100&2_Spalte=200&3_Spalte=300&4_Spalte=400&5_Spalte=500&6_Spalte=600";
113 Serial.println(URL);
114 if (SendeZumGoogle(URL)) digitalWrite(LED_BUILTIN, 0);
115
116
}
117 void loop()
esp32-server.de/google-sheets/ 3/8
6/12/2020 ESP32, Google Tabellen (Sheets) und Google Apps Script
118 {
119 delay(1);
120 }
Damit der Google Script auf die Tabelle Zugri erhält, muss dem Script die ID des spreadsheets mitgeteilt werden. Wechseln
Sie zu Google Tabelle und kopieren Sie aus dem URL die ID.
https://docs.google.com/spreadsheets/d/17k0fEFhPdL9QlmfLF9H8UD0u3v9eUQWsWoWqZe35CKc/edit#gid=0
Fügen Sie die ID in das Script (Zeile 1). Speichern Sie das Script „Strg+s“
Wechseln Sie zum Menü Verö entlichen => Als Web-App einrichten
esp32-server.de/google-sheets/ 4/8
6/12/2020 ESP32, Google Tabellen (Sheets) und Google Apps Script
esp32-server.de/google-sheets/ 5/8
6/12/2020 ESP32, Google Tabellen (Sheets) und Google Apps Script
Jetzt kommt Meldung „Autorisierung erforderlich“ Melden Sie sich mit ihrem Google Konto.
Trotz dem, werden Sie nicht weiter zum Script zugelassen.
esp32-server.de/google-sheets/ 6/8
6/12/2020 ESP32, Google Tabellen (Sheets) und Google Apps Script
Kopieren Sie die Web-App-URL. ID aus dieser URL kommt in ESP32 Sketch in die Zeile 9 (google script key).
Bevor man zu ESP32 greift, sollte erst die Funktionalität des Google Scripts über Browser geprüft werden. Geben Sie das URL
„https://script.google.com/macros/s/_Script_ID_/exec?
1_Spalte=100&2_Spalte=200&3_Spalte=300&4_Spalte=400&5_Spalte=500&6_Spalte=600“ in die Adresszeile Ihres
Browsers(„_Script_ID_“ gegen Ihr Google Script ID austauschen). Es sollte ein „Ok“ erscheinen und Ihre Tabelle bekommt
eine neue Zeile.
Bei Google Tabellen gibt es Möglichkeit, genauso wie beim Excel, ein Diagramm zu erstellen. Dieses Diagramm lässt sich als
Gra k verö entlichen. Ein ö entliches Diagramm kann man in eigene Homepage einbinden.
Ich habe mir Gedanken gemacht wie zeige ich nur die aktuelle Daten und nicht alle in der Tabelle. Passende Anweisungen
sind schnell gefunden:
if(sheet.getLastRow()>20) sheet.deleteRows(2);
Ideen
Personenwaage die das Gewicht an Google sheets sendet. Waage umbauen mit HX711 modul.
Gmail noti er. Wand Anzeigetafel die das Anzahl ungelesene Mails anzeigt.
var ureadMsgsCount = GmailApp.getInboxUnreadCount();
Wand Anzeigetafel die Text des Mails anzeigt, wenn das Betre bestimmte Codewort enthält. Oder von bestimmten
Versender.
Vorde nierte E-Mail über Gmail senden per Tastendruck, Reedkontakt oder Touch. Batteriebetrieben.
esp32-server.de/google-sheets/ 7/8
6/12/2020 ESP32, Google Tabellen (Sheets) und Google Apps Script
esp32-server.de/google-sheets/ 8/8