For the dusk-to-dawn, look at @Costas EziScheduler and use it together with RTC and Time Input widgets. To toggle between “schedule” and “demo” mode, I guess a simple virtual button would do. E.g. “ON” the scheduler runs whatever is specified in the function, “OFF” just ignores it.