Servidor web con encendido de luces

hola,
he cogido el codigo de un servidor web que enciende y apaga un led y quiero usarlo para encender luces con reles, el problema es que el encendido del led se hace ANTES de crear la web y necesito activar los reles DESPUES de crear la web, puesto que el funcionamiento de los reles tarda unos 4 minutos encendiendo y apagando luces y si lo hago antes de cargar la web esta tardaria 4 minutos en lanzarse y no serviria, he probado a ponerlo en varios sitios pero no me hace caso, me podeis indicar como se hace, resumo lo que quiero, Muchas gracias.

-leer la url
-crear la web con un iframe incluido
-una vez creada la web totalmente
-comprobar si la url contiene LED=ON
-si es así ejecutar un void que tarda 4 minutos encendiendo y apagando luces

codigo:

#include <SPI.h>  //Importamos librería comunicación SPI
#include <Ethernet.h>  //Importamos librería Ethernet
 
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; //Ponemos la dirección MAC de la Ethernet Shield que está con una etiqueta debajo la placa
IPAddress ip(192,168,18,10); //Asingamos la IP al Arduino
IPAddress gateway(192,168,18,1);
IPAddress subnet(255, 255, 255, 0);
EthernetServer server(80); //Creamos un servidor Web con el puerto 80 que es el puerto HTTP por defecto
 
int led=13; //Pin de conexion del led
String estado="APAGADO"; //Estado inicial del Led  "APAGADO"

// salidas para los reles
const int R1=4;
const int R2=6;
const int R3=8;
const int R4=10;
const int V1=3;
const int V2=5;
const int V3=7;
const int V4=9;


void setup()
{
  Serial.begin(9600);
 
  // Inicializamos la comunicación Ethernet y el servidor
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("servidor en ");
  Serial.println(Ethernet.localIP());
 
  pinMode(led,OUTPUT); //Declara el pin del led como salida

 
  // definimos el tipo de salida de cada pin para los reles
  pinMode(R1,OUTPUT);
  pinMode(R2,OUTPUT);
  pinMode(R3,OUTPUT);
  pinMode(R4,OUTPUT);
  pinMode(V1,OUTPUT);
  pinMode(V2,OUTPUT);
  pinMode(V3,OUTPUT);
  pinMode(V4,OUTPUT);
 
}
 
void loop()
{
  EthernetClient client = server.available(); //Creamos un cliente Web
  //Cuando detecte un cliente a través de una petición HTTP
  if (client) {
    Serial.println("cliente nuevo");
    boolean currentLineIsBlank = true; //Una petición HTTP acaba con una línea en blanco
    String cadena=""; //Creamos una cadena de caracteres vacía
    
    while (client.connected()) {
      if (client.available()) {
        char c = client.read(); //Leemos la petición HTTP carácter por carácter
        //Serial.write(c); //Visualizamos la petición HTTP por el Monitor Serial
        cadena.concat(c); //Unimos el String 'cadena' con la petición HTTP (c). De esta manera convertimos la petición HTTP a un String
 
         //Ya que hemos convertido la petición HTTP a una cadena de caracteres, ahora podremos buscar partes del texto.
         int posicion=cadena.indexOf("LED="); //Guardamos la posición de "LED=" en la variable 'posicion'

             if(cadena.substring(posicion)=="LED=ON") //Si hay "LED=ON"
              {
                digitalWrite(led,HIGH);
                estado="ENCENDIDAS";
                comprobar_luces(); // esto es una funcion que comprueba las luces encendiendolas todas
                bailedeluces(); // esto es una secuencia de luces que dura 4 minutos, aqui se ejecuta pero hasta que termina no carga la pagina y entonces no me sirve
              } 
            if(cadena.substring(posicion)=="LED=OFF") //Si a la posición 'posicion' hay "LED=OFF"
              {
                digitalWrite(led,LOW);
                estado="APAGADAS";
              }
               
        //Cuando reciba una línea en blanco, quiere decir que la petición HTTP ha acabado y el servidor Web está listo para enviar una respuesta
        if (c == '\n' && currentLineIsBlank) {
 
            // Enviamos al cliente una respuesta HTTP
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");
            client.println();
 
            //Página web en formato HTML
            client.println("<html>");
            client.println("<head>");
            client.println("<title>Baile de luces</title>");
           
            client.println("<meta name='viewport' content='width=device-width, initial-scale=1'>");
            client.println("</head>");
            client.println("<body>");
            client.println("<p>");
            client.println(estado);
            client.println("</p>");
            client.println("<iframe");
            client.println("  title='Activar Luces'");
            client.println("  width='95%'");
            client.println("  height='200'");
            client.println("  src='http://www.web.net/imagenBailando.gif'>");
            client.println("</iframe>");
            client.println(" </p></body>");
            client.println("</html>");
            break;
       
        }
        
        if (c == '\n') { //Si el caracter leido es una linea vacia activa la variable lineaEnBlanco
          currentLineIsBlank = true;
        }
        else if (c != '\r') { //Si no es linea vacia, comprueba que sea <> RC, es decir contiene caracteres, entonces lineaEnBlanco=Falso
          currentLineIsBlank = false;
        }
      }
    }
    //Dar tiempo al navegador para recibir los datos
    delay(1);
    client.stop();// Cierra la conexión
  }
  
  // si lo pongo aqui no se ejecuta
  if (estado=="ENCENDIDAS") {
    bailedeluces();            
  }

}


