diff --git a/Dictionary-master.zip b/Dictionary-master.zip new file mode 100644 index 0000000..0df6921 Binary files /dev/null and b/Dictionary-master.zip differ diff --git a/Steuerung_Truhen.ino b/Steuerung_Truhen.ino index 7da2ed0..830effa 100644 --- a/Steuerung_Truhen.ino +++ b/Steuerung_Truhen.ino @@ -30,9 +30,24 @@ void setup() { Serial.println(); setup_lcd(); lcd.clear(); + preferences.begin("my-app", true); for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { - truhen[i].setup(); + truhen[i].setup( + preferences.getString( + String("t"+String(i)+"_name").c_str(), + String(truhen[i].getName()) + ), + preferences.getInt( + String("t"+String(i)+"_min").c_str(), + uT + ), + preferences.getInt( + String("t"+String(i)+"_max").c_str(), + oT + ) + ); } + preferences.end(); wdt_enable(WDTO_4S); // Watchdog auf 4 s stellen WifiSetup(); Serial.println("Setup fi"); @@ -54,7 +69,7 @@ void loop() { Serial.println("SCHALTINTERVALL"); last_schalt_time = millis(); for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { - truhen[i].schalt(oT, uT); + truhen[i].schalt(); } } if(millis() - last_lcd_time >= LCD_REFRESH_INTERVAL || last_lcd_time == 0) diff --git a/Truhe.cpp b/Truhe.cpp index 35df94f..bbf76a4 100644 --- a/Truhe.cpp +++ b/Truhe.cpp @@ -8,9 +8,12 @@ Truhe::Truhe(String name, int relay, uint8_t sensorpin){ }; -void Truhe::setup() { +void Truhe::setup(String name, int uT, int oT) { + _name = name; Serial.println("Setup " + _name); Serial.println(_sensorpin); + _uT = uT; + _oT = oT; pinMode(_relay, OUTPUT); digitalWrite(_relay, HIGH); pinMode(_sensorpin, INPUT); @@ -34,14 +37,14 @@ void Truhe::mess() { } }; -void Truhe::schalt(int oT, int uT) { +void Truhe::schalt() { Serial.println(String(_name) + " schalt() stat: " + String(_stat)); - if (_cur_temp >= oT && _stat != 1 && _stat != 2) { + if (_cur_temp >= _oT && _stat != 1 && _stat != 2) { digitalWrite(_relay, LOW); _stat = 1; Serial.println("schalt " + _name + " zu " + String(_stat)); } - else if (_cur_temp <= uT && _stat != 0 && _stat != 2) { + else if (_cur_temp <= _uT && _stat != 0 && _stat != 2) { digitalWrite(_relay, HIGH); _stat = 0; Serial.println("schalt " + _name + " zu " + String(_stat)); @@ -54,3 +57,5 @@ int Truhe::getSensorPin(){return _sensorpin;}; int Truhe::getStat(){return _stat;}; int Truhe::getCurTemp(){return int(_cur_temp);}; String Truhe::getName(){return _name;}; +int Truhe::getuT(){return _uT;}; +int Truhe::getoT(){return _oT;}; diff --git a/Truhe.h b/Truhe.h index dde0b20..1a2f6c5 100644 --- a/Truhe.h +++ b/Truhe.h @@ -10,11 +10,13 @@ class Truhe { float _cur_temp = 0; int _updlcd = 0; String _name = ""; + int _uT; + int _oT; public: Truhe(String, int, uint8_t); - void setup(); + void setup(String, int, int); void mess(); - void schalt(int, int); + void schalt(); int getUpdLcd(); void setUpdLcd(int); int getRelay(); @@ -22,4 +24,6 @@ class Truhe { int getStat(); int getCurTemp(); String getName(); + int getuT(); + int getoT(); }; diff --git a/Webserver.h b/Webserver.h index 18ae631..38d82fd 100644 --- a/Webserver.h +++ b/Webserver.h @@ -3,6 +3,7 @@ #include #include #include +#include Preferences preferences; ESP8266WebServer server(80); ESP8266HTTPUpdateServer httpUpdater; @@ -11,6 +12,8 @@ String header = " \n" "Truhensteuerung\n" "\n" "\n" "\n" @@ -46,6 +49,7 @@ void WifiConnect(String _ssid, String _password){ void handleWifiSetup(){ String ptr = header; + boolean reset = false; // ptr += "URI: "; // ptr += server.uri(); // ptr += "
\nMethod: "; @@ -53,7 +57,8 @@ void handleWifiSetup(){ // ptr += "
\nArguments: "; // ptr += server.args(); // ptr += "
\n"; - for (uint8_t i = 0; i < server.args(); i++) { ptr += " " + server.argName(i) + ": " + server.arg(i) + "
\n"; } + Dictionary arguments = Dictionary(); + 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; @@ -64,7 +69,25 @@ void handleWifiSetup(){ bool isHidden; ptr += "Home"; ptr += "
"; - ptr +="\n\n"; + ptr +="
"; + ptr +="
IDSSIDChannelRSSI
\n\n"; + for (int i = 0; i < (sizeof(truhen) / sizeof(truhen[0])); i++) { + ptr +="\n\n\n\n\n"; + } + ptr += "
NameTemp MinTemp Max
"; + ptr +=""; + ptr +=""; + ptr +=""; + ptr +=""; + ptr +=""; + ptr += "
\n"; + ptr += ""; + ptr +=""; + ptr +=""; + ptr +=""; + ptr +=""; + ptr +="
"; + ptr +="\n\n"; for (int i = 0; i < n; i++) { WiFi.getNetworkInfo(i, ssid, encryptionType, RSSI, BSSID, channel, isHidden); @@ -73,24 +96,25 @@ void handleWifiSetup(){ ptr += "
IDSSIDChannelRSSI
\n"; ptr += ""; - ptr += ""; + ptr += ""; + ptr += "
\n"; ptr += "
"; }else{ ptr += "

\n"; - if(server.args() != 4){ - ptr += "Missing Arguments
\n"; - ptr += "zurück\n"; - }else{ - String ssid; - String password; - for (uint8_t i = 0; i < server.args(); i++) { - if(server.argName(i) == "ssid"){ - ssid = server.arg(i); + 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()); } - if(server.argName(i) == "password"){ - password = server.arg(i); + preferences.end(); } - } + if(arguments.get("submit_wlan") != NULL){ + reset = true; + String ssid = arguments.get("ssid"); + String password = arguments.get("password"); ptr += "Connecting to "+ssid+"
\n"; Serial.println("Connecting to "+ssid+", "+password+""); WiFi.begin(ssid, password); @@ -125,7 +149,17 @@ void handleWifiSetup(){ ptr += "

\n"; } } + ptr +="\n"; + ptr +="\n"; + if(reset){ + ptr +="

Neustart, bitte warten...

\n"; + ptr +="\n"; + } server.send(200, "text/html", ptr); + if(reset){ + delay(2000); + ESP.restart(); + } } void handleRoot(){