From 8791fc1ed0b83c35b35556b34ffa3bba2120071e Mon Sep 17 00:00:00 2001 From: gilex-dev Date: Sun, 12 Nov 2023 22:47:57 +0100 Subject: [PATCH] apply formatting guidelines to existing files & remove unused dep --- platformio.ini | 3 +- src/html.cpp | 110 ++++----- src/main.cpp | 614 +++++++++++++++++++++++++------------------------ 3 files changed, 365 insertions(+), 362 deletions(-) diff --git a/platformio.ini b/platformio.ini index 32df6a8..22f81e7 100644 --- a/platformio.ini +++ b/platformio.ini @@ -14,7 +14,6 @@ board = esp12e framework = arduino upload_speed = 921600 monitor_speed = 74880 -lib_deps = +lib_deps = ropg/ezTime@^0.8.3 paulstoffregen/OneWire@^2.3.7 - milesburton/DallasTemperature@^3.11.0 diff --git a/src/html.cpp b/src/html.cpp index 63a5bc6..8bbff7d 100644 --- a/src/html.cpp +++ b/src/html.cpp @@ -2,24 +2,24 @@ #include void reload_home() { - char time_current[3][3] = {"", "", ""}; - if (myTime.hour() < 10) { - sprintf(time_current[0], "0%d", myTime.hour()); - } else { - sprintf(time_current[0], "%d", myTime.hour()); - } - if (myTime.minute() < 10) { - sprintf(time_current[1], "0%d", myTime.minute()); - } else { - sprintf(time_current[1], "%d", myTime.minute()); - } - if (myTime.second() < 10) { - sprintf(time_current[2], "0%d", myTime.second()); - } else { - sprintf(time_current[2], "%d", myTime.second()); - } + char time_current[3][3] = {"", "", ""}; + if (myTime.hour() < 10) { + sprintf(time_current[0], "0%d", myTime.hour()); + } else { + sprintf(time_current[0], "%d", myTime.hour()); + } + if (myTime.minute() < 10) { + sprintf(time_current[1], "0%d", myTime.minute()); + } else { + sprintf(time_current[1], "%d", myTime.minute()); + } + if (myTime.second() < 10) { + sprintf(time_current[2], "0%d", myTime.second()); + } else { + sprintf(time_current[2], "%d", myTime.second()); + } - sprintf(home_html, "\ + sprintf(home_html, "\ \ \ \ @@ -120,12 +120,12 @@ void reload_home() { \ \ ", - time_current[0], time_current[1], time_current[2], stat[0], stat[1], - stat[2], stat[3], stat[4], stat[5], stat[6], stat[7]); + time_current[0], time_current[1], time_current[2], stat[0], stat[1], + stat[2], stat[3], stat[4], stat[5], stat[6], stat[7]); } void reload_settings() { - sprintf(settings_html, "\ + sprintf(settings_html, "\ 1\ %s:%s\ %s:%s\ @@ -187,42 +187,42 @@ void reload_settings() { \ \ ", - time_all[0][0], time_all[1][0], time_all[2][0], time_all[3][0], - time_all[4][0], time_all[5][0], time_all[6][0], time_all[7][0], - time_all[0][1], time_all[1][1], time_all[2][1], time_all[3][1], - time_all[4][1], time_all[5][1], time_all[6][1], time_all[7][1], - time_all[0][2], time_all[1][2], time_all[2][2], time_all[3][2], - time_all[4][2], time_all[5][2], time_all[6][2], time_all[7][2], - time_all[0][3], time_all[1][3], time_all[2][3], time_all[3][3], - time_all[4][3], time_all[5][3], time_all[6][3], time_all[7][3], - time_all[0][4], time_all[1][4], time_all[2][4], time_all[3][4], - time_all[4][4], time_all[5][4], time_all[6][4], time_all[7][4], - time_all[0][5], time_all[1][5], time_all[2][5], time_all[3][5], - time_all[4][5], time_all[5][5], time_all[6][5], time_all[7][5], - time_all[0][6], time_all[1][6], time_all[2][6], time_all[3][6], - time_all[4][6], time_all[5][6], time_all[6][6], time_all[7][6], - time_all[0][7], time_all[1][7], time_all[2][7], time_all[3][7], - time_all[4][7], time_all[5][7], time_all[6][7], time_all[7][7]); + time_all[0][0], time_all[1][0], time_all[2][0], time_all[3][0], + time_all[4][0], time_all[5][0], time_all[6][0], time_all[7][0], + time_all[0][1], time_all[1][1], time_all[2][1], time_all[3][1], + time_all[4][1], time_all[5][1], time_all[6][1], time_all[7][1], + time_all[0][2], time_all[1][2], time_all[2][2], time_all[3][2], + time_all[4][2], time_all[5][2], time_all[6][2], time_all[7][2], + time_all[0][3], time_all[1][3], time_all[2][3], time_all[3][3], + time_all[4][3], time_all[5][3], time_all[6][3], time_all[7][3], + time_all[0][4], time_all[1][4], time_all[2][4], time_all[3][4], + time_all[4][4], time_all[5][4], time_all[6][4], time_all[7][4], + time_all[0][5], time_all[1][5], time_all[2][5], time_all[3][5], + time_all[4][5], time_all[5][5], time_all[6][5], time_all[7][5], + time_all[0][6], time_all[1][6], time_all[2][6], time_all[3][6], + time_all[4][6], time_all[5][6], time_all[6][6], time_all[7][6], + time_all[0][7], time_all[1][7], time_all[2][7], time_all[3][7], + time_all[4][7], time_all[5][7], time_all[6][7], time_all[7][7]); } void handleToggle() { - int i = server.arg("number") - .toInt(); // converts GET argument to int and does stuff xD - override[i] = !override[i]; - debugln(F("---------------------------")); - debug(F("[RECIVED] for: ")); - debugln(i); - digitalWrite(pins[i], !digitalRead(pins[i])); - if (digitalRead(pins[i]) == LOW) { - sprintf(stat[i], "AN"); - } else { - sprintf(stat[i], "AUS"); - } - debug(F("Status: ")); - debugln(stat[i]); - reload_home(); - server.sendHeader(F("Location"), F("/"), true); - server.send(302, F("text/html"), home_html); - debugln(override[i]); - debugln(F("---------------------------")); + int i = server.arg("number") + .toInt(); // converts GET argument to int and does stuff xD + override[i] = !override[i]; + debugln(F("---------------------------")); + debug(F("[RECIVED] for: ")); + debugln(i); + digitalWrite(pins[i], !digitalRead(pins[i])); + if (digitalRead(pins[i]) == LOW) { + sprintf(stat[i], "AN"); + } else { + sprintf(stat[i], "AUS"); + } + debug(F("Status: ")); + debugln(stat[i]); + reload_home(); + server.sendHeader(F("Location"), F("/"), true); + server.send(302, F("text/html"), home_html); + debugln(override[i]); + debugln(F("---------------------------")); } diff --git a/src/main.cpp b/src/main.cpp index 9da8818..53a532a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,305 +1,309 @@ -const char SSID[] = ""; -const char PASSWORD[] = ""; - -const char version[] = " 0.8"; -#include "globalvars.h" -#include -#include -#include -#include -#include -#include - -ESP8266WebServer server; -IPAddress staticIP(192, 168, 2, 5); // static IP address -IPAddress gateway(192, 168, 2, 1); // Router's IP address -IPAddress subnet(255, 255, 255, 0); -IPAddress dns(192, 168, 2, 1); -Timezone myTime; - -char time_all[8][8][3] = { - {}, {}, {}, {}, - {}, {}, {}, {}}; // 3D array for load_EEPROM() and handleTime() -const unsigned int pins[8] = {5, 4, 14, 12, - 13, 10, 9}; // TODO: only 7 of 8 pins defined -int r = 0; - -char stat[8][4] = {"AUS", "AUS", "AUS", "AUS", - "AUS", "AUS", "AUS", "AUS"}; // text on button -char t_stat[8][4] = {"", "", "", "", - "", "", "", ""}; // for "status of timer changed" -bool override[8] = {false, false, false, false, - false, false, false, false}; // for manual override - -char home_html[3000]; // be careful when changing these values (might cause - // overflow)! -char settings_html[2014]; -const char settings_html_pre[] PROGMEM = {"\ -\ - \ - \ - \ - \ - Einstellungen\ - \ - \ - \ -
\ -
\ - \ -
\ - \ - - \ -
\ - \ - - \ -
\ - \ -
\ -
\ - \ - \ - \ - \ - \ - \ - \ - "}; -void reload_home(); -void reload_settings(); -void handleToggle(); - -void load_EEPROM() { - unsigned int EEPROM_Addr = 0; - for (unsigned int i0 = 0; i0 < 8; i0++) { - for (unsigned int i = 0; i < 8; i++) { - if (EEPROM.read(EEPROM_Addr) < 10) { - sprintf(time_all[i0][i], "0%d", EEPROM.read(EEPROM_Addr)); - } else { - sprintf(time_all[i0][i], "%d", EEPROM.read(EEPROM_Addr)); - } - EEPROM_Addr += 4; - yield(); - } - } -} - -void handleHome() { - reload_home(); - server.send(200, "text/html", home_html); - debugln(ESP.getFreeHeap(), DEC); -} - -void handleSettings() { - reload_settings(); - server.setContentLength(strlen(settings_html_pre) + strlen(settings_html)); - server.send(200, "text/html", settings_html_pre); - server.sendContent(settings_html); - debugln(ESP.getFreeHeap(), DEC); -} - -void handleTime() { - const char args[4][9] = {"time_o", "time_f", "time_o_1", "time_f_1"}; - - for (unsigned int arg = 0; arg < 4; arg++) { - if (server.arg(args[arg]) != "") { - char buff_h[2][2] = {server.arg(args[arg])[0], server.arg(args[arg])[1]}; - char buff_m[2][2] = {server.arg(args[arg])[3], server.arg(args[arg])[4]}; - sprintf(time_all[arg * 2][server.arg("rule").toInt()], "%s", buff_h); - sprintf(time_all[arg * 2 + 1][server.arg("rule").toInt()], "%s", buff_m); - - EEPROM.put(server.arg("rule").toInt() * 4 + arg * 64, - atoi(time_all[arg * 2][server.arg("rule").toInt()])); - EEPROM.commit(); - EEPROM.put(server.arg("rule").toInt() * 4 + arg * 64 + 32, - atoi(time_all[arg * 2 + 1][server.arg("rule").toInt()])); - EEPROM.commit(); - } - } - reload_settings(); - server.setContentLength(strlen(settings_html_pre) + strlen(settings_html)); - server.send(301, "text/html", settings_html_pre); - server.sendContent(settings_html); -} - -void timer() { - if (((myTime.hour() * 60 + myTime.minute() >= - atoi(time_all[0][r]) * 60 + atoi(time_all[1][r])) and - (myTime.hour() * 60 + myTime.minute() < - atoi(time_all[2][r]) * 60 + atoi(time_all[3][r]))) or - ((myTime.hour() * 60 + myTime.minute() >= - atoi(time_all[4][r]) * 60 + atoi(time_all[5][r])) and - (myTime.hour() * 60 + myTime.minute() < - atoi(time_all[6][r]) * 60 + atoi(time_all[7][r])))) { - if ((override[r]) and (strcmp(t_stat[r], "off") == 0)) { - override[r] = false; - debugln(F("debug#1")); - } - sprintf(t_stat[r], "on"); - if (!override[r]) { - digitalWrite(pins[r], LOW); - if (strcmp(stat[r], "AUS") == 0) { - debug(r); - debugln(F(" is on")); - sprintf(stat[r], "AN"); - } - } - } else { - if ((override[r]) and (strcmp(t_stat[r], "on") == 0)) { - override[r] = false; - } - sprintf(t_stat[r], "off"); - if (!override[r]) { - digitalWrite(pins[r], HIGH); - if (strcmp(stat[r], "AN") == 0) { - debug(r); - debugln(F(" is off")); - sprintf(stat[r], "AUS"); - } - } - } -} - -void setup() { - int p = 0; - while (p <= 7) { - pinMode(pins[p], OUTPUT); - digitalWrite(pins[p], HIGH); - p++; - } - Serial.begin(74880); - EEPROM.begin(256); // 4 bits for EEPROM, address 0-255, value 0-255 - debug(F("\nver.")); - debugln(version); - debugln(F("check for updates at " - "https://somepi.ddns.net/gitea/gilex-dev/ESP8266-IOT-timer/\n")); - load_EEPROM(); - // WLAN-config - // --------------------------------------------------------------------------------------------------------------------- - WiFi.mode(WIFI_STA); - WiFi.config(staticIP, gateway, subnet, dns); - WiFi.hostname("ESP8266 IOT development"); - WiFi.begin(SSID, PASSWORD); - - Serial.println(F("Connecting ...")); - while (WiFi.status() != WL_CONNECTED) { - delay(250); - Serial.print('.'); - } - Serial.print(F("\nConnected to ")); - Serial.println(WiFi.SSID()); - Serial.print(F("IP address:\t")); - Serial.println(WiFi.localIP()); - //---------------------------------------------------------------------------------------------------------------------------------- - myTime.setLocation("de"); - waitForSync(); - - debug(F("Local time: ")); - debugln(myTime.dateTime("H:i:s")); - setInterval(); - server.on("/", HTTP_GET, handleHome); - server.on("/settings", HTTP_GET, handleSettings); - server.on("/settings", HTTP_POST, handleTime); - server.on("/toggle", HTTP_GET, handleToggle); - server.on("/version", HTTP_GET, - [] { server.send(200, "text/html", version); }); - server.begin(); - debugln(F("Webserver started")); -} - -void loop() { - server.handleClient(); - timer(); - r++; - if (r == 7) { - r = 0; - } - yield(); - delay(50); -} +const char SSID[] = ""; +const char PASSWORD[] = ""; + +const char version[] = " 0.8"; +#include "globalvars.h" +#include +#include +#include +#include +#include +#include + +ESP8266WebServer server; +IPAddress staticIP(192, 168, 2, 5); // static IP address +IPAddress gateway(192, 168, 2, 1); // Router's IP address +IPAddress subnet(255, 255, 255, 0); +IPAddress dns(192, 168, 2, 1); +Timezone myTime; + +char time_all[8][8][3] = { + {}, {}, {}, {}, + {}, {}, {}, {}}; // 3D array for load_EEPROM() and handleTime() +const unsigned int pins[8] = {5, 4, 14, 12, + 13, 10, 9}; // TODO: only 7 of 8 pins defined +int r = 0; + +char stat[8][4] = {"AUS", "AUS", "AUS", "AUS", + "AUS", "AUS", "AUS", "AUS"}; // text on button +char t_stat[8][4] = {"", "", "", "", + "", "", "", ""}; // for "status of timer changed" +bool override[8] = {false, false, false, false, + false, false, false, false}; // for manual override + +char home_html[3000]; // be careful when changing these values (might cause + // overflow)! +char settings_html[2014]; +const char settings_html_pre[] PROGMEM = {"\ +\ + \ + \ + \ + \ + Einstellungen\ + \ + \ + \ +
\ +
\ + \ +
\ + \ + - \ +
\ + \ + - \ +
\ + \ + \ +
\ +
von:bis:von:bis:
\ + \ + \ + \ + \ + \ + \ + "}; +void reload_home(); +void reload_settings(); +void handleToggle(); + +void load_EEPROM() { + unsigned int EEPROM_Addr = 0; + for (unsigned int i0 = 0; i0 < 8; i0++) { + for (unsigned int i = 0; i < 8; i++) { + if (EEPROM.read(EEPROM_Addr) < 10) { + sprintf(time_all[i0][i], "0%d", EEPROM.read(EEPROM_Addr)); + } else { + sprintf(time_all[i0][i], "%d", EEPROM.read(EEPROM_Addr)); + } + EEPROM_Addr += 4; + yield(); + } + } +} + +void handleHome() { + reload_home(); + server.send(200, "text/html", home_html); + debugln(ESP.getFreeHeap(), DEC); +} + +void handleSettings() { + reload_settings(); + server.setContentLength(strlen(settings_html_pre) + strlen(settings_html)); + server.send(200, "text/html", settings_html_pre); + server.sendContent(settings_html); + debugln(ESP.getFreeHeap(), DEC); +} + +void handleTime() { + const char args[4][9] = {"time_o", "time_f", "time_o_1", "time_f_1"}; + + for (unsigned int arg = 0; arg < 4; arg++) { + if (server.arg(args[arg]) != "") { + char buff_h[2][2] = {server.arg(args[arg])[0], + server.arg(args[arg])[1]}; + char buff_m[2][2] = {server.arg(args[arg])[3], + server.arg(args[arg])[4]}; + sprintf(time_all[arg * 2][server.arg("rule").toInt()], "%s", + buff_h); + sprintf(time_all[arg * 2 + 1][server.arg("rule").toInt()], "%s", + buff_m); + + EEPROM.put(server.arg("rule").toInt() * 4 + arg * 64, + atoi(time_all[arg * 2][server.arg("rule").toInt()])); + EEPROM.commit(); + EEPROM.put(server.arg("rule").toInt() * 4 + arg * 64 + 32, + atoi(time_all[arg * 2 + 1][server.arg("rule").toInt()])); + EEPROM.commit(); + } + } + reload_settings(); + server.setContentLength(strlen(settings_html_pre) + strlen(settings_html)); + server.send(301, "text/html", settings_html_pre); + server.sendContent(settings_html); +} + +void timer() { + if (((myTime.hour() * 60 + myTime.minute() >= + atoi(time_all[0][r]) * 60 + atoi(time_all[1][r])) and + (myTime.hour() * 60 + myTime.minute() < + atoi(time_all[2][r]) * 60 + atoi(time_all[3][r]))) or + ((myTime.hour() * 60 + myTime.minute() >= + atoi(time_all[4][r]) * 60 + atoi(time_all[5][r])) and + (myTime.hour() * 60 + myTime.minute() < + atoi(time_all[6][r]) * 60 + atoi(time_all[7][r])))) { + if ((override[r]) and (strcmp(t_stat[r], "off") == 0)) { + override[r] = false; + debugln(F("debug#1")); + } + sprintf(t_stat[r], "on"); + if (!override[r]) { + digitalWrite(pins[r], LOW); + if (strcmp(stat[r], "AUS") == 0) { + debug(r); + debugln(F(" is on")); + sprintf(stat[r], "AN"); + } + } + } else { + if ((override[r]) and (strcmp(t_stat[r], "on") == 0)) { + override[r] = false; + } + sprintf(t_stat[r], "off"); + if (!override[r]) { + digitalWrite(pins[r], HIGH); + if (strcmp(stat[r], "AN") == 0) { + debug(r); + debugln(F(" is off")); + sprintf(stat[r], "AUS"); + } + } + } +} + +void setup() { + int p = 0; + while (p <= 7) { + pinMode(pins[p], OUTPUT); + digitalWrite(pins[p], HIGH); + p++; + } + Serial.begin(74880); + EEPROM.begin(256); // 4 bits for EEPROM, address 0-255, value 0-255 + debug(F("\nver.")); + debugln(version); + debugln(F("check for updates at " + "https://somepi.ddns.net/gitea/gilex-dev/ESP8266-IOT-timer/\n")); + load_EEPROM(); + // WLAN-config + // --------------------------------------------------------------------------------------------------------------------- + WiFi.mode(WIFI_STA); + WiFi.config(staticIP, gateway, subnet, dns); + WiFi.hostname("ESP8266 IOT development"); + WiFi.begin(SSID, PASSWORD); + + Serial.println(F("Connecting ...")); + while (WiFi.status() != WL_CONNECTED) { + delay(250); + Serial.print('.'); + } + Serial.print(F("\nConnected to ")); + Serial.println(WiFi.SSID()); + Serial.print(F("IP address:\t")); + Serial.println(WiFi.localIP()); + //---------------------------------------------------------------------------------------------------------------------------------- + myTime.setLocation("de"); + waitForSync(); + + debug(F("Local time: ")); + debugln(myTime.dateTime("H:i:s")); + setInterval(); + server.on("/", HTTP_GET, handleHome); + server.on("/settings", HTTP_GET, handleSettings); + server.on("/settings", HTTP_POST, handleTime); + server.on("/toggle", HTTP_GET, handleToggle); + server.on("/version", HTTP_GET, + [] { server.send(200, "text/html", version); }); + server.begin(); + debugln(F("Webserver started")); +} + +void loop() { + server.handleClient(); + timer(); + r++; + if (r == 7) { + r = 0; + } + yield(); + delay(50); +}
von:bis:von:bis: