Skip to content

Commit

Permalink
Update from refactoring branch
Browse files Browse the repository at this point in the history
### Maintenance page
* Add add tab color for mobile view
* Add spellcheck off / autocorect off in input
* Add disconnect button when authenticate enabled
* Add Invalid user or password message when authentication failed

### Board support
* Add ESP32 S2 support
* Add ESP32 S3 support
* Add ESP32 C3 support

### ESP commands
* Add command 701 to control GCODE streaming
* Remove command 901 as duplicate
* Update command 420 to add more details
* Use text as default output
* All json on all commands for formated output

### Core
* Add benchmak function to check transfer speed (for test only-not production)
* Merge code for ESP3DLib support
* Add better printer display support (M117 / Serial TFT)
* Use ESP32 analogWrite instead of emulated one

### Modules
* Display
	* Refactor code
	* Remove SPI ILI 9341 / 9488 support as not suitable
      * Add ST7789 support (135x240 / 240x240)
* Filesystem
	* Bug fixes due to esp core updates
	* Better SD sharing mecanism
      * Better global FS management
* FTP
	* Add SD sharing support
	* Better global FS management
* GCODE Host
	* Add basic support for macro files
      * Add ESP command support
      * Use not blocking method to stream commands / handle response
* Notifications
	* Add IFTTT notification service
	* Add WebUI notification
	* Add ESP3D display notification
* WebDav
	* Add SD sharing support
	* Add bug fix from https://github.com/d-a-v/ESPWebDAV
	* Better global FS management
* Websocket
	* Add function to handle zombies connections
* WiFi
	* Fix connection to AP sometime fail
	* Fix low signal not diplayed in ESP420 even connected
	* Add AP Setup mode

### Libraries
* Update SDFat-2.0.6 to 2.1.2
* Update ESP32SSDP 1.1.1 to 1.2.0
* Update TFT_eSPI-1.4.11 to 2.4.61
* Update arduinoWebSockets-2.3.5 to 2.3.6
* Update esp8266-oled-ssd1306-4.0.0 to 4.3.0
* Remove lvgl support

### Tools
* Add I2C scanner script
* Add python script to simulate/stress printer serial communication

### PlatformIO
 * Use latest 4.4.0 Espressif32 release (ESP32-arduino core 2.0.3)
 * Add fix for Flash more than 4MB
 * Add Esp32 S2/S3/C3 env
 * Add ESP32-ST7789 / esp32-TTGO_T_Display env
  • Loading branch information
luc-github committed Jun 1, 2022
1 parent b3f2e46 commit 39e0697
Show file tree
Hide file tree
Showing 2,496 changed files with 800,219 additions and 177,708 deletions.
10 changes: 5 additions & 5 deletions .github/ci/prepare-libs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,12 @@ shopt -s globstar
ls $HOME
# Make sure we are inside the github workspace
cd $GITHUB_WORKSPACE
cp -r ./libraries/ESP32SSDP-1.1.1 $HOME/arduino_ide/libraries/
cp -r ./libraries/arduinoWebSockets-2.3.5 $HOME/arduino_ide/libraries/
cp -r ./libraries/ESP32SSDP-1.2.0 $HOME/arduino_ide/libraries/
cp -r ./libraries/arduinoWebSockets-2.3.6 $HOME/arduino_ide/libraries/
cp -r ./libraries/DHT_sensor_library_for_ESPx-1.0.6 $HOME/arduino_ide/libraries/
cp -r ./libraries/esp8266-oled-ssd1306-4.0.0 $HOME/arduino_ide/libraries/
cp -r ./libraries/TFT_eSPI-1.4.11 $HOME/arduino_ide/libraries/
cp -r ./libraries/lv_arduino-2.0.3 $HOME/arduino_ide/libraries/
cp -r ./libraries/esp8266-oled-ssd1306-4.3.0 $HOME/arduino_ide/libraries/
cp -r ./libraries/TFT_eSPI-2.4.61 $HOME/arduino_ide/libraries/
cp -r ./libraries/lvgl-8.2.0 $HOME/arduino_ide/libraries/
cp -r ./libraries/ESP8266-Arduino-Lua-0.0.30 $HOME/arduino_ide/libraries/
cp -r ./libraries/BMx280MI-1.2.0 $HOME/arduino_ide/libraries/
#TODO add SDFat libraries according version and target
Expand Down
68 changes: 68 additions & 0 deletions Features.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
# V3 Features

