diff --git a/platformio.ini b/platformio.ini index 65923f1..61990a5 100644 --- a/platformio.ini +++ b/platformio.ini @@ -9,34 +9,34 @@ ; https://docs.platformio.org/page/projectconf.html [common_env_data] -build_flags = '-D BUILD_VERSION="0.8.3*"' +build_flags = '-D BUILD_VERSION="0.8.3.1*"' -D HAS_2ND_LED=true -D LED_OUTPUT_INVERTED=true [platformio] default_envs = esp12e [env:esp12e] platform = espressif8266 -board = esp12e +board = nodemcu 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 -build_flags = ${common_env_data.build_flags} -D BUILD_DEBUG=0 +build_flags = ${common_env_data.build_flags} -D BUILD_DEBUG=false [env:esp12e_debug] extends = env:esp12e build_type = debug -build_flags = ${common_env_data.build_flags} -D BUILD_DEBUG=1 +build_flags = ${common_env_data.build_flags} -D BUILD_DEBUG=true [env:esp12e_ota] extends = env:esp12e upload_protocol = espota -upload_port = 192.168.2.4 -build_flags = ${common_env_data.build_flags} -D BUILD_DEBUG=0 +upload_port = 192.168.2.57 +build_flags = ${common_env_data.build_flags} -D BUILD_DEBUG=false [env:esp12e_ota_debug] extends = env:esp12e_ota -build_flags = ${common_env_data.build_flags} -D BUILD_DEBUG=1 +build_flags = ${common_env_data.build_flags} -D BUILD_DEBUG=true diff --git a/src/globalvars.h b/src/globalvars.h index f454633..62f34b1 100644 --- a/src/globalvars.h +++ b/src/globalvars.h @@ -6,7 +6,7 @@ #include #include -#if BUILD_DEBUG == 1 +#if BUILD_DEBUG == true #define debug(debugMSG...) Serial.print(debugMSG) #define debugln(debugMSG...) Serial.println(debugMSG) #else @@ -14,6 +14,26 @@ #define debugln(debugMSG...) #endif +#if LED_OUTPUT_INVERTED == true +#define digitalWriteLED(PIN, VALUE) digitalWrite(PIN, !VALUE) +#define digitalReadLED(PIN) (!digitalRead(PIN)) +#define analogWriteLED(PIN, VALUE) analogWrite(PIN, 255 - VALUE) +#define analogReadLED(PIN) (255 - analogRead(PIN)) +#else +#define digitalWriteLED(PIN, VALUE) digitalWrite(PIN, VALUE) +#define digitalReadLED(PIN) digitalRead(PIN) +#define analogWriteLED(PIN, VALUE) analogWrite(PIN, VALUE) +#define analogReadLED(PIN) analogRead(PIN) +#endif + +#if HAS_2ND_LED == true +#define analogWrite2ndLED(PIN, VALUE) analogWriteLED(PIN, VALUE) +#define pinMode2ndLED(PIN, MODE) analogWriteLED(PIN, MODE) +#else +#define analogWrite2ndLED(PIN, VALUE) +#define pinMode2ndLED(PIN, MODE) +#endif + /* global vars */ extern ESP8266WebServer server; extern Timezone myTime; diff --git a/src/html.cpp b/src/html.cpp index 3ccf5a7..f008a7d 100644 --- a/src/html.cpp +++ b/src/html.cpp @@ -187,7 +187,7 @@ void handleToggle() { debug(F("[RECIVED] for: ")); debugln(i); digitalWrite(pins[i], !digitalRead(pins[i])); - digitalWrite(2, !digitalRead(2)); + digitalWriteLED(LED_BUILTIN, !digitalReadLED(LED_BUILTIN)); if (digitalRead(pins[i]) == HIGH) { sprintf(stat[i], "AN"); } else { diff --git a/src/main.cpp b/src/main.cpp index 56942ba..4c15c62 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -21,18 +21,20 @@ Timezone myTime; const u_int r = 0; // D3 on Amica -const u_int oneWireBus = 0; +const u_int oneWireBus = D3; OneWire oneWire(oneWireBus); DallasTemperature sensors(&oneWire); -int temperature, temperatureSet, minTemperatureSet; +int temperature_new, bad_temp_count, temperatureSet, minTemperatureSet; + +int temperature = 304; static unsigned long lastTempCycle = -5000; static unsigned long lastTimeCycle = -5000; char time_all[8][8][3] = { {}, {}, {}, {}, - {}, {}, {}, {}}; // 3D array for load_EEPROM() and handleTime() -const unsigned int pins[] = {4}; // D2 on Amica + {}, {}, {}, {}}; // 3D array for load_EEPROM() and handleTime() +const unsigned int pins[] = {D2}; // D2 on Amica char stat[][4] = {"AUS"}; // text on button char t_stat[][4] = {""}; // for "status of timer changed" @@ -288,7 +290,7 @@ void timer() { sprintf(t_stat[r], "on"); if (!override[r]) { digitalWrite(pins[r], HIGH); - analogWrite(LED_BUILTIN_AUX, 100); // LED + digitalWriteLED(LED_BUILTIN, HIGH); // LED if (strcmp(stat[r], "AUS") == 0) { debug(r); debugln(F(" is on")); @@ -302,7 +304,7 @@ void timer() { sprintf(t_stat[r], "off"); if (!override[r]) { digitalWrite(pins[r], LOW); - analogWrite(LED_BUILTIN_AUX, 0); // LED + digitalWriteLED(LED_BUILTIN, LOW); // LED if (strcmp(stat[r], "AN") == 0) { debug(r); debugln(F(" is off")); @@ -319,7 +321,7 @@ int ledBrightnessStep = 20; uint lastLedCycle; void pulseLed() { if (millis() - lastLedCycle > 100) { - analogWrite(LED_BUILTIN_AUX, ledBrightness); + analogWrite2ndLED(LED_BUILTIN_AUX, ledBrightness); ledBrightness += ledBrightnessStep; if (ledBrightness <= 0 || ledBrightness >= 255) { ledBrightnessStep = -ledBrightnessStep; @@ -339,15 +341,15 @@ void emergencyStop() { sprintf(apSSID, "ESP-%06X has an issue", ESP.getChipId()); WiFi.softAP(apSSID, "", 1, false, 0); unsigned long lastTry = millis(); - while (millis() - lastTry < (1000 * 60)) { - analogWrite(LED_BUILTIN, 255); - analogWrite(LED_BUILTIN_AUX, 0); + while (millis() - lastTry < (1000 * 60)) { // wait for 60 seconds + analogWrite2ndLED(LED_BUILTIN_AUX, 255); + analogWriteLED(LED_BUILTIN, 0); delay(125); - analogWrite(LED_BUILTIN, 0); - analogWrite(LED_BUILTIN_AUX, 255); + analogWrite2ndLED(LED_BUILTIN_AUX, 0); + analogWriteLED(LED_BUILTIN, 255); delay(125); - analogWrite(LED_BUILTIN, 255); - analogWrite(LED_BUILTIN_AUX, 255); + analogWrite2ndLED(LED_BUILTIN_AUX, 255); + analogWriteLED(LED_BUILTIN, 0); delay(250); } ESP.restart(); @@ -356,19 +358,26 @@ void emergencyStop() { void getCurrentTemperature() { if (millis() - lastTempCycle > 5000) { sensors.requestTemperatures(); - temperature = int(sensors.getTempCByIndex(0)); + temperature_new = int(sensors.getTempCByIndex(0)); lastTempCycle = millis(); - if (temperature == -127) { + debugln(temperature_new); + if (bad_temp_count >= 15) { emergencyStop(); + } else if (temperature_new == -127 || temperature_new == 85) { + // sensor not connected or default value, ignore + bad_temp_count++; + return; } + temperature = temperature_new; + bad_temp_count = 0; } } void setup() { + pinMode2ndLED(LED_BUILTIN_AUX, OUTPUT); pinMode(LED_BUILTIN, OUTPUT); - pinMode(LED_BUILTIN_AUX, OUTPUT); - analogWrite(LED_BUILTIN, 255); - analogWrite(LED_BUILTIN_AUX, 255); + analogWrite2ndLED(LED_BUILTIN_AUX, 255); + digitalWriteLED(LED_BUILTIN, HIGH); uint p = 0; while (p <= sizeof(pins) / sizeof(pins[0])) { pinMode(pins[p], OUTPUT); @@ -388,7 +397,8 @@ void setup() { // WiFI-config // WiFi.mode(WIFI_STA); // comment to force use of staticIP // WiFi.config(staticIP, gateway, subnet, dns); - WiFi.hostname("esp8266-iot-dev"); + // WiFi.hostname("esp8266-iot-dev"); + WiFi.hostname("esp-kellerheizung"); WiFi.begin(SSID, PASSWORD); uint32_t notConnectedCounter = 0; @@ -397,7 +407,7 @@ void setup() { while (WiFi.status() != WL_CONNECTED) { delay(250); debug(F(".")); - analogWrite(LED_BUILTIN_AUX, 255 * (notConnectedCounter % 2)); // LED + digitalWriteLED(LED_BUILTIN, !digitalReadLED(LED_BUILTIN)); notConnectedCounter++; if (notConnectedCounter > (1000 / 250) * 15) { // Reset board if not connected after 15s @@ -405,7 +415,6 @@ void setup() { ESP.restart(); } } - analogWrite(LED_BUILTIN_AUX, 0); debug(F("\nConnected to ")); debugln(WiFi.SSID()); debug(F("IP address: "));