encender rele segun tiempo

Nota de programador viejo: Si estas aprendiendo a programar no uses el estilo de los ejemplos es malisimo para seguir.

Esto esta mal, siempre se te va a apagar. El delay esta de mas ya que detiene por completo el resto de las tareas.
Puede usar una interupcion periodica y leer el reloj o cada 1,2,3.. segundos consultar el reloj y ver si ya es hora despues en el programa principal.
O algo mas simple.

long intervalo = 1000;

unsigned long currmillis = millis();

if(currmillis - prevmillis > intervalo) // si paso mas de 1 segundo leer el reloj
{
previousmillis = currmillis;

...llamar a la rutina de lectura del reloj.

if (hour == hora && minute == minute && second == segundo)
{
digitalWrite(relayPin, HIGH); //encender si estaba apagado
Serial.println("encendio");
}
else
{
digitalWrite(relayPin, LOW); //apagar si estaba prendido
Serial.println("apago");
}
}

... seguir con otras tareas