Hallo zusammen,
zuerst vielen Dank für die Aufnahme hier im Forum.
Zur Sache: Ich möchte gerne verschiedene Kühlschränke und TK Schränke mit einem DS18B20 und einem ESP32 die Temperaturen prüfen und dokumentieren. Nach dem Auslesen sollen die Daten über Google Apps Script in eine tabelle eingetragen werden.
Gebe ich den Link https://script.google.com/macros/MeinLink/exec?temperatur22.00 ein, wird der Datensatz eingetragen. Starte ich das ganze über Arduino dann bekomme ich diesen Fehler:
..Verbunden!
Temperatur: 22.00 °C
Sende Daten an: https://script.google.com/macros/Mein_Link5/exec?temperatur=22.00
Fehler beim Senden der Daten: -1
Hier mein Script
#include <OneWire.h>
#include <DallasTemperature.h>
#include <WiFi.h>
#include <HTTPClient.h>
#define ONE_WIRE_BUS 14 // GPIO 4 für den DS18B20
const char* ssid = "Meine SSID";
const char* password = "Mein PW";
const char* googleScriptUrl = "https://script.google.com/macrosMein Link/exec";
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.print("Verbinde mit WLAN...");
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("Verbunden!");
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
Serial.print("Temperatur: ");
Serial.print(tempC);
Serial.println(" °C");
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = String(googleScriptUrl) + "?temperatur=" + String(tempC);
Serial.print("Sende Daten an: ");
Serial.println(url);
http.begin(url);
http.addHeader("Content-Type", "application/x-www-form-urlencoded"); // Hinzufügen des Headers
int httpResponseCode = http.GET();
if (httpResponseCode > 0) {
Serial.print("Server Antwort: ");
Serial.println(http.getString());
} else {
Serial.print("Fehler beim Senden der Daten: ");
Serial.println(httpResponseCode);
}
http.end();
} else {
Serial.println("Nicht mit WLAN verbunden.");
}
delay(120000); // Warte 120 Sekunden
}
Hier mein Apps Script
function doGet(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Temperaturdaten");
if (!sheet) {
return ContentService.createTextOutput("Fehler: Tabelle nicht gefunden.");
}
var timestamp = new Date();
var temp = e.parameter.temp;
if (temp) {
sheet.appendRow([timestamp, temp]);
return ContentService.createTextOutput("Daten erfolgreich gespeichert.");
} else {
return ContentService.createTextOutput("Fehler: Keine Temperaturdaten erhalten.");
}
}