Come imposto ripetizione every day accensione relè

Ragazzi sto perfezionando un attuatore bluetooth che da app android riceve gli input sia per l'accensione che per lo spegnimento di un relè.
L'app può inoltrare dei comandi base temporizzati e preimpostati es. 30/60/120/180/240 min. che gestisco lato arduino tramite millis(). Tutto ok qui. Funziona tutto!

L'app inoltre può inviare dei veri e propri comandi programmati, cioè istruisce arduino per accendere e spegnere all'ora e alla data ics il relè. Tutto ok anche qui. Funziona tutto!

Ho dotato l'app di una chech box, che se selezionata, dice ad arduino di ripetere ogni giorno la programmazione oraria ricevuta. Qui ho i problemi, non riesco a fare questa cosa. Mi aiutate?

Dunque nel setup io dico:

  giornocorrente = now.day();
  mesecorrente = now.month();

poi nel loop ho vari case, incollo quelli coinvolti. Ogni case viene attivato da un pulsante dedicato nell'app. Nel caso del data/ora uso i comandi android time e data picker:

case 'H':             // legge il valore dataON ricevuto via BT
      dataON = bluetooth.parseInt();
      break;

    case 'I':            // legge il valore oraON ricevuto via BT
      oraON = bluetooth.parseInt();
      oraON_mem = oraON; // uguaglio la variabile oraON ad oraON_mem e nella riga successiva la salvo nella memoria rom
      eeprom_write_float(&salva, oraON_mem);
      break;

    // case programmazione OFF data e ora

    case 'L':            // legge il valore dataOFF ricevuto via BT
      dataOFF = bluetooth.parseInt();
      break;

    case 'M':            // legge il valore oraOFF ricevuto via BT
      oraOFF = bluetooth.parseInt();
      oraOFF_mem = oraOFF; // uguaglio la variabile oraOFF ad oraOFF_mem e nella riga successiva la salvo nella memoria rom
      eeprom_write_float(&salva, oraOFF_mem);
      break;

 case 'N':           // case check box = true. Ripete ogni giorno oraON e oraOFF
      oraON_mem = eeprom_read_float(&salva);                            // recupera l'oraON memorizzata nel case I
      oraOFF_mem = eeprom_read_float(&salva);                           // recupera l'oraOFF memorizzata nel case M
      break;

    case 'O':           // quando la check box è su false i dati memorizzati vengono cancellati
      oraON_mem = 0;
      eeprom_write_float(&salva, oraON_mem);
      oraOFF_mem = 0;
      eeprom_write_float(&salva, oraOFF_mem);
      break;

// condizioni per ripetere, ON e OFF ogni giorno, se la checkbox nell'app è true.
  if ((giornocorrente != now.day()) && (mesecorrente != now.month()) && (oraON_mem == (now.hour() * 60) + now.minute())) {
    digitalWrite(rele, HIGH);
    digitalWrite(LED, HIGH);
    delay(20);
  }
  if ((giornocorrente != now.day()) && (mesecorrente != now.month()) && (oraOFF_mem == (now.hour() * 60) + now.minute())) {
    digitalWrite(rele, LOW);
    digitalWrite(LED, LOW);
    delay(20);
  }

Cosa sbaglio? Mi sembra tutto giusto.

Potete chiudere o cancellare, ho risolto da me dopo un pò di prove e ragionamenti.

Grazie

Bene, ma magari se spiegassi anche come hai risolto, così aiuti anche altri che hanno magari lo stesso problema?