diff --git a/platformio.ini b/platformio.ini index c3d38b9a2..c74fe3c8d 100644 --- a/platformio.ini +++ b/platformio.ini @@ -13,8 +13,11 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment ;env_default = sonoff ;env_default = sonoff-minimal -;env_default = sonoff-xxl +;env_default = sonoff-classic +;env_default = sonoff-knx +;env_default = sonoff-allsensors ;env_default = sonoff-BG +;env_default = sonoff-CN ;env_default = sonoff-CZ ;env_default = sonoff-DE ;env_default = sonoff-ES @@ -26,7 +29,6 @@ src_dir = sonoff ;env_default = sonoff-PL ;env_default = sonoff-PT ;env_default = sonoff-RU -;env_default = sonoff-CN ;env_default = sonoff-TW [env:sonoff] @@ -71,7 +73,35 @@ extra_scripts = pio/strip-floats.py ; Serial Monitor options monitor_baud = 115200 -[env:sonoff-xxl] +[env:sonoff-classic] +;platform = espressif8266@1.5.0 ; v2.3.0 +;platform = espressif8266@1.6.0 ; v2.4.0 +platform = espressif8266 +framework = arduino +board = esp01_1m +board_flash_mode = dout +build_flags = -Wl,-Tesp8266.flash.1m0.ld -DUSE_CLASSIC +;build_flags = -Wl,-Tesp8266.flash.1m0.ld -DUSE_CLASSIC -DUSE_CONFIG_OVERRIDE +extra_scripts = pio/strip-floats.py + +; Serial Monitor options +monitor_baud = 115200 + +[env:sonoff-knx] +;platform = espressif8266@1.5.0 ; v2.3.0 +;platform = espressif8266@1.6.0 ; v2.4.0 +platform = espressif8266 +framework = arduino +board = esp01_1m +board_flash_mode = dout +build_flags = -Wl,-Tesp8266.flash.1m0.ld -DUSE_KNX_NO_EMULATION +;build_flags = -Wl,-Tesp8266.flash.1m0.ld -DUSE_KNX_NO_EMULATION -DUSE_CONFIG_OVERRIDE +extra_scripts = pio/strip-floats.py + +; Serial Monitor options +monitor_baud = 115200 + +[env:sonoff-allsensors] ;platform = espressif8266@1.5.0 ; v2.3.0 ;platform = espressif8266@1.6.0 ; v2.4.0 platform = espressif8266 @@ -85,20 +115,6 @@ extra_scripts = pio/strip-floats.py ; Serial Monitor options monitor_baud = 115200 -[env:sonoff-CZ] -;platform = espressif8266@1.5.0 ; v2.3.0 -;platform = espressif8266@1.6.0 ; v2.4.0 -platform = espressif8266 -framework = arduino -board = esp01_1m -board_flash_mode = dout -build_flags = -Wl,-Tesp8266.flash.1m0.ld -DMY_LANGUAGE=cs-CZ -;build_flags = -Wl,-Tesp8266.flash.1m0.ld -DMY_LANGUAGE=cs-CZ -DUSE_CONFIG_OVERRIDE -extra_scripts = pio/strip-floats.py - -; *** Serial Monitor options -monitor_baud = 115200 - [env:sonoff-BG] ;platform = espressif8266@1.5.0 ; v2.3.0 ;platform = espressif8266@1.6.0 ; v2.4.0 @@ -113,6 +129,34 @@ extra_scripts = pio/strip-floats.py ; *** Serial Monitor options monitor_baud = 115200 +[env:sonoff-CN] +;platform = espressif8266@1.5.0 ; v2.3.0 +;platform = espressif8266@1.6.0 ; v2.4.0 +platform = espressif8266 +framework = arduino +board = esp01_1m +board_flash_mode = dout +build_flags = -Wl,-Tesp8266.flash.1m0.ld -DMY_LANGUAGE=zh-CN +;build_flags = -Wl,-Tesp8266.flash.1m0.ld -DMY_LANGUAGE=zh-CN -DUSE_CONFIG_OVERRIDE +extra_scripts = pio/strip-floats.py + +; *** Serial Monitor options +monitor_baud = 115200 + +[env:sonoff-CZ] +;platform = espressif8266@1.5.0 ; v2.3.0 +;platform = espressif8266@1.6.0 ; v2.4.0 +platform = espressif8266 +framework = arduino +board = esp01_1m +board_flash_mode = dout +build_flags = -Wl,-Tesp8266.flash.1m0.ld -DMY_LANGUAGE=cs-CZ +;build_flags = -Wl,-Tesp8266.flash.1m0.ld -DMY_LANGUAGE=cs-CZ -DUSE_CONFIG_OVERRIDE +extra_scripts = pio/strip-floats.py + +; *** Serial Monitor options +monitor_baud = 115200 + [env:sonoff-DE] ;platform = espressif8266@1.5.0 ; v2.3.0 ;platform = espressif8266@1.6.0 ; v2.4.0 @@ -253,20 +297,6 @@ extra_scripts = pio/strip-floats.py ; *** Serial Monitor options monitor_baud = 115200 -[env:sonoff-CN] -;platform = espressif8266@1.5.0 ; v2.3.0 -;platform = espressif8266@1.6.0 ; v2.4.0 -platform = espressif8266 -framework = arduino -board = esp01_1m -board_flash_mode = dout -build_flags = -Wl,-Tesp8266.flash.1m0.ld -DMY_LANGUAGE=zh-CN -;build_flags = -Wl,-Tesp8266.flash.1m0.ld -DMY_LANGUAGE=zh-CN -DUSE_CONFIG_OVERRIDE -extra_scripts = pio/strip-floats.py - -; *** Serial Monitor options -monitor_baud = 115200 - [env:sonoff-TW] ;platform = espressif8266@1.5.0 ; v2.3.0 ;platform = espressif8266@1.6.0 ; v2.4.0 diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 1c2269538..454f24137 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,11 +1,16 @@ /* 5.12.0m * Reinit timers to accomodate random window (#2447) + * Remove sonoff-xxl + * Add sonoff-classic, sonoff-allsensors and sonoff-knx + * Add some coloring to important web buttons + * Add user selectable defines for Sunrise/set Dawn option (#2378) * Add random window to timers (#2447) * Add optional KNX IP Protocol Support (#2402) * Add Greek language file (#2491) * Add Bulgarian language file * Add support for sensor HC-SR04 ultrasonic (#113, #1964, #2444) * Add support for Sonoff Pow R2 (#2340) + * Add GPIO_User to GPIO02 for all Sonoff T1 (#2524) * Fix compile error when using ESP/Arduino library v2.3.0 by reverting KNX async UDP library to default UDP library (#2488, #2492, #2493) * Fix configuration filename truncation when it contains spaces (#2484, #2490) * @@ -111,7 +116,7 @@ * Add support for sensor SHTC3 (#1967) * * 5.12.0a - * Change platformio option sonoff-ds18x20 to sonoff-xxl enabling ds18x20 and all other sensors in one image + * Change platformio option sonoff-ds18x20 to sonoff-allsensors enabling ds18x20 and all other sensors in one image * Fix providing web page configuratin option for Friendly Name when no device (relay or light) is configured (#1850) * Change default parameters in user_config.h to undefined for easy installation (#1851) * Change max user configurable hold time from 10 to 25 seconds (#1851) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index 2a2bb58ce..296046c85 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -127,6 +127,12 @@ typedef unsigned long power_t; // Power (Relay) type #define MQTT_TASMOTAMQTT 2 // Mqtt TasmotaMqtt library based on esp-mqtt-arduino #define MQTT_ESPMQTTARDUINO 3 // Mqtt esp-mqtt-arduino library by Ingo Randolf +// Sunrise and Sunset DawnType +#define DAWN_NORMAL -0.8333 +#define DAWN_CIVIL -6.0 +#define DAWN_NAUTIC -12.0 +#define DAWN_ASTRONOMIC -18.0 + /*********************************************************************************************\ * Enumeration \*********************************************************************************************/ diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h index 09d68f89a..1d6ba7878 100644 --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -20,6 +20,10 @@ #ifndef _SONOFF_POST_H_ #define _SONOFF_POST_H_ +/*********************************************************************************************\ + * Function declarations +\*********************************************************************************************/ + #ifdef __cplusplus extern "C" { #endif @@ -38,9 +42,18 @@ void WifiWpsStatusCallback(wps_cb_status status); void KNX_CB_Action(message_t const &msg, void *arg); //#endif // USE_KNX +/*********************************************************************************************\ + * Default global defines +\*********************************************************************************************/ + #define USE_DHT // Default DHT11 sensor needs no external library -#ifdef USE_ALL_SENSORS // ===================== Configure sonoff-xxl.bin ========================= +/*********************************************************************************************\ + * [sonoff-allsensors.bin] + * Provide an image with all supported sensors enabled +\*********************************************************************************************/ + +#ifdef USE_ALL_SENSORS #define USE_ADC_VCC // Display Vcc in Power status. Disable for use as Analog input on selected devices #define USE_DS18x20 // For more than one DS18x20 sensors with id sort, single scan and read retry (+1k3 code) //#define USE_DS18x20_LEGACY // For more than one DS18x20 sensors with dynamic scan using library OneWire (+1k5 code) @@ -80,14 +93,75 @@ void KNX_CB_Action(message_t const &msg, void *arg); // #define USE_WS2812_DMA // DMA supports only GPIO03 (= Serial RXD) (+1k mem). When USE_WS2812_DMA is enabled expect Exceptions on Pow #define USE_ARILUX_RF // Add support for Arilux RF remote controller (+0k8 code, 252 iram (non 2.3.0)) #define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) -#endif // USE_ALL_SENSORS ===================== +#endif // USE_ALL_SENSORS + +/*********************************************************************************************\ + * [sonoff-classic.bin] + * Provide an image close to version 5.12.0 but still within 499k program space to allow one time OTA +\*********************************************************************************************/ + +#ifdef USE_CLASSIC +#ifdef USE_KNX +#undef USE_KNX +#endif +#ifdef USE_TIMERS +#undef USE_TIMERS +#endif +#ifdef USE_TIMERS_WEB +#undef USE_TIMERS_WEB +#endif +#ifdef USE_SUNRISE +#undef USE_SUNRISE +#endif +#ifdef USE_RULES +#undef USE_RULES +#endif +#ifdef USE_SGP30 +#undef USE_SGP30 +#endif +#ifdef USE_NOVA_SDS +#undef USE_NOVA_SDS +#endif +#ifdef USE_IR_RECEIVE +#undef USE_IR_RECEIVE +#endif +#ifdef USE_SERIAL_BRIDGE +#undef USE_SERIAL_BRIDGE +#endif +#ifdef USE_SR04 +#undef USE_SR04 +#endif +#endif // USE_CLASSIC + +/*********************************************************************************************\ + * [sonoff-knx.bin] + * Provide a dedicated KNX image allowing enough code and memory space +\*********************************************************************************************/ + +#ifdef USE_KNX_NO_EMULATION +#ifndef USE_KNX +#define USE_KNX // Enable KNX IP Protocol Support (+23k code, +3k3 mem) +#endif +#ifdef USE_EMULATION +#undef USE_EMULATION // Disable Belkin WeMo and Hue Bridge emulation for Alexa (-16k code, -2k mem) +#endif +#endif // USE_KNX_NO_EMULATION + +/*********************************************************************************************\ + * Mandatory define for DS18x20 if changed by above image selections +\*********************************************************************************************/ #if defined(USE_DS18x20) || defined(USE_DS18x20_LEGACY) #else #define USE_DS18B20 // Default DS18B20 sensor needs no external library #endif -#ifdef BE_MINIMAL // ========================== Configure sonoff-minimal.bin ===================== +/*********************************************************************************************\ + * [sonoff-minimal.bin] + * Provide the smallest image possible while still enabling a webserver for intermediate image load +\*********************************************************************************************/ + +#ifdef BE_MINIMAL #ifdef USE_MQTT_TLS #undef USE_MQTT_TLS // Disable TLS support won't work as the MQTTHost is not set #endif @@ -169,7 +243,11 @@ void KNX_CB_Action(message_t const &msg, void *arg); #ifdef DEBUG_THEO #undef DEBUG_THEO // Disable debug code #endif -#endif // BE_MINIMAL ========================== +#endif // BE_MINIMAL + +/*********************************************************************************************\ + * Mandatory defines satisfying possible disabled defines +\*********************************************************************************************/ #ifndef SWITCH_MODE #define SWITCH_MODE TOGGLE // TOGGLE, FOLLOW or FOLLOW_INV (the wall switch state) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index b3f95152f..dc0746ec7 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -608,7 +608,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { { "Sonoff T1 1CH", // Sonoff T1 1CH (ESP8285) GPIO_KEY1, // GPIO00 Button 1 GPIO_USER, // GPIO01 Serial RXD and Optional sensor - 0, + GPIO_USER, // GPIO02 Optional Sensor (J3 Pin 5) GPIO_USER, // GPIO03 Serial TXD and Optional sensor 0, 0, 0, 0, 0, // Flash connection @@ -621,7 +621,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { { "Sonoff T1 2CH", // Sonoff T1 2CH (ESP8285) GPIO_KEY1, // GPIO00 Button 1 GPIO_USER, // GPIO01 Serial RXD and Optional sensor - 0, + GPIO_USER, // GPIO02 Optional Sensor (J3 Pin 5) GPIO_USER, // GPIO03 Serial TXD and Optional sensor 0, GPIO_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) @@ -636,7 +636,7 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { { "Sonoff T1 3CH", // Sonoff T1 3CH (ESP8285) GPIO_KEY1, // GPIO00 Button 1 GPIO_USER, // GPIO01 Serial RXD and Optional sensor - 0, + GPIO_USER, // GPIO02 Optional Sensor (J3 Pin 5) GPIO_USER, // GPIO03 Serial TXD and Optional sensor GPIO_REL3, // GPIO04 Blue Led and Relay 3 (0 = Off, 1 = On) GPIO_REL2, // GPIO05 Blue Led and Relay 2 (0 = Off, 1 = On) diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 05950abd0..92dd23dda 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -228,6 +228,7 @@ #define USE_TIMERS // Add support for up to 16 timers (+2k2 code) #define USE_TIMERS_WEB // Add timer webpage support (+4k5 code) #define USE_SUNRISE // Add support for Sunrise and sunset tools (+16k) + #define SUNRISE_DAWN_ANGLE DAWN_NORMAL // Select desired Dawn Angle from (DAWN_NORMAL, DAWN_CIVIL, DAWN_NAUTIC, DAWN_ASTRONOMIC) // -- Rules --------------------------------------- #define USE_RULES // Add support for rules (+4k4 code) @@ -288,11 +289,23 @@ #define USE_SR04 // Add support for HC-SR04 ultrasonic devices (+1k code) +/*********************************************************************************************\ + * Select features and sensors enabled in previous version saving space +\*********************************************************************************************/ + +//#define USE_CLASSIC // Create sonoff-classic (See sonoff_post.h for selected features) + /*********************************************************************************************\ * Select all sensors - overrides above undefines!! \*********************************************************************************************/ -//#define USE_ALL_SENSORS // Create sonoff-xxl with all sensors enabled (See sonoff_post.h for selected sensors) +//#define USE_ALL_SENSORS // Create sonoff-allsensors with all sensors enabled (See sonoff_post.h for selected sensors) + +/*********************************************************************************************\ + * Select KNX without Emulation to save space +\*********************************************************************************************/ + +//#define USE_KNX_NO_EMULATION // Create sonoff-knx with KNX but without Emulation (See sonoff_post.h) /*********************************************************************************************\ * Compile a minimal version if upgrade memory gets tight ONLY TO BE USED FOR UPGRADE STEP 1! diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index c6dcab568..e7d9262be 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -89,7 +89,11 @@ const char HTTP_HEAD_STYLE[] PROGMEM = "body{text-align:center;font-family:verdana;}" "td{padding:0px;}" "button{border:0;border-radius:0.3rem;background-color:#1fa3ec;color:#fff;line-height:2.4rem;font-size:1.2rem;width:100%;-webkit-transition-duration:0.4s;transition-duration:0.4s;cursor:pointer;}" - "button:hover{background-color:#006cba;}" + "button:hover{background-color:#0e70a4;}" + ".bred{background-color:#d43535;}" + ".bred:hover{background-color:#931f1f;}" + ".bgrn{background-color:#47c266;}" + ".bgrn:hover{background-color:#5aaf6f;}" "a{text-decoration:none;}" ".p{float:left;text-align:left;}" ".q{float:right;text-align:right;}" @@ -180,7 +184,7 @@ const char HTTP_BTN_MENU1[] PROGMEM = "
" "
"; const char HTTP_BTN_RSTRT[] PROGMEM = - "
"; + "
"; const char HTTP_BTN_MENU_MODULE[] PROGMEM = "
"; #if defined(USE_TIMERS) && defined(USE_TIMERS_WEB) @@ -202,7 +206,7 @@ const char HTTP_BTN_MENU4[] PROGMEM = "
" "
" "
" - "
" + "
" "
" "
"; const char HTTP_BTN_MAIN[] PROGMEM = @@ -270,7 +274,7 @@ const char HTTP_FORM_OTHER3b[] PROGMEM = "
{3{4"; // Different id only used for labels #endif // USE_EMULATION const char HTTP_FORM_END[] PROGMEM = - "
"; + "
"; const char HTTP_FORM_RST[] PROGMEM = "
" "
 " D_RESTORE_CONFIGURATION " "; diff --git a/sonoff/xdrv_09_timers.ino b/sonoff/xdrv_09_timers.ino index 0ffe94f55..26b23b258 100644 --- a/sonoff/xdrv_09_timers.ino +++ b/sonoff/xdrv_09_timers.ino @@ -124,7 +124,8 @@ void DuskTillDawn(uint8_t *hour_up,uint8_t *minute_up, uint8_t *hour_down, uint8 h (D) = -12.0 nautische Dämmerung h (D) = -18.0 astronomische Dämmerung */ - double h = -50/60.0*RAD; +// double h = -50/60.0*RAD; + double h = SUNRISE_DAWN_ANGLE *RAD; double B = (((double)Settings.latitude)/1000000) * RAD; // geographische Breite double GeographischeLaenge = ((double)Settings.longitude)/1000000; // double Zeitzone = 0; //Weltzeit diff --git a/sonoff/xdrv_11_knx.ino b/sonoff/xdrv_11_knx.ino index 76fc1cf0c..7084973b9 100644 --- a/sonoff/xdrv_11_knx.ino +++ b/sonoff/xdrv_11_knx.ino @@ -596,7 +596,8 @@ const char HTTP_FORM_KNX_ADD_BTN[] PROGMEM = const char HTTP_FORM_KNX_ADD_TABLE_ROW[] PROGMEM = "{optex} -> GAfnum / GAarea / GAfdef " - ""; +// ""; + ""; const char HTTP_FORM_KNX3[] PROGMEM = "

" @@ -608,7 +609,8 @@ const char HTTP_FORM_KNX4[] PROGMEM = const char HTTP_FORM_KNX_ADD_TABLE_ROW2[] PROGMEM = "GAfnum / GAarea / GAfdef -> {optex}" - ""; +// ""; + ""; void HandleKNXConfiguration()