Arduino Mega fährt bei reset über Setup ohne es auszuführen

Beim Hochfahren entweder durch stromlos schalten, nach Sketch laden oder Resettaste fährt der Mega hoch ohne das Setup auszuführen, die loop wird direkt gestartet. Hab ich da aus versehen irgendwo was verstellt an den Einstellungen ohne es zu wissen?
Hatte das heute Nachmittag schonmal, hat sich aber wieder gelegt, jetzt schon wieder.
Alle Module laufen über 5V Stepupregler, Versorgungsspannung ist 9V Netzteil. Direkt von der Netzteilbuchse Mega zweige ich die 9V ab für den Spannungsregler. Ich nutze nur die 3,3V für DHT22.
Hab gerade getauscht gegen 6V Netzteil, alles wieder gut, danach wieder das vorherige 9V Netzteil, alles wieder OK.
Den Sketch hab ich nicht neu übertragen.
Hat da vielleicht jemand eine Erklärung dafür?
Normalerweise wird doch erst das Setup ausgeführt, und dann die loop.
Die Ausführung des Setup ist mir deshalb wichtig, da dort einige Variablen aus dem Eeprom gelesen werden (Stromausfall absicherung). Ist heute das erste mal aufgetreten, vorher hatte ich das noch nie.
Der Mega ist ein original Arduino, kein Chinakracher.
Dieter

Du irrst!

kaum.

Im Setup werden zb. Funksteckdosen je nach Tageszeit eingeschaltet was auf dem Display beim Setup angezeigt wird. Bei den direkten Starts wird das übersprungen (nicht angezeigt) und direkt die loop gestartet.
Das ist auch daran ersichtlich das die Anzeige die in der loop generiert wird direkt angezeigt wird. Ob die Dosen eingeschaltet sind oder nicht wird auch auf dem Display ausgegeben in der loop. Und die sind aus (obwohl sie eingeschaltet sein sollten), das deckt sich mit dem überspringen des Setup. Mich hat das auch verwundert, da das eigentlich gar nicht sein kann.

Ohne Deinen Sketch kann das keiner beurteilen. So lange, wie Du dabei bist, solltest Du das wissen.

Gruß Tommy

Kannst du haben, hat bisher immer funktioniert, funktioniert auch jetzt. Wie gesagt ist heute das erstemal aufgetreten.

[code]
//Arduino Mega Anschlussbelegung
//5V Spannungsversorgung Module über ext. Spannungsregler.
//3,3V Spannungsversorgung Module über Mega 3,3V Pin
//I2C: SDA Pin 20, SCL Pin 21
//RTC DS3231: I2C VCC 5V
//DHT22 Pin 8 //VCC 3,3V damit geht der DHT22 genauer.
//IR Send: Pin 9 IR ueber Transistor geschaltet. VCC 5V
//IR receive: Pin 2, VCC 5V
//GPS TX an seriell1 Pin 19 VCC 5V
//RC 433Mhz Sender: Pin 44, VCC VIN (9V) hoehere Sendeleistung.
//Arduino Every an Mega seriell2, 16 TX2, 17 RX2, VCC 5V

//Arduino Every, VCC 5V
//RC 433Mhz Empfaenger RXB6, Pin 2, VCC 5V
//Funk Aussentemp. Fuehler Pearl NC-7159-675 (433Mhz)

// Tastenbelegung:
// "*" Uhr stellen Hand
// "#" Schaltpunkte setzen
// "A" Schaltfunktion Klima LG ein / aus
// "B" Klima IR, ein / aus
// "C" Vent RC, ein / aus
// "D" IR Signal rec.
// "0" Schalttemperatur setzen
// "1" GPS Zeit sync. 
// "2" Test Steckdose A, Ein / Aus
// "3" Test Steckdosen B/C/D, Ein / Aus
// "4" Innentemp. min max Speicher anzeigen
// "5" LG aus
// "6" Aussentemp. min max Speicher anzeigen
// "7" Innentempspeicher reset
// "8" Programmversion anzeigen
// "9" Aussentempspeicher reset

//verwendete lib`s:
  #include <Keypad_I2C.h> //https://github.com/joeyoung/arduino_keypads/tree/master/Keypad_I2C
  #include <Wire.h> //kommunikation I2C
  #include "RTClib.h" // DS3231 https://github.com/adafruit/RTClib
  #include <LiquidCrystal_I2C.h> //Display
  #include <IRremote.h> //senden/empfangen von IR-Signalen //analysir.com
  #include <RCSwitch.h> //433MHZ Funk, Achtung RCSwitch.cpp wurden Protokoll 3, 4, 7 angepasst
  #include <DHT.h> //Tempsensor DHT22
  #include <TinyGPS++.h> //GPS Empfaenger
  #include "TimeLib.h" //Um Wochentag aus Datum zu erhalten
  #include "uEEPROMLib.h" //für Zugriff auf RTC Eeprom
     
//Eeprom DS323:1
  uEEPROMLib eeprom(0x57);

//Software serial fuer GPS:
  TinyGPSPlus gps;
  
//Keypad:
  #define I2CADDR 0x38 // I2C Adresse PCF8574 Keypad 0x38, 0x20 für Versuchsschaltung
  #define Rs_pin 0
  #define Rw_pin 1
  #define En_pin 2
  #define BACKLIGHT_PIN 3
  #define D4_pin 4
  #define D5_pin 5
  #define D6_pin 6
  #define D7_pin 7

//LCD 20x4:
  #define lcd_addr 0x27 
  LiquidCrystal_I2C lcd (lcd_addr, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);

//GPS Variablen fuer Time Lib:
  byte Second;
  byte SZ=0; //Winterz. 0, Sommerz. 1                                Eeprom Adr. 3
 
//RTC DS3231:
  RTC_DS3231 rtc;

//Keypad
  const byte numRows = 4; //number of rows on the keypad
  const byte numCols = 4; //number of columns on the keypad

  //keymap defines the key pressed according to the row and columns just as appears on the keypad
  char keymap[numRows][numCols] = {
   { '1', '2', '3', 'A' },
   { '4', '5', '6', 'B' },
   { '7', '8', '9', 'C' },
   { '*', '0', '#', 'D' }
  };
  byte rowPins[numRows] = { 0, 1, 2, 3 }; //Rows 0 to 3 //if you modify your pins you should modify this too
  byte colPins[numCols] = { 4, 5, 6, 7 }; //Columns 0 to 3
  Keypad_I2C myKeypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols, I2CADDR);

//Variablen Zeiteinstellung / Schaltpunkte / Schalttemp.
  int i1, i2, i3, i4;
  char c1, c2, c3, c4;
  char keypressed;

//Schaltpunkte
  byte A_hour = 23; //Schaltpunkt A Stunde ueber # einstellbar
  byte A_minute = 0; //Schaltpunkt A Minute ueber # einstellbar
  byte B_hour = 7; //Schaltpunkt B Stunde ueber # einstellbar
  byte B_minute = 0; //Schaltpunkt B Minute ueber # einstellbar
  byte C_hour = 22; //Schaltpunkt C Stunde ueber # einstellbar
  byte C_minute = 0; //Schaltpunkt C Minute ueber # einstellbar
  byte D_hour = 6; //Schaltpunkt D Stunde, Festzeit
  byte D_minute = 30; //Schaltpunkt D Minute, Festzeit
  byte hourset = 2; //GPS Zeitsetzen, Sommerzeit, Winterzeit
  byte minuteset = 1; //GPS Zeitsetzen, Festzeit
  byte schaltstunde = 0; //  LG wiedereinschalten                             
  byte schaltminute = 0; //  LG wiedereinschalten                              

 
//Variablen
  byte AlarmIsActiveLG = 1; // LG schalten ab Temp.                        Eeprom Adr. 0
  byte LG_onoff = 0; // Hilfsvariable Schaltzustand LG          Eeprom Adr. 1
  byte LG_hilfsvar = 0; // Hilfsvariable für Schaltübergang    Eeprom Adr. 2
  byte irtest = 0; // Hilfsvariable fuer IR Test Taste B              Eeprom Adr. 4
  bool rctest = 0; // Hilfsvariable fuer 433MHz Sendetest Taste C
  byte schalt_temp = 180; // Schalttemperatur fuer LG           Eeprom Adr. 7
  byte temp = 181; // Innentemp fuer Neustart damit Klima nicht direkt einschaltet
  bool steckdose_A = 0; // Hilfsvariable fuer Schalttest Steckdose, Taste 2
  bool steckdose_B_C = 0; // Hilfsvariable fuer Schalttest Steckdose Taste 3
  bool steckdosen = 0; // Anzeige * Steckdosen 1 = an
   
//Sendevariablen Funksteckdosen A - D
  unsigned long A1on  = 8484016;//100000010111010010110000
  unsigned long A2on  = 8791616;//100001100010011001000000
  unsigned long A1off = 8592016;//100000110001101010010000
  unsigned long A2off = 8752416;//100001011000110100100000
  unsigned long B1on  = 8913780;//100010000000001101110100
  unsigned long B2on  = 9108276;//100010101111101100110100
  unsigned long B1off = 8993956;//100010010011110010100100
  unsigned long B2off = 9224468;//100011001100000100010100
  unsigned long C1on  = 8913788;//100010000000001101111100
  unsigned long C2on  = 9108284;//100010101111101100111100
  unsigned long C1off = 8993964;//100010010011110010101100
  unsigned long C2off = 9224476;//100011001100000100011100
  unsigned long D1on  = 8993954;//100010010011110010100010
  unsigned long D2on  = 9224466;//100011001100000100010010
  unsigned long D1off = 8913778;//100010000000001101110010
  unsigned long D2off = 9108274;//100010101111101100110010

//ir receive / send
  IRsend irsend; //Pin 9
  #define maxLen 60 //800
  #define rxPinIR 2 //pin D2
  volatile  unsigned int irBuffer[maxLen]; //stores timings - volatile because changed by ISR
  volatile unsigned int x = 0; //Pointer thru irBuffer - volatile because changed by ISR

//RC Sender/Empfaenger 433Mhz
  RCSwitch mySwitch = RCSwitch();

//Serieller Empfang (433Mhz) der Aussentemp. auf Serial2 von Arduino Every
  unsigned int Atemp = 0;            // Wert Aussentempgeber 0 - 500
  static unsigned int Etemp = 0; // Tempwert für max Abweichung +/- 3°
  static unsigned int Ftemp = 0; // Tempwert für Anzeige
  byte vorz = 4;             // Vorzeichen fuer - Temperatur (2) bei + (4), default 4
  bool gelesen = 0;          // 1 wenn Wert aus Every gelesen
  byte LGoff = 2;          // 4 LG ausschalten vom Ofen
  unsigned int Atempmax = 0;         // min max Speicher aussen "0" -51,2°
  unsigned int Atempmin = 1024;      // min max Speicher innen, Startwert bei Neustart "1024" +51,2°
  unsigned int Itempmax = 0;         // min max Speicher "0"
  unsigned int Itempmin = 400;       // min max Speicher, Startwert bei Neustart "400"
  
//Temp sensor DHT22
  #define DHTPIN 8
  #define DHTTYPE DHT22
  DHT dht(DHTPIN, DHTTYPE);
  float t;
  
//Aktualisierung der Innentemp.
  unsigned long previousMillis = 0;
  const long interval = 30000; //alle 30sec.
  
void setup() {
   Serial.begin(115200); // nicht langsamer wegen IR Signal senden
   Serial1.begin(9600); // GPS
   Serial2.begin(9600); // Arduino Mini Pro
   myKeypad.begin(); // Tastatur
   lcd.begin(20, 4); // LCD
   lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
   lcd.setBacklight(HIGH);
   lcd.home();
   rtc.begin();
   mySwitch.enableTransmit(44); //RC Senden
   pinMode(18, INPUT); //RC Empfaenger ??
   dht.begin(); //Temperaturfuehler
   attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//set up ISR for receiving IR signal
   
//Eeprom abfragen nach Stromausfall / Neustart:
    AlarmIsActiveLG = (eeprom.eeprom_read(0));
    LG_onoff = (eeprom.eeprom_read(1));
    LG_hilfsvar = (eeprom.eeprom_read(2));
    irtest = (eeprom.eeprom_read(4));
    SZ = (eeprom.eeprom_read(3));
    schalt_temp = (eeprom.eeprom_read(7));
    
// Steckdosen einschalten bzw. ausschalten nach Neustart / Stromausfall:   
     DateTime jetzt = rtc.now(); //Zeitaktualisieren
  if (jetzt.hour() >= D_hour && jetzt.minute() >= D_minute && jetzt.hour() < A_hour && jetzt.minute() >= A_minute) {
     mySwitch.setProtocol(7);
     mySwitch.send(A1on, 24); //A1on
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(A2on, 24); //A2on
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(B1on, 24); //B1on
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(B2on, 24); //B2on
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(C1on, 24); //C1on
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(C2on, 24); //C2on
     steckdosen = 1;
     lcd.setCursor(0, 3);
     lcd.print("Steckdosen ein      ");
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
    }     

// Steckdosen ausschalten
 if (jetzt.hour() == A_hour && jetzt.minute() >= A_minute || 
     jetzt.hour() >= 0 && jetzt.minute() >= 0 && jetzt.hour() < D_hour && jetzt.minute() >= 0) {
     mySwitch.setProtocol(7);
     mySwitch.send(A1off, 24); //A1off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(A2off, 24); //A2off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(B1off, 24); //B1off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(B2off, 24); //B2off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(C1off, 24); //C1off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(C2off, 24); //C2off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(D1off, 24); //D1off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(D2off, 24); //D2off
     steckdosen = 0;
     lcd.setCursor(0, 3);
     lcd.print("Steckdosen aus      ");
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
    }
// Every reset:
     pinMode(6, OUTPUT); // Pin 6 Mega, für Every reset
     digitalWrite(6, HIGH);
     delay(200);
     digitalWrite(6, LOW);
 }

