Geschwindigkeitsproblem UNO

  delay(800);

Man muss bei dem Sensor zwar für 12 Bit 750ms warten, aber das kann man auch mit millis() abfragen. Dann blockiert nichts.

Beim DS18B20 kannst du auch die Auflösung runtersetzen. Für 9 Bit (0.5°) braucht man nur 94ms.

Die String Klasse ist auch sehr langsam, da du beim Konkatenieren unnötig Objekte anlegst und wieder zerstörst:
http://forum.arduino.cc/index.php?topic=233883.0
Das Datum formatieren kann man schön mit sprintf() machen:

#include <avr/pgmspace.h>

char dateString[7];
sprintf_P(dateString, PSTR("%02d%02d%02d"), rtc[4], rtc[5], rtc[6]);

strcat() ist auch eine Alternative, aber war bei mir merklich langsamer

Aber dein Hauptproblem wir das Delay von 0,8s sein