 OverlayCallback overlays[] = { drawHeaderOverlay };
 int numberOfOverlays = 1;
 
+String ESPChipID(void) {
+#if defined(ESP8266)
+  return String(ESP.getChipId(), HEX);
+#else
+  uint64_t EspChipID = ESP.getEfuseMac();
+  char chipID[14];
+  sprintf(chipID, "%04X%08X", (uint16_t)(EspChipID >> 32), (uint32_t)EspChipID);
+  return chipID;
+
+#endif
+}
 void setup() {
     // Turn On VCC
   //pinMode(D4, OUTPUT);

  //Manual Wifi
  //WiFi.begin(WIFI_SSID, WIFI_PWD);
  String hostname(HOSTNAME);
  hostname += String(ESP.getChipId(), HEX);
  WiFi.hostname(hostname);


  int counter = 0;

  ArduinoOTA.begin();

  updateData(&display);
  
#if defined(ESP8266)
  ticker.attach(UPDATE_INTERVAL_SECS, setReadyForWeatherUpdate);
#endif

}

void loop() {

#if !defined(ESP8266)
  if (millis() - timeSinceLastWUpdate > (1000L*UPDATE_INTERVAL_SECS)) {
    setReadyForWeatherUpdate();
    timeSinceLastWUpdate = millis();
  }
#endif

  if (readyForWeatherUpdate && ui.getUiState()->frameState == FIXED) {
    updateData(&display);
