   strncpy(key, o[F("key")] | "", sizeof(key));
   strncpy(station, o[F("station")] | "", sizeof(station));
   strncpy(hostname, o[F("hostname")] | "", sizeof(hostname));
-  conditions_interval = 1000 * (int)o[F("conditions_interval")];
-  forecasts_interval = 1000 * (int)o[F("forecasts_interval")];
-  metric = (bool)o[F("metric")];
-  on_time = 1000 * (int)o[F("display")];
-  bright = o[F("bright")];
-  dim = o[F("dim")];
-  rotate = o[F("rotate")];
+  conditions_interval = 1000 * ((int)o[F("conditions_interval")] | 1800);
+  forecasts_interval = 1000 * ((int)o[F("forecasts_interval")] | 43200);
+  metric = (bool)(o[F("metric")]) | true;
+  on_time = 1000 * ((int)o[F("display")] | 30);
+  bright = o[F("bright")] | 200;
+  dim = o[F("dim")] | 50;
+  rotate = o[F("rotate")] | 0;
 }
 
 void setup() {
 
   Serial.begin(115200);
-  analogWriteRange(255);
 
   tft.begin();
   tft.setTextColor(WHITE, BLACK);

    tft.println('/');

    if (mdns.begin(cfg.hostname, WiFi.localIP())) {
      DBG(println(F("MDNS started")));
      mdns.addService("http", "tcp", 80);
    } else
      ERR(println(F("Error starting MDNS")));

    last_fetch_conditions = -cfg.conditions_interval;
    last_fetch_forecasts = -cfg.forecasts_interval;

bool connect_and_get(WiFiClient &client, const __FlashStringHelper *path) {
  const __FlashStringHelper *host = F("api.wunderground.com");
  if (client.connect(host, 80)) {
    client.print(String("GET /api/") + cfg.key + '/' + path + F("/q/") + cfg.station
                 + F(".json HTTP/1.1\r\n")
                 + F("Host: ") + host + F("\r\nConnection: close\r\n\r\n"));
    if (client.connected()) {