* Embedded maintenance page (terminal / local FS update / ESP3D Firmware update)
* WebUI support
* ESP8285 / ESP8266 / ESP32 / ESP32-S2 / ESP32-S3 / ESP32-C3 support
* Wifi / ethernet support
* Raw TCP / serial bridge support (light telnet)
* Boot delay configuration
* Websocket / serial bridge support
* Bluetooth Serial bridge support (when BT supported)
* MKS Serial protocol support
* Serial commands configurations
* Authentication support (admin / user)
* FTP support (limited to 1 connection at once)
* WebDav support
* Local FS support:
* Little FS (prefered)
* Fat (ESP32 only)
* SPIFFS (deprecated)
* SD support
* File format
* Native SPI
* Native SDIO (ESP32 only)
* SDFat 1.x
* SDFat 2.x
* Connection
* Direct connection
* e.g.: ESP32cam
* Sharing connection using hardware switch
* e.g.: Panucatt Wifi Backpack / Azteeg X5 WiFi
* MKS fast upload by serial
* NOT SUPPORTED
* M28/M29 File transfer protocol
* USB support
* planned
* Global FS under FTP / Webdav : SD + Local FS in same directory
* Buzzer support
* Recovery pin support
* ESP32 Camera support
* Basic oled screen support
* I2C SSD1306 128x64
* I2C SSDSH1106 132x64
* Basic tft screen support
* SPI ST7789 135x240
* SPI ST7789 240x240
* Time synchronization support (manual / internet server)
* Lua interpreter support
* Notifications support
* WebUI
* TFT/OLED
* Email
* Line
* Telegram
* PushOver
* IFTTT
* Sensors support
* DHT 11/22
* Analog
* BMX280
* Auto script support at start
* Basic Host GCODE stream for macros hosted on local FS
* Update
* ESP3D configuration using ini file on SD
* ESP3D update using binary file on SD

*


158 changes: 99 additions & 59 deletions docs/Commands.txt
Original file line number Diff line number Diff line change
@@ -1,123 +1,147 @@
Note:
1 - add space to separate parameters
2 - if parameter has space add \ in front of space to not be seen as separator
2 - if parameter has space add \\ in front of space to not be seen as separator
3 - json json=YES json=TRUE json=1 are paremeters to switch output to json
By default output is plain text, to get json formated output
add json or json=yes after main parameters
The json format is {
cmd:"<command id>", //the id of requested command
status:"<ok/error>" //give if it is success or an failure
data:"<response>" // response corresponding to answer in json format too
}


*Show commands help
[ESP]<command id> json=<no>

* Set/Get STA SSID
[ESP100]<SSID>pwd=<admin password>
[ESP100]<SSID> json=<no> pwd=<admin password for set/get & user password to get>

* Set STA Password
[ESP101]<Password>pwd=<admin password>
[ESP101]<Password> json=<no> pwd=<admin password>

* Set/Get STA IP mode (DHCP/STATIC)
[ESP102]<mode>pwd=<admin password>
[ESP102]<mode> json=<no> pwd=<admin password>

* Set/Get STA IP/Mask/GW/DNS
[ESP103]IP=<IP> MSK=<IP> GW=<IP> DNS=<IP> pwd=<admin password>
[ESP103]IP=<IP> MSK=<IP> GW=<IP> DNS=<IP> json=<no> pwd=<admin password>

* Set/Get sta fallback mode which can be WIFI-AP, BT, OFF
[ESP104]<state>pwd=<admin password>
[ESP104]<state> json=<no> pwd=<admin password>

* Set/Get AP SSID
[ESP105]<SSID>pwd=<admin password>
[ESP105]<SSID> json=<no> pwd=<admin password>

* Change AP Password
[ESP106]<Password>pwd=<admin password>
[ESP106]<Password> json=<no> pwd=<admin password>

* Set/Get AP IP
[ESP107]<IP>pwd=<admin password>
[ESP107]<IP> json=<no> pwd=<admin password>

