Telecomando RF-IR per gestione condizionatore

Salve a tutti, purtroppo solamente oggi sono riuscito (causa impegni lavorativi) a mettere mano ad Arduino, sono riuscito grazie alle vs. indicazioni a effettuare la modifica del codice, e devo dire chè funziona in modo corretto, quindi ogni sensore comunica con Arduino il quale cambia stato ad ogni apertura e ad ogni chiusura, (posto il codice modificato)

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
bool portachiusa = true;
bool camerachiusa = true;
bool bagnochiuso = true;
#include <IRremote.h>
IRsend irsend;

int khz = 38;                                                          // Modulazione di Frequenza trasmettitore IR
unsigned int powerOff[] = {3464, 1700, 516, 1208, 440, 1280, 440, 428, 436, 432, 520, 352, 492, 1232, 436, 428, 436, 432, 496, 1224, 444, 1280, 516, 352, 512, 1216, 516, 352, 440, 424, 492, 1228, 516, 1212, 516, 352, 492, 1260, 408, 1288, 516, 352, 496, 372, 460, 1264, 436, 428, 488, 380, 520, 1216, 440, 428, 460, 412, 464, 404, 492, 372, 440, 428, 460, 412, 440, 428, 440, 428, 436, 432, 444, 428, 492, 372, 492, 376, 488, 376, 440, 428, 456, 412, 496, 368, 436, 436, 492, 372, 524, 352, 440, 428, 440, 428, 488, 376, 492, 376, 500, 372, 440, 424, 492, 372, 496, 1228, 436, 432, 436, 436, 460, 408, 492, 372, 492, 376, 500, 1224, 444, 424, 440, 424, 496, 384, 436, 436, 496, 368, 432, 432, 496, 372, 496, 368, 444, 424, 516, 356, 436, 1288, 496, 1224, 496, 376, 488, 376, 488, 1232, 500, 368, 496, 1228, 516, 356, 500, 368, 444, 424, 440, 1284, 500, 364, 492, 376, 436, 432, 432, 1292, 492, 1232, 512, 1212, 464, 1272, 460, 1260, 524, 352, 492, 372, 492, 372, 496, 372, 460, 408, 436, 440, 492, 372, 460, 408, 488, 380, 436, 432, 444, 420, 496, 372, 464, 404, 460, 408, 488, 380, 488, 376, 488, 376, 488, 380, 488, 380, 496, 368, 444, 424, 440, 428, 440, 428, 456, 408, 436, 432, 468, 404, 440, 428, 436, 432, 444, 424, 464, 400, 444, 420, 444, 424, 464, 404, 440, 424, 440, 424, 444, 420, 444, 424, 464, 404, 440, 424, 440, 432, 468, 400, 444, 420, 444, 424, 444, 420, 444, 424, 440, 428, 440, 424, 440, 428, 436, 432, 444, 424, 444, 424, 440, 424, 440, 428, 440, 1280, 492, 376, 436, 432, 444, 420, 468};





void setup()
{
  Serial.begin(9600);
  mySwitch.enableReceive(0);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  irsend.enableIROut(khz);
  delay(1000);
  Serial.println(F("Analisi"));
  digitalWrite(11, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(8, HIGH);
}

void loop() {


    if (mySwitch.available()) {

    long value = mySwitch.getReceivedValue();


    if (value == 2022535)
    if (portachiusa)

      {
        portachiusa = !portachiusa;
        Serial.println(" (PORTA  INGRESSO APERTA) CODICE (2022535) ");        
        digitalWrite(5, HIGH);
        delay(100);
        digitalWrite(5, LOW);        
        digitalWrite(11, LOW);
        digitalWrite(12, HIGH);
        delay(500);       
        digitalWrite(4, HIGH);
        delay(200);
        digitalWrite(4, LOW);
        for (int i = 0; i < 3; i++)
        irsend.sendRaw(powerOff, sizeof(powerOff) / sizeof(int), khz);
        delay(16);
        irsend.sendRaw(powerOff, sizeof(powerOff) / sizeof(int), khz);       
        mySwitch.resetAvailable();
      }

      else

      {
        portachiusa = !portachiusa;
        Serial.println(" (PORTA  INGRESSO CHIUSA) CODICE (2022535) ");
        digitalWrite(5, HIGH);
        delay(100);
        digitalWrite(5, LOW);
        digitalWrite(11, HIGH);
        digitalWrite(12, LOW);
        delay(1000);
        mySwitch.resetAvailable();
      }

    else

   
    if (value == 615047)
    if (camerachiusa) ecc.   

il codice si ripete per ogni sensore.

adesso durante le varie prove di funzionamento, mi sono accorto di avere tralasciato un aspetto abbastanza significativo, che consisterebbe nella necessità di poter inserire un ritardo del comando di spegnimento ad es. 120000 ms, quindi: apro la porta, il sensore invia un ipulso, Arduino riceve il codice lo riconosce, attende 120000 ms. prima di inviare il comando di spegnimento.

Potrebbe essere una cosa fattibile, se durante il tempo di attesa la porta ritorna allo stato chiusa il comando viene annullato, e il sistema ritorna in attesa per il prossimo comando?

se si, dove posso sbattere la testa? grazie Fabio.