ESP32 und Google Apps Script

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.");
  }
}

Zwischen dem, was Du im Browser eingibst und dem, was Dein ESP sendet, gibt es Unterschiede.
Sind die beabsichtigt?

Das ist nicht der richtige Link, den möchte ich hier nicht veröffentlichen. Das zwischen https://script.google.com/macros/ und /exec?temperatur22.00 fehlt hier.
Also wie gesagt, nicht beabsichtigt.

Super, vielen Dank dafür. D.h. aber Du hast auf die Schnelle auch keinen Lösungsansatz ?

In Ordnung (IDs oder so brauchen wir ja hier nicht).

Aber es bleibt dann immer noch der Unterschied am Ende:
temperatur22.00
temperatur=22.00

:slight_smile:

Schnell ist relativ.
Du musst https können.
Dazu bedarf es einiger Vorarbeit, die Dir der Browser z.B. abnimmt.

Nein, ich habe keinen Ansatz

Was auf die Schnelle, da ist das Schritt für Schritt recht verständlich, evtl. lässt sich das fürs senden nutzen.