246 lines
8.7 KiB
C
246 lines
8.7 KiB
C
// Load Wi-Fi library
|
|
#include <ESP8266WiFi.h>
|
|
#include <ESP8266WebServer.h>
|
|
#include <ESP8266HTTPUpdateServer.h>
|
|
#include <Preferences.h>
|
|
#include <Dictionary.h>
|
|
Preferences preferences;
|
|
ESP8266WebServer server(80);
|
|
ESP8266HTTPUpdateServer httpUpdater;
|
|
String header = "<!DOCTYPE html> <html>\n"
|
|
"<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n"
|
|
"<title>Truhensteuerung</title>\n"
|
|
"<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n"
|
|
"body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;} h3 {color: #444444;margin-bottom: 50px;}\n"
|
|
".col{ display: inline-block;}\n"
|
|
"input{width: 70px;}\n"
|
|
"</style>\n"
|
|
"</head>\n"
|
|
"<body>\n"
|
|
"<h1>Truhensteuerung Netz Servierer</h1>\n";
|
|
String ssid = "REPLACE_WITH_YOUR_SSID";
|
|
String password = "REPLACE_WITH_YOUR_PASSWORD";
|
|
unsigned long currentTime = millis();
|
|
unsigned long previousTime= 0;
|
|
//const long timeoutTime= 2000;
|
|
|
|
void WifiConnect(String _ssid, String _password){
|
|
// Connect to Wi-Fi network with SSID and password
|
|
Serial.print("Connecting to ");
|
|
Serial.println(_ssid);
|
|
WiFi.begin(_ssid, _password);
|
|
if(WiFi.waitForConnectResult() == WL_CONNECTED)
|
|
{
|
|
Serial.println("");
|
|
Serial.println("WiFi connected.");
|
|
Serial.println("IP address: ");
|
|
Serial.println(WiFi.localIP());
|
|
}
|
|
else
|
|
{
|
|
Serial.println("WiFi Connection failed! Restarting in SoftAP mode instead");
|
|
WiFi.mode(WIFI_AP);
|
|
WiFi.softAP("Truhensteuerung", "12345678");
|
|
Serial.print("AP IP address: ");
|
|
Serial.println(WiFi.softAPIP());
|
|
}
|
|
// Print local IP address and start web server
|
|
}
|
|
|
|
void handleWifiSetup(){
|
|
String ptr = header;
|
|
boolean reset = false;
|
|
// ptr += "URI: ";
|
|
// ptr += server.uri();
|
|
// ptr += "<br>\nMethod: ";
|
|
// ptr += (server.method() == HTTP_GET) ? "GET" : "POST";
|
|
// ptr += "<br>\nArguments: ";
|
|
// ptr += server.args();
|
|
// ptr += "<br>\n";
|
|
Dictionary<String, String> arguments = Dictionary<String, String>();
|
|
for (uint8_t i = 0; i < server.args(); i++) { arguments.set(server.argName(i), server.arg(i));}
|
|
if(server.method() == HTTP_GET){
|
|
int n = WiFi.scanNetworks(false, true);
|
|
String ssid;
|
|
uint8_t encryptionType;
|
|
int32_t RSSI;
|
|
uint8_t* BSSID;
|
|
int32_t channel;
|
|
bool isHidden;
|
|
ptr += "<a href=\"/\">Home</a>";
|
|
ptr += "<form action=\"/setup\" method=\"post\">";
|
|
ptr +="<div class=\"col\">";
|
|
ptr +="<table >\n<tr ><td>Name</td><td>Temp Min</td><td>Temp Max</td></tr>\n";
|
|
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
|
ptr +="<tr>\n<td>";
|
|
ptr +="<input name=\"t"+String(i)+"_name\" value=\"" + String(truhen[i].getName()) + "\">";
|
|
ptr +="</td>\n<td>";
|
|
ptr +="<input name=\"t"+String(i)+"_min\" value=\"" + String(truhen[i].getuT()) + "\">";
|
|
ptr +="</td>\n<td>";
|
|
ptr +="<input name=\"t"+String(i)+"_max\" value=\"" + String(truhen[i].getoT()) + "\">";
|
|
ptr += "</td>\n</tr>\n";
|
|
}
|
|
ptr += "</table>\n";
|
|
ptr += "<input type=\"submit\" id=\"submit\" name=\"submit_truhen\" >";
|
|
ptr +="";
|
|
ptr +="";
|
|
ptr +="";
|
|
ptr +="</div>";
|
|
ptr +="<div class=\"col\">";
|
|
ptr +="<table >\n<tr><td></td><td>ID</td><td>SSID</td><td>Channel</td><td>RSSI</td><td></td></tr>\n";
|
|
for (int i = 0; i < n; i++)
|
|
{
|
|
WiFi.getNetworkInfo(i, ssid, encryptionType, RSSI, BSSID, channel, isHidden);
|
|
ptr +="<tr><td><input type=\"radio\" id=\"ssid\" name=\"ssid\" value=\""+String(ssid.c_str())+"\"></td><td>"+String(i + 1)+"</td><td>"+String(ssid.c_str())+"</td><td>"+String(channel)+"</td><td>"+String(RSSI)+"dBm</td><td>"+String(encryptionType == ENC_TYPE_NONE ? "open" : "")+""+String(isHidden ? "hidden" : "")+"</td></tr>\n";
|
|
}
|
|
|
|
ptr += "</table>\n";
|
|
ptr += "<input type=\"input\" id=\"password\" name=\"password\" placeholder=\"Kennwort\" >";
|
|
ptr += "<input type=\"submit\" id=\"submit\" name=\"submit_wlan\" >";
|
|
ptr +="</div>"; ptr +="<div class=\"col\">";
|
|
|
|
ptr +="<table>\n\n";
|
|
ptr +="<tr>\n<td>ESP.getResetReason()</td>\n<td>";
|
|
ptr +=String(ESP.getResetReason());
|
|
ptr += "</td>\n</tr>\n";
|
|
ptr +="<tr>\n<td>ESP.getFreeHeap()</td>\n<td>";
|
|
ptr +=String(ESP.getFreeHeap());
|
|
ptr += "</td>\n</tr>\n";
|
|
ptr +="<tr>\n<td>ESP.getHeapFragmentation()</td>\n<td>";
|
|
ptr +=String(ESP.getHeapFragmentation());
|
|
ptr += "</td>\n</tr>\n";
|
|
ptr +="<tr>\n<td>ESP.getMaxFreeBlockSize()</td>\n<td>";
|
|
ptr +=String(ESP.getMaxFreeBlockSize());
|
|
ptr += "</td>\n</tr>\n";
|
|
ptr +="<tr>\n<td>ESP.getChipId()</td>\n<td>";
|
|
ptr +=String(ESP.getChipId());
|
|
ptr += "</td>\n</tr>\n";
|
|
ptr +="<tr>\n<td>ESP.getCpuFreqMHz()</td>\n<td>";
|
|
ptr +=String(ESP.getCpuFreqMHz());
|
|
ptr += "</td>\n</tr>\n";
|
|
ptr += "</table>\n";
|
|
ptr += "</div>\n";
|
|
ptr += "</form>";
|
|
}else{
|
|
ptr += "<p>\n";
|
|
if(arguments.get("submit_truhen") != NULL){
|
|
reset = true;
|
|
preferences.begin("my-app", false);
|
|
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
|
preferences.putString(String("t"+String(i)+"_name").c_str(), arguments.get("t"+String(i)+"_name"));
|
|
preferences.putInt(String("t"+String(i)+"_min").c_str(), arguments.get("t"+String(i)+"_min").toInt());
|
|
preferences.putInt(String("t"+String(i)+"_max").c_str(), arguments.get("t"+String(i)+"_max").toInt());
|
|
}
|
|
preferences.end();
|
|
}
|
|
if(arguments.get("submit_wlan") != NULL){
|
|
reset = true;
|
|
String ssid = arguments.get("ssid");
|
|
String password = arguments.get("password");
|
|
ptr += "Connecting to "+ssid+"<br>\n";
|
|
Serial.println("Connecting to "+ssid+", "+password+"");
|
|
WiFi.begin(ssid, password);
|
|
if(WiFi.waitForConnectResult() == WL_CONNECTED)
|
|
{
|
|
Serial.println("");
|
|
Serial.println("WiFi connected.");
|
|
Serial.println("IP address: ");
|
|
Serial.println(WiFi.localIP());
|
|
preferences.begin("my-app", false);
|
|
preferences.putString("ssid", ssid);
|
|
preferences.putString("password", password);
|
|
preferences.end();
|
|
ptr += "WiFi connected.<br>";
|
|
// ptr += "IP address: ";
|
|
// ptr += WiFi.localIP();
|
|
ptr += "<br>\n";
|
|
}
|
|
else
|
|
{
|
|
Serial.println("WiFi Connection failed! Restarting in SoftAP mode instead");
|
|
ptr += "WiFi Connection failed! Restarting in SoftAP mode instead<br>\n";
|
|
WiFi.mode(WIFI_AP);
|
|
WiFi.softAP("Truhensteuerung", "12345678");
|
|
Serial.print("AP IP address: ");
|
|
Serial.println(WiFi.softAPIP());
|
|
//ptr += "AP IP address: ";
|
|
//ptr += WiFi.softAPIP();
|
|
ptr += "<br>\n";
|
|
}
|
|
// Print local IP address and start web server
|
|
ptr += "</p>\n";
|
|
}
|
|
}
|
|
ptr +="</body>\n";
|
|
ptr +="</html>\n";
|
|
if(reset){
|
|
ptr +="<p>Neustart, bitte warten...</p>\n";
|
|
ptr +="<script>window.location.assign(\"/\")</script>\n";
|
|
}
|
|
server.send(200, "text/html", ptr);
|
|
if(reset){
|
|
delay(2000);
|
|
ESP.restart();
|
|
}
|
|
|
|
}
|
|
void handleRoot(){
|
|
String ptr = header;
|
|
ptr +="<div class=\"col\">";
|
|
ptr +="<table>\n<tr><td>Name</td><td>Temp</td><td>Status</td></tr>\n";
|
|
for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) {
|
|
ptr +="<tr style=\"padding: 10px;font-size: 1.8em;\" >\n<td>";
|
|
ptr +=truhen[i].getName();
|
|
ptr +="</td>\n<td>";
|
|
ptr +=String(truhen[i].getCurTemp())+"℃";
|
|
ptr +="</td>\n<td>";
|
|
if (truhen[i].getStat() == -1) {
|
|
ptr +="Nicht bekannt";
|
|
}
|
|
else if (truhen[i].getStat() == 1) {
|
|
ptr +="An";
|
|
}
|
|
else if (truhen[i].getStat() == 0) {
|
|
ptr +="Aus";
|
|
}
|
|
else if (truhen[i].getStat() == 2) {
|
|
ptr +="Error";
|
|
}
|
|
ptr += "</td>\n</tr>\n";
|
|
}
|
|
|
|
ptr += "</table>\n";
|
|
ptr += "</div>\n";
|
|
|
|
ptr += "<script>window.setTimeout( function() { window.location.reload();}, 10000);</script>\n";
|
|
ptr +="</body>\n";
|
|
ptr +="</html>\n";
|
|
server.send(200, "text/html", ptr);
|
|
}
|
|
void handleNotFound() {
|
|
String message = "File Not Found\n\n";
|
|
message += "URI: ";
|
|
message += server.uri();
|
|
message += "\nMethod: ";
|
|
message += (server.method() == HTTP_GET) ? "GET" : "POST";
|
|
message += "\nArguments: ";
|
|
message += server.args();
|
|
message += "\n";
|
|
for (uint8_t i = 0; i < server.args(); i++) { message += " " + server.argName(i) + ": " + server.arg(i) + "\n"; }
|
|
server.send(404, "text/plain", message);
|
|
}
|
|
|
|
void WifiSetup() {
|
|
preferences.begin("my-app", true);
|
|
ssid = preferences.getString("ssid", ssid);
|
|
password = preferences.getString("password", password);
|
|
preferences.end();
|
|
|
|
WifiConnect(ssid, password);
|
|
httpUpdater.setup(&server);
|
|
server.on("/setup",handleWifiSetup);
|
|
server.on("/",handleRoot);
|
|
|
|
server.begin();
|
|
};
|