* Set/Get AP channel
[ESP108]<channel>pwd=<admin password>
[ESP108]<channel> json=<no> pwd=<admin password>

* Set/Get radio state which can be WIFI-STA, WIFI-AP, BT, ETH-STA, ETH-AP, OFF
[ESP110]<state>pwd=<admin password>
[ESP110]<state> json=<no> pwd=<admin password>

* Get current IP
[ESP111]<header answer>
[ESP111]json=<no>

* Get/Set hostname
[ESP112]<Hostname> pwd=<admin password>
[ESP112]<Hostname> json=<no> pwd=<admin password>

* Get /Set Boot radio state which can be ON, OFF
[ESP114]<state> json=<no> pwd=<user/admin password>

* Get/Set immediate network(WiFi/BT/Ethernet) state which can be ON, OFF
[ESP115]<state>pwd=<admin password>
[ESP115]<state> json=<no> pwd=<admin password>

* Get/Set HTTP state which can be ON, OFF
[ESP120]<state>pwd=<admin password>
[ESP120]<state> json=<no> pwd=<admin password>

* Get/Set HTTP port
[ESP121]<port>pwd=<admin password>
[ESP121]<port> json=<no> pwd=<admin password>

* Get/Set Telnet state which can be ON, OFF, CLOSE
[ESP130]<state>pwd=<admin password>
[ESP130]<state> json=<no> pwd=<admin password>

* Get/Set Telnet port
[ESP131]<port>pwd=<admin password>
[ESP131]<port> json=<no> pwd=<admin password>

* Sync / Set / Get current time
[ESP140]<SYNC> <srv1=XXXXX> <srv2=XXXXX> <srv3=XXXXX> <zone=xxx> <dst=YES/NO> <time=YYYY-MM-DD#H24:MM:SS> pwd=<admin password>
[ESP140]<SYNC> <srv1=XXXXX> <srv2=XXXXX> <srv3=XXXXX> <zone=xxx> <dst=YES/NO> <time=YYYY-MM-DD#H24:MM:SS> <NOW> json=<no> pwd=<admin password>

* Get/Set display/set boot delay in ms / Verbose boot
[ESP150]<delay=time in milliseconds><verbose=ON/OFF>[pwd=<admin password>]

* Get/Set WebSocket state which can be ON, OFF
[ESP160]<state>pwd=<admin password>
[ESP160]<state> json=<no> pwd=<admin password>

* Get/Set WebSocket port
[ESP161]<port>pwd=<admin password>
[ESP161]<port> json=<no> pwd=<admin password>

* Get/Set Camera command value / list all values in JSON/plain
label can be: light/framesize/quality/contrast/brightness/saturation/gainceiling/colorbar/awb/agc/aec/hmirror/vflip/awb_gain/agc_gain/aec_value/aec2/cw/bpc/wpc/raw_gma/lenc/special_effect/wb_mode/ae_level
[ESP170]<plain><label=value> pwd=<admin password>
[ESP170]<plain><label=value> json=<no> pwd=<admin password>

* Get/Set Ftp state which can be ON, OFF, CLOSE
[ESP180]<state>pwd=<admin password>
[ESP180]<state> json=<no> pwd=<admin password>

* Get/Set Ftp ports
[ESP181]ctrl=<port> active=<port> passive=<port> pwd=<admin password>
[ESP181]ctrl=<port> active=<port> passive=<port> json=<no> pwd=<admin password>

* Get/Set WebDav state which can be ON, OFF, CLOSE
[ESP190]<state>pwd=<admin password>
[ESP190]<state> json=<no> pwd=<admin password>

* Get/Set WebDav port
[ESP191]<port>pwd=<admin password>
[ESP191]<port> json=<no> pwd=<admin password>

* Get SD Card Status
[ESP200] pwd=<user/admin password>
* Get/Set SD Card Status
[ESP200]<RELEASE> <REFRESH> json=<no> pwd=<user/admin password>
RELEASE will force the release of SD from ESP3D if SD is shared
REFRESH will refresh the SD info is available

