una misma fotocelula controlando dos momentos

Te modifique el codigo colocandole millis (a ver si te sirve).
¿el led simula al rele?, ¿conectastes la LDR en un pin digital, sera por eso que dices que tienes que echar a andar el arduino de noche?

int ldrPin = 7;
int ledPin= 12;
int val = 0;
int salioelsol = 0;
int seocultoelsol = 0;
//int segundos = 0;
//int segundostotal = 20;
unsigned long segundos = millis();
unsigned long segundostotal = 20;

void setup() {
  pinMode(ldrPin, INPUT);
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
 
void loop() {
  int val = digitalRead(ldrPin);
//  delay(1000);
//  segundos = segundos + 1; 
  Serial.print("seg ");
  Serial.print((millis()-segundos)/1000);
  Serial.print("  val ");
  Serial.println(val);
  
 
  if((val == LOW) && (salioelsol == 0)){
       salioelsol = 1;
       segundos = 0;
         }
  if ((val == HIGH) && (salioelsol == 1)){
    seocultoelsol = 1;
     digitalWrite(ledPin, HIGH);
      if ((millis()-segundos)/1000 >= segundostotal){
                 digitalWrite(ledPin, LOW);
                 salioelsol = 0;
                 seocultoelsol = 0;
                 //segundos = 0;
                 segundos = millis();
    }
       
  }
  }