13#include <LiquidCrystal_PCF8574.h>
21#define CONFIGURATION_SSID "SafeSetup"
29#pragma region Singelton
108 ,
netMsk(255, 255, 255, 0) {
130 WiFi.setAutoReconnect(
false);
131 WiFi.persistent(
false);
133 WiFi.setHostname(
"EmlalockSafe");
138 display.print(
"Setting up WiFi");
139 Serial.println(
"Setting up WiFi");
143 display.print(
"Error starting");
145 display.print(
"Access Point ");
148 Serial.print(
"Error starting Access Point ");
154 dnsServer.setErrorReplyCode(DNSReplyCode::NoError);
166 display.print(
"Setting up Webserver");
167 Serial.println(
"Setting up Webserver");
177 server.on(
"/ssids", HTTP_GET, [
this](AsyncWebServerRequest* request) {
178 std::unique_lock<std::mutex> lock(
mtx);
180 for (
const auto& ssid :
ssids) {
181 resp += ssid +
"\r\n";
183 request->send(200,
"text/plain", resp);
187 server.on(
"/saveData", HTTP_GET, [
this](AsyncWebServerRequest* request) {
189 request->send(200,
"text/plain",
"Configuration Updated. Rebooting...");
195 server.onNotFound([](AsyncWebServerRequest* request) {
197 AsyncWebServerResponse* response = request->beginResponse(302,
"text/plain",
"");
198 response->addHeader(
"Location", String(
"http://") + WiFi.softAPIP().toString());
199 request->send(response);
211 display.print(
"Connect to WiFi:");
215 display.print(
"Open in Browser:");
220 Serial.println(
"\n");
221 Serial.println(
"Display: Connect to WiFi:");
222 Serial.print(
"Display: ");
224 Serial.println(
"Display: Open in Browser:");
225 Serial.print(
"Display: http://");
235 int16_t scanState = WiFi.scanComplete();
236 if (scanState == -2) {
238 WiFi.scanNetworks(
true);
240 else if (scanState >= 0) {
242 std::unique_lock<std::mutex> lock(
mtx);
244 for (
int i = 0; i < scanState; i++) {
245 ssids.push_back(WiFi.SSID(i));
247 WiFi.scanNetworks(
true);
#define CONFIGURATION_SSID
Name of the the temporary WiFi for the configuration.
Definition: WifiConfigurationServer.h:21
static Configuration & getSingleton()
Get the Singleton object.
Definition: Configuration.h:162
void setWifiSettings(const String &ssid, const String &pwd)
Set the Wifi Settings.
Definition: Configuration.h:368
Base class for configuring the controller over WiFi.
Definition: ConfigurationServerBase.h:16
void addSpiffsFileToServer(const char *path, String contentType, const char *filename=nullptr)
Adds the file from the SPIFFS with the filename to the webserver under the given path.
Definition: ConfigurationServerBase.h:43
AsyncWebServer server
The used asynchronous webserver.
Definition: ConfigurationServerBase.h:21
Class implementing the configuration of the WiFi.
Definition: WifiConfigurationServer.h:28
static WifiConfigurationServer ** getInstance()
Function providing the instance for the singleton.
Definition: WifiConfigurationServer.h:34
IPAddress netMsk
Network mask in Access Point mode.
Definition: WifiConfigurationServer.h:95
void createAp()
Create and configures the WiFi in AP mode.
Definition: WifiConfigurationServer.h:128
std::list< String > ssids
List with all found ssids.
Definition: WifiConfigurationServer.h:83
static void begin(LiquidCrystal_PCF8574 &display)
Create a new Configuration server.
Definition: WifiConfigurationServer.h:53
IPAddress IP
IP address in Access Point mode.
Definition: WifiConfigurationServer.h:89
void initialLcdMessage()
shows the ssid of the AP and the address to which the user should connect
Definition: WifiConfigurationServer.h:207
static WifiConfigurationServer * getSingletonPointer()
Get the Singleton object.
Definition: WifiConfigurationServer.h:43
LiquidCrystal_PCF8574 & display
Reference to the display.
Definition: WifiConfigurationServer.h:71
void loop()
Forward of the Arduino loop function.
Definition: WifiConfigurationServer.h:119
void configureWebserver()
adds the handlers for the different webpages
Definition: WifiConfigurationServer.h:162
std::mutex mtx
mutex for the protection of the data
Definition: WifiConfigurationServer.h:77
void scanWiFi()
scans the visible wifis and saves them into ssids. Should be continuously called during loop.
Definition: WifiConfigurationServer.h:233
DNSServer dnsServer
Instance of the DNS server in access point mode.
Definition: WifiConfigurationServer.h:65
WifiConfigurationServer(LiquidCrystal_PCF8574 &display)
Construct a new Configuration Server object.
Definition: WifiConfigurationServer.h:104
Definition: Configuration.h:16