void loop() {
//Abfrage Tastatur:
  while (keypressed == NO_KEY) { //As long as no key is pressed we keep showing the date and time
     keypressed = myKeypad.getKey();

//Abfrage RTC-Zeit:
     //myRTC.updateTime(); //Zeitaktualisieren     
     DateTime jetzt = rtc.now();

//Innentempfuehlerabfrage:
     float t = dht.readTemperature();
  if ((round(t*10)) > 0 && (round(t*10)) <= 500){
      temp = (round(t*10));
     }

//Signal von Mini Pro von Aussentempfuehler:
     byte Atemp1 = 0;
     byte Atemp2 = 0;
     unsigned int Btemp = 0;
     gelesen = 0;
  if (Serial2.available() > 0) { 
     Atemp1=(Serial2.read()); // Tempbyte 1 
     Atemp2=(Serial2.read()); // Tempbyte 2
     vorz=(Serial2.read()); // 2 = minus, 4 = plus
     if ((Serial2.read()) == 4 && LG_onoff == 1){
     LGoff=4; // wenn LGoff = 4 Klima ausschalten
    }
//absicherung das Atemp nicht größer +/- 50° ist    
      Btemp = int(Atemp1 << 8) + int(Atemp2);
  if (Btemp <= 500 && vorz == 4){ 
      Atemp = Btemp;
      gelesen = 1;
   }
   if (Btemp <= 500 && vorz == 2){ // bei - Temp +1 da sonst 0,1° weniger angezeigt wird.
      Atemp = (Btemp+1);
      gelesen = 1;
   }
  }

//Schaltpunktabfragen:

//Klima einschalten wenn Temp. unter schalt_temp (18°C)
   if (AlarmIsActiveLG == 1 && LG_onoff == 0 && temp < schalt_temp) {
      LG_onoff = 1;
      eeprom.eeprom_write(1, 1);
      LGoff = 2;
      ONsenden(); //send AC signal #ON @ 38kHz von SD
      delay(1000);
      ONsenden(); //send AC signal #ON @ 38kHz von SD
     }

//Klima ausschalten 7:00 und AlarmIsActiveLG aus damit Ofen Zeit hat zu heizen.
   if (AlarmIsActiveLG == 1 && LG_onoff == 1 && jetzt.hour() == B_hour && jetzt.minute() == B_minute) {
      LG_onoff = 0;
      eeprom.eeprom_write(1, 0);
      LG_hilfsvar = 1;
      eeprom.eeprom_write(2, 1);
      AlarmIsActiveLG = 0;
      eeprom.eeprom_write(0, 0);
      OFFsenden(); //send AC signal #Off @ 38kHz von SD
      delay(1000);
      OFFsenden(); //send AC signal #Off @ 38kHz von SD
   }

 //Klima ausschalten wenn LG_onoff 1 und LGoff vom Ofen 4
   if (LGoff == 4 && LG_onoff == 1 && AlarmIsActiveLG == 1) {
      irtest = 0; //Hilfsvariable für Taste B
      eeprom.eeprom_write(4, 0);
      LG_onoff = 0;
      eeprom.eeprom_write(1, 0);
      LGoff = 2;
      AlarmIsActiveLG = 0;
      eeprom.eeprom_write(0, 0);
      LG_hilfsvar = 1;
      eeprom.eeprom_write(2, 1);
      schaltstunde = (jetzt.hour()+1);
      schaltminute = jetzt.minute();
      OFFsenden(); //send AC signal #Off @ 38kHz von SD
      delay(1000);
      OFFsenden(); //send AC signal #Off @ 38kHz von SD
     }

//AlarmIsActiveLG wieder ein 1h nach LG ausschalten
   if (AlarmIsActiveLG == 0 && LG_hilfsvar == 1 && jetzt.hour() >= (B_hour + 1) && jetzt.minute() == B_minute ||
      AlarmIsActiveLG == 0 && LG_hilfsvar == 1 && jetzt.hour() == schaltstunde && jetzt.minute() == schaltminute) {
      AlarmIsActiveLG = 1;
      eeprom.eeprom_write(0, 1);
      LG_hilfsvar = 0;
      eeprom.eeprom_write(2, 0);
   }

//Funksteckdosen A,B,C einschalten.

   if (jetzt.hour() == D_hour && jetzt.minute() == D_minute && jetzt.second() == 0) {
      mySwitch.setProtocol(7);
      mySwitch.send(A1on, 24); //A1on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(A2on, 24); //A2on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B1on, 24); //B1on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B2on, 24); //B2on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C1on, 24); //C1on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C2on, 24); //C2on
      steckdosen = 1;
    } 

//Funksteckdose A,B,C,D ausschalten.

   if (jetzt.hour() == A_hour && jetzt.minute() == A_minute && jetzt.second() == 0) {
      mySwitch.setProtocol(7);
      mySwitch.send(A1off, 24); //A1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(A2off, 24); //A2off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B1off, 24); //B1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B2off, 24); //B2off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C1off, 24); //C1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C2off, 24); //C2off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(D1off, 24); //D1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(D2off, 24); //D2off
      steckdosen = 0;
    }
      
//GPS Zeit setzen:

   if (jetzt.hour() == (hourset+1) && jetzt.minute() == minuteset && jetzt.second() == 1 && SZ == 1) { //Umschaltung SZ/WZ 3:00
       Second = 1;
       gpstime(); //sprung in GPS Zeit Funktion
      }  
   else  
   if (jetzt.hour() == hourset && jetzt.minute() == minuteset && jetzt.second() == 1 && SZ == 0) { //Umschaltung WZ/SZ 2:00
       Second = 1;
       gpstime(); //sprung in GPS Zeit Funktion
      }        
        
// Temperatur Innen/Aussen min/max Speicher:
//Innentemp. Speicher
  if(temp > 0 && temp <= 500){
   if (temp > Itempmax){
    Itempmax=temp;
   }
   if (temp < Itempmin){
    Itempmin=temp;
   }
  }
 
//Aussentemp. Speicher und Erzeugung von Ftemp. abgesichert zur Anzeige:
    unsigned int z = 512;
    unsigned int Ctemp = 0;
//+Bereich
   if (vorz == 4 && gelesen == 1){
    Ctemp = (z+Atemp);
    Etemp = (z+Atemp);
   if (Atempmin == 1024 && gelesen == 1){
    Atempmin = Ctemp;
 }
  if (Atempmax == 0 && gelesen == 1){
    Atempmax = Ctemp;
 }
  if (Ctemp < Atempmin && Ctemp > (Atempmin-30) && Ctemp < (Atempmax+30) && gelesen == 1){ // wenn Abweichung größer 3° Wert verwerfen
    Atempmin = Ctemp;
  }
  if (Ctemp > Atempmax && Ctemp > (Atempmin-30) && Ctemp < (Atempmax+30) && gelesen == 1){ // wenn Abweichung größer 3° Wert verwerfen
    Atempmax = Ctemp;
  }
  if (Ctemp > (Etemp-30) && Ctemp < (Etemp+30) && gelesen == 1){ // wenn Abweichung größer 3° Wert verwerfen
    Ftemp = (Ctemp-z); //abgesichert für Anzeige
  } 
 }
   
// - Bereich
  if (vorz == 2 && gelesen == 1){
    Ctemp = (z-Atemp);
    Etemp = (z-Atemp);
  if (Atempmin == 1024 && gelesen == 1){
    Atempmin = Ctemp;
 }
  if (Atempmax == 0 && gelesen == 1){
    Atempmax = Ctemp;
 }
  if (Ctemp < Atempmin && Ctemp > (Atempmin-30) && Ctemp < (Atempmax+30) && gelesen == 1){ // wenn Abweichung größer 3° Wert verwerfen
    Atempmin = Ctemp;
  }
  if (Ctemp > Atempmax && Ctemp > (Atempmin-30) && Ctemp < (Atempmax+30) && gelesen == 1){ // wenn Abweichung größer 3° Wert verwerfen
    Atempmax = Ctemp;
  }
  if (Ctemp > (Etemp-30) && Ctemp < (Etemp+30) && gelesen == 1){ // wenn Abweichung größer 3° Wert verwerfen
    Ftemp = (z-Ctemp); //abgesichert für Anzeige
  }
 }
  
//LCD Anzeige von Zeit, Temperatur, Schaltpunkte:
    
    static float Dtemp = 0.0;
    Dtemp = Ftemp; //abgesicherter Temp.wert
    static float itemp = 0.0;
    itemp = temp;

//LCD Zeile 1   
//Uhrzeit 
      lcd.setCursor(0, 0);
   if (jetzt.hour() < 10) {
      lcd.setCursor(0, 0);
      lcd.print(" ");
      lcd.setCursor(1, 0);
    }
      lcd.print(jetzt.hour());
   if (((jetzt.second()) % 2) == 0) { //blinkender Doppelpunkt
      lcd.setCursor(2, 0);
      lcd.print(":");
      }
   else {
      lcd.setCursor(2, 0);
      lcd.print(" ");
   }
   if (jetzt.minute() < 10) {
      lcd.setCursor(3, 0);
      lcd.print("0");
    }
      lcd.print(jetzt.minute());
      lcd.setCursor(5, 0);
      lcd.print(" ");
     
//Innentemp.
    unsigned long currentMillis = millis(); 
   if (currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
   if(temp > 0 && temp <= 500){   
   if (temp < 100){
      lcd.setCursor(6, 0);
      lcd.print(" ");
      lcd.setCursor(7, 0);
      lcd.print((itemp/10),1);
   }
   else {
      lcd.setCursor(6, 0);
      lcd.print((itemp/10),1);
   }
  }
 }
      lcd.setCursor(10, 0);
      lcd.print("\337C");
      lcd.setCursor(12, 0);
      lcd.print(" ");
      
//Aussentempanzeige
    
 //Vorzeichen     
   if (vorz == 4 && gelesen == 1) {// +
      lcd.setCursor(13, 0);
      lcd.print(" ");
   }
//+ Bereich
   if (vorz == 4 && gelesen == 1){
    if (Atemp < 100) {
      lcd.setCursor(14, 0);
      lcd.print(" ");
      lcd.setCursor(15, 0);
      lcd.print((Dtemp/10),1);
  }
    else {
      lcd.setCursor(14, 0);
      lcd.print((Dtemp/10),1);
  }
 }
//Vorzeichen     
   if (vorz == 2 && gelesen == 1){// -
    if (Atemp < 100){
    lcd.setCursor(13, 0);
    lcd.print(" -");
    }
   else {
    lcd.setCursor(13, 0);
    lcd.print("-");
   }
  }  
// - Bereich
   if (vorz == 2 && gelesen == 1){
    if (Atemp < 100){
    lcd.setCursor(15, 0);
    lcd.print((Dtemp/10),1);
   }
   else {
    lcd.setCursor(14, 0);
    lcd.print((Dtemp/10),1); 
   }
 }
    lcd.setCursor(18, 0);
    lcd.print("\337C");

//LCD Zeile 2
//Schaltpunkt LG

    lcd.setCursor(0, 1);
    lcd.print("LG");
      
  if (LG_onoff == 1){ //LG_onoff
    lcd.setCursor(2, 1);
    lcd.print(" * ");
     }
  else {
    lcd.setCursor(2, 1);
    lcd.print("   ");
   }
  if (AlarmIsActiveLG == 1)  {
    lcd.setCursor(5, 1);
    lcd.print("ein ab ");
    lcd.print(schalt_temp/10);
    lcd.print("\337C ");
  }
  else {
    lcd.setCursor(5, 1);
    lcd.print("            ");
  }

//Sommer/Winterzeit
   if (SZ == 1){
      lcd.setCursor(18, 1);
      lcd.print("sz");
   }
   else {
      lcd.setCursor(18, 1);
      lcd.print("wz");
   }

//LCD Zeile 3
//Schaltpunkt Steckdosen   
      lcd.setCursor(0, 2);
      lcd.print("A,B,C   ");
      lcd.print(D_hour);
      lcd.print("-");
   if (A_hour < 10) {
      lcd.print("0");
    }
      lcd.print(A_hour);

   if (steckdosen == 1){ //Steckdosen ein
      lcd.setCursor(6, 2);
      lcd.print("*");
     }
     else {// Steckdosen aus
      lcd.setCursor(6, 2);
      lcd.print(" ");  
   }

//LCD Zeile 4 Tag-Datum bzw. Statusanzeige
// Wochentag / Datum
      lcd.setCursor(0, 3);
    switch(jetzt.dayOfTheWeek()) {
      case 0:  lcd.print("S\357ndag ");   break;
      case 1:  lcd.print("Mondag ");   break;
      case 2:  lcd.print("Tisdag ");   break;
      case 3:  lcd.print("Onsdag ");   break;
      case 4:  lcd.print("Thorsdag ");   break;
      case 5:  lcd.print("Fredag ");   break;
      default: lcd.print("L\357rdag ");
   }
      lcd.print(" ");
      lcd.print(jetzt.day());
      lcd.print(".");
      lcd.print(jetzt.month());
      lcd.print(".");
      lcd.print(jetzt.year()-2000);
      lcd.print("   ");
}

//Zeit von Hand setzen:
   if (keypressed == '*') {//As we everytime check the key pressed we only proceed to setup if we press "*"
      Set_Time();
  }

//Alarmzeiten setzen:

  if (keypressed == '#') {
      Alarm_Setup();
  }

//Tastenbelegung weitere Funktionen:

 //Taste "A" LG Klima schalten ein / aus:

  if (keypressed == 'A') {
   if (AlarmIsActiveLG == 1) {
      (AlarmIsActiveLG = 0);
      eeprom.eeprom_write(0, 0);
      lcd.setCursor(0, 3);
      lcd.print("LG aus              ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
  }
  if (keypressed == 'A') {
   if (AlarmIsActiveLG == 0) {
      (AlarmIsActiveLG = 1);
      eeprom.eeprom_write(0, 1);
      lcd.setCursor(0, 3);
      lcd.print("LG ein              ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
  }
    
 //Taste "B" IR Test Klimaansteuerung LG An / Aus:
  if (keypressed == 'B') {
   if (irtest == 0 && LG_onoff == 0) {
      irtest = 1;
      eeprom.eeprom_write(4, 1);
      LG_onoff = 1;
      eeprom.eeprom_write(1, 1);
      lcd.setCursor(0, 3);
      lcd.print("Klima Ein           ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      ONsenden(); //send AC signal #On @ 38kHz aus Eeprom
      keypressed = NO_KEY;
    } 
    else {
    if (irtest == 1 && LG_onoff == 1) {
      irtest = 0;
      eeprom.eeprom_write(4, 0);
      LG_onoff = 0;
      eeprom.eeprom_write(1, 0);
      lcd.setCursor(0, 3);
      lcd.print("Klima Aus           ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      OFFsenden(); //send AC signal #Off @ 38kHz aus Eeprom
      keypressed = NO_KEY;
    }
    }
  }

 //Taste "C" Fan Test Deckenvent An / Aus:

  if (keypressed == 'C') {
   if (rctest == 0) {
      (rctest = 1);
      mySwitch.setProtocol(3); //Protokoll on
      mySwitch.send("11000110001100110001111101000"); //Fan Ein 415654888
      delay(100);
      mySwitch.setProtocol(3); //Protokoll on
      mySwitch.send("11000110001100110001111101000"); //Fan Ein
      lcd.setCursor(0, 3);
      lcd.print("Vent Ein            ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    } else {
      (rctest = 0);
      mySwitch.setProtocol(4); //Protokoll off
      mySwitch.send("11000110001100110001110010001"); //Fan Aus 415654801
      delay(100);
      mySwitch.setProtocol(4); //Protokoll off
      mySwitch.send("11000110001100110001110010001"); //Fan Aus
      lcd.setCursor(0, 3);
      lcd.print("Vent Aus            ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
  }

 //Taste "D" IR-Signal einlesen ON/OFF und in Eeprom speichern:

  if (keypressed == 'D') {
     ONlesen(); //schreibe ir ON und OFF in Eeprom
     keypressed = NO_KEY;
  }

 //Taste "0" Schalt_temp für Klima an:

  if (keypressed == '0') {
     lcd.setCursor(0, 3);
     lcd.print("Schalttemp.   ");
     lcd.setCursor(14, 3);
     lcd.print(schalt_temp);
     lcd.setCursor(16, 3);
     lcd.print("\337C  ");

    char keypressed26 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
  if (keypressed26 != NO_KEY && keypressed26 != '*' && keypressed26 != '#' && keypressed26 != 'A' && keypressed26 != 'B' && keypressed26 != 'C'
     && keypressed26 != 'D') {
     c1 = keypressed26;
     lcd.setCursor(14, 3);
     lcd.print("  ");
     lcd.setCursor(14, 3);
     lcd.print(c1);
    }
    char keypressed27 = myKeypad.waitForKey();
  if (keypressed27 != NO_KEY && keypressed27 != '*' && keypressed27 != '#' && keypressed27 != 'A' && keypressed27 != 'B' && keypressed27 != 'C'
     && keypressed27 != 'D') {
     c2 = keypressed27;
     lcd.setCursor(15, 3);
     lcd.print(c2);
   }

     i1 = (c1 - 48) * 10;
     i2 = c2 - 48;
     schalt_temp = ((i1 + i2)*10);
     eeprom.eeprom_write(7, schalt_temp);
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
     keypressed = NO_KEY;
  }

 // Taste "1" GPS Zeit setzen:
  if (keypressed == '1') {
     Second=1;
     gpstime();
     keypressed = NO_KEY;
   }

 //Taste "2" Funksteckdosentest A An / Aus Hand:

  if (keypressed == '2') {
   if (steckdose_A == 0) {
     (steckdose_A = 1);
     mySwitch.setProtocol(7);
     mySwitch.send(A1on, 24); //A1on
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(A2on, 24); //A2on
     delay(100);
     steckdosen = 1;
     lcd.setCursor(0, 3);
     lcd.print("Steckdose A Ein     ");
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
     keypressed = NO_KEY;
   }
  else {
     (steckdose_A = 0);
     mySwitch.setProtocol(7);
     mySwitch.send(A1off, 24); //A1off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(A2off, 24); //A2off
     steckdosen = 0;
     lcd.setCursor(0, 3);
     lcd.print("Steckdose A Aus     ");
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
     keypressed = NO_KEY;
    }
  }

 //Taste "3" Funksteckdosentest B,C An / Aus Hand:

  if (keypressed == '3') {
   if (steckdose_B_C == 0) {
     (steckdose_B_C = 1);
     mySwitch.setProtocol(7);
     mySwitch.send(B1on, 24); //B1on
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(B2on, 24); //B2on
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(C1on, 24); //C1on
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(C2on, 24); //C2on
     steckdosen = 1;
     lcd.setCursor(0, 3);
     lcd.print("Steckdose B / C Ein ");
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
     keypressed = NO_KEY;
   }
  else {
     (steckdose_B_C = 0);
     mySwitch.setProtocol(7);
     mySwitch.send(B1off, 24); //B1off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(B2off, 24); //B2off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(C1off, 24); //C1off
     delay(100);
     mySwitch.setProtocol(7);
     mySwitch.send(C2off, 24); //C2off
     lcd.setCursor(0, 3);
     lcd.print("Steckdose B / C Aus ");
     steckdosen = 0;
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
     keypressed = NO_KEY;
   }
  }

//Taste "4" Innentemp. Min-Max Speicher anzeigen:
   if (keypressed == '4') {
    float AItempmax=Itempmax;
    float AItempmin=Itempmin;
    lcd.setCursor(0, 3);
    lcd.print("Innen Min / Max     ");
    delay(1000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    lcd.setCursor(2, 3);
    lcd.print((AItempmin/10),1);
    lcd.print("\337C");
    lcd.setCursor(12, 3);
    lcd.print((AItempmax/10),1);
    lcd.print("\337C");
    delay(3000); 
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    keypressed = NO_KEY;
  }

//Taste "5" Klima nur ausschalten und nach 1h LG wieder ein Hand:
  if (keypressed == '5') {
      DateTime jetzt = rtc.now();
      irtest = 0;
      eeprom.eeprom_write(4, 0);
      LG_onoff = 0;
      eeprom.eeprom_write(1, 0);
      LGoff = 2;
      AlarmIsActiveLG = 0;
      eeprom.eeprom_write(0, 0);
      LG_hilfsvar = 1;
      eeprom.eeprom_write(2, 1);
      lcd.setCursor(0, 3);
      lcd.print("Klima Aus           ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      OFFsenden(); //send AC signal #Off @ 38kHz aus Eeprom
      schaltstunde = (jetzt.hour()+1);
      schaltminute = jetzt.minute();
      keypressed = NO_KEY;
  }
  
//Taste "6" Aussentemp. Min-Max Speicher Anzeigen:   
   if (keypressed == '6') {
      float AAtempmax = 0;
      float AAtempmin = 0;
      lcd.setCursor(0, 3);
      lcd.print("Aussen Min / Max    ");
      delay(1000);
   if (Atempmin == 1024 && Atempmax == 0) {
      lcd.setCursor(0, 3);
      lcd.print(" kein Wert gelesen  ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
   }
   else {
   if (Atempmin<512){
      AAtempmin = (512-Atempmin);
   }
   if (Atempmin >= 512){
      AAtempmin = (Atempmin-512);
   }
   if (Atempmax < 512){
      AAtempmax = (512-Atempmax);
   }
   if (Atempmax >= 512){
      AAtempmax = (Atempmax-512);
   }
      lcd.setCursor(0, 3);
      lcd.print("                    ");
   if (Atempmin < 512){
      lcd.setCursor(1, 3);
      lcd.print("-"); 
    }
   if (AAtempmin < 100.0){
      lcd.setCursor(3, 3);
      lcd.print((AAtempmin/10),1);
      lcd.print("\337C");
    }
   if (AAtempmin >= 100.0){
      lcd.setCursor(2, 3);
      lcd.print((AAtempmin/10),1);
      lcd.print("\337C");
    }
   if (Atempmax < 512){
      lcd.setCursor(11, 3);
      lcd.print("-"); 
    }
   if (AAtempmax < 100.0){
      lcd.setCursor(13, 3);
      lcd.print((AAtempmax/10),1);
      lcd.print("\337C");
    }
   if (AAtempmax >= 100.0){
      lcd.setCursor(12, 3);
      lcd.print((AAtempmax/10),1);
      lcd.print("\337C");
    }
      delay(3000); 
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    } 
      keypressed = NO_KEY; 
   }
     
//Taste "7" Innentemp. Speicher reset:   
   if (keypressed == '7') {
      Itempmax = 0;         
      Itempmin = 400;
      lcd.setCursor(0, 3);
      lcd.print("Innentemp. reset    ");
      delay(500); 
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
   }

//Taste "8" Programmversion Anzeigen: 
   if (keypressed == '8') {
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      lcd.setCursor(0, 3);
      const char* filename = __FILE__;
      *strrchr(filename, '.') = '\0';
      lcd.print(strrchr(filename, '\\') + 1);
      delay(3000); 
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
   }

//Taste "9" Aussentemp. Speicher reset:   
   if (keypressed == '9') {
      Atempmax = 0;         
      Atempmin = 1024;
      lcd.setCursor(0, 3);
      lcd.print("Aussentemp. reset   ");
      delay(500); 
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
   }
}

//ende Loop, Beginn Funktionen:

//IR aus Eeprom lesen und senden:
void ONsenden(){
     unsigned int irCode[60] = { 0 };
     byte Code1 = 0;
     byte Code2 = 0;
     unsigned int Code = 0;
     int ONstart=100;
   for (int i = 1; i < 60; i++) {
      Code1 = eeprom.eeprom_read(ONstart);
      ONstart = (ONstart+1);
      Code2 = eeprom.eeprom_read(ONstart);
      ONstart = (ONstart+1);
      Code = int(Code1 << 8) + int(Code2);
      irCode[i] = Code;
   }
     sendRAW_Flash(irCode, 38); //send AC signal #On @ 38kHz}
     lcd.setCursor(0, 3);
     lcd.print("On gesendet         ");
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
}

void OFFsenden(){
     unsigned int irCode[60] = { 0 };
     byte Code1 = 0;
     byte Code2 = 0;
     unsigned int Code = 0;
     int OFFstart=300;
   for (int i = 1; i < 60; i++) {
      Code1 = eeprom.eeprom_read(OFFstart);
      OFFstart = (OFFstart+1);
      Code2 = eeprom.eeprom_read(OFFstart);
      OFFstart = (OFFstart+1);
      Code = int(Code1 << 8) + int(Code2);
      irCode[i] = Code;
   }
     sendRAW_Flash(irCode, 38); //send AC signal #On @ 38kHz}
     lcd.setCursor(0, 3);
     lcd.print("OFF gesendet        ");
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
}

//IR Code senden

void sendRAW_Flash(unsigned int *signalArray, unsigned char carrierFreq) {
    irsend.enableIROut(carrierFreq); //initialise the carrier frequency for each signal to be sent

  for (uint8_t i = 1; i < 60; ++i) {
    if (i & 1) {
      irsend.mark(signalArray[i]);
    } else {
      irsend.space(signalArray[i]);
    }
  }
  irsend.space(1); //make sure IR is turned off at end of signal
}

//ON / OFF rec. und in Eeprom schreiben:

void ONlesen() {
     lcd.setCursor(0, 3);
     lcd.print("On lesen            ");
     delay(5000); // pause 5 secs
  while (x) {
     int ONstart=100; //ab Adresse 100 im Eeprom ON Signal
     detachInterrupt(0);//stop interrupts & capture until finshed here
  for (int i = 1; i < 60; i++) { //now dump the times
     int Impuls = (irBuffer[i] - irBuffer[i - 1]);
     eeprom.eeprom_write(ONstart, byte(Impuls >> 8)); //1.byte schreiben
     ONstart = ONstart+1;
     eeprom.eeprom_write(ONstart, byte(Impuls & 0x00FF)); //2.byte schreiben
     ONstart = ONstart+1;
    }
     x = 0;
     attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//re-enable ISR for receiving IR signal
     lcd.setCursor(0, 3);
     lcd.print("On gelesen          ");
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
     OFFlesen();
  }
}

void OFFlesen() {
     lcd.setCursor(0, 3);
     lcd.print("OFF lesen           ");
     delay(5000); // pause 5 secs
  while (x) { 
     int OFFstart=300; //ab Adresse 300 im Eeprom OFF Signal
     detachInterrupt(0);//stop interrupts & capture until finshed here
  for (int i = 1; i < 60; i++) { //now dump the times
     int Impuls = (irBuffer[i] - irBuffer[i - 1]);
     eeprom.eeprom_write(OFFstart, byte(Impuls >> 8)); //1.byte schreiben
     OFFstart = (OFFstart+1);
     eeprom.eeprom_write(OFFstart, byte(Impuls & 0x00FF)); //2.byte schreiben
     OFFstart = (OFFstart+1);
    }
     x = 0;
     attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//re-enable ISR for receiving IR signal
     lcd.setCursor(0, 3);
     lcd.print("OFF gelesen         ");
     delay(1000);
     lcd.setCursor(0, 3);
     lcd.print("                    ");
  }
}

//IR Signal rec.
void rxIR_Interrupt_Handler() {
  if (x > maxLen) return; //ignore if irBuffer is already full
  irBuffer[x++] = micros(); //just continually record the time-stamp of signal transitions
}

//GPS Zeit mit RTC sync.:
void gpstime() {
       bool sz1 = 0; //fuer Sommerzeit in Jan, Feb, Nov, Dez
       bool sz2 = 0; //fuer in Apr, Mai, Jun, Jul, Aug, Sep
       bool tzHours = 1; //fuer Winterzeit
       byte last_second=0;
       byte Minute;
       byte Hour;
       byte Day;
       byte Month;
       unsigned int Year;
             
       lcd.setCursor(0, 3);
       lcd.print("warte auf GPS Signal");
        
        start:    
  while (Serial1.available() > 0) {
    
     if (gps.encode(Serial1.read())) {
     
     if (gps.time.isValid()) {
      
        Hour = gps.time.hour();
        Minute = gps.time.minute();
        Second = gps.time.second();
      }

     if (gps.date.isValid()) {
        Day = gps.date.day();
        Month = gps.date.month();
        Year = gps.date.year();
     }
          
    if (last_second != gps.time.second()) {
       last_second = gps.time.second();
       setTime(Hour, Minute, Second, Day, Month, Year);
       lcd.setCursor(0, 3);
       lcd.print("                    "); 
       lcd.setCursor(0, 3);
       lcd.print("UTC ");
       if(Hour < 10) {
       lcd.print(" ");
     }
       lcd.print(Hour);
       lcd.print(":");
       if(Minute < 10) {
       lcd.print("0");
     }
       lcd.print(Minute);
       lcd.print(":");
    if (Second < 10) {
       lcd.print("0");
     }
       lcd.print(Second);
       lcd.setCursor(13, 3);
       lcd.print(weekday()-1); // GPS beginnt mit 1, RTC mit 0, deshalb -1
       DateTime jetzt = rtc.now(); //Zeitaktualisieren
     }
    }
  }
 
//Zeit in RTC setzen und Umschaltung Sommer / Winterzeit
   DateTime jetzt = rtc.now();
   if (SZ == 1) {
      tzHours=2;    
   }
   else {
      tzHours = 1;
   }
   if (jetzt.month() < 3 || jetzt.month() > 10) {
      sz1 = 0; //Winterzeit in Jan, Feb, Nov, Dez 
     }
   if (jetzt.month() > 3 && jetzt.month() < 10) {
      sz1 = 1; //Sommerzeit in Apr, Mai, Jun, Jul, Aug, Sep
     }
   if (jetzt.month() == 3 && (jetzt.hour() + 24 * jetzt.day()) >= (1 + tzHours + 24*(31 - (5 * jetzt.year() /4 + 4) % 7)) 
   || 
      jetzt.month() == 10 && (jetzt.hour() + 24 * jetzt.day()) < (1 + tzHours + 24*(31 - (5 * jetzt.year() /4 + 1) % 7)))
   {
      sz2 = 1; //Sommerzeit
     }
   else {
      sz2 = 0; //Winterzeit
     }
   if (sz1 == 1 || sz2 == 1) {
      SZ = 1; //Sommerzeit
      eeprom.eeprom_write(3, 1);
     }
   else {
      SZ = 0; //Winterzeit
      eeprom.eeprom_write(3, 0);
     }
   if (jetzt.second() == 0 && (gps.date.day()) > 0 && gps.date.month() > 0 && gps.date.year() > 0) { // == jetzt.day()
   if (SZ == 1){
      rtc.adjust(DateTime(gps.date.year(), gps.date.month(), gps.date.day(), gps.time.hour() +2, gps.time.minute(), gps.time.second())); // J, M, T, Std, Min, Sek
      }
   else {
      rtc.adjust(DateTime(gps.date.year(), gps.date.month(), gps.date.day(), gps.time.hour() +1, gps.time.minute(), gps.time.second())); // J, M, T, Std, Min, Sek
      }
 }
   else {
      goto start;
   }
 }

//Set Time
void Set_Time() {
     lcd.clear();
     lcd.print("Uhr einstellen");
     delay(1000);
     lcd.clear();
     lcd.print("Jahr");
     char keypressed2 = myKeypad.waitForKey();
   if (keypressed2 != NO_KEY && keypressed2 != '*' && keypressed2 != '#' && keypressed2 != 'A' && keypressed2 != 'B' && keypressed2 != 'C'
     && keypressed2 != 'D') {
     c1 = keypressed2;
     lcd.setCursor(0, 1);
     lcd.print(c1);
    }
     char keypressed3 = myKeypad.waitForKey();
   if (keypressed3 != NO_KEY && keypressed3 != '*' && keypressed3 != '#' && keypressed3 != 'A' && keypressed3 != 'B' && keypressed3 != 'C'
      && keypressed3 != 'D') {
      c2 = keypressed3;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }
    char keypressed4 = myKeypad.waitForKey();
    if (keypressed4 != NO_KEY && keypressed4 != '*' && keypressed4 != '#' && keypressed4 != 'A' && keypressed4 != 'B' && keypressed4 != 'C'
        && keypressed4 != 'D') {
      c3 = keypressed4;
      lcd.setCursor(2, 1);
      lcd.print(c3);
    }
    char keypressed5 = myKeypad.waitForKey();
    if (keypressed5 != NO_KEY && keypressed5 != '*' && keypressed5 != '#' && keypressed5 != 'A' && keypressed5 != 'B' && keypressed5 != 'C'
        && keypressed5 != 'D') {
      c4 = keypressed5;
      lcd.setCursor(3, 1);
      lcd.print(c4);
    }

    i1 = (c1 - 48) * 1000; //the keys pressed are stored into chars I convert them to int then i did some multiplication to get the code as an int of xxxx
    i2 = (c2 - 48) * 100;
    i3 = (c3 - 48) * 10;
    i4 = c4 - 48;
    int N_year = i1 + i2 + i3 + i4;
    delay(500);
    lcd.clear();
    lcd.print("Monat");

    char keypressed6 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    if (keypressed6 != NO_KEY && keypressed6 != '*' && keypressed6 != '#' && keypressed6 != 'A' && keypressed6 != 'B' && keypressed6 != 'C'
        && keypressed6 != 'D') {
      c1 = keypressed6;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed7 = myKeypad.waitForKey();
    if (keypressed7 != NO_KEY && keypressed7 != '*' && keypressed7 != '#' && keypressed7 != 'A' && keypressed7 != 'B' && keypressed7 != 'C'
        && keypressed7 != 'D') {
      c2 = keypressed7;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    int N_month = i1 + i2;
    delay(500);
    lcd.clear();
    lcd.print("Tag");

    char keypressed8 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    if (keypressed8 != NO_KEY && keypressed8 != '*' && keypressed8 != '#' && keypressed8 != 'A' && keypressed8 != 'B' && keypressed8 != 'C'
        && keypressed8 != 'D') {
      c1 = keypressed8;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed9 = myKeypad.waitForKey();
    if (keypressed9 != NO_KEY && keypressed9 != '*' && keypressed9 != '#' && keypressed9 != 'A' && keypressed9 != 'B' && keypressed9 != 'C'
        && keypressed9 != 'D') {
      c2 = keypressed9;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    int N_day = i1 + i2;
    delay(500);
    lcd.clear();
    lcd.print("Stunde");

    char keypressed10 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    if (keypressed10 != NO_KEY && keypressed10 != '*' && keypressed10 != '#' && keypressed10 != 'A' && keypressed10 != 'B' && keypressed10 != 'C'
        && keypressed10 != 'D') {
      c1 = keypressed10;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed11 = myKeypad.waitForKey();
    if (keypressed11 != NO_KEY && keypressed11 != '*' && keypressed11 != '#' && keypressed11 != 'A' && keypressed11 != 'B' && keypressed11 != 'C'
        && keypressed11 != 'D') {
      c2 = keypressed11;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    int N_hour = i1 + i2;
    delay(500);
    lcd.clear();
    lcd.print("Minuten");

    char keypressed12 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    if (keypressed12 != NO_KEY && keypressed12 != '*' && keypressed12 != '#' && keypressed12 != 'A' && keypressed12 != 'B' && keypressed12 != 'C'
        && keypressed12 != 'D') {
      c1 = keypressed12;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed13 = myKeypad.waitForKey();
    if (keypressed13 != NO_KEY && keypressed13 != '*' && keypressed13 != '#' && keypressed13 != 'A' && keypressed13 != 'B' && keypressed13 != 'C'
        && keypressed13 != 'D') {
      c2 = keypressed13;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    int N_minutes = i1 + i2;
    delay(500);
    lcd.clear();

    rtc.adjust(DateTime(N_year, N_month, N_day, N_hour, N_minutes, 01)); // J, M, T, Std, Min, Sek
    keypressed = NO_KEY;
  }

//Alarm Setup:
  void Alarm_Setup(){
    lcd.clear();
    lcd.print("Schaltuhr Einst.");
    delay(500);
    lcd.clear();
    lcd.print("Steckdosen aus");
    char keypressed14 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    if (keypressed14 != NO_KEY && keypressed14 != '*' && keypressed14 != '#' && keypressed14 != 'A' && keypressed14 != 'B' && keypressed14 != 'C'
        && keypressed14 != 'D') {
      c1 = keypressed14;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed15 = myKeypad.waitForKey();
    if (keypressed15 != NO_KEY && keypressed15 != '*' && keypressed15 != '#' && keypressed15 != 'A' && keypressed15 != 'B' && keypressed15 != 'C'
        && keypressed15 != 'D') {
      c2 = keypressed15;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    A_hour = i1 + i2;
    delay(500);
    lcd.clear();
    lcd.print("Steckdosen aus");
    char keypressed16 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    if (keypressed16 != NO_KEY && keypressed16 != '*' && keypressed16 != '#' && keypressed16 != 'A' && keypressed16 != 'B' && keypressed16 != 'C'
        && keypressed16 != 'D') {
      c1 = keypressed16;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed17 = myKeypad.waitForKey();
    if (keypressed17 != NO_KEY && keypressed17 != '*' && keypressed17 != '#' && keypressed17 != 'A' && keypressed17 != 'B' && keypressed17 != 'C'
        && keypressed17 != 'D') {
      c2 = keypressed17;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    A_minute = i1 + i2;

    delay(500);
    lcd.clear();
    lcd.print("LG Aus");

    char keypressed18 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    if (keypressed18 != NO_KEY && keypressed18 != '*' && keypressed18 != '#' && keypressed18 != 'A' && keypressed18 != 'B' && keypressed18 != 'C'
        && keypressed18 != 'D') {
      c1 = keypressed18;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed19 = myKeypad.waitForKey();
    if (keypressed19 != NO_KEY && keypressed19 != '*' && keypressed19 != '#' && keypressed19 != 'A' && keypressed19 != 'B' && keypressed19 != 'C'
        && keypressed19 != 'D') {
      c2 = keypressed19;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    B_hour = i1 + i2;
    delay(500);
    lcd.clear();
    lcd.print("LG Aus");
    char keypressed20 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    if (keypressed20 != NO_KEY && keypressed20 != '*' && keypressed20 != '#' && keypressed20 != 'A' && keypressed20 != 'B' && keypressed20 != 'C'
        && keypressed20 != 'D') {
      c1 = keypressed20;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed21 = myKeypad.waitForKey();
    if (keypressed21 != NO_KEY && keypressed21 != '*' && keypressed21 != '#' && keypressed21 != 'A' && keypressed21 != 'B' && keypressed21 != 'C'
        && keypressed21 != 'D') {
      c2 = keypressed21;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    B_minute = i1 + i2;
    delay(500);
    lcd.clear();
    keypressed = NO_KEY;

    delay(500);
    lcd.clear();
    lcd.print("Fan Aus Stunde");

    char keypressed22 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above

    if (keypressed22 != NO_KEY && keypressed22 != '*' && keypressed22 != '#' && keypressed22 != 'A' && keypressed22 != 'B' && keypressed22 != 'C'
        && keypressed22 != 'D') {
      c1 = keypressed22;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed23 = myKeypad.waitForKey();
    if (keypressed23 != NO_KEY && keypressed23 != '*' && keypressed23 != '#' && keypressed23 != 'A' && keypressed23 != 'B' && keypressed23 != 'C'
        && keypressed23 != 'D') {
      c2 = keypressed23;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    C_hour = i1 + i2;
    delay(500);
    lcd.clear();

    lcd.print("Fan Aus Minuten");
    char keypressed24 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    
    if (keypressed24 != NO_KEY && keypressed24 != '*' && keypressed24 != '#' && keypressed24 != 'A' && keypressed24 != 'B' && keypressed24 != 'C'
        && keypressed24 != 'D') {
      c1 = keypressed24;
      lcd.setCursor(0, 1);
      lcd.print(c1);
    }
    char keypressed25 = myKeypad.waitForKey();
    if (keypressed25 != NO_KEY && keypressed25 != '*' && keypressed25 != '#' && keypressed25 != 'A' && keypressed25 != 'B' && keypressed25 != 'C'
        && keypressed25 != 'D') {
      c2 = keypressed25;
      lcd.setCursor(1, 1);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    C_minute = i1 + i2;
    delay(500);
    lcd.clear();
   keypressed = NO_KEY;
  }
[/code]

Was sagen deine Debug-Ausgaben im Setup auf dem SerMon?

wenn du Debug Ausgaben hast - hattest du auch ein Setup.
wenn du ein Display siehst - hattest du auch ein Setup.

Dann gib doch im Setup einfach mal

Serial.println("Im Setup");

ein.

Gruß Tommy

Hab gerade nochmal übertragen mit debug, und wurde wieder übersprungen, oder Teile nicht ausgeführt:
Debug

In file included from C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:36:0:
C:\Users\volvodidi\Documents\Arduino\libraries\Keypad_I2C/Keypad_I2C.h: In member function 'virtual void Keypad_I2C::pin_mode(byte, byte)':
C:\Users\volvodidi\Documents\Arduino\libraries\Keypad_I2C/Keypad_I2C.h:56:21: warning: unused parameter 'pinNum' [-Wunused-parameter]
  void pin_mode(byte pinNum, byte mode) {}
                     ^~~~~~
C:\Users\volvodidi\Documents\Arduino\libraries\Keypad_I2C/Keypad_I2C.h:56:34: warning: unused parameter 'mode' [-Wunused-parameter]
  void pin_mode(byte pinNum, byte mode) {}
                                  ^~~~
In file included from C:\Users\volvodidi\Documents\Arduino\libraries\Newliquidcrystal_1.3.5/LiquidCrystal_I2C.h:35:0,
                 from C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:39:
C:\Users\volvodidi\Documents\Arduino\libraries\Newliquidcrystal_1.3.5/LCD.h: In function 'void waitUsec(uint16_t)':
C:\Users\volvodidi\Documents\Arduino\libraries\Newliquidcrystal_1.3.5/LCD.h:89:40: warning: unused parameter 'uSec' [-Wunused-parameter]
 inline static void waitUsec ( uint16_t uSec )
                                        ^~~~
C:\Users\volvodidi\Documents\Arduino\libraries\Newliquidcrystal_1.3.5/LCD.h: In member function 'virtual void LCD::setBacklightPin(uint8_t, t_backlighPol)':
C:\Users\volvodidi\Documents\Arduino\libraries\Newliquidcrystal_1.3.5/LCD.h:486:43: warning: unused parameter 'value' [-Wunused-parameter]
    virtual void setBacklightPin ( uint8_t value, t_backlighPol pol ) { };
                                           ^~~~~
C:\Users\volvodidi\Documents\Arduino\libraries\Newliquidcrystal_1.3.5/LCD.h:486:64: warning: unused parameter 'pol' [-Wunused-parameter]
    virtual void setBacklightPin ( uint8_t value, t_backlighPol pol ) { };
                                                                ^~~
C:\Users\volvodidi\Documents\Arduino\libraries\Newliquidcrystal_1.3.5/LCD.h: In member function 'virtual void LCD::setBacklight(uint8_t)':
C:\Users\volvodidi\Documents\Arduino\libraries\Newliquidcrystal_1.3.5/LCD.h:505:40: warning: unused parameter 'value' [-Wunused-parameter]
    virtual void setBacklight ( uint8_t value ) { };
                                        ^~~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino: In function 'void setup()':
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:225:19: warning: comparison is always true due to limited range of data type [-Wtype-limits]
      jetzt.hour() >= 0 && jetzt.minute() >= 0 && jetzt.hour() < D_hour && jetzt.minute() >= 0) {
      ~~~~~~~~~~~~~^~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:225:42: warning: comparison is always true due to limited range of data type [-Wtype-limits]
      jetzt.hour() >= 0 && jetzt.minute() >= 0 && jetzt.hour() < D_hour && jetzt.minute() >= 0) {
                           ~~~~~~~~~~~~~~~^~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:225:90: warning: comparison is always true due to limited range of data type [-Wtype-limits]
      jetzt.hour() >= 0 && jetzt.minute() >= 0 && jetzt.hour() < D_hour && jetzt.minute() >= 0) {
                                                                           ~~~~~~~~~~~~~~~^~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:224:29: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
  if (jetzt.hour() == A_hour && jetzt.minute() >= A_minute ||
      ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino: In function 'void loop()':
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:346:81: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
    if (AlarmIsActiveLG == 0 && LG_hilfsvar == 1 && jetzt.hour() >= (B_hour + 1) && jetzt.minute() == B_minute ||
        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:420:23: warning: comparison is always true due to limited range of data type [-Wtype-limits]
   if(temp > 0 && temp <= 500){
                  ~~~~~^~~~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:510:24: warning: comparison is always true due to limited range of data type [-Wtype-limits]
    if(temp > 0 && temp <= 500){
                   ~~~~~^~~~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino: In function 'void gpstime()':
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1210:17: warning: variable 'jetzt' set but not used [-Wunused-but-set-variable]
        DateTime jetzt = rtc.now(); //Zeitaktualisieren
                 ^~~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1229:64: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    if (jetzt.month() == 3 && (jetzt.hour() + 24 * jetzt.day()) >= (1 + tzHours + 24*(31 - (5 * jetzt.year() /4 + 4) % 7))
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1231:64: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
       jetzt.month() == 10 && (jetzt.hour() + 24 * jetzt.day()) < (1 + tzHours + 24*(31 - (5 * jetzt.year() /4 + 1) % 7)))
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1229:27: warning: suggest parentheses around '&&' within '||' [-Wparentheses]
    if (jetzt.month() == 3 && (jetzt.hour() + 24 * jetzt.day()) >= (1 + tzHours + 24*(31 - (5 * jetzt.year() /4 + 4) % 7))
        ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from C:\Users\volvodidi\Documents\Arduino\libraries\Keypad_I2C\Keypad_I2C.cpp:32:0:
C:\Users\volvodidi\Documents\Arduino\libraries\Keypad_I2C\Keypad_I2C.h: In member function 'virtual void Keypad_I2C::pin_mode(byte, byte)':
C:\Users\volvodidi\Documents\Arduino\libraries\Keypad_I2C\Keypad_I2C.h:56:21: warning: unused parameter 'pinNum' [-Wunused-parameter]
  void pin_mode(byte pinNum, byte mode) {}
                     ^~~~~~
C:\Users\volvodidi\Documents\Arduino\libraries\Keypad_I2C\Keypad_I2C.h:56:34: warning: unused parameter 'mode' [-Wunused-parameter]
  void pin_mode(byte pinNum, byte mode) {}
                                  ^~~~
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp: In function 'int MATCH(int, int)':
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp:55:32: warning: suggest braces around empty body in an 'else' statement [-Wempty-body]
     DBG_PRINTLN(F("?; FAILED"));
                                ^
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp:54:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
   else
   ^~~~
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp:56:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
   return passed;
   ^~~~~~
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp: In function 'int MATCH_MARK(int, int)':
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp:81:32: warning: suggest braces around empty body in an 'else' statement [-Wempty-body]
     DBG_PRINTLN(F("?; FAILED"));
                                ^
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp:80:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
   else
   ^~~~
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp:82:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
   return passed;
   ^~~~~~
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp: In function 'int MATCH_SPACE(int, int)':
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp:107:32: warning: suggest braces around empty body in an 'else' statement [-Wempty-body]
     DBG_PRINTLN(F("?; FAILED"));
                                ^
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp:106:3: warning: this 'else' clause does not guard... [-Wmisleading-indentation]
   else
   ^~~~
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\IRremote.cpp:108:3: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'else'
   return passed;
   ^~~~~~
In file included from C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\ir_Lego_PF.cpp:3:0:
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\ir_Lego_PF_BitStreamEncoder.h: In member function 'int LegoPfBitStreamEncoder::getRepeatStopPause() const':
C:\Users\volvodidi\Documents\Arduino\libraries\z3t0-Arduino-IRremote-7c14514\ir_Lego_PF_BitStreamEncoder.h:107:38: warning: integer overflow in expression [-Woverflow]
       return STOP_PAUSE_DURATION + 5 * MAX_MESSAGE_LENGTH - messageLength;
                                    ~~^~~~~~~~~~~~~~~~~~~~
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino: In function 'gpstime':
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1189:15: warning: 'Year' may be used uninitialized in this function [-Wmaybe-uninitialized]
        setTime(Hour, Minute, Second, Day, Month, Year);
               ^
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1164:21: note: 'Year' was declared here
        unsigned int Year;
                     ^
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1189:15: warning: 'Month' may be used uninitialized in this function [-Wmaybe-uninitialized]
        setTime(Hour, Minute, Second, Day, Month, Year);
               ^
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1163:13: note: 'Month' was declared here
        byte Month;
             ^
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1189:15: warning: 'Day' may be used uninitialized in this function [-Wmaybe-uninitialized]
        setTime(Hour, Minute, Second, Day, Month, Year);
               ^
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1162:13: note: 'Day' was declared here
        byte Day;
             ^
C:\Users\volvodidi\Documents\Arduino\libraries\Time-master\Time.cpp:229:16: warning: 'Hour' may be used uninitialized in this function [-Wmaybe-uninitialized]
   seconds+= tm.Hour * SECS_PER_HOUR;
                ^
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1161:13: note: 'Hour' was declared here
        byte Hour;
             ^
C:\Users\volvodidi\Documents\Arduino\libraries\Time-master\Time.cpp:230:23: warning: 'Minute' may be used uninitialized in this function [-Wmaybe-uninitialized]
   seconds+= tm.Minute * SECS_PER_MIN;
                       ^
C:\Users\volvodidi\Documents\Arduino\Heizungssteuerung\Schaltuhr_4_02\Schaltuhr_4_02.ino:1160:13: note: 'Minute' was declared here
        byte Minute;
             ^
Der Sketch verwendet 31650 Bytes (12%) des Programmspeicherplatzes. Das Maximum sind 253952 Bytes.
Globale Variablen verwenden 2695 Bytes (32%) des dynamischen Speichers, 5497 Bytes für lokale Variablen verbleiben. Das Maximum sind 8192 Bytes.

So um mal zu zeigen wie man so etwas analysiert und dem Problem auf den Grund geht
hier ist dein Code ergänzt um ganz viele Serial.print-Ausgaben mit denen du im Detail nachvollziehen kannst welche Zeilen ausgeführt werden und welche nicht.

Ein Haupthindernis beim Lösen solcher Probleme ist all zu sehr von seinen eigenen Erklärungsphantasien überzeugt zu sein.

Da helfen nur knallharte Analyse-FAKTEN

//Arduino Mega Anschlussbelegung
//5V Spannungsversorgung Module über ext. Spannungsregler.
//3,3V Spannungsversorgung Module über Mega 3,3V Pin
//I2C: SDA Pin 20, SCL Pin 21
//RTC DS3231: I2C VCC 5V
//DHT22 Pin 8 //VCC 3,3V damit geht der DHT22 genauer.
//IR Send: Pin 9 IR ueber Transistor geschaltet. VCC 5V
//IR receive: Pin 2, VCC 5V
//GPS TX an seriell1 Pin 19 VCC 5V
//RC 433Mhz Sender: Pin 44, VCC VIN (9V) hoehere Sendeleistung.
//Arduino Every an Mega seriell2, 16 TX2, 17 RX2, VCC 5V

//Arduino Every, VCC 5V
//RC 433Mhz Empfaenger RXB6, Pin 2, VCC 5V
//Funk Aussentemp. Fuehler Pearl NC-7159-675 (433Mhz)

// Tastenbelegung:
// "*" Uhr stellen Hand
// "#" Schaltpunkte setzen
// "A" Schaltfunktion Klima LG ein / aus
// "B" Klima IR, ein / aus
// "C" Vent RC, ein / aus
// "D" IR Signal rec.
// "0" Schalttemperatur setzen
// "1" GPS Zeit sync.
// "2" Test Steckdose A, Ein / Aus
// "3" Test Steckdosen B/C/D, Ein / Aus
// "4" Innentemp. min max Speicher anzeigen
// "5" LG aus
// "6" Aussentemp. min max Speicher anzeigen
// "7" Innentempspeicher reset
// "8" Programmversion anzeigen
// "9" Aussentempspeicher reset

//verwendete lib`s:
#include <Keypad_I2C.h> //https://github.com/joeyoung/arduino_keypads/tree/master/Keypad_I2C
#include <Wire.h> //kommunikation I2C
#include "RTClib.h" // DS3231 https://github.com/adafruit/RTClib
#include <LiquidCrystal_I2C.h> //Display
#include <IRremote.h> //senden/empfangen von IR-Signalen //analysir.com
#include <RCSwitch.h> //433MHZ Funk, Achtung RCSwitch.cpp wurden Protokoll 3, 4, 7 angepasst
#include <DHT.h> //Tempsensor DHT22
#include <TinyGPS++.h> //GPS Empfaenger
#include "TimeLib.h" //Um Wochentag aus Datum zu erhalten
#include "uEEPROMLib.h" //für Zugriff auf RTC Eeprom

//Eeprom DS323:1
uEEPROMLib eeprom(0x57);

//Software serial fuer GPS:
TinyGPSPlus gps;

//Keypad:
#define I2CADDR 0x38 // I2C Adresse PCF8574 Keypad 0x38, 0x20 für Versuchsschaltung
#define Rs_pin 0
#define Rw_pin 1
#define En_pin 2
#define BACKLIGHT_PIN 3
#define D4_pin 4
#define D5_pin 5
#define D6_pin 6
#define D7_pin 7

//LCD 20x4:
#define lcd_addr 0x27
LiquidCrystal_I2C lcd (lcd_addr, En_pin, Rw_pin, Rs_pin, D4_pin, D5_pin, D6_pin, D7_pin);

//GPS Variablen fuer Time Lib:
byte Second;
byte SZ = 0; //Winterz. 0, Sommerz. 1                                Eeprom Adr. 3

//RTC DS3231:
RTC_DS3231 rtc;

//Keypad
const byte numRows = 4; //number of rows on the keypad
const byte numCols = 4; //number of columns on the keypad

//keymap defines the key pressed according to the row and columns just as appears on the keypad
char keymap[numRows][numCols] = {
  { '1', '2', '3', 'A' },
  { '4', '5', '6', 'B' },
  { '7', '8', '9', 'C' },
  { '*', '0', '#', 'D' }
};
byte rowPins[numRows] = { 0, 1, 2, 3 }; //Rows 0 to 3 //if you modify your pins you should modify this too
byte colPins[numCols] = { 4, 5, 6, 7 }; //Columns 0 to 3
Keypad_I2C myKeypad(makeKeymap(keymap), rowPins, colPins, numRows, numCols, I2CADDR);

//Variablen Zeiteinstellung / Schaltpunkte / Schalttemp.
int i1, i2, i3, i4;
char c1, c2, c3, c4;
char keypressed;

//Schaltpunkte
byte A_hour = 23; //Schaltpunkt A Stunde ueber # einstellbar
byte A_minute = 0; //Schaltpunkt A Minute ueber # einstellbar
byte B_hour = 7; //Schaltpunkt B Stunde ueber # einstellbar
byte B_minute = 0; //Schaltpunkt B Minute ueber # einstellbar
byte C_hour = 22; //Schaltpunkt C Stunde ueber # einstellbar
byte C_minute = 0; //Schaltpunkt C Minute ueber # einstellbar
byte D_hour = 6; //Schaltpunkt D Stunde, Festzeit
byte D_minute = 30; //Schaltpunkt D Minute, Festzeit
byte hourset = 2; //GPS Zeitsetzen, Sommerzeit, Winterzeit
byte minuteset = 1; //GPS Zeitsetzen, Festzeit
byte schaltstunde = 0; //  LG wiedereinschalten
byte schaltminute = 0; //  LG wiedereinschalten


//Variablen
byte AlarmIsActiveLG = 1; // LG schalten ab Temp.                        Eeprom Adr. 0
byte LG_onoff = 0; // Hilfsvariable Schaltzustand LG          Eeprom Adr. 1
byte LG_hilfsvar = 0; // Hilfsvariable für Schaltübergang    Eeprom Adr. 2
byte irtest = 0; // Hilfsvariable fuer IR Test Taste B              Eeprom Adr. 4
bool rctest = 0; // Hilfsvariable fuer 433MHz Sendetest Taste C
byte schalt_temp = 180; // Schalttemperatur fuer LG           Eeprom Adr. 7
byte temp = 181; // Innentemp fuer Neustart damit Klima nicht direkt einschaltet
bool steckdose_A = 0; // Hilfsvariable fuer Schalttest Steckdose, Taste 2
bool steckdose_B_C = 0; // Hilfsvariable fuer Schalttest Steckdose Taste 3
bool steckdosen = 0; // Anzeige * Steckdosen 1 = an

//Sendevariablen Funksteckdosen A - D
unsigned long A1on  = 8484016;//100000010111010010110000
unsigned long A2on  = 8791616;//100001100010011001000000
unsigned long A1off = 8592016;//100000110001101010010000
unsigned long A2off = 8752416;//100001011000110100100000
unsigned long B1on  = 8913780;//100010000000001101110100
unsigned long B2on  = 9108276;//100010101111101100110100
unsigned long B1off = 8993956;//100010010011110010100100
unsigned long B2off = 9224468;//100011001100000100010100
unsigned long C1on  = 8913788;//100010000000001101111100
unsigned long C2on  = 9108284;//100010101111101100111100
unsigned long C1off = 8993964;//100010010011110010101100
unsigned long C2off = 9224476;//100011001100000100011100
unsigned long D1on  = 8993954;//100010010011110010100010
unsigned long D2on  = 9224466;//100011001100000100010010
unsigned long D1off = 8913778;//100010000000001101110010
unsigned long D2off = 9108274;//100010101111101100110010

//ir receive / send
IRsend irsend; //Pin 9
#define maxLen 60 //800
#define rxPinIR 2 //pin D2
volatile  unsigned int irBuffer[maxLen]; //stores timings - volatile because changed by ISR
volatile unsigned int x = 0; //Pointer thru irBuffer - volatile because changed by ISR

//RC Sender/Empfaenger 433Mhz
RCSwitch mySwitch = RCSwitch();

//Serieller Empfang (433Mhz) der Aussentemp. auf Serial2 von Arduino Every
unsigned int Atemp = 0;            // Wert Aussentempgeber 0 - 500
static unsigned int Etemp = 0; // Tempwert für max Abweichung +/- 3°
static unsigned int Ftemp = 0; // Tempwert für Anzeige
byte vorz = 4;             // Vorzeichen fuer - Temperatur (2) bei + (4), default 4
bool gelesen = 0;          // 1 wenn Wert aus Every gelesen
byte LGoff = 2;          // 4 LG ausschalten vom Ofen
unsigned int Atempmax = 0;         // min max Speicher aussen "0" -51,2°
unsigned int Atempmin = 1024;      // min max Speicher innen, Startwert bei Neustart "1024" +51,2°
unsigned int Itempmax = 0;         // min max Speicher "0"
unsigned int Itempmin = 400;       // min max Speicher, Startwert bei Neustart "400"

//Temp sensor DHT22
#define DHTPIN 8
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
float t;

//Aktualisierung der Innentemp.
unsigned long previousMillis = 0;
const long interval = 30000; //alle 30sec.

void setup() {
  Serial.begin(115200); // nicht langsamer wegen IR Signal senden
  Serial.println("Setup HAT gestartet");
  Serial1.begin(9600); // GPS
  Serial.println("EINS Serial1.begin(9600) ausgeführt");
  Serial2.begin(9600); // Arduino Mini Pro
  Serial.println("ZWEI Serial2.begin(9600);  ausgeführt");
  myKeypad.begin(); // Tastatur
  Serial.println("myKeypad.begin() ausgeführt");
  lcd.begin(20, 4); // LCD
  Serial.println("lcd.begin(20, 4) ausgeführt");
  lcd.setBacklightPin(BACKLIGHT_PIN, POSITIVE);
  lcd.setBacklight(HIGH);
  Serial.println("lcd.setBacklight(HIGH) ausgeführt");
  lcd.home();
  Serial.println("lcd.home(); ausgeführt");
  rtc.begin();
  Serial.println("rtc.begin() ausgeführt");
  mySwitch.enableTransmit(44); //RC Senden
  Serial.println("mySwitch.enableTransmit(44) ausgeführt");
  pinMode(18, INPUT); //RC Empfaenger ??
  dht.begin(); //Temperaturfuehler
  Serial.println("dht.begin() ausgeführt");
  attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//set up ISR for receiving IR signal
  Serial.println("attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE) ausgeführt");

  //Eeprom abfragen nach Stromausfall / Neustart:
  AlarmIsActiveLG = (eeprom.eeprom_read(0));
  LG_onoff = (eeprom.eeprom_read(1));
  LG_hilfsvar = (eeprom.eeprom_read(2));
  irtest = (eeprom.eeprom_read(4));
  SZ = (eeprom.eeprom_read(3));
  schalt_temp = (eeprom.eeprom_read(7));
  Serial.println("schalt_temp = (eeprom.eeprom_read(7)); ausgeführt");

  // Steckdosen einschalten bzw. ausschalten nach Neustart / Stromausfall:
  DateTime jetzt = rtc.now(); //Zeitaktualisieren
  Serial.println("direkt vor if (jetzt.hour() >= D_hour && ...");
  if (jetzt.hour() >= D_hour && jetzt.minute() >= D_minute && jetzt.hour() < A_hour && jetzt.minute() >= A_minute) {
    Serial.println("TRUE if (jetzt.hour() >= D_hour && ...");
    mySwitch.setProtocol(7);
    mySwitch.send(A1on, 24); //A1on
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(A2on, 24); //A2on
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(B1on, 24); //B1on
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(B2on, 24); //B2on
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(C1on, 24); //C1on
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(C2on, 24); //C2on
    steckdosen = 1;
    lcd.setCursor(0, 3);
    lcd.print("Steckdosen ein      ");
    delay(1000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
  }

  // Steckdosen ausschalten
  Serial.println("Steckdosen ausschalten direkt vor if (jetzt.hour() == A_hour  ...");
  if (jetzt.hour() == A_hour && jetzt.minute() >= A_minute ||
      jetzt.hour() >= 0 && jetzt.minute() >= 0 && jetzt.hour() < D_hour && jetzt.minute() >= 0) {
    Serial.println("TRUE Steckdosen ausschalten if (jetzt.hour() == A_hour  ...");
    mySwitch.setProtocol(7);
    mySwitch.send(A1off, 24); //A1off
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(A2off, 24); //A2off
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(B1off, 24); //B1off
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(B2off, 24); //B2off
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(C1off, 24); //C1off
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(C2off, 24); //C2off
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(D1off, 24); //D1off
    delay(100);
    mySwitch.setProtocol(7);
    mySwitch.send(D2off, 24); //D2off
    steckdosen = 0;
    lcd.setCursor(0, 3);
    lcd.print("Steckdosen aus      ");
    delay(1000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
  }
  // Every reset:
  pinMode(6, OUTPUT); // Pin 6 Mega, für Every reset
  digitalWrite(6, HIGH);
  delay(200);
  digitalWrite(6, LOW);
  Serial.println("setup unteres Ende erreicht verlasse setup()");
}


void loop() {
  //Abfrage Tastatur:
  while (keypressed == NO_KEY) { //As long as no key is pressed we keep showing the date and time
    keypressed = myKeypad.getKey();

    //Abfrage RTC-Zeit:
    //myRTC.updateTime(); //Zeitaktualisieren
    DateTime jetzt = rtc.now();

    //Innentempfuehlerabfrage:
    float t = dht.readTemperature();
    if ((round(t * 10)) > 0 && (round(t * 10)) <= 500) {
      temp = (round(t * 10));
    }

    //Signal von Mini Pro von Aussentempfuehler:
    byte Atemp1 = 0;
    byte Atemp2 = 0;
    unsigned int Btemp = 0;
    gelesen = 0;
    if (Serial2.available() > 0) {
      Atemp1 = (Serial2.read()); // Tempbyte 1
      Atemp2 = (Serial2.read()); // Tempbyte 2
      vorz = (Serial2.read()); // 2 = minus, 4 = plus
      if ((Serial2.read()) == 4 && LG_onoff == 1) {
        LGoff = 4; // wenn LGoff = 4 Klima ausschalten
      }
      //absicherung das Atemp nicht größer +/- 50° ist
      Btemp = int(Atemp1 << 8) + int(Atemp2);
      if (Btemp <= 500 && vorz == 4) {
        Atemp = Btemp;
        gelesen = 1;
      }
      if (Btemp <= 500 && vorz == 2) { // bei - Temp +1 da sonst 0,1° weniger angezeigt wird.
        Atemp = (Btemp + 1);
        gelesen = 1;
      }
    }

    //Schaltpunktabfragen:

    //Klima einschalten wenn Temp. unter schalt_temp (18°C)
    if (AlarmIsActiveLG == 1 && LG_onoff == 0 && temp < schalt_temp) {
      LG_onoff = 1;
      eeprom.eeprom_write(1, 1);
      LGoff = 2;
      ONsenden(); //send AC signal #ON @ 38kHz von SD
      delay(1000);
      ONsenden(); //send AC signal #ON @ 38kHz von SD
    }

    //Klima ausschalten 7:00 und AlarmIsActiveLG aus damit Ofen Zeit hat zu heizen.
    if (AlarmIsActiveLG == 1 && LG_onoff == 1 && jetzt.hour() == B_hour && jetzt.minute() == B_minute) {
      LG_onoff = 0;
      eeprom.eeprom_write(1, 0);
      LG_hilfsvar = 1;
      eeprom.eeprom_write(2, 1);
      AlarmIsActiveLG = 0;
      eeprom.eeprom_write(0, 0);
      OFFsenden(); //send AC signal #Off @ 38kHz von SD
      delay(1000);
      OFFsenden(); //send AC signal #Off @ 38kHz von SD
    }

    //Klima ausschalten wenn LG_onoff 1 und LGoff vom Ofen 4
    if (LGoff == 4 && LG_onoff == 1 && AlarmIsActiveLG == 1) {
      irtest = 0; //Hilfsvariable für Taste B
      eeprom.eeprom_write(4, 0);
      LG_onoff = 0;
      eeprom.eeprom_write(1, 0);
      LGoff = 2;
      AlarmIsActiveLG = 0;
      eeprom.eeprom_write(0, 0);
      LG_hilfsvar = 1;
      eeprom.eeprom_write(2, 1);
      schaltstunde = (jetzt.hour() + 1);
      schaltminute = jetzt.minute();
      OFFsenden(); //send AC signal #Off @ 38kHz von SD
      delay(1000);
      OFFsenden(); //send AC signal #Off @ 38kHz von SD
    }

    //AlarmIsActiveLG wieder ein 1h nach LG ausschalten
    if (AlarmIsActiveLG == 0 && LG_hilfsvar == 1 && jetzt.hour() >= (B_hour + 1) && jetzt.minute() == B_minute ||
        AlarmIsActiveLG == 0 && LG_hilfsvar == 1 && jetzt.hour() == schaltstunde && jetzt.minute() == schaltminute) {
      AlarmIsActiveLG = 1;
      eeprom.eeprom_write(0, 1);
      LG_hilfsvar = 0;
      eeprom.eeprom_write(2, 0);
    }

    //Funksteckdosen A,B,C einschalten.

    if (jetzt.hour() == D_hour && jetzt.minute() == D_minute && jetzt.second() == 0) {
      mySwitch.setProtocol(7);
      mySwitch.send(A1on, 24); //A1on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(A2on, 24); //A2on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B1on, 24); //B1on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B2on, 24); //B2on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C1on, 24); //C1on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C2on, 24); //C2on
      steckdosen = 1;
    }

    //Funksteckdose A,B,C,D ausschalten.

    if (jetzt.hour() == A_hour && jetzt.minute() == A_minute && jetzt.second() == 0) {
      mySwitch.setProtocol(7);
      mySwitch.send(A1off, 24); //A1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(A2off, 24); //A2off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B1off, 24); //B1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B2off, 24); //B2off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C1off, 24); //C1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C2off, 24); //C2off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(D1off, 24); //D1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(D2off, 24); //D2off
      steckdosen = 0;
    }

    //GPS Zeit setzen:

    if (jetzt.hour() == (hourset + 1) && jetzt.minute() == minuteset && jetzt.second() == 1 && SZ == 1) { //Umschaltung SZ/WZ 3:00
      Second = 1;
      gpstime(); //sprung in GPS Zeit Funktion
    }
    else if (jetzt.hour() == hourset && jetzt.minute() == minuteset && jetzt.second() == 1 && SZ == 0) { //Umschaltung WZ/SZ 2:00
      Second = 1;
      gpstime(); //sprung in GPS Zeit Funktion
    }

    // Temperatur Innen/Aussen min/max Speicher:
    //Innentemp. Speicher
    if (temp > 0 && temp <= 500) {
      if (temp > Itempmax) {
        Itempmax = temp;
      }
      if (temp < Itempmin) {
        Itempmin = temp;
      }
    }

    //Aussentemp. Speicher und Erzeugung von Ftemp. abgesichert zur Anzeige:
    unsigned int z = 512;
    unsigned int Ctemp = 0;
    //+Bereich
    if (vorz == 4 && gelesen == 1) {
      Ctemp = (z + Atemp);
      Etemp = (z + Atemp);
      if (Atempmin == 1024 && gelesen == 1) {
        Atempmin = Ctemp;
      }
      if (Atempmax == 0 && gelesen == 1) {
        Atempmax = Ctemp;
      }
      if (Ctemp < Atempmin && Ctemp > (Atempmin - 30) && Ctemp < (Atempmax + 30) && gelesen == 1) { // wenn Abweichung größer 3° Wert verwerfen
        Atempmin = Ctemp;
      }
      if (Ctemp > Atempmax && Ctemp > (Atempmin - 30) && Ctemp < (Atempmax + 30) && gelesen == 1) { // wenn Abweichung größer 3° Wert verwerfen
        Atempmax = Ctemp;
      }
      if (Ctemp > (Etemp - 30) && Ctemp < (Etemp + 30) && gelesen == 1) { // wenn Abweichung größer 3° Wert verwerfen
        Ftemp = (Ctemp - z); //abgesichert für Anzeige
      }
    }

    // - Bereich
    if (vorz == 2 && gelesen == 1) {
      Ctemp = (z - Atemp);
      Etemp = (z - Atemp);
      if (Atempmin == 1024 && gelesen == 1) {
        Atempmin = Ctemp;
      }
      if (Atempmax == 0 && gelesen == 1) {
        Atempmax = Ctemp;
      }
      if (Ctemp < Atempmin && Ctemp > (Atempmin - 30) && Ctemp < (Atempmax + 30) && gelesen == 1) { // wenn Abweichung größer 3° Wert verwerfen
        Atempmin = Ctemp;
      }
      if (Ctemp > Atempmax && Ctemp > (Atempmin - 30) && Ctemp < (Atempmax + 30) && gelesen == 1) { // wenn Abweichung größer 3° Wert verwerfen
        Atempmax = Ctemp;
      }
      if (Ctemp > (Etemp - 30) && Ctemp < (Etemp + 30) && gelesen == 1) { // wenn Abweichung größer 3° Wert verwerfen
        Ftemp = (z - Ctemp); //abgesichert für Anzeige
      }
    }

    //LCD Anzeige von Zeit, Temperatur, Schaltpunkte:

    static float Dtemp = 0.0;
    Dtemp = Ftemp; //abgesicherter Temp.wert
    static float itemp = 0.0;
    itemp = temp;

    //LCD Zeile 1
    //Uhrzeit
    lcd.setCursor(0, 0);
    if (jetzt.hour() < 10) {
      lcd.setCursor(0, 0);
      lcd.print(" ");
      lcd.setCursor(1, 0);
    }
    lcd.print(jetzt.hour());
    if (((jetzt.second()) % 2) == 0) { //blinkender Doppelpunkt
      lcd.setCursor(2, 0);
      lcd.print(":");
    }
    else {
      lcd.setCursor(2, 0);
      lcd.print(" ");
    }
    if (jetzt.minute() < 10) {
      lcd.setCursor(3, 0);
      lcd.print("0");
    }
    lcd.print(jetzt.minute());
    lcd.setCursor(5, 0);
    lcd.print(" ");

    //Innentemp.
    unsigned long currentMillis = millis();
    if (currentMillis - previousMillis >= interval) {
      previousMillis = currentMillis;
      if (temp > 0 && temp <= 500) {
        if (temp < 100) {
          lcd.setCursor(6, 0);
          lcd.print(" ");
          lcd.setCursor(7, 0);
          lcd.print((itemp / 10), 1);
        }
        else {
          lcd.setCursor(6, 0);
          lcd.print((itemp / 10), 1);
        }
      }
    }
    lcd.setCursor(10, 0);
    lcd.print("\337C");
    lcd.setCursor(12, 0);
    lcd.print(" ");

    //Aussentempanzeige

    //Vorzeichen
    if (vorz == 4 && gelesen == 1) {// +
      lcd.setCursor(13, 0);
      lcd.print(" ");
    }
    //+ Bereich
    if (vorz == 4 && gelesen == 1) {
      if (Atemp < 100) {
        lcd.setCursor(14, 0);
        lcd.print(" ");
        lcd.setCursor(15, 0);
        lcd.print((Dtemp / 10), 1);
      }
      else {
        lcd.setCursor(14, 0);
        lcd.print((Dtemp / 10), 1);
      }
    }
    //Vorzeichen
    if (vorz == 2 && gelesen == 1) { // -
      if (Atemp < 100) {
        lcd.setCursor(13, 0);
        lcd.print(" -");
      }
      else {
        lcd.setCursor(13, 0);
        lcd.print("-");
      }
    }
    // - Bereich
    if (vorz == 2 && gelesen == 1) {
      if (Atemp < 100) {
        lcd.setCursor(15, 0);
        lcd.print((Dtemp / 10), 1);
      }
      else {
        lcd.setCursor(14, 0);
        lcd.print((Dtemp / 10), 1);
      }
    }
    lcd.setCursor(18, 0);
    lcd.print("\337C");

    //LCD Zeile 2
    //Schaltpunkt LG

    lcd.setCursor(0, 1);
    lcd.print("LG");

    if (LG_onoff == 1) { //LG_onoff
      lcd.setCursor(2, 1);
      lcd.print(" * ");
    }
    else {
      lcd.setCursor(2, 1);
      lcd.print("   ");
    }
    if (AlarmIsActiveLG == 1)  {
      lcd.setCursor(5, 1);
      lcd.print("ein ab ");
      lcd.print(schalt_temp / 10);
      lcd.print("\337C ");
    }
    else {
      lcd.setCursor(5, 1);
      lcd.print("            ");
    }

    //Sommer/Winterzeit
    if (SZ == 1) {
      lcd.setCursor(18, 1);
      lcd.print("sz");
    }
    else {
      lcd.setCursor(18, 1);
      lcd.print("wz");
    }

    //LCD Zeile 3
    //Schaltpunkt Steckdosen
    lcd.setCursor(0, 2);
    lcd.print("A,B,C   ");
    lcd.print(D_hour);
    lcd.print("-");
    if (A_hour < 10) {
      lcd.print("0");
    }
    lcd.print(A_hour);

    if (steckdosen == 1) { //Steckdosen ein
      lcd.setCursor(6, 2);
      lcd.print("*");
    }
    else {// Steckdosen aus
      lcd.setCursor(6, 2);
      lcd.print(" ");
    }

    //LCD Zeile 4 Tag-Datum bzw. Statusanzeige
    // Wochentag / Datum
    lcd.setCursor(0, 3);
    switch (jetzt.dayOfTheWeek()) {
      case 0:  lcd.print("S\357ndag ");   break;
      case 1:  lcd.print("Mondag ");   break;
      case 2:  lcd.print("Tisdag ");   break;
      case 3:  lcd.print("Onsdag ");   break;
      case 4:  lcd.print("Thorsdag ");   break;
      case 5:  lcd.print("Fredag ");   break;
      default: lcd.print("L\357rdag ");
    }
    lcd.print(" ");
    lcd.print(jetzt.day());
    lcd.print(".");
    lcd.print(jetzt.month());
    lcd.print(".");
    lcd.print(jetzt.year() - 2000);
    lcd.print("   ");
  }

  //Zeit von Hand setzen:
  if (keypressed == '*') {//As we everytime check the key pressed we only proceed to setup if we press "*"
    Set_Time();
  }

  //Alarmzeiten setzen:

  if (keypressed == '#') {
    Alarm_Setup();
  }

  //Tastenbelegung weitere Funktionen:

  //Taste "A" LG Klima schalten ein / aus:

  if (keypressed == 'A') {
    if (AlarmIsActiveLG == 1) {
      (AlarmIsActiveLG = 0);
      eeprom.eeprom_write(0, 0);
      lcd.setCursor(0, 3);
      lcd.print("LG aus              ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
  }
  if (keypressed == 'A') {
    if (AlarmIsActiveLG == 0) {
      (AlarmIsActiveLG = 1);
      eeprom.eeprom_write(0, 1);
      lcd.setCursor(0, 3);
      lcd.print("LG ein              ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
  }

  //Taste "B" IR Test Klimaansteuerung LG An / Aus:
  if (keypressed == 'B') {
    if (irtest == 0 && LG_onoff == 0) {
      irtest = 1;
      eeprom.eeprom_write(4, 1);
      LG_onoff = 1;
      eeprom.eeprom_write(1, 1);
      lcd.setCursor(0, 3);
      lcd.print("Klima Ein           ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      ONsenden(); //send AC signal #On @ 38kHz aus Eeprom
      keypressed = NO_KEY;
    }
    else {
      if (irtest == 1 && LG_onoff == 1) {
        irtest = 0;
        eeprom.eeprom_write(4, 0);
        LG_onoff = 0;
        eeprom.eeprom_write(1, 0);
        lcd.setCursor(0, 3);
        lcd.print("Klima Aus           ");
        delay(1000);
        lcd.setCursor(0, 3);
        lcd.print("                    ");
        OFFsenden(); //send AC signal #Off @ 38kHz aus Eeprom
        keypressed = NO_KEY;
      }
    }
  }

  //Taste "C" Fan Test Deckenvent An / Aus:

  if (keypressed == 'C') {
    if (rctest == 0) {
      (rctest = 1);
      mySwitch.setProtocol(3); //Protokoll on
      mySwitch.send("11000110001100110001111101000"); //Fan Ein 415654888
      delay(100);
      mySwitch.setProtocol(3); //Protokoll on
      mySwitch.send("11000110001100110001111101000"); //Fan Ein
      lcd.setCursor(0, 3);
      lcd.print("Vent Ein            ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    } else {
      (rctest = 0);
      mySwitch.setProtocol(4); //Protokoll off
      mySwitch.send("11000110001100110001110010001"); //Fan Aus 415654801
      delay(100);
      mySwitch.setProtocol(4); //Protokoll off
      mySwitch.send("11000110001100110001110010001"); //Fan Aus
      lcd.setCursor(0, 3);
      lcd.print("Vent Aus            ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
  }

  //Taste "D" IR-Signal einlesen ON/OFF und in Eeprom speichern:

  if (keypressed == 'D') {
    ONlesen(); //schreibe ir ON und OFF in Eeprom
    keypressed = NO_KEY;
  }

  //Taste "0" Schalt_temp für Klima an:

  if (keypressed == '0') {
    lcd.setCursor(0, 3);
    lcd.print("Schalttemp.   ");
    lcd.setCursor(14, 3);
    lcd.print(schalt_temp);
    lcd.setCursor(16, 3);
    lcd.print("\337C  ");

    char keypressed26 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
    if (keypressed26 != NO_KEY && keypressed26 != '*' && keypressed26 != '#' && keypressed26 != 'A' && keypressed26 != 'B' && keypressed26 != 'C'
        && keypressed26 != 'D') {
      c1 = keypressed26;
      lcd.setCursor(14, 3);
      lcd.print("  ");
      lcd.setCursor(14, 3);
      lcd.print(c1);
    }
    char keypressed27 = myKeypad.waitForKey();
    if (keypressed27 != NO_KEY && keypressed27 != '*' && keypressed27 != '#' && keypressed27 != 'A' && keypressed27 != 'B' && keypressed27 != 'C'
        && keypressed27 != 'D') {
      c2 = keypressed27;
      lcd.setCursor(15, 3);
      lcd.print(c2);
    }

    i1 = (c1 - 48) * 10;
    i2 = c2 - 48;
    schalt_temp = ((i1 + i2) * 10);
    eeprom.eeprom_write(7, schalt_temp);
    delay(1000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    keypressed = NO_KEY;
  }

  // Taste "1" GPS Zeit setzen:
  if (keypressed == '1') {
    Second = 1;
    gpstime();
    keypressed = NO_KEY;
  }

  //Taste "2" Funksteckdosentest A An / Aus Hand:

  if (keypressed == '2') {
    if (steckdose_A == 0) {
      (steckdose_A = 1);
      mySwitch.setProtocol(7);
      mySwitch.send(A1on, 24); //A1on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(A2on, 24); //A2on
      delay(100);
      steckdosen = 1;
      lcd.setCursor(0, 3);
      lcd.print("Steckdose A Ein     ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
    else {
      (steckdose_A = 0);
      mySwitch.setProtocol(7);
      mySwitch.send(A1off, 24); //A1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(A2off, 24); //A2off
      steckdosen = 0;
      lcd.setCursor(0, 3);
      lcd.print("Steckdose A Aus     ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
  }

  //Taste "3" Funksteckdosentest B,C An / Aus Hand:

  if (keypressed == '3') {
    if (steckdose_B_C == 0) {
      (steckdose_B_C = 1);
      mySwitch.setProtocol(7);
      mySwitch.send(B1on, 24); //B1on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B2on, 24); //B2on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C1on, 24); //C1on
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C2on, 24); //C2on
      steckdosen = 1;
      lcd.setCursor(0, 3);
      lcd.print("Steckdose B / C Ein ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
    else {
      (steckdose_B_C = 0);
      mySwitch.setProtocol(7);
      mySwitch.send(B1off, 24); //B1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(B2off, 24); //B2off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C1off, 24); //C1off
      delay(100);
      mySwitch.setProtocol(7);
      mySwitch.send(C2off, 24); //C2off
      lcd.setCursor(0, 3);
      lcd.print("Steckdose B / C Aus ");
      steckdosen = 0;
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
  }

  //Taste "4" Innentemp. Min-Max Speicher anzeigen:
  if (keypressed == '4') {
    float AItempmax = Itempmax;
    float AItempmin = Itempmin;
    lcd.setCursor(0, 3);
    lcd.print("Innen Min / Max     ");
    delay(1000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    lcd.setCursor(2, 3);
    lcd.print((AItempmin / 10), 1);
    lcd.print("\337C");
    lcd.setCursor(12, 3);
    lcd.print((AItempmax / 10), 1);
    lcd.print("\337C");
    delay(3000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    keypressed = NO_KEY;
  }

  //Taste "5" Klima nur ausschalten und nach 1h LG wieder ein Hand:
  if (keypressed == '5') {
    DateTime jetzt = rtc.now();
    irtest = 0;
    eeprom.eeprom_write(4, 0);
    LG_onoff = 0;
    eeprom.eeprom_write(1, 0);
    LGoff = 2;
    AlarmIsActiveLG = 0;
    eeprom.eeprom_write(0, 0);
    LG_hilfsvar = 1;
    eeprom.eeprom_write(2, 1);
    lcd.setCursor(0, 3);
    lcd.print("Klima Aus           ");
    delay(1000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    OFFsenden(); //send AC signal #Off @ 38kHz aus Eeprom
    schaltstunde = (jetzt.hour() + 1);
    schaltminute = jetzt.minute();
    keypressed = NO_KEY;
  }

  //Taste "6" Aussentemp. Min-Max Speicher Anzeigen:
  if (keypressed == '6') {
    float AAtempmax = 0;
    float AAtempmin = 0;
    lcd.setCursor(0, 3);
    lcd.print("Aussen Min / Max    ");
    delay(1000);
    if (Atempmin == 1024 && Atempmax == 0) {
      lcd.setCursor(0, 3);
      lcd.print(" kein Wert gelesen  ");
      delay(1000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
    }
    else {
      if (Atempmin < 512) {
        AAtempmin = (512 - Atempmin);
      }
      if (Atempmin >= 512) {
        AAtempmin = (Atempmin - 512);
      }
      if (Atempmax < 512) {
        AAtempmax = (512 - Atempmax);
      }
      if (Atempmax >= 512) {
        AAtempmax = (Atempmax - 512);
      }
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      if (Atempmin < 512) {
        lcd.setCursor(1, 3);
        lcd.print("-");
      }
      if (AAtempmin < 100.0) {
        lcd.setCursor(3, 3);
        lcd.print((AAtempmin / 10), 1);
        lcd.print("\337C");
      }
      if (AAtempmin >= 100.0) {
        lcd.setCursor(2, 3);
        lcd.print((AAtempmin / 10), 1);
        lcd.print("\337C");
      }
      if (Atempmax < 512) {
        lcd.setCursor(11, 3);
        lcd.print("-");
      }
      if (AAtempmax < 100.0) {
        lcd.setCursor(13, 3);
        lcd.print((AAtempmax / 10), 1);
        lcd.print("\337C");
      }
      if (AAtempmax >= 100.0) {
        lcd.setCursor(12, 3);
        lcd.print((AAtempmax / 10), 1);
        lcd.print("\337C");
      }
      delay(3000);
      lcd.setCursor(0, 3);
      lcd.print("                    ");
      keypressed = NO_KEY;
    }
    keypressed = NO_KEY;
  }

  //Taste "7" Innentemp. Speicher reset:
  if (keypressed == '7') {
    Itempmax = 0;
    Itempmin = 400;
    lcd.setCursor(0, 3);
    lcd.print("Innentemp. reset    ");
    delay(500);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    keypressed = NO_KEY;
  }

  //Taste "8" Programmversion Anzeigen:
  if (keypressed == '8') {
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    lcd.setCursor(0, 3);
    const char* filename = __FILE__;
    *strrchr(filename, '.') = '\0';
    lcd.print(strrchr(filename, '\\') + 1);
    delay(3000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    keypressed = NO_KEY;
  }

  //Taste "9" Aussentemp. Speicher reset:
  if (keypressed == '9') {
    Atempmax = 0;
    Atempmin = 1024;
    lcd.setCursor(0, 3);
    lcd.print("Aussentemp. reset   ");
    delay(500);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    keypressed = NO_KEY;
  }
}

//ende Loop, Beginn Funktionen:

//IR aus Eeprom lesen und senden:
void ONsenden() {
  unsigned int irCode[60] = { 0 };
  byte Code1 = 0;
  byte Code2 = 0;
  unsigned int Code = 0;
  int ONstart = 100;
  for (int i = 1; i < 60; i++) {
    Code1 = eeprom.eeprom_read(ONstart);
    ONstart = (ONstart + 1);
    Code2 = eeprom.eeprom_read(ONstart);
    ONstart = (ONstart + 1);
    Code = int(Code1 << 8) + int(Code2);
    irCode[i] = Code;
  }
  sendRAW_Flash(irCode, 38); //send AC signal #On @ 38kHz}
  lcd.setCursor(0, 3);
  lcd.print("On gesendet         ");
  delay(1000);
  lcd.setCursor(0, 3);
  lcd.print("                    ");
}

void OFFsenden() {
  unsigned int irCode[60] = { 0 };
  byte Code1 = 0;
  byte Code2 = 0;
  unsigned int Code = 0;
  int OFFstart = 300;
  for (int i = 1; i < 60; i++) {
    Code1 = eeprom.eeprom_read(OFFstart);
    OFFstart = (OFFstart + 1);
    Code2 = eeprom.eeprom_read(OFFstart);
    OFFstart = (OFFstart + 1);
    Code = int(Code1 << 8) + int(Code2);
    irCode[i] = Code;
  }
  sendRAW_Flash(irCode, 38); //send AC signal #On @ 38kHz}
  lcd.setCursor(0, 3);
  lcd.print("OFF gesendet        ");
  delay(1000);
  lcd.setCursor(0, 3);
  lcd.print("                    ");
}

//IR Code senden

void sendRAW_Flash(unsigned int *signalArray, unsigned char carrierFreq) {
  irsend.enableIROut(carrierFreq); //initialise the carrier frequency for each signal to be sent

  for (uint8_t i = 1; i < 60; ++i) {
    if (i & 1) {
      irsend.mark(signalArray[i]);
    } else {
      irsend.space(signalArray[i]);
    }
  }
  irsend.space(1); //make sure IR is turned off at end of signal
}

//ON / OFF rec. und in Eeprom schreiben:

void ONlesen() {
  lcd.setCursor(0, 3);
  lcd.print("On lesen            ");
  delay(5000); // pause 5 secs
  while (x) {
    int ONstart = 100; //ab Adresse 100 im Eeprom ON Signal
    detachInterrupt(0);//stop interrupts & capture until finshed here
    for (int i = 1; i < 60; i++) { //now dump the times
      int Impuls = (irBuffer[i] - irBuffer[i - 1]);
      eeprom.eeprom_write(ONstart, byte(Impuls >> 8)); //1.byte schreiben
      ONstart = ONstart + 1;
      eeprom.eeprom_write(ONstart, byte(Impuls & 0x00FF)); //2.byte schreiben
      ONstart = ONstart + 1;
    }
    x = 0;
    attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//re-enable ISR for receiving IR signal
    lcd.setCursor(0, 3);
    lcd.print("On gelesen          ");
    delay(1000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
    OFFlesen();
  }
}

void OFFlesen() {
  lcd.setCursor(0, 3);
  lcd.print("OFF lesen           ");
  delay(5000); // pause 5 secs
  while (x) {
    int OFFstart = 300; //ab Adresse 300 im Eeprom OFF Signal
    detachInterrupt(0);//stop interrupts & capture until finshed here
    for (int i = 1; i < 60; i++) { //now dump the times
      int Impuls = (irBuffer[i] - irBuffer[i - 1]);
      eeprom.eeprom_write(OFFstart, byte(Impuls >> 8)); //1.byte schreiben
      OFFstart = (OFFstart + 1);
      eeprom.eeprom_write(OFFstart, byte(Impuls & 0x00FF)); //2.byte schreiben
      OFFstart = (OFFstart + 1);
    }
    x = 0;
    attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE);//re-enable ISR for receiving IR signal
    lcd.setCursor(0, 3);
    lcd.print("OFF gelesen         ");
    delay(1000);
    lcd.setCursor(0, 3);
    lcd.print("                    ");
  }
}

//IR Signal rec.
void rxIR_Interrupt_Handler() {
  if (x > maxLen) return; //ignore if irBuffer is already full
  irBuffer[x++] = micros(); //just continually record the time-stamp of signal transitions
}

//GPS Zeit mit RTC sync.:
void gpstime() {
  bool sz1 = 0; //fuer Sommerzeit in Jan, Feb, Nov, Dez
  bool sz2 = 0; //fuer in Apr, Mai, Jun, Jul, Aug, Sep
  bool tzHours = 1; //fuer Winterzeit
  byte last_second = 0;
  byte Minute;
  byte Hour;
  byte Day;
  byte Month;
  unsigned int Year;

  lcd.setCursor(0, 3);
  lcd.print("warte auf GPS Signal");

start:
  while (Serial1.available() > 0) {

    if (gps.encode(Serial1.read())) {

      if (gps.time.isValid()) {

        Hour = gps.time.hour();
        Minute = gps.time.minute();
        Second = gps.time.second();
      }

      if (gps.date.isValid()) {
        Day = gps.date.day();
        Month = gps.date.month();
        Year = gps.date.year();
      }

      if (last_second != gps.time.second()) {
        last_second = gps.time.second();
        setTime(Hour, Minute, Second, Day, Month, Year);
        lcd.setCursor(0, 3);
        lcd.print("                    ");
        lcd.setCursor(0, 3);
        lcd.print("UTC ");
        if (Hour < 10) {
          lcd.print(" ");
        }
        lcd.print(Hour);
        lcd.print(":");
        if (Minute < 10) {
          lcd.print("0");
        }
        lcd.print(Minute);
        lcd.print(":");
        if (Second < 10) {
          lcd.print("0");
        }
        lcd.print(Second);
        lcd.setCursor(13, 3);
        lcd.print(weekday() - 1); // GPS beginnt mit 1, RTC mit 0, deshalb -1
        DateTime jetzt = rtc.now(); //Zeitaktualisieren
      }
    }
  }

  //Zeit in RTC setzen und Umschaltung Sommer / Winterzeit
  DateTime jetzt = rtc.now();
  if (SZ == 1) {
    tzHours = 2;
  }
  else {
    tzHours = 1;
  }
  if (jetzt.month() < 3 || jetzt.month() > 10) {
    sz1 = 0; //Winterzeit in Jan, Feb, Nov, Dez
  }
  if (jetzt.month() > 3 && jetzt.month() < 10) {
    sz1 = 1; //Sommerzeit in Apr, Mai, Jun, Jul, Aug, Sep
  }
  if (jetzt.month() == 3 && (jetzt.hour() + 24 * jetzt.day()) >= (1 + tzHours + 24 * (31 - (5 * jetzt.year() / 4 + 4) % 7))
      ||
      jetzt.month() == 10 && (jetzt.hour() + 24 * jetzt.day()) < (1 + tzHours + 24 * (31 - (5 * jetzt.year() / 4 + 1) % 7)))
  {
    sz2 = 1; //Sommerzeit
  }
  else {
    sz2 = 0; //Winterzeit
  }
  if (sz1 == 1 || sz2 == 1) {
    SZ = 1; //Sommerzeit
    eeprom.eeprom_write(3, 1);
  }
  else {
    SZ = 0; //Winterzeit
    eeprom.eeprom_write(3, 0);
  }
  if (jetzt.second() == 0 && (gps.date.day()) > 0 && gps.date.month() > 0 && gps.date.year() > 0) { // == jetzt.day()
    if (SZ == 1) {
      rtc.adjust(DateTime(gps.date.year(), gps.date.month(), gps.date.day(), gps.time.hour() + 2, gps.time.minute(), gps.time.second())); // J, M, T, Std, Min, Sek
    }
    else {
      rtc.adjust(DateTime(gps.date.year(), gps.date.month(), gps.date.day(), gps.time.hour() + 1, gps.time.minute(), gps.time.second())); // J, M, T, Std, Min, Sek
    }
  }
  else {
    goto start;
  }
}

//Set Time
void Set_Time() {
  lcd.clear();
  lcd.print("Uhr einstellen");
  delay(1000);
  lcd.clear();
  lcd.print("Jahr");
  char keypressed2 = myKeypad.waitForKey();
  if (keypressed2 != NO_KEY && keypressed2 != '*' && keypressed2 != '#' && keypressed2 != 'A' && keypressed2 != 'B' && keypressed2 != 'C'
      && keypressed2 != 'D') {
    c1 = keypressed2;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed3 = myKeypad.waitForKey();
  if (keypressed3 != NO_KEY && keypressed3 != '*' && keypressed3 != '#' && keypressed3 != 'A' && keypressed3 != 'B' && keypressed3 != 'C'
      && keypressed3 != 'D') {
    c2 = keypressed3;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }
  char keypressed4 = myKeypad.waitForKey();
  if (keypressed4 != NO_KEY && keypressed4 != '*' && keypressed4 != '#' && keypressed4 != 'A' && keypressed4 != 'B' && keypressed4 != 'C'
      && keypressed4 != 'D') {
    c3 = keypressed4;
    lcd.setCursor(2, 1);
    lcd.print(c3);
  }
  char keypressed5 = myKeypad.waitForKey();
  if (keypressed5 != NO_KEY && keypressed5 != '*' && keypressed5 != '#' && keypressed5 != 'A' && keypressed5 != 'B' && keypressed5 != 'C'
      && keypressed5 != 'D') {
    c4 = keypressed5;
    lcd.setCursor(3, 1);
    lcd.print(c4);
  }

  i1 = (c1 - 48) * 1000; //the keys pressed are stored into chars I convert them to int then i did some multiplication to get the code as an int of xxxx
  i2 = (c2 - 48) * 100;
  i3 = (c3 - 48) * 10;
  i4 = c4 - 48;
  int N_year = i1 + i2 + i3 + i4;
  delay(500);
  lcd.clear();
  lcd.print("Monat");

  char keypressed6 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
  if (keypressed6 != NO_KEY && keypressed6 != '*' && keypressed6 != '#' && keypressed6 != 'A' && keypressed6 != 'B' && keypressed6 != 'C'
      && keypressed6 != 'D') {
    c1 = keypressed6;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed7 = myKeypad.waitForKey();
  if (keypressed7 != NO_KEY && keypressed7 != '*' && keypressed7 != '#' && keypressed7 != 'A' && keypressed7 != 'B' && keypressed7 != 'C'
      && keypressed7 != 'D') {
    c2 = keypressed7;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  int N_month = i1 + i2;
  delay(500);
  lcd.clear();
  lcd.print("Tag");

  char keypressed8 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
  if (keypressed8 != NO_KEY && keypressed8 != '*' && keypressed8 != '#' && keypressed8 != 'A' && keypressed8 != 'B' && keypressed8 != 'C'
      && keypressed8 != 'D') {
    c1 = keypressed8;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed9 = myKeypad.waitForKey();
  if (keypressed9 != NO_KEY && keypressed9 != '*' && keypressed9 != '#' && keypressed9 != 'A' && keypressed9 != 'B' && keypressed9 != 'C'
      && keypressed9 != 'D') {
    c2 = keypressed9;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  int N_day = i1 + i2;
  delay(500);
  lcd.clear();
  lcd.print("Stunde");

  char keypressed10 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
  if (keypressed10 != NO_KEY && keypressed10 != '*' && keypressed10 != '#' && keypressed10 != 'A' && keypressed10 != 'B' && keypressed10 != 'C'
      && keypressed10 != 'D') {
    c1 = keypressed10;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed11 = myKeypad.waitForKey();
  if (keypressed11 != NO_KEY && keypressed11 != '*' && keypressed11 != '#' && keypressed11 != 'A' && keypressed11 != 'B' && keypressed11 != 'C'
      && keypressed11 != 'D') {
    c2 = keypressed11;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  int N_hour = i1 + i2;
  delay(500);
  lcd.clear();
  lcd.print("Minuten");

  char keypressed12 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
  if (keypressed12 != NO_KEY && keypressed12 != '*' && keypressed12 != '#' && keypressed12 != 'A' && keypressed12 != 'B' && keypressed12 != 'C'
      && keypressed12 != 'D') {
    c1 = keypressed12;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed13 = myKeypad.waitForKey();
  if (keypressed13 != NO_KEY && keypressed13 != '*' && keypressed13 != '#' && keypressed13 != 'A' && keypressed13 != 'B' && keypressed13 != 'C'
      && keypressed13 != 'D') {
    c2 = keypressed13;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  int N_minutes = i1 + i2;
  delay(500);
  lcd.clear();

  rtc.adjust(DateTime(N_year, N_month, N_day, N_hour, N_minutes, 01)); // J, M, T, Std, Min, Sek
  keypressed = NO_KEY;
}

//Alarm Setup:
void Alarm_Setup() {
  lcd.clear();
  lcd.print("Schaltuhr Einst.");
  delay(500);
  lcd.clear();
  lcd.print("Steckdosen aus");
  char keypressed14 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
  if (keypressed14 != NO_KEY && keypressed14 != '*' && keypressed14 != '#' && keypressed14 != 'A' && keypressed14 != 'B' && keypressed14 != 'C'
      && keypressed14 != 'D') {
    c1 = keypressed14;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed15 = myKeypad.waitForKey();
  if (keypressed15 != NO_KEY && keypressed15 != '*' && keypressed15 != '#' && keypressed15 != 'A' && keypressed15 != 'B' && keypressed15 != 'C'
      && keypressed15 != 'D') {
    c2 = keypressed15;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  A_hour = i1 + i2;
  delay(500);
  lcd.clear();
  lcd.print("Steckdosen aus");
  char keypressed16 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
  if (keypressed16 != NO_KEY && keypressed16 != '*' && keypressed16 != '#' && keypressed16 != 'A' && keypressed16 != 'B' && keypressed16 != 'C'
      && keypressed16 != 'D') {
    c1 = keypressed16;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed17 = myKeypad.waitForKey();
  if (keypressed17 != NO_KEY && keypressed17 != '*' && keypressed17 != '#' && keypressed17 != 'A' && keypressed17 != 'B' && keypressed17 != 'C'
      && keypressed17 != 'D') {
    c2 = keypressed17;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  A_minute = i1 + i2;

  delay(500);
  lcd.clear();
  lcd.print("LG Aus");

  char keypressed18 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
  if (keypressed18 != NO_KEY && keypressed18 != '*' && keypressed18 != '#' && keypressed18 != 'A' && keypressed18 != 'B' && keypressed18 != 'C'
      && keypressed18 != 'D') {
    c1 = keypressed18;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed19 = myKeypad.waitForKey();
  if (keypressed19 != NO_KEY && keypressed19 != '*' && keypressed19 != '#' && keypressed19 != 'A' && keypressed19 != 'B' && keypressed19 != 'C'
      && keypressed19 != 'D') {
    c2 = keypressed19;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  B_hour = i1 + i2;
  delay(500);
  lcd.clear();
  lcd.print("LG Aus");
  char keypressed20 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above
  if (keypressed20 != NO_KEY && keypressed20 != '*' && keypressed20 != '#' && keypressed20 != 'A' && keypressed20 != 'B' && keypressed20 != 'C'
      && keypressed20 != 'D') {
    c1 = keypressed20;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed21 = myKeypad.waitForKey();
  if (keypressed21 != NO_KEY && keypressed21 != '*' && keypressed21 != '#' && keypressed21 != 'A' && keypressed21 != 'B' && keypressed21 != 'C'
      && keypressed21 != 'D') {
    c2 = keypressed21;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  B_minute = i1 + i2;
  delay(500);
  lcd.clear();
  keypressed = NO_KEY;

  delay(500);
  lcd.clear();
  lcd.print("Fan Aus Stunde");

  char keypressed22 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above

  if (keypressed22 != NO_KEY && keypressed22 != '*' && keypressed22 != '#' && keypressed22 != 'A' && keypressed22 != 'B' && keypressed22 != 'C'
      && keypressed22 != 'D') {
    c1 = keypressed22;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed23 = myKeypad.waitForKey();
  if (keypressed23 != NO_KEY && keypressed23 != '*' && keypressed23 != '#' && keypressed23 != 'A' && keypressed23 != 'B' && keypressed23 != 'C'
      && keypressed23 != 'D') {
    c2 = keypressed23;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  C_hour = i1 + i2;
  delay(500);
  lcd.clear();

  lcd.print("Fan Aus Minuten");
  char keypressed24 = myKeypad.waitForKey(); // here all programs are stopped until you enter the four digits then it gets compared to the code above

  if (keypressed24 != NO_KEY && keypressed24 != '*' && keypressed24 != '#' && keypressed24 != 'A' && keypressed24 != 'B' && keypressed24 != 'C'
      && keypressed24 != 'D') {
    c1 = keypressed24;
    lcd.setCursor(0, 1);
    lcd.print(c1);
  }
  char keypressed25 = myKeypad.waitForKey();
  if (keypressed25 != NO_KEY && keypressed25 != '*' && keypressed25 != '#' && keypressed25 != 'A' && keypressed25 != 'B' && keypressed25 != 'C'
      && keypressed25 != 'D') {
    c2 = keypressed25;
    lcd.setCursor(1, 1);
    lcd.print(c2);
  }

  i1 = (c1 - 48) * 10;
  i2 = c2 - 48;
  C_minute = i1 + i2;
  delay(500);
  lcd.clear();
  keypressed = NO_KEY;
}

vgs

Die Ausgabe kommt im Setup, aber warum wird das Setup nicht komplett ausgeführt (Einschalten der Steckdosen)?
Es wurde nix verändert.
Hab gerade wieder gleiches Problem gehabt, 6V Netzteil dran alles wieder ok, 9V wieder dran alles ok.

Notfalls wenn nicht am PC hängt hast doch LCD frei, auf dem kann man auch alles anzeigen, am Setup ende LCD löschen.
Es reicht schon 1, 2 ... anzeigen wen man faul ist mehr zu schreiben :wink:
Damit weist Du wo der gerade im Setup sich befindet.

Hier die Ausgabe der Seriellen zum Setup

Setup HAT gestartet
EINS Serial1.begin() ausgeführt
attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE) ausgeführt
Switch.enableTransmit(44) ausgeführt
dht.begin() ausgeführt
attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE) ausgeführt
Switch.enableTransmit(44) ausgeführt
dht.begin() ausgeführt
attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE) ausgeführt
Setup HAT gestartet
EINS Serial1.begin(9600) ausgeführt
ZWEI Serial2.begin(9600);  ausgeführt
myKeypad.begin() ausgeführt
lcd.begin(20, 4) ausgeführt
lcd.setBacklight(HIGH) ausgeführt
lcd.home(); ausgeführt
rtc.begin() ausgeführt
mySwitch.enableTransmit(44) ausgeführt
dht.begin() ausgeführt
attachInterrupt(0, rxIR_Interrupt_Handler, CHANGE) ausgeführt
schalt_temp = (eeprom.eeprom_read(7)); ausgeführt
direkt vor if (jetzt.hour() >= D_hour && ...
TRUE if (jetzt.hour() >= D_hour && ...
Steckdosen ausschalten direkt vor if (jetzt.hour() == A_hour  ...
setup unteres Ende erreicht verlasse setup()

Also ein Abarbeitung des Setup.
Dein Problem ist was anderes.

Ich rate dir, die ganzen Warnings vom Kompilieren zu beheben...
Nur mit deinen eigenen hast schon genug zu tun.

Jetzt schaltet er wieder wie gewohnt die Dosen ein im Setup,
Hatte noch 2 Print Ausgeben dabei gehängt hinterm ein und ausschalten.
Bisher hatte ich die Debugs nicht eingeschaltet, werd sie aber alle versuchen zu beheben.

Debugs nicht eingeschaltet ist eine merkwürdige Umschreibung für das was du machen sollst

Es geht um das hier

Sieht mir so aus als wäre hier das Problem.
Wenn jetzt komplett auf 0 steht treffen z.B. die Stundenbedingungen wohl nicht zu.

@StefanL38
ich hatte "alle" eingeschaltet, das waren aber 3 Mal soviel Zeichen als man hier posten kann, deshalb hatte ich das wieder zurückgenommen.

dreimal so viele würde heißen 360000 Zeichen.
Dann
aufteilen auf 3 bis 4 postings
oder lass dir erklären welche Teile des logs interessant sind.