mirror of
https://git.mirrors.martin98.com/https://github.com/luc-github/ESP3D.git
synced 2025-07-06 02:25:12 +08:00
Change name to ESP3D
Thanks to @openhardwarecoza and @TRoager for the idea and feedback
This commit is contained in:
parent
700f395cab
commit
713d4764fb
10
.travis.yml
10
.travis.yml
@ -11,13 +11,13 @@ before_install:
|
|||||||
before_script:
|
before_script:
|
||||||
- "export DISPLAY=:99.0"
|
- "export DISPLAY=:99.0"
|
||||||
- sleep 3 # give xvfb some time to start
|
- sleep 3 # give xvfb some time to start
|
||||||
- wget http://downloads.arduino.cc/arduino-1.6.8-linux64.tar.xz
|
- wget http://downloads.arduino.cc/arduino-1.6.9-linux64.tar.xz
|
||||||
- tar xf arduino-1.6.8-linux64.tar.xz
|
- tar xf arduino-1.6.9-linux64.tar.xz
|
||||||
- mv arduino-1.6.8 $HOME/arduino_ide
|
- mv arduino-1.6.9 $HOME/arduino_ide
|
||||||
- cd $HOME/arduino_ide/hardware
|
- cd $HOME/arduino_ide/hardware
|
||||||
- mkdir esp8266com
|
- mkdir esp8266com
|
||||||
- cd esp8266com
|
- cd esp8266com
|
||||||
- git clone https://github.com/esp8266/Arduino.git esp8266
|
- git clone https://github.com/esp3d/Arduino.git esp8266
|
||||||
- cd esp8266/tools
|
- cd esp8266/tools
|
||||||
- python get.py
|
- python get.py
|
||||||
|
|
||||||
@ -28,7 +28,7 @@ script:
|
|||||||
- export PATH="$HOME/arduino_ide:$PATH"
|
- export PATH="$HOME/arduino_ide:$PATH"
|
||||||
- arduino --board esp8266com:esp8266:generic --save-prefs
|
- arduino --board esp8266com:esp8266:generic --save-prefs
|
||||||
- arduino --get-pref sketchbook.path
|
- arduino --get-pref sketchbook.path
|
||||||
- build_sketch esp8266/esp8266.ino
|
- build_sketch esp3d/esp3d.ino
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email:
|
email:
|
||||||
|
78
README.md
78
README.md
@ -1,44 +1,44 @@
|
|||||||
# ESP8266
|
# ESP3D
|
||||||
Firmware for ESP8266 used with 3D printer using [arduino core version](https://github.com/esp8266/Arduino)
|
Firmware for ESP8266 used with 3D printer using [arduino core version](https://github.com/esp8266/Arduino)
|
||||||
This firmware allows not only to have a cheap bridge between Wifi and serial, but also to have a web UI to configure wifi, to monitor 3D printer and even control it, and to make things easy,
|
This firmware allows not only to have a cheap bridge between Wifi and serial, but also to have a web UI to configure wifi, to monitor 3D printer and even control it, and to make things easy,
|
||||||
UI is fully customizable without reflashing FW.
|
UI is fully customizable without reflashing FW.
|
||||||
Firmware should work with any 3D printer firmware (repetier/marlin/etc..) if serial connection has correct setup.
|
Firmware should work with any 3D printer firmware (repetier/marlin/etc..) if serial connection has correct setup.
|
||||||
I currently use it with my personnal flavor of [repetier for Due based boards](https://github.com/luc-github/Repetier-Firmware-0.92).
|
I currently use it with my personnal flavor of [repetier for Due based boards](https://github.com/luc-github/Repetier-Firmware-0.92).
|
||||||
Please use ESP with at least 1M flash, for ESP with 512K there is limited version [here](https://github.com/luc-github/ESP8266/tree/ESP-512K-64KSPIFFS)
|
Please use ESP with at least 1M flash, for ESP with 512K there is limited version [here](https://github.com/luc-github/ESP3D/tree/ESP-512K-64KSPIFFS)
|
||||||
|
|
||||||
<u>Stable version:</u>
|
<u>Stable version:</u>
|
||||||
Arduino ide 1.6.5 with stable [2.0.0](http://arduino.esp8266.com/versions/2.0.0/package_esp8266com_index.json) from ESP8266, please use https://github.com/luc-github/ESP8266/releases/tag/v0.5.1
|
Arduino ide 1.6.5 with stable [2.0.0](http://arduino.esp8266.com/versions/2.0.0/package_esp8266com_index.json) from ESP8266, please use https://github.com/luc-github/ESP3D/releases/tag/v0.5.1
|
||||||
Arduino ide 1.6.8 with stable [2.2.0](http://arduino.esp8266.com/versions/2.2.0/package_esp8266com_index.json) from ESP8266, please use https://github.com/luc-github/ESP8266/releases/tag/v0.6.2
|
Arduino ide 1.6.8 with stable [2.2.0](http://arduino.esp8266.com/versions/2.2.0/package_esp8266com_index.json) from ESP8266, please use https://github.com/luc-github/ESP3D/releases/tag/v0.6.2
|
||||||
|
|
||||||
<u>Development version:</u>
|
<u>Development version:</u>
|
||||||
Arduino ide 1.6.8 with git from ESP8266 : [](https://travis-ci.org/luc-github/ESP8266)
|
Arduino ide 1.6.9 with git from ESP8266 : [](https://travis-ci.org/luc-github/ESP3D)
|
||||||
|
|
||||||
[All releases](https://github.com/luc-github/ESP8266/wiki)
|
[All releases](https://github.com/luc-github/ESP3D/wiki)
|
||||||
|
|
||||||
:question:Any question ?[](https://gitter.im/luc-github/ESP8266?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
:question:Any question ?[](https://gitter.im/luc-github/ESP3D?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||||
:exclamation:Any issue ? check [FAQ](https://github.com/luc-github/ESP8266/issues?utf8=%E2%9C%93&q=label%3AFAQ+) or [submit ticket](https://github.com/luc-github/ESP8266/issues)
|
:exclamation:Any issue ? check [FAQ](https://github.com/luc-github/ESP3D/issues?utf8=%E2%9C%93&q=label%3AFAQ+) or [submit ticket](https://github.com/luc-github/ESP3D/issues)
|
||||||
|
|
||||||
|
|
||||||
:+1:Thanks
|
:+1:Thanks
|
||||||
* to @disneysw for bringing this module idea
|
* to @disneysw for bringing this module idea
|
||||||
* to @lkarlslund for suggestion about independant reset using GPIO2
|
* to @lkarlslund for suggestion about independant reset using GPIO2
|
||||||
* to all contributors (treepleks, j0hnlittle, openhardwarecoza, all feedbacks owners and donations)
|
* to all contributors (treepleks, j0hnlittle, openhardwarecoza, TRoager, all feedbacks owners and donations)
|
||||||
|
|
||||||
Every support is welcome: [<img src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG_global.gif" border="0" alt="PayPal – The safer, easier way to pay online.">](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Y8FFE7NA4LJWQ)
|
Every support is welcome: [<img src="https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG_global.gif" border="0" alt="PayPal – The safer, easier way to pay online.">](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Y8FFE7NA4LJWQ)
|
||||||
Especially if need to buy new modules for testing.
|
Especially if need to buy new modules for testing.
|
||||||
|
|
||||||
##Features
|
##Features
|
||||||
* Serial/Wifi bridge using configurable port 8888, here to enable/disable [TCP_IP_DATA_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
* Serial/Wifi bridge using configurable port 8888, here to enable/disable [TCP_IP_DATA_FEATURE](https://github.com/luc-github/ESP3D/blob/master/esp3d/config.h)
|
||||||
* Use GPIO2 to ground to reset all settings in hard way - 2-6 sec after boot / not before!! Set GPIO2 to ground before boot change boot mode and go to special boot that do not reach FW. Currently boot take 10 sec - giving 8 seconds to connect GPIO2 to GND and do an hard recovery for settings, here to enable/disable [RECOVERY_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
* Use GPIO2 to ground to reset all settings in hard way - 2-6 sec after boot / not before!! Set GPIO2 to ground before boot change boot mode and go to special boot that do not reach FW. Currently boot take 10 sec - giving 8 seconds to connect GPIO2 to GND and do an hard recovery for settings, here to enable/disable [RECOVERY_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
||||||
* Wifi configuration by web browser (Station or Access point)
|
* Wifi configuration by web browser (Station or Access point)
|
||||||
* Authentication for sensitive pages, here to enable/disable [AUTHENTICATION_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
* Authentication for sensitive pages, here to enable/disable [AUTHENTICATION_FEATURE](https://github.com/luc-github/ESP3D/blob/master/esp3d/config.h)
|
||||||
* Update firmware by web browser, here to enable/disable [WEB_UPDATE_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
* Update firmware by web browser, here to enable/disable [WEB_UPDATE_FEATURE](https://github.com/luc-github/ESP3D/blob/master/esp3d/config.h)
|
||||||
* Control ESP module using commands on serial or data port, here to enable/disable [SERIAL_COMMAND_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
* Control ESP module using commands on serial or data port, here to enable/disable [SERIAL_COMMAND_FEATURE](https://github.com/luc-github/ESP3D/blob/master/esp3d/config.h)
|
||||||
* UI fully constomizable without reflashing FW using html templates, [keywords](https://raw.githubusercontent.com/luc-github/ESP8266/master/docs/keywords.txt) and html files/images
|
* UI fully constomizable without reflashing FW using html templates, [keywords](https://raw.githubusercontent.com/luc-github/ESP3D/master/docs/keywords.txt) and html files/images
|
||||||
* Captive portal in Access point mode which redirect all unknow call to main page, here to enable/disable [CAPTIVE_PORTAL_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
* Captive portal in Access point mode which redirect all unknow call to main page, here to enable/disable [CAPTIVE_PORTAL_FEATURE](https://github.com/luc-github/ESP3D/blob/master/esp3d/config.h)
|
||||||
* mDNS which allows to key the name defined in web browser and connect only with bonjour installed on computer, here to enable/disable [MDNS_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
* mDNS which allows to key the name defined in web browser and connect only with bonjour installed on computer, here to enable/disable [MDNS_FEATURE](https://github.com/luc-github/ESP3D/blob/master/esp3d/config.h)
|
||||||
* SSDP, this feature is a discovery protocol, supported on Windows out of the box, here to enable/disable [SSDP_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
* SSDP, this feature is a discovery protocol, supported on Windows out of the box, here to enable/disable [SSDP_FEATURE](https://github.com/luc-github/ESP3D/blob/master/esp3d/config.h)
|
||||||
* Printer monitoring / control (temperatures/speed/jog/list SDCard content/launch,pause or stop a print/etc...), here to enable/disable [MONITORING_FEATURE/INFO_MSG_FEATURE/ERROR_MSG_FEATURE/STATUS_MSG_FEATURE](https://github.com/luc-github/ESP8266/blob/master/esp8266/config.h)
|
* Printer monitoring / control (temperatures/speed/jog/list SDCard content/launch,pause or stop a print/etc...), here to enable/disable [MONITORING_FEATURE/INFO_MSG_FEATURE/ERROR_MSG_FEATURE/STATUS_MSG_FEATURE](https://github.com/luc-github/ESP3D/blob/master/esp3d/config.h)
|
||||||
* Fail safe mode (Access point)is enabled if cannot connect to defined station at boot.
|
* Fail safe mode (Access point)is enabled if cannot connect to defined station at boot.
|
||||||
|
|
||||||
##Web configuration
|
##Web configuration
|
||||||
@ -71,25 +71,25 @@ Password: admin
|
|||||||
|
|
||||||
These are the pages defined using template:
|
These are the pages defined using template:
|
||||||
Home page :
|
Home page :
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/Page1.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/Page1.png><br>
|
||||||
System Configuration Page:
|
System Configuration Page:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/Page2.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/Page2.png><br>
|
||||||
Access Point Configuration Page:
|
Access Point Configuration Page:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/Page3.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/Page3.png><br>
|
||||||
Client Configuration Page:
|
Client Configuration Page:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/Page4.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/Page4.png><br>
|
||||||
Printer Status Page for 64K SPIFFS, due to limited space available no fancy:
|
Printer Status Page for 64K SPIFFS, due to limited space available no fancy:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/Page5-2.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/Page5-2.png><br>
|
||||||
Printer Status Page for more than 64K SPIFFS, fancy one:
|
Printer Status Page for more than 64K SPIFFS, fancy one:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/page5.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/page5.png><br>
|
||||||
Extra Settings Page, for web UI and for printer:
|
Extra Settings Page, for web UI and for printer:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/Page6.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/Page6.png><br>
|
||||||
Change password Page:
|
Change password Page:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/Page7.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/Page7.png><br>
|
||||||
Login Page:
|
Login Page:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/Page8.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/Page8.png><br>
|
||||||
the template files are stored on SPIFFS:
|
the template files are stored on SPIFFS:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/UI/files.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/UI/files.png><br>
|
||||||
and uploaded using [pluggin IDE](http://esp8266.github.io/Arduino/versions/2.1.0/doc/filesystem.html#uploading-files-to-file-system)
|
and uploaded using [pluggin IDE](http://esp8266.github.io/Arduino/versions/2.1.0/doc/filesystem.html#uploading-files-to-file-system)
|
||||||
Any files on SPIFFS can be called on web interface without having the path hard coded, this give more flexibility, favicon.ico is a good example of it.
|
Any files on SPIFFS can be called on web interface without having the path hard coded, this give more flexibility, favicon.ico is a good example of it.
|
||||||
So UI is kind of separated from FW which allow easier modifications. For this a light file manager is available in extra settings page, it allows to upload/download/delete files.
|
So UI is kind of separated from FW which allow easier modifications. For this a light file manager is available in extra settings page, it allows to upload/download/delete files.
|
||||||
@ -114,10 +114,10 @@ Additionally 404.tpl (the page not found) and restart.tpl(restart page when appl
|
|||||||
##Installation
|
##Installation
|
||||||
* For stable:
|
* For stable:
|
||||||
Please use [Arduino IDE 1.6.5](http://arduino.cc/en/Main/Software) with the esp8266 module from board manager use 2.0.0 stable version by adding in your preferences http://arduino.esp8266.com/version/2.0.0/package_esp8266com_index.json
|
Please use [Arduino IDE 1.6.5](http://arduino.cc/en/Main/Software) with the esp8266 module from board manager use 2.0.0 stable version by adding in your preferences http://arduino.esp8266.com/version/2.0.0/package_esp8266com_index.json
|
||||||
with https://github.com/luc-github/ESP8266/releases/tag/v0.5.1
|
with https://github.com/luc-github/ESP3D/releases/tag/v0.5.1
|
||||||
or
|
or
|
||||||
use [Arduino IDE 1.6.8](http://arduino.cc/en/Main/Software) with the esp8266 module from board manager use 2.2.0 stable version by adding in your preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json
|
use [Arduino IDE 1.6.8](http://arduino.cc/en/Main/Software) with the esp8266 module from board manager use 2.2.0 stable version by adding in your preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json
|
||||||
with https://github.com/luc-github/ESP8266/releases/tag/v0.6.2
|
with https://github.com/luc-github/ESP3D/releases/tag/v0.6.2
|
||||||
|
|
||||||
* For development:
|
* For development:
|
||||||
Please use [Arduino IDE 1.6.8](http://arduino.cc/en/Main/Software) and [git version of esp8266 module](http://esp8266.github.io/Arduino/versions/2.2.0/doc/installing.html#using-git-version)
|
Please use [Arduino IDE 1.6.8](http://arduino.cc/en/Main/Software) and [git version of esp8266 module](http://esp8266.github.io/Arduino/versions/2.2.0/doc/installing.html#using-git-version)
|
||||||
@ -136,16 +136,16 @@ Once flashed you also can use the web updater to flash new FW in System Configur
|
|||||||
* Use GPIO0 to ground to be in update mode
|
* Use GPIO0 to ground to be in update mode
|
||||||
|
|
||||||
For ESP01:
|
For ESP01:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/HW/Wires.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/HW/Wires.png><br>
|
||||||
|
|
||||||
For ESP12E:
|
For ESP12E:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/HW/WiresESP12E.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/HW/WiresESP12E.png><br>
|
||||||
|
|
||||||
For Davinci Board:
|
For Davinci Board:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/Davinci/davinci.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/Davinci/davinci.png><br>
|
||||||
|
|
||||||
For RADDS Board:
|
For RADDS Board:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/RADDS/RADDS.png><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/RADDS/RADDS.png><br>
|
||||||
|
|
||||||
##Contribution/customization
|
##Contribution/customization
|
||||||
To modifying and Testing tpl files a local tool has been created by [j0hnlittle](https://github.com/j0hnlittle) to avoid to upload everytime your tpl files just to see the results of your modifications. It is a python script (2.7+) located in tools directory, launch it: python server.py, then open browser: http://localhost:8080
|
To modifying and Testing tpl files a local tool has been created by [j0hnlittle](https://github.com/j0hnlittle) to avoid to upload everytime your tpl files just to see the results of your modifications. It is a python script (2.7+) located in tools directory, launch it: python server.py, then open browser: http://localhost:8080
|
||||||
@ -158,17 +158,17 @@ Feedback/suggestion/discussions are always welcome
|
|||||||
|
|
||||||
##Result of ESP12E on Davinci
|
##Result of ESP12E on Davinci
|
||||||
I use a proto board to connect ESP12E socket, one micro switch for recovery, one jumper for normal usage/ flash, I did not put hardware switch.
|
I use a proto board to connect ESP12E socket, one micro switch for recovery, one jumper for normal usage/ flash, I did not put hardware switch.
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/Davinci/board.jpg><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/Davinci/board.jpg><br>
|
||||||
Connected to Davinci:
|
Connected to Davinci:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/Davinci/boardconnected.jpg><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/Davinci/boardconnected.jpg><br>
|
||||||
The back cover:
|
The back cover:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/Davinci/backside.jpg><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/Davinci/backside.jpg><br>
|
||||||
The screen when connected to AP:
|
The screen when connected to AP:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/Davinci/screen.jpg><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/Davinci/screen.jpg><br>
|
||||||
|
|
||||||
##Result of ESP12E on Due/RADDS
|
##Result of ESP12E on Due/RADDS
|
||||||
the rendering on screen when connection to AP is done:
|
the rendering on screen when connection to AP is done:
|
||||||
<img src=https://raw.githubusercontent.com/luc-github/ESP8266/master/images/RADDS/screen.jpg><br>
|
<img src=https://raw.githubusercontent.com/luc-github/ESP3D/master/images/RADDS/screen.jpg><br>
|
||||||
|
|
||||||
|
|
||||||
##TODO
|
##TODO
|
||||||
|
@ -37,7 +37,8 @@ void COMMAND::execute_command(int cmd,String cmd_params)
|
|||||||
switch(cmd) {
|
switch(cmd) {
|
||||||
byte mode;
|
byte mode;
|
||||||
case 800:
|
case 800:
|
||||||
Serial.println("\nCommand received");
|
Serial.print("\nFW version:");
|
||||||
|
Serial.println(FW_VERSION);
|
||||||
break;
|
break;
|
||||||
case 100:
|
case 100:
|
||||||
if(!CONFIG::write_string(EP_SSID,cmd_params.c_str())) {
|
if(!CONFIG::write_string(EP_SSID,cmd_params.c_str())) {
|
||||||
@ -133,13 +134,21 @@ void COMMAND::check_command(String buffer)
|
|||||||
static bool bfileslist=false;
|
static bool bfileslist=false;
|
||||||
String buffer2;
|
String buffer2;
|
||||||
static uint32_t start_list=0;
|
static uint32_t start_list=0;
|
||||||
|
//if SD list is not on going
|
||||||
if (!bfileslist) {
|
if (!bfileslist) {
|
||||||
|
//check if command is a start of SD File list
|
||||||
int filesstart = buffer.indexOf("Begin file list");
|
int filesstart = buffer.indexOf("Begin file list");
|
||||||
|
//yes it is file list starting to be displayed
|
||||||
if (filesstart>-1) {
|
if (filesstart>-1) {
|
||||||
Serial.print("Starting");
|
//init time out
|
||||||
start_list=system_get_time();
|
start_list=system_get_time();
|
||||||
|
//set file list started
|
||||||
bfileslist=true;
|
bfileslist=true;
|
||||||
|
//clear current list
|
||||||
web_interface->fileslist.clear();
|
web_interface->fileslist.clear();
|
||||||
|
//block any new output to serial from ESP to avoid pollution
|
||||||
|
(web_interface->blockserial) = true;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
int Tpos = buffer.indexOf("T:");
|
int Tpos = buffer.indexOf("T:");
|
||||||
int Xpos = buffer.indexOf("X:");
|
int Xpos = buffer.indexOf("X:");
|
||||||
@ -237,16 +246,19 @@ void COMMAND::check_command(String buffer)
|
|||||||
(web_interface->status_msg).add(buffer.substring(Statuspos+7).c_str());
|
(web_interface->status_msg).add(buffer.substring(Statuspos+7).c_str());
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
} else {
|
} else { //listing file is on going
|
||||||
|
//check if we are too long
|
||||||
if ((system_get_time()-start_list)>30000000) { //timeout in case of problem
|
if ((system_get_time()-start_list)>30000000) { //timeout in case of problem
|
||||||
bfileslist=false;
|
bfileslist=false;
|
||||||
Serial.print("time out");
|
(web_interface->blockserial) = false; //release serial
|
||||||
} else {
|
} else {
|
||||||
|
//check if this is the end
|
||||||
if (buffer.indexOf("End file list")>-1) {
|
if (buffer.indexOf("End file list")>-1) {
|
||||||
Serial.print("Ending");
|
|
||||||
bfileslist=false;
|
bfileslist=false;
|
||||||
|
(web_interface->blockserial) = false;
|
||||||
} else {
|
} else {
|
||||||
Serial.print(buffer);
|
//Serial.print(buffer);
|
||||||
|
//add list to buffer
|
||||||
web_interface->fileslist.add(buffer);
|
web_interface->fileslist.add(buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -60,7 +60,7 @@
|
|||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
#include "wifi.h"
|
#include "wifi.h"
|
||||||
//version and sources location
|
//version and sources location
|
||||||
#define FW_VERSION "0.6.2"
|
#define FW_VERSION "0.7.5"
|
||||||
#define REPOSITORY "https://github.com/luc-github/ESP8266"
|
#define REPOSITORY "https://github.com/luc-github/ESP8266"
|
||||||
|
|
||||||
|
|
@ -48,3 +48,5 @@ caption{padding-top:8px;padding-bottom:8px;color:#777777;text-align:left;}
|
|||||||
.btnimg:hover{background-color:#F0F0F0;border-color:#00FFFF;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;}
|
.btnimg:hover{background-color:#F0F0F0;border-color:#00FFFF;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;}
|
||||||
.btnroundimg {cursor:hand; border-radius:30px;}
|
.btnroundimg {cursor:hand; border-radius:30px;}
|
||||||
.btnroundimg:hover{background-color:#F0F0F0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;}
|
.btnroundimg:hover{background-color:#F0F0F0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;}
|
||||||
|
.blacklink {color:#000000;}
|
||||||
|
.blacklink:hover, .filelink:focus {color:#0094FF;}
|
14
esp3d/data/css2.inc
Normal file
14
esp3d/data/css2.inc
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<STYLE>
|
||||||
|
input[type="file"]::-webkit-file-upload-button{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation; touch-action:manipulation;cursor:pointer;
|
||||||
|
background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;
|
||||||
|
* -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none; color: #ffffff;background-color: #5bc0de;border-color: #46b8da;}
|
||||||
|
input[type="file"]::-webkit-file-upload-button:focus{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation; touch-action:manipulation;cursor:pointer;
|
||||||
|
background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;
|
||||||
|
* -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none; color: #ffffff;background-color: #31b0d5;border-color: #1b6d85;}
|
||||||
|
input[type="file"]::-webkit-file-upload-button:hover{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation; touch-action:manipulation;cursor:pointer;
|
||||||
|
background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;
|
||||||
|
* -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none; color: #ffffff;background-color: #31b0d5;border-color: #269abc;}
|
||||||
|
.filelink {color:#000000;}
|
||||||
|
.filelink:hover, .filelink:focus {color:#0094FF;}
|
||||||
|
.panel-footer{padding:10px 15px;color:#31708f;background-color:#f5f5f5;border-color:#dddddd;border-top:1px solid #dddddd;}
|
||||||
|
</STYLE>
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
6
esp3d/data/footer.inc
Normal file
6
esp3d/data/footer.inc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
$SERVICE_PAGE$
|
||||||
|
<hr><br>
|
||||||
|
<div class="panel">
|
||||||
|
<center><table><tr><td><a class='blacklink' href='https://github.com/luc-github/ESP3D'>ESP3D powered</a></td><td>-</td><td><a class='blacklink' href='http://www.gnu.org/licenses/gpl-2.0.html'>GPL licensed</a></td></center></div>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -25,6 +25,6 @@ $INCLUDE[css.inc]$
|
|||||||
<circle style="fill:white" cx="20" cy="22" r="2.5"/>
|
<circle style="fill:white" cx="20" cy="22" r="2.5"/>
|
||||||
<polygon points="20,23 16,30 24,30" style="fill:white"/></svg></div></a></td>
|
<polygon points="20,23 16,30 24,30" style="fill:white"/></svg></div></a></td>
|
||||||
<td>FW: V$FW_VER$</td>
|
<td>FW: V$FW_VER$</td>
|
||||||
<td><a href="https://github.com/luc-github/ESP8266">Github</a></td>
|
<td><a href="https://github.com/luc-github/ESP3D">ESP3D</a></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
@ -1,4 +1,5 @@
|
|||||||
$INCLUDE[header.inc]$
|
$INCLUDE[header.inc]$
|
||||||
|
$INCLUDE[css2.inc]$
|
||||||
<table>
|
<table>
|
||||||
<tr><td style="padding:0px;"><div id="Extruder1" style="visibility:hidden;height:0px;">
|
<tr><td style="padding:0px;"><div id="Extruder1" style="visibility:hidden;height:0px;">
|
||||||
<table><tr><td><label>E1: </label></td>
|
<table><tr><td><label>E1: </label></td>
|
||||||
@ -67,7 +68,10 @@ $INCLUDE[header.inc]$
|
|||||||
<td class="btnimg" onclick="getSDfiles();"><svg width="40" height="40" viewBox="0 0 40 40"><rect x="5" y="10" width="30" height="20" rx="2" ry="2" style="fill:rgb(0,0,0);stroke-width:1;stroke:rgb(0,0,0)" />
|
<td class="btnimg" onclick="getSDfiles();"><svg width="40" height="40" viewBox="0 0 40 40"><rect x="5" y="10" width="30" height="20" rx="2" ry="2" style="fill:rgb(0,0,0);stroke-width:1;stroke:rgb(0,0,0)" />
|
||||||
<rect x="20" y="5" width="15" height="15" rx="2" ry="2" style="fill:rgb(0,0,0);stroke-width:1;stroke:rgb(0,0,0)" /><text x="10" y="25" font-family="Verdana" font-size="14" fill="white">SD</text></svg></td>
|
<rect x="20" y="5" width="15" height="15" rx="2" ry="2" style="fill:rgb(0,0,0);stroke-width:1;stroke:rgb(0,0,0)" /><text x="10" y="25" font-family="Verdana" font-size="14" fill="white">SD</text></svg></td>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td id="SDLIST"></td></tr></table></td></tr><tr><td><table><tr align="center" valign="middle"><td class="btnimg" onclick=" Sendcommand('G28 X');">
|
<td id="SDLIST"></td></tr></table></td></tr>
|
||||||
|
<tr><td><input type="file" id="file-select" name="myfiles[]" multiple />
|
||||||
|
<input class="btn btn-primary" type="button" id="upload-button" onclick="Sendfile();" value="Upload"/> <progress style="visibility:hidden;" name='prg' id='prg'></progress></td></tr>
|
||||||
|
<tr><td><table><tr align="center" valign="middle"><td class="btnimg" onclick=" Sendcommand('G28 X');">
|
||||||
<svg width="40" height="40" viewBox="0 0 40 40" ><polygon points="7,40 7,25 4,28 0,24 20,4 26,10 26,6 32,6 32,16 40,24 36,28 33,25 33,40" fill="black" stroke-width:"1" stroke:"black" />
|
<svg width="40" height="40" viewBox="0 0 40 40" ><polygon points="7,40 7,25 4,28 0,24 20,4 26,10 26,6 32,6 32,16 40,24 36,28 33,25 33,40" fill="black" stroke-width:"1" stroke:"black" />
|
||||||
<line x1="25" y1="8" x2="33" y2="16" style="stroke:white;stroke-width:1" /><polyline points="4,28 20,12 36,28" style="fill:none;stroke:white;stroke-width:1" />
|
<line x1="25" y1="8" x2="33" y2="16" style="stroke:white;stroke-width:1" /><polyline points="4,28 20,12 36,28" style="fill:none;stroke:white;stroke-width:1" />
|
||||||
<text x="15" y="35" font-family="Verdana" font-size="14" fill="white">X</text></svg></td><td>
|
<text x="15" y="35" font-family="Verdana" font-size="14" fill="white">X</text></svg></td><td>
|
||||||
@ -141,6 +145,7 @@ $INCLUDE[header.inc]$
|
|||||||
<text x="14" y="7" font-family="Verdana" font-size="7" fill="black">10</text></svg></td></tr>
|
<text x="14" y="7" font-family="Verdana" font-size="7" fill="black">10</text></svg></td></tr>
|
||||||
<tr><td class="btnimg" onclick="SendJogcommand( 'E1+50',Efeedrate);"><svg width="40" height="20" viewBox="0 0 40 20" ><polyline points="5,18 20,5 35,18" style="fill:none;stroke:pink;stroke-width:7" transform="rotate(180 20 10)"/>
|
<tr><td class="btnimg" onclick="SendJogcommand( 'E1+50',Efeedrate);"><svg width="40" height="20" viewBox="0 0 40 20" ><polyline points="5,18 20,5 35,18" style="fill:none;stroke:pink;stroke-width:7" transform="rotate(180 20 10)"/>
|
||||||
<text x="15" y="6" font-family="Verdana" font-size="7" fill="black">50</text></svg></td></tr></table></td></tr></table></td></tr></table>
|
<text x="15" y="6" font-family="Verdana" font-size="7" fill="black">50</text></svg></td></tr></table></td></tr></table></td></tr></table>
|
||||||
|
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
var XYfeedrate=$XY_FEEDRATE$;
|
var XYfeedrate=$XY_FEEDRATE$;
|
||||||
var Zfeedrate=$Z_FEEDRATE$;
|
var Zfeedrate=$Z_FEEDRATE$;
|
||||||
@ -380,7 +385,7 @@ document.getElementById("SDLIST").innerHTML="";
|
|||||||
Sendcommand("M20");
|
Sendcommand("M20");
|
||||||
delay(1000);
|
delay(1000);
|
||||||
var xmlhttp = new XMLHttpRequest();
|
var xmlhttp = new XMLHttpRequest();
|
||||||
var url = "http://$WEB_ADDRESS$/SDFILES";
|
var url = "/SDFILES";
|
||||||
xmlhttp.onreadystatechange = function() {
|
xmlhttp.onreadystatechange = function() {
|
||||||
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
|
||||||
var jsonresponse = JSON.parse(xmlhttp.responseText);
|
var jsonresponse = JSON.parse(xmlhttp.responseText);
|
||||||
@ -389,6 +394,30 @@ refreshfilelist(jsonresponse);}
|
|||||||
xmlhttp.open("GET", url, true);
|
xmlhttp.open("GET", url, true);
|
||||||
xmlhttp.send();
|
xmlhttp.send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function Sendfile(){
|
||||||
|
var files = document.getElementById('file-select').files;
|
||||||
|
if (files.length==0)return;
|
||||||
|
document.getElementById('upload-button').value = "Uploading...";
|
||||||
|
document.getElementById('prg').style.visibility = "visible";
|
||||||
|
var formData = new FormData();
|
||||||
|
for (var i = 0; i < files.length; i++) {
|
||||||
|
var file = files[i];
|
||||||
|
formData.append('myfiles[]', file, "/"+file.name);}
|
||||||
|
var xmlhttp = new XMLHttpRequest();
|
||||||
|
xmlhttp.open('POST', '/SDFILES', true);
|
||||||
|
xmlhttp.onload = function () {
|
||||||
|
if (xmlhttp.status === 200) {
|
||||||
|
document.getElementById('upload-button').value = 'Upload';
|
||||||
|
document.getElementById('prg').style.visibility = "hidden";
|
||||||
|
document.getElementById('file-select').value="";
|
||||||
|
var jsonresponse = JSON.parse(xmlhttp.responseText);
|
||||||
|
refreshfilelist(jsonresponse);
|
||||||
|
} else alert('An error occurred!');
|
||||||
|
}
|
||||||
|
xmlhttp.send(formData);
|
||||||
|
}
|
||||||
|
|
||||||
setInterval(function(){getstatus();},$REFRESH_PAGE$);
|
setInterval(function(){getstatus();},$REFRESH_PAGE$);
|
||||||
</script>
|
</script>
|
||||||
$INCLUDE[footer.inc]$
|
$INCLUDE[footer.inc]$
|
@ -1,16 +1,6 @@
|
|||||||
$INCLUDE[header.inc]$
|
$INCLUDE[header.inc]$
|
||||||
|
$INCLUDE[css2.inc]$
|
||||||
<STYLE>
|
<STYLE>
|
||||||
input[type="file"]::-webkit-file-upload-button{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation; touch-action:manipulation;cursor:pointer;
|
|
||||||
background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;
|
|
||||||
* -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none; color: #ffffff;background-color: #5bc0de;border-color: #46b8da;}
|
|
||||||
input[type="file"]::-webkit-file-upload-button:focus{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation; touch-action:manipulation;cursor:pointer;
|
|
||||||
background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;
|
|
||||||
* -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none; color: #ffffff;background-color: #31b0d5;border-color: #1b6d85;}
|
|
||||||
input[type="file"]::-webkit-file-upload-button:hover{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation; touch-action:manipulation;cursor:pointer;
|
|
||||||
background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;
|
|
||||||
* -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none; color: #ffffff;background-color: #31b0d5;border-color: #269abc;}
|
|
||||||
.filelink {color:#000000;}
|
|
||||||
.filelink:hover, .filelink:focus {color:#0094FF;}
|
|
||||||
.panel-footer{padding:10px 15px;color:#31708f;background-color:#f5f5f5;border-color:#dddddd;border-top:1px solid #dddddd;}
|
.panel-footer{padding:10px 15px;color:#31708f;background-color:#f5f5f5;border-color:#dddddd;border-top:1px solid #dddddd;}
|
||||||
</STYLE>
|
</STYLE>
|
||||||
<div class="panel">
|
<div class="panel">
|
||||||
@ -61,7 +51,7 @@ content +="<meter min='0' max='100' high='90' value='"+jsonresponse.occupation +
|
|||||||
document.getElementById('status').innerHTML=content;
|
document.getElementById('status').innerHTML=content;
|
||||||
content ="";
|
content ="";
|
||||||
for (var i=0;i <jsonresponse.files.length;i++){
|
for (var i=0;i <jsonresponse.files.length;i++){
|
||||||
content +="<TR><TD style=\"padding:0px;\"><a href=\""+jsonresponse.files[i].name+"\" target=_blank><div class=\"filelink\">";
|
content +="<TR><TD style=\"padding:0px;\"><a href=\""+jsonresponse.files[i].name+"\" target=_blank><div class=\"blacklink\">";
|
||||||
content +=jsonresponse.files[i].name;
|
content +=jsonresponse.files[i].name;
|
||||||
content +="</div></a></TD><TD>";
|
content +="</div></a></TD><TD>";
|
||||||
content +=jsonresponse.files[i].size;
|
content +=jsonresponse.files[i].size;
|
@ -1,15 +1,5 @@
|
|||||||
$INCLUDE[header.inc]$
|
$INCLUDE[header.inc]$
|
||||||
<STYLE>
|
$INCLUDE[css2.inc]$
|
||||||
input[type="file"]::-webkit-file-upload-button{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation; touch-action:manipulation;cursor:pointer;
|
|
||||||
background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;
|
|
||||||
* -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none; color: #ffffff;background-color: #5bc0de;border-color: #46b8da;}
|
|
||||||
input[type="file"]::-webkit-file-upload-button:focus{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation; touch-action:manipulation;cursor:pointer;
|
|
||||||
background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;
|
|
||||||
* -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none; color: #ffffff;background-color: #31b0d5;border-color: #1b6d85;}
|
|
||||||
input[type="file"]::-webkit-file-upload-button:hover{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation; touch-action:manipulation;cursor:pointer;
|
|
||||||
background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;
|
|
||||||
* -webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none; color: #ffffff;background-color: #31b0d5;border-color: #269abc;}
|
|
||||||
</STYLE>
|
|
||||||
<div id='system' class="panel">
|
<div id='system' class="panel">
|
||||||
<div class="panel-heading">System</div>
|
<div class="panel-heading">System</div>
|
||||||
<div class="panel-body">
|
<div class="panel-body">
|
@ -195,6 +195,8 @@ void loop()
|
|||||||
serverClient.stop();
|
serverClient.stop();
|
||||||
}
|
}
|
||||||
//check clients for data
|
//check clients for data
|
||||||
|
//to avoid any pollution if Uploading file to SDCard
|
||||||
|
if ((web_interface->blockserial) == false){
|
||||||
for(i = 0; i < MAX_SRV_CLIENTS; i++) {
|
for(i = 0; i < MAX_SRV_CLIENTS; i++) {
|
||||||
if (serverClients[i] && serverClients[i].connected()) {
|
if (serverClients[i] && serverClients[i].connected()) {
|
||||||
if(serverClients[i].available()) {
|
if(serverClients[i].available()) {
|
||||||
@ -207,6 +209,7 @@ void loop()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
//check UART for data
|
//check UART for data
|
||||||
if(Serial.available()) {
|
if(Serial.available()) {
|
@ -2094,7 +2094,7 @@ void handle_web_settings()
|
|||||||
web_interface->WebServer.sendContent_P(NOT_AUTH_SET);
|
web_interface->WebServer.sendContent_P(NOT_AUTH_SET);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
web_interface->blockserial = false;
|
||||||
//IP+Web
|
//IP+Web
|
||||||
GetIpWeb(KeysList, ValuesList);
|
GetIpWeb(KeysList, ValuesList);
|
||||||
//mode
|
//mode
|
||||||
@ -2409,19 +2409,63 @@ void SPIFFSFileupload()
|
|||||||
HTTPUpload& upload = (web_interface->WebServer).upload();
|
HTTPUpload& upload = (web_interface->WebServer).upload();
|
||||||
if(upload.status == UPLOAD_FILE_START) {
|
if(upload.status == UPLOAD_FILE_START) {
|
||||||
String filename = upload.filename;
|
String filename = upload.filename;
|
||||||
|
Serial.println("M117 Start ESP upload");
|
||||||
web_interface->fsUploadFile = SPIFFS.open(filename, "w");
|
web_interface->fsUploadFile = SPIFFS.open(filename, "w");
|
||||||
filename = String();
|
filename = String();
|
||||||
|
web_interface->_upload_status= UPLOAD_STATUS_ONGOING;
|
||||||
} else if(upload.status == UPLOAD_FILE_WRITE) {
|
} else if(upload.status == UPLOAD_FILE_WRITE) {
|
||||||
|
web_interface->_upload_status= UPLOAD_STATUS_ONGOING;
|
||||||
if(web_interface->fsUploadFile) {
|
if(web_interface->fsUploadFile) {
|
||||||
web_interface->fsUploadFile.write(upload.buf, upload.currentSize);
|
web_interface->fsUploadFile.write(upload.buf, upload.currentSize);
|
||||||
}
|
}
|
||||||
} else if(upload.status == UPLOAD_FILE_END) {
|
} else if(upload.status == UPLOAD_FILE_END) {
|
||||||
|
web_interface->_upload_status=UPLOAD_STATUS_SUCCESSFUL;
|
||||||
|
Serial.println("M117 End ESP upload");
|
||||||
if(web_interface->fsUploadFile) {
|
if(web_interface->fsUploadFile) {
|
||||||
web_interface->fsUploadFile.close();
|
web_interface->fsUploadFile.close();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Cannot open file");
|
web_interface->_upload_status=UPLOAD_STATUS_CANCELLED;
|
||||||
|
Serial.println("M117 Error ESP upload");
|
||||||
}
|
}
|
||||||
|
delay(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
void SDFileupload()
|
||||||
|
{
|
||||||
|
static bool linewrote = false;
|
||||||
|
HTTPUpload& upload = (web_interface->WebServer).upload();
|
||||||
|
if(upload.status == UPLOAD_FILE_START) {
|
||||||
|
(web_interface->blockserial) = true;
|
||||||
|
linewrote = false;
|
||||||
|
web_interface->_upload_status= UPLOAD_STATUS_ONGOING;
|
||||||
|
Serial.println("M117 Start SD upload");
|
||||||
|
String filename = "M28 " + upload.filename;
|
||||||
|
Serial.println(filename);
|
||||||
|
filename = String();
|
||||||
|
} else if(upload.status == UPLOAD_FILE_WRITE) {
|
||||||
|
web_interface->_upload_status= UPLOAD_STATUS_ONGOING;
|
||||||
|
if (linewrote == false){
|
||||||
|
Serial.write("M117 one line yes\n");
|
||||||
|
Serial.flush();
|
||||||
|
linewrote = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Serial.write(upload.buf, upload.currentSize);
|
||||||
|
} else if(upload.status == UPLOAD_FILE_END) {
|
||||||
|
web_interface->blockserial = false;
|
||||||
|
linewrote = false;
|
||||||
|
web_interface->_upload_status=UPLOAD_STATUS_SUCCESSFUL;
|
||||||
|
Serial.println("M29\n");
|
||||||
|
delay (500);
|
||||||
|
Serial.println("M117 SD upload done\n");
|
||||||
|
} else {
|
||||||
|
web_interface->_upload_status=UPLOAD_STATUS_CANCELLED;
|
||||||
|
Serial.println("M29\n");
|
||||||
|
delay (500);
|
||||||
|
Serial.println("M117 SD upload failed");
|
||||||
|
}
|
||||||
|
delay(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WEB_UPDATE_FEATURE
|
#ifdef WEB_UPDATE_FEATURE
|
||||||
@ -2448,7 +2492,7 @@ void WebUpdateUpload()
|
|||||||
Update.end();
|
Update.end();
|
||||||
web_interface->_upload_status=UPLOAD_STATUS_CANCELLED;
|
web_interface->_upload_status=UPLOAD_STATUS_CANCELLED;
|
||||||
}
|
}
|
||||||
yield();
|
delay(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void handleUpdate()
|
void handleUpdate()
|
||||||
@ -2525,6 +2569,15 @@ void handleSDFileList()
|
|||||||
{
|
{
|
||||||
if (!web_interface->is_authenticated()) {
|
if (!web_interface->is_authenticated()) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
if(web_interface->WebServer.hasArg("action")) {
|
||||||
|
if(web_interface->WebServer.arg("action")=="delete" && web_interface->WebServer.hasArg("filename")) {
|
||||||
|
String filename;
|
||||||
|
web_interface->urldecode(filename,web_interface->WebServer.arg("filename").c_str());
|
||||||
|
filename = "M30 " + filename;
|
||||||
|
//TODO:need a MACRO or helper for this test
|
||||||
|
if((web_interface->blockserial) == false)Serial.println(filename);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
String jsonfile = "[";
|
String jsonfile = "[";
|
||||||
for (int i=0; i<web_interface->fileslist.size(); i++) {
|
for (int i=0; i<web_interface->fileslist.size(); i++) {
|
||||||
@ -2538,6 +2591,7 @@ void handleSDFileList()
|
|||||||
jsonfile+="]";
|
jsonfile+="]";
|
||||||
web_interface->WebServer.sendHeader("Cache-Control", "no-cache");
|
web_interface->WebServer.sendHeader("Cache-Control", "no-cache");
|
||||||
web_interface->WebServer.send(200, "application/json", jsonfile);
|
web_interface->WebServer.send(200, "application/json", jsonfile);
|
||||||
|
web_interface->blockserial = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//do a redirect to avoid to many query
|
//do a redirect to avoid to many query
|
||||||
@ -2767,8 +2821,6 @@ void handle_web_command()
|
|||||||
//decode command
|
//decode command
|
||||||
web_interface->urldecode(scmd,web_interface->WebServer.arg("COM").c_str());
|
web_interface->urldecode(scmd,web_interface->WebServer.arg("COM").c_str());
|
||||||
scmd.trim();
|
scmd.trim();
|
||||||
//send command to serial
|
|
||||||
Serial.println(scmd);
|
|
||||||
//give an ack - we need to be polite, right ?
|
//give an ack - we need to be polite, right ?
|
||||||
web_interface->WebServer.send(200,"text/plain","Ok");
|
web_interface->WebServer.send(200,"text/plain","Ok");
|
||||||
//if it is for ESP module [ESPXXX]<parameter>
|
//if it is for ESP module [ESPXXX]<parameter>
|
||||||
@ -2791,6 +2843,11 @@ void handle_web_command()
|
|||||||
//if not is not a valid [ESPXXX] command
|
//if not is not a valid [ESPXXX] command
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
//send command to serial as no need to transfer ESP command
|
||||||
|
//to avoid any pollution if Uploading file to SDCard
|
||||||
|
if ((web_interface->blockserial) == false)Serial.println(scmd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2856,7 +2913,7 @@ WEBINTERFACE_CLASS::WEBINTERFACE_CLASS (int port):WebServer(port)
|
|||||||
WebServer.on("/UPDATE",HTTP_ANY, handleUpdate,WebUpdateUpload);
|
WebServer.on("/UPDATE",HTTP_ANY, handleUpdate,WebUpdateUpload);
|
||||||
#endif
|
#endif
|
||||||
WebServer.on("/FILES", HTTP_ANY, handleFileList,SPIFFSFileupload);
|
WebServer.on("/FILES", HTTP_ANY, handleFileList,SPIFFSFileupload);
|
||||||
WebServer.on("/SDFILES", HTTP_ANY, handleSDFileList);
|
WebServer.on("/SDFILES", HTTP_ANY, handleSDFileList,SDFileupload);
|
||||||
WebServer.on("/LOGIN", HTTP_ANY, handle_login);
|
WebServer.on("/LOGIN", HTTP_ANY, handle_login);
|
||||||
WebServer.on("/PASSWORD", HTTP_ANY, handle_password);
|
WebServer.on("/PASSWORD", HTTP_ANY, handle_password);
|
||||||
//Captive portal Feature
|
//Captive portal Feature
|
||||||
@ -2872,6 +2929,7 @@ WEBINTERFACE_CLASS::WEBINTERFACE_CLASS (int port):WebServer(port)
|
|||||||
answer4M114="X:0.0 Y:0.0 Z:0.000";
|
answer4M114="X:0.0 Y:0.0 Z:0.000";
|
||||||
answer4M220="100";
|
answer4M220="100";
|
||||||
answer4M221="100";
|
answer4M221="100";
|
||||||
|
blockserial = false;
|
||||||
last_temp=system_get_time();
|
last_temp=system_get_time();
|
||||||
restartmodule=false;
|
restartmodule=false;
|
||||||
//rolling list of 4entries with a maximum of 50 char for each entry
|
//rolling list of 4entries with a maximum of 50 char for each entry
|
@ -62,6 +62,7 @@ public:
|
|||||||
char * create_session_ID();
|
char * create_session_ID();
|
||||||
bool is_authenticated();
|
bool is_authenticated();
|
||||||
bool AddAuthIP(auth_ip * item);
|
bool AddAuthIP(auth_ip * item);
|
||||||
|
bool blockserial;
|
||||||
bool ResetAuthIP(IPAddress ip,const char * sessionID);
|
bool ResetAuthIP(IPAddress ip,const char * sessionID);
|
||||||
uint8_t _upload_status;
|
uint8_t _upload_status;
|
||||||
|
|
@ -1,3 +0,0 @@
|
|||||||
$SERVICE_PAGE$
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -8,7 +8,7 @@ import json
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
#Replace this with a different path if you need to...
|
#Replace this with a different path if you need to...
|
||||||
base_path = os.path.join(os.getcwd(),"..","esp8266","data")
|
base_path = os.path.join(os.getcwd(),"..","esp3d","data")
|
||||||
tools_path = os.getcwd();
|
tools_path = os.getcwd();
|
||||||
server_port=8080
|
server_port=8080
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user