Startknopf

Hallo strohhirn,
was genau macht denn dein Programm "falsch" oder zumindest unerwartet?
Folgendes fällt mir spontan auf:
Du solltest auf jeden Fall den PushButton entprellen, schau dir dazu mal die Bounce Library an.
Nach dem zweiten Betätigen des Buttons springt das Programm in "programm1", arbeitet es ab und geht dann wieder in die Haupt-loop.
In prgramm1 wird das Relais immer wieder eingeschaltet und nur wenn Sensor3 genau 27 ist wieder abgeschaltet. Hier musst du auf >27 testen.
Was heißt für dich "soll das Programm anhalten"? Anhalten wird das Programm nie, du kannst es höchstens in eine Endlosscheife zwingen, das ist aber sehr unschöne Programmierung.
else{} macht so ziemlich gar nichts, kannst du auch weglassen.

if (sensors.isConnected(Sensor1)){
  lcd.setCursor(0, 0);
  lcd.print("T1:");
  lcd.print(sensors.getTempC(Sensor1));
  lcd.print("C");
  }else {
  lcd.setCursor(0, 0);
  lcd.print("T1:");
  lcd.print("AUS   ");}

das zweimalige positionieren des Cursors kannst du einmal einsparen, wenn du den Befehl lcd.setCursor vor die if-Abfrage setzt.
Es kann sein, dass die Anzeigen auf dem Display sehr schnell wechseln und du dadurch nichts mehr erkennen kannst. Was spricht dagegen die Anzeige nur alle 500ms zu aktualisieren, Während das Programm in dieser Warteschleife loopt, kannst du den Button Status prüfen.
Soviel erst mal als Gedankenanregung.
Gruß
Reinhard