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