void comprobar_luces() {
  //comprobar luces
  digitalWrite(V1,HIGH);
  delay(500);
  digitalWrite(V2,HIGH);
  delay(500);
  digitalWrite(V3,HIGH);
  delay(500);
  digitalWrite(V4,HIGH);
  delay(1000);
  digitalWrite(V1,LOW);
  digitalWrite(V2,LOW);
  digitalWrite(V3,LOW);
  digitalWrite(V4,LOW);
  delay(1000);

  //rojos
  digitalWrite(R1,HIGH);
  delay(500);
  digitalWrite(R2,HIGH);
  delay(500);
  digitalWrite(R3,HIGH);
  delay(500);
  digitalWrite(R4,HIGH);
  delay(1000);
  digitalWrite(V1,LOW);
  digitalWrite(V2,LOW);
  digitalWrite(V3,LOW);
  digitalWrite(V4,LOW);
  ninguno(1000);
}

void bailedeluces() {
  //4 minutos encediendo y apagando
  digitalWrite(V1,HIGH);
  delay(100);
  digitalWrite(V1,LOW);
  //..... el codigo sigue con docenas de lineas que no aportan nada
}

void todas(int t1) {
  digitalWrite(V1,HIGH);
  digitalWrite(V2,HIGH);
  digitalWrite(V3,HIGH);
  digitalWrite(V4,HIGH);
  digitalWrite(R1,HIGH);
  digitalWrite(R2,HIGH);
  digitalWrite(R3,HIGH);
  digitalWrite(R4,HIGH);
  delay(t1);
}

void ninguno(int t1) {
  digitalWrite(V1,LOW);
  digitalWrite(V2,LOW);
  digitalWrite(V3,LOW);
  digitalWrite(V4,LOW);
  digitalWrite(R1,LOW);
  digitalWrite(R2,LOW);
  digitalWrite(R3,LOW);
  digitalWrite(R4,LOW);
  delay(t1);
}

Primero que nada edita tu post y pon el código como corresponde (ver Reglas del foro, punto 7).

Por otro lado: ¿Y las definiciones? ¿Y el setup()?
Pon el código completo, a medias no sirve.

Saludos

muchas gracias gatul, a ver si ahora lo he hecho bien, saludos.

a ver, ya que estamos, tengo puestos relés de este tipo http://www.colombianizate.com.co/tienda/arduino/arduino-rele-relay/modulo-rele-1-canal-5v-arduino/ y el tiempo de activación varia entre 80 y 400 milisegundos, he usado 3 placas de arduino uno. Una de ellas no sigue la secuencia indicada nunca porque no abre y cierra bien, se queda cerrada hasta otra secuencia que la abre, es como si no le diese tiempo, otra lo ha hecho alguna vez pero algunos relés dejan de responder de la misma forma y otra ha conseguido hacerlo un solo día perfectamente y ya no lo hace, le pasa como a las otras dos, que no es capaz de abrir y cerrar rápidamente y se quedan cerrados los relés, ¿sabeis a que puede deberse?, si es por los relés o por el arduino, solo tiene una luz led de 2w/4w por relé, otros relés tienen una normal de filamentos de 40w, he revisado conexiones y todo bien, no se si puede ser por que han bajado las temperaturas¿?, porque hay muy poco tiempo entre abrir y cerrar (80 milisegundos, me extraña porque antes lo ha hecho perfectamente) o porque el código ocupa un 56% de la memoria, al intentar meter unas lineas mas de if me decía que ocupaba el 80% y podría provocar inestabilidad, muchas gracias por todo y FELIZ AÑO.