diff --git a/pio/http-uploader.py b/pio/http-uploader.py index b80ee4a09..7c204cf1f 100644 --- a/pio/http-uploader.py +++ b/pio/http-uploader.py @@ -4,9 +4,11 @@ from base64 import b64decode env.Replace(UPLOADER="pio\espupload.py") env.Replace(UPLOADERFLAGS="") -env.Replace(UPLOADCMD="$UPLOADER -u " + b64decode(ARGUMENTS.get("UPLOAD_PORT")) + " -f $SOURCES") +env.Replace(UPLOADCMD="$UPLOADER -u $UPLOAD_PORT -f $SOURCES") ''' +env.Replace(UPLOADCMD="$UPLOADER -u domus1:80/api/upload-arduino.php -f $SOURCES") +env.Replace(UPLOADCMD="$UPLOADER -u " + b64decode(ARGUMENTS.get("UPLOAD_PORT")) + " -f $SOURCES") env.Replace(UPLOADCMD="pio\espupload.py -f $SOURCES") # Windows env.Replace(UPLOADCMD="pio/espupload.py -f $SOURCES") # Linux ''' \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index a5c0946d1..67fe2ea0e 100755 --- a/platformio.ini +++ b/platformio.ini @@ -11,34 +11,34 @@ 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-basic -;env_default = sonoff-classic -;env_default = sonoff-knx -;env_default = sonoff-sensors -;env_default = sonoff-display -;env_default = sonoff-BG -;env_default = sonoff-BR -;env_default = sonoff-CN -;env_default = sonoff-CZ -;env_default = sonoff-DE -;env_default = sonoff-ES -;env_default = sonoff-FR -;env_default = sonoff-GR -;env_default = sonoff-HE -;env_default = sonoff-HU -;env_default = sonoff-IT -;env_default = sonoff-KO -;env_default = sonoff-NL -;env_default = sonoff-PL -;env_default = sonoff-PT -;env_default = sonoff-RU -;env_default = sonoff-SE -;env_default = sonoff-SK -;env_default = sonoff-TR -;env_default = sonoff-TW -;env_default = sonoff-UK +;default_envs = sonoff +;default_envs = sonoff-minimal +;default_envs = sonoff-basic +;default_envs = sonoff-classic +;default_envs = sonoff-knx +;default_envs = sonoff-sensors +;default_envs = sonoff-display +;default_envs = sonoff-BG +;default_envs = sonoff-BR +;default_envs = sonoff-CN +;default_envs = sonoff-CZ +;default_envs = sonoff-DE +;default_envs = sonoff-ES +;default_envs = sonoff-FR +;default_envs = sonoff-GR +;default_envs = sonoff-HE +;default_envs = sonoff-HU +;default_envs = sonoff-IT +;default_envs = sonoff-KO +;default_envs = sonoff-NL +;default_envs = sonoff-PL +;default_envs = sonoff-PT +;default_envs = sonoff-RU +;default_envs = sonoff-SE +;default_envs = sonoff-SK +;default_envs = sonoff-TR +;default_envs = sonoff-TW +;default_envs = sonoff-UK [esp82xx_defaults] build_flags = -D NDEBUG diff --git a/sonoff/_changelog.ino b/sonoff/_changelog.ino index 6bed2c3b5..0a0f6c90f 100644 --- a/sonoff/_changelog.ino +++ b/sonoff/_changelog.ino @@ -1,4 +1,9 @@ -/* 6.5.0.13 20190527 +/* 6.5.0.14 20190602 + * Change webserver HTML input, button, textarea, and select name based on id + * Fix webserver multiple Javascript window.onload functionality + * Fix PZem startup issue (#5875) + * + * 6.5.0.13 20190527 * Add command SetOption38 6..255 to set IRReceive protocol detection sensitivity mimizing UNKNOWN protocols (#5853) * Fix missing white channel for WS2812 (#5869) * Add reset of Energy values when connection to sensor is lost for over 4 seconds (#5874, #5881) diff --git a/sonoff/settings.ino b/sonoff/settings.ino index f2bf1290e..4e7af0d4e 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -119,6 +119,9 @@ #ifndef COLOR_TIMER_TAB_BACKGROUND #define COLOR_TIMER_TAB_BACKGROUND "#999" // Config timer tab background color - Light grey #endif +#ifndef IR_RCV_MIN_UNKNOWN_SIZE +#define IR_RCV_MIN_UNKNOWN_SIZE 6 // Set the smallest sized "UNKNOWN" message packets we actually care about (default 6, max 255) +#endif enum WebColors { COL_TEXT, COL_BACKGROUND, COL_FORM, diff --git a/sonoff/sonoff_version.h b/sonoff/sonoff_version.h index 8b7c27bfc..6c475febc 100644 --- a/sonoff/sonoff_version.h +++ b/sonoff/sonoff_version.h @@ -20,6 +20,6 @@ #ifndef _SONOFF_VERSION_H_ #define _SONOFF_VERSION_H_ -const uint32_t VERSION = 0x0605000D; +const uint32_t VERSION = 0x0605000E; #endif // _SONOFF_VERSION_H_ diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index e71e4016d..66e043ecf 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -58,13 +58,24 @@ const char HTTP_HEAD[] PROGMEM = "function eb(s){" "return document.getElementById(s);" // Save code space "}" - "function qs(s){" // Alias to save code space + "function qs(s){" // Alias to save code space "return document.querySelector(s);" "}" - "function idn(){" - "var t=0,i=document.querySelectorAll('input,button,textarea,select'); while(i.length>=t){ if(i[t]) {i[t]['name']=(i[t].hasAttribute('id')&&(!i[t].hasAttribute('name')))?i[t]['id']:i[t]['name'];}t++;}" - "}" - "window.onload=idn;idn();"; + + // https://www.htmlgoodies.com/beyond/javascript/article.php/3724571/Using-Multiple-JavaScript-Onload-Functions.htm + "function wl(f){" // Execute multiple window.onload + "var o=window.onload;" + "if(typeof window.onload!='function'){" + "window.onload=f;" + "}else{" + "window.onload=function(){" + "if(o){" + "o();" + "}" + "f();" + "}" + "}" + "}"; const char HTTP_SCRIPT_COUNTER[] PROGMEM = "var cn=180;" // seconds @@ -75,7 +86,7 @@ const char HTTP_SCRIPT_COUNTER[] PROGMEM = "setTimeout(u,1000);" "}" "}" - "window.onload=u;"; + "wl(u);"; const char HTTP_SCRIPT_ROOT[] PROGMEM = "function la(p){" @@ -102,7 +113,7 @@ const char HTTP_SCRIPT_ROOT[] PROGMEM = "function lc(p){" "la('&t='+p);" // &t related to WebGetArg("t", tmp, sizeof(tmp)); "}" - "window.onload=la();"; + "wl(la);"; const char HTTP_SCRIPT_WIFI[] PROGMEM = "function c(l){" @@ -152,7 +163,7 @@ const char HTTP_SCRIPT_CONSOL[] PROGMEM = "lt=setTimeout(l,%d);" "return false;" "}" - "window.onload=l;"; + "wl(l);"; const char HTTP_MODULE_TEMPLATE_REPLACE[] PROGMEM = "}2%d'>%s (%d}3"; // }2 and }3 are used in below os.replace @@ -218,7 +229,10 @@ const char HTTP_SCRIPT_TEMPLATE[] PROGMEM = "sk(17,99);" // 17 = WEMOS "st(" STR(USER_MODULE) ");" "}" - "window.onload=ld('tp?m=1',x2);"; // ?m related to WebServer->hasArg("m") + "function sl(){" + "ld('tp?m=1',x2);" // ?m related to WebServer->hasArg("m") + "}" + "wl(sl);"; const char HTTP_SCRIPT_MODULE1[] PROGMEM = "function x1(a){" // Module Type @@ -240,7 +254,7 @@ const char HTTP_SCRIPT_MODULE2[] PROGMEM = "ld('md?a=1',x3);" // ?a related to WebServer->hasArg("a") "}" "}" - "window.onload=sl;"; + "wl(sl);"; const char HTTP_SCRIPT_INFO_BEGIN[] PROGMEM = "function i(){" @@ -250,11 +264,22 @@ const char HTTP_SCRIPT_INFO_END[] PROGMEM = "s=o.replace(/}1/g,\"\").replace(/}2/g,\"\");" "eb('i').innerHTML=s;" "}" - "window.onload=i;"; + "wl(i);"; + +const char HTTP_HEAD_LAST_SCRIPT[] PROGMEM = + "function id(){" // Add label name='' based on provided id='' + "var t=0,i=document.querySelectorAll('input,button,textarea,select');" + "while(i.length>=t){" + "if(i[t]){" + "i[t]['name']=(i[t].hasAttribute('id')&&(!i[t].hasAttribute('name')))?i[t]['id']:i[t]['name'];" + "}" + "t++;" + "}" + "}" + "wl(id);" // Add name='' to any id='' in input,button,textarea,select + ""; const char HTTP_HEAD_STYLE1[] PROGMEM = - "" - "