Lueftersteuerung um den Keller zu trocknen

Für Code musst du diese Tags verwenden:
[.code]
[./code]

Ohne die Punkte. Oder Einfach auf den # Knopf klicken.

Deine Ausgabe auf dem LCD solltest du zumindest teilweise in eine Methode auslagern und die Position auf dem Display und den Inhalt mit Parametern übergeben. Das wird dann wesentlich übersichtlicher. z.B. so ähnlich:

void printLCD(byte x, byte y, char* str)
{
    lcd.setCursor(x,y);
    lcd.print(str);
}

Oder eine PrintTemp Methode die das "°C" dranhängt, da du das mehrmals machst

Double bringt dir hier übrigens keine höhere Präzision als Float. Beide haben auf dem Arduino 4 Byte

String keyString = ""; //?? <--- das ist einfach ein leeres String-Objekt falls dich das noch wundert

Wenn du nur zwei Zustände in einer Variable speichern willst ist int Verschwendung. Da nimmt man bool/boolean. Der nimmt true/false an.

Das kannst du einfach so abfragen:

bool state = false;

void loop()
{
     if(state)    //oder deutlich: if(state == true)
     {
         ...
     }
}

Andersherum:

if(!state)    //oder: if(state == false)
{
}