 	if (!connected)
 		return;
 
-	uint32_t now = millis();
 	static int screen = 0;
+	static uint32_t last_switch = -1000;
+	uint32_t now = millis(), ontime = now - display_on;
 	if (fade == cfg.dim) {
 		if (swtch) {
-			swtch = false;
 			display_on = now;
 			fade = cfg.bright;
 			if (cfg.dimmable)

	strlcpy(c.moonrise_minute, moon[F("moonrise")][F("minute")] | "", sizeof(c.moonrise_minute));
	strlcpy(c.moonset_hour, moon[F("moonset")][F("hour")] | "", sizeof(c.moonset_hour));
	strlcpy(c.moonset_minute, moon[F("moonset")][F("minute")] | "", sizeof(c.moonset_minute));
	return true;
}

struct Forecast {

			if (cfg.dimmable)
				update_display(screen);
		}
	} else if (ontime > cfg.on_time) {
		if (cfg.dimmable) {
			analogWrite(TFT_LED, --fade);
			delay(25);
