Server/Client Problem...

Was meinst damit ?

Tragen wir mal Deinen loop() zeitlich zusammen:

  sensors.requestTemperatures();
  float temp1 = sensors.getTempC(sensor1);                      // Temperatur von Sensor 1 ermitteln
  float temp2 = sensors.getTempC(sensor2);                      // Temperatur von Sensor 2 ermitteln

Zwei OneWire-Temperatursensoren abrufen: ca. 1.5s

  Daten_senden(temp1, temp2);                                 // Temperaturdaten an Server übertragen

Je nach Reaktionsgeschwindigkeit des Servers unterschiedlich, aber schon die serielle Ausgabe braucht ca. 0.2s, also dürften 0.5s nicht falsch liegen.

  delay(700);

Weitere 0.7s

    delay(1000);

Mindestens eine weitere Sekunde.

long Interval  = 5;                                        // Upload-Interval in Minuten
  delay(Interval);

Hier stimmt zum Glück der Kommentar nicht, sonst wäre spätestens hier Dein Code gestorben

Dann wird getestet, ob eine Verbindung reingekommen ist, die es zu behandeln gilt. Insgesamt gehen fast 4 Sekunden verloren, bevor ein neuer Test ansteht. Mit kleinen Änderungen und dem entfernen sämtlicher unnötiger delay()s ist das schnell auf wenige Millisekunde runter.

Aber wie kommt Ihr darauf das der Ram voll läuft ?
Woran sieht man das ?

Du verwendest über 700 Zeichen konstante Strings, die Du einfach durch das F()-Makro in den Programm-Speicher (Flash) verschieben kannst. Ansonsten werden die 700 Bytes konstant im RAM belegt. Bei 2kB Gesamtspeicher darf man hier durchaus von Speicherverschwendung ausgehen.

Dann verwendest Du die String-Klasse, die erstens den Speicher fragmentiert und zweiten an einem Memory-Leak bei der Freigabe von dynamisch alloziertem Speicher leidet. Beides zusammen führt zum dringenden Rat: Verwende die ganze String-Klasse nie in einem Sketch, der über ein Hello-World-Beispiel hinausgeht.