*Get/Set pin value
[ESP201]P<pin> V<value> [PULLUP=YES RAW=YES]pwd=<admin password>
if no V<value> get P<pin> value
if V<value> 0/1 set INPUT_PULLUP value, but for GPIO16(ESP8266) INPUT_PULLDOWN_16
[ESP201]P=<pin> V=<value> [PULLUP=YES RAW=YES ANALOG=NO ANALOG_RANGE=255]pwd=<admin password>
if no V=<value> get P=<pin> value
if V=<value> 0/1 set INPUT_PULLUP value, but for GPIO16(ESP8266) INPUT_PULLDOWN_16
if PULLUP=YES set input pull up (for GPIO16(ESP8266) INPUT_PULLDOWN_16), if not set input
if RAW=YES do not set pinmode just read value

Flash pins (6~11) cannot be used

*Get/Set SD card Speed factor 1 2 4 6 8 16 32
[ESP202]SPEED=<value>pwd=<user/admin password>
[ESP202]SPEED=<value> json=<no> pwd=<user/admin password>

*Get Sensor Value / type/Set Sensor type
[ESP210]<type=NONE/xxx> <interval=XXX in millisec> json=<no> pwd=<user/admin password>

* Output to esp screen status
[ESP214]<Text>pwd=<user password>
[ESP214]<Text> json=<no> pwd=<user/admin password>

* Touch Calibration
[ESP215]<CALIBRATE>[pwd=<user password>]
[ESP215]<CALIBRATE> json=<no> [pwd=<user password>]

* Take screen snapshot
[ESP216]<SNAP>[pwd=<user password>]
[ESP216]<SNAP> json=<no> [pwd=<user password>]

* Show defined pins
[ESP220]<SNAP> json=<no> [pwd=<user password>]

* Play sound
No parameter just play beep
[ESP250]F=<frequency> D=<duration> [pwd=<user password>]
[ESP250]F=<frequency> D=<duration> json=<no> [pwd=<user password>]

* Delay command
[ESP290]<delay in ms>[pwd=<user password>]
[ESP290]<delay in ms> json=<no>[pwd=<user password>]

* Get full EEPROM settings content
but do not give any passwords
[ESP400] pwd=<admin password>

*Set EEPROM setting
position in EEPROM, type: B(byte), I(integer/long), S(string), A(IP address / mask)
[ESP401]P=<position> T=<type> V=<value> pwd=<user/admin password>
[ESP401]P=<position> T=<type> V=<value> json=<no> pwd=<user/admin password>
Description: Positions:
ESP_RADIO_MODE 0 //1 byte = flag
ESP_STA_SSID 1 //33 bytes 32+1 = string ; warning does not support multibyte char like chinese
Expand Down Expand Up @@ -158,7 +182,7 @@ ESP_TIME_IS_DST 463 //1 bytes = flag
ESP_TIME_SERVER1 464 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese
ESP_TIME_SERVER2 593 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese
ESP_TIME_SERVER3 722 //129 bytes 128+1 = string ; warning does not support multibyte char like chinese
ESP_PRINTER_LCD 851 //1 bytes = flag
ESP_REMOTE_SCREEN 851 //1 bytes = flag
ESP_SD_MOUNT 852 //1 bytes = flag
ESP_SESSION_TIMEOUT 853 //1 bytes = flag
ESP_WEBSOCKET_FLAG 854 //1 bytes = flag
Expand All @@ -172,7 +196,7 @@ ESP_CALIBRATION_5 1001 //4 bytes = int
ESP_SETUP 1005 //1 byte = flag
ESP_TELNET_FLAG 1006 //1 byte = flag
ESP_BT_FLAG 1007 //1 byte = flag
ESP_LCD_FLAG 1008 //1 byte = flag
ESP_SCREEEN_FLAG 1008 //1 byte = flag
ESP_FTP_CTRL_PORT 1009 //4 bytes = int
ESP_FTP_DATA_ACTIVE_PORT 1013 //4 bytes = int
ESP_FTP_DATA_PASSIVE_PORT 1017 //4 bytes = int
Expand All @@ -185,64 +209,80 @@ ESP_STA_DNS_VALUE 1029 //4 bytes= int
ESP_SECURE_SERIAL 1033 //1 byte = flag

* Get/Set Check update at boot state which can be ON, OFF
[ESP402]<state>pwd=<admin password>
[ESP402]<state> json=<no> pwd=<admin password>

*Get available AP list (limited to 30)
output is JSON or plain text according parameter
[ESP410]<plain><pwd=admin/user>
[ESP410]json=<no> <pwd=admin/user>

*Get current settings of ESP3D
output is plain text
[ESP420]<pwd=admin/user>
[ESP420]json=<no> <pwd=admin/user>

* Set ESP State
cmd are RESTART / RESET
[ESP444]<cmd><pwd=admin>
[ESP444]<cmd> json=<no> <pwd=admin>

* Change admin password
[ESP550]<password>pwd=<admin password>
[ESP550]<password> json=<no> pwd=<admin password>

* Change user password
[ESP555]<password>pwd=<admin/user password>
[ESP555]<password> json=<no> pwd=<admin/user password>

* Send Notification
[ESP600]msg [pwd=<admin password>]
[ESP600]msg json=<no> pwd=<admin/user password>

* Set/Get Notification settings
[ESP610]type=<NONE/PUSHOVER/EMAIL/LINE> T1=<token1> T2=<token2> TS=<Settings> [pwd=<admin password>]
[ESP610]type=<NONE/PUSHOVER/EMAIL/LINE/IFTTT> T1=<token1> T2=<token2> TS=<Settings> json=<no> [pwd=<admin password>]
Get will give type and settings only, not the protected T1/T2

* Send Notification using URL
[ESP620]URL=<encoded url> json=<no>[pwd=<admin/user password>]

* Read FS file
[ESP700]<filename> json=<no>[pwd=<admin/user password>]

* Query and Control ESP700 stream
[ESP701]action=<PAUSE/RESUME/ABORT> json=<no>[pwd=<admin/user password>]

* Format ESP Filesystem
[ESP710]FORMAT pwd=<admin password>
[ESP710]FORMATFS json=<no> pwd=<admin password>

* Format SD Filesystem
[ESP715]FORMATSD pwd=<admin password>
[ESP715]FORMATSD json=<no> pwd=<admin password>

* List ESP Filesystem
[ESP720]<Root> pwd=<admin password>
[ESP720]<Root> json=<no> pwd=<admin password>

* Action on ESP Filesystem
rmdir / remove / mkdir / exists / create
[ESP730]<Action>=<path> pwd=<admin password>
[ESP730]<Action>=<path> json=<no> pwd=<admin password>

* List SD Filesystem
[ESP740]<Root> pwd=<admin password>
[ESP740]<Root> json=<no> pwd=<admin password>

* Action on SD Filesystem
rmdir / remove / mkdir / exists / create
[ESP750]<Action>=<path> pwd=<admin password>
[ESP750]<Action>=<path> json=<no> pwd=<admin password>

* List Global Filesystem
[ESP780]<Root> json=<no> pwd=<admin password>

* Action on Global Filesystem
rmdir / remove / mkdir / exists /create
[ESP790]<Action>=<path> json=<no> pwd=<admin password>

* FW Informations
[ESP800]<plain> pwd=<admin password>
[ESP800]json=<no> pwd=<admin password>

* Get state / Set Enable / Disable Serial Communication
[ESP900]<ENABLE/DISABLE>[pwd=<admin/user password>]
[ESP900]<ENABLE/DISABLE> json=<no> [pwd=<admin/user password>]

* Get state / Set Enable / Disable verbose boot
[ESP901]<ENABLE/DISABLE>[pwd=<admin/user password>]
[ESP901]<ENABLE/DISABLE> json=<no> [pwd=<admin/user password>]

* Get state / Set Enable / Disable buzzer
[ESP910]<ENABLE/DISABLE>[pwd=<admin/user password>]
[ESP910]<ENABLE/DISABLE> json=<no> [pwd=<admin/user password>]

*Get state / Set state of output message clients
[ESP920]<SERIAL / LCD / PRINTER_LCD/ WEBSOCKET / TELNET /BT / ALL>=<ON/OFF>[pwd=<admin/user password>]
[ESP920]<SERIAL / SCREEN / REMOTE_SCREEN/ WEBSOCKET / TELNET /BT / ALL>=<ON/OFF> json=<no> [pwd=<admin/user password>]
Loading

0 comments on commit 39e0697

Please sign in to comment.