void setup() { #ifdef ESP8266_WiFi String mdns_id; mdns_id = eepromManager.fetchmDNSName(); if(mdns_id.length()<=0) mdns_id = "ESP" + String(ESP.getChipId()); // If we're going to set up WiFi, let's get to it WiFiManager wifiManager; wifiManager.setConfigPortalTimeout(5*60); // Time out after 5 minutes so that we can keep managing temps wifiManager.setDebugOutput(false); // In case we have a serial connection to BrewPi // The main purpose of this is to set a boolean value which will allow us to know we // just saved a new configuration (as opposed to rebooting normally) wifiManager.setSaveConfigCallback(saveConfigCallback); // The third parameter we're passing here (mdns_id.c_str()) is the default name that will appear on the form. // It's nice, but it means the user gets no actual prompt for what they're entering. WiFiManagerParameter custom_mdns_name("mdns", "Device (mDNS) Name", mdns_id.c_str(), 20); wifiManager.addParameter(&custom_mdns_name); wifiManager.autoConnect(); // Launch captive portal with auto generated name ESP + ChipID // Alright. We're theoretically connected here (or we timed out). // If we connected, then let's save the mDNS name if (shouldSaveConfig) { // If the mDNS name is valid, save it. if (isValidmDNSName(custom_mdns_name.getValue())) { eepromManager.savemDNSName(custom_mdns_name.getValue()); } else { // If the mDNS name is invalid, reset the WiFi configuration and restart the ESP8266 WiFi.disconnect(true); delay(2000); handleReset(); } } // Regardless of the above, we need to set the mDNS name and announce it if (!MDNS.begin(mdns_id.c_str())) { // TODO - Do something about it or log it or something } #endif #if BREWPI_BUZZER buzzer.init(); buzzer.beep(2, 500); #endif piLink.init(); #ifdef ESP8266_WiFi // If we're using WiFi, initialize the bridge server.begin(); server.setNoDelay(true); // mDNS will stop responding after awhile unless we query the specific service we want MDNS.addService("brewpi", "tcp", 23); MDNS.addServiceTxt("brewpi", "tcp", "board", "ESP8266"); MDNS.addServiceTxt("brewpi", "tcp", "branch", "legacy"); MDNS.addServiceTxt("brewpi", "tcp", "version", VERSION_STRING); MDNS.addServiceTxt("brewpi", "tcp", "revision", FIRMWARE_REVISION); #endif bool initialize = !eepromManager.hasSettings(); if(initialize) { eepromManager.zapEeprom(); // Writes all the empty files to SPIFFS logInfo(INFO_EEPROM_INITIALIZED); } logDebug("started"); tempControl.init(); settingsManager.loadSettings(); #if BREWPI_SIMULATE simulator.step(); // initialize the filters with the assigned initial temp value tempControl.beerSensor->init(); tempControl.fridgeSensor->init(); #endif display.init(); #ifdef ESP8266_WiFi display.printWiFi(); // Print the WiFi info (mDNS name & IP address) delay(8000); display.clear(); #endif display.printStationaryText(); display.printState(); // rotaryEncoder.init(); logDebug("init complete"); }