Documentation

The documentation section will help you on:


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Subsections of Documentation

ESP3D commands

Conventions

1 - Add space to separate parameters
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
}

Commands

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

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Subsections of ESP3D commands

[ESP100]

Set / Display Station SSID

Input

[ESP100]<SSID> json=<no> pwd=<admin/user password>

  • json=no the output format
    can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • SSID

    • if SSID is empty, it will display current SSID
    • if SSID is not empty, it will set the SSID

Output

  • In json format
{
   "cmd":"100",
   "status":"ok",
   "data":"esp3d"
}
  • cmd Id of requested command, should be 100
  • status status of command, should be ok
  • data content of response, here the SSID

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP101]

Set Station Password

Input

[ESP101]<password> <NOPASSWORD> json=<no> pwd=<admin/user password>

  • json=no the output format
    can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • password

    • if password is not empty, it will set the password
  • NOPASSWORD

    • if NOPASSWORD is present, it will remove the password
  • if password is empty and NOPASSWORD is not present, it will raise error: `Password not displayable``

Output

  • In json format:
{
   "cmd":"101",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 101
  • status status of command, should be ok
  • data content of response, here ok

if error :

  • in json format:
{
"cmd":"101",
"status":"error",
"data":"Password not displayable"
}
  • plain text:
error: Password not displayable

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP102]

Set / Display Station IP mode

Input

[ESP102]<mode> json=<no> pwd=<admin/user password>

  • json=no the output format
    can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • mode

    • if mode is empty, it will display current mode
    • if mode is not empty, it will set the setting mode: DHCP or STATIC

Output

  • In json format
{
   "cmd":"102",
   "status":"ok",
   "data":"DHCP"
}
  • cmd Id of requested command, should be 102
  • status status of command, should be ok
  • data content of response, here the mode

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP103]

Set / Display Station IP address

Input

[ESP103]IP=<IP> MSK=<IP> GW=<IP> DNS=<IP> json=<no> pwd=<admin/user password>

  • json=no the output format
    can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • IP

    • if IP is empty, it will display defined IP
    • if IP is not empty, it will set the IP
  • MSK

    • if MSK is empty, it will display defined Network Mask
    • if MSK is not empty, it will set the Network Mask
  • GW

    • if GW is empty, it will display defined Gateway
    • if GW is not empty, it will set the Gateway
  • DNS

    • if DNS is empty, it will display defined DNS
    • if DNS is not empty, it will set the DNS

Output

  • In json format
{
 "cmd": "103",
 "status": "ok",
 "data": {
  "ip": "192.168.0.1",
  "gw": "192.168.0.1",
  "msk": "255.255.255.0",
  "dns": "192.168.0.1"
 }
}
  • cmd Id of requested command, should be 103
  • status status of command, should be ok
  • data content of response, here the IP, GW, MSK and DNS

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP104]

Set station fallback mode state at boot which can be BT, WIFI-SETUP, OFF

Input

[ESP104]<mode> json=<no> pwd=<admin/user password>

  • json=no the output format
    can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • mode

    • if mode is empty, it will display current mode
    • if mode is not empty, it will set the setting mode: BT, WIFI-SETUP or OFF

Output

  • In json format
{
   "cmd":"104",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 104
  • status status of command, should be ok
  • data content of response, here the mode

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP105]

Set / Display Access point SSID

Input

[ESP105]<SSID> json=<no> pwd=<admin/user password>

  • json=no the output format
    can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • SSID

    • if SSID is empty, it will display current SSID
    • if SSID is not empty, it will set the SSID

Output

  • In json format
{
   "cmd":"105",
   "status":"ok",
   "data":"esp3d"
}
  • cmd Id of requested command, should be 105
  • status status of command, should be ok
  • data content of response, here the SSID

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP106]

Set Access point password

Input

[ESP106]<password> <NOPASSWORD> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • password

    • if password is not empty, it will set the password
  • NOPASSWORD

    • if NOPASSWORD is present, it will remove the password
  • if password is empty and NOPASSWORD is not present, it will raise error: `Password not displayable``

Output

  • In json format
{
   "cmd":"106",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 106
  • status status of command, should be ok
  • data content of response, here ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP107]

Set / Display Access point IP value

Input

[ESP107]<IP> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • IP

    • if IP is empty, it will display defined IP
    • if IP is not empty, it will set the IP

Output

  • In json format
{
   "cmd":"107",
   "status":"ok",
   "data":"192.168.0.1"
}
  • cmd Id of requested command, should be 107
  • status status of command, should be ok
  • data content of response, here the IP

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP108]

Set / Display Access point channel value

Input

[ESP108]<channel> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • channel

    • if channel is empty, it will display defined channel
    • if channel is not empty, it will set the channel

Output

  • In json format
{
   "cmd":"108",
   "status":"ok",
   "data":"1"
}
  • cmd Id of requested command, should be 108
  • status status of command, should be ok
  • data content of response, here the channel

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP110]

Set / display radio state at boot which can be BT, WIFI-STA, WIFI-AP, ETH-STA, OFF

Input

[ESP110]<mode> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • mode

    • if mode is empty, it will display current mode
    • if mode is not empty, it will set the setting mode: BT, WIFI-STA, WIFI-AP, ETH-STA or OFF

Output

  • In json format
{
   "cmd":"110",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 110
  • status status of command, should be ok
  • data content of response, here the mode

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP111]

Display current IP

Input

[ESP111]<OUTPUT=PRINTER> <ALL> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • OUTPUT

    • if OUTPUT is empty, it will display current IP as text 192.168.0.1
    • if OUTPUT is PRINTER, it will display current IP in printer format M117 192.168.0.1
  • ALL

    • it is set it will display IP, GW, MSK, DNS ip

Output

  • In json format
{
   "cmd":"111",
   "status":"ok",
   "data":"192.168.0.1"
}
  • cmd Id of requested command, should be 111
  • status status of command, should be ok
  • data content of response, here the IP

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP112]

Set / Display Hostname

Input

[ESP112]<hostname> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • hostname

    • if hostname is empty, it will display current hostname
    • if hostname is not empty, it will set the hostname

Output

  • In json format
{
   "cmd":"112",
   "status":"ok",
   "data":"esp3d"
}
  • cmd Id of requested command, should be 112
  • status status of command, should be ok
  • data content of response, here the hostname

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP114]

Get/Set Boot radio state which can be ON, OFF

Input

[ESP114]<mode> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • mode

    • if mode is empty, it will display current mode
    • if mode is not empty, it will set the setting mode: ON or OFF

Output

  • In json format
{
   "cmd":"114",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 114
  • status status of command, should be ok
  • data content of response, here the mode

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP115]

Get/Set immediate Network (WiFi/BT/Ethernet) state which can be ON, OFF

Input

[ESP115]<mode> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • mode

    • if mode is empty, it will display current mode
    • if mode is not empty, it will set the setting mode: ON or OFF

Output

  • In json format
{
   "cmd":"115",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 115
  • status status of command, should be ok
  • data content of response, here the mode

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP120]

Get/Set HTTP state which can be ON, OFF

Input

[ESP120]<mode> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • mode

    • if mode is empty, it will display current mode
    • if mode is not empty, it will set the setting mode: ON or OFF

Output

  • In json format
{
   "cmd":"120",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 120
  • status status of command, should be ok
  • data content of response, here the mode

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP121]

Get/Set HTTP port

Input

[ESP121]<port> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • port

    • if port is empty, it will display current port
    • if port is not empty, it will set the port

Output

  • In json format
{
   "cmd":"121",
   "status":"ok",
   "data":"80"
}
  • cmd Id of requested command, should be 121
  • status status of command, should be ok
  • data content of response, here the port

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP130]

Get/Set TELNET state which can be ON, OFF, CLOSE

Input

[ESP130]<mode> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • mode

    • if mode is empty, it will display current mode
    • if mode is not empty, it will set the setting mode: ON, OFF or CLOSE

Output

  • In json format
{
   "cmd":"130",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 130
  • status status of command, should be ok
  • data content of response, here the mode

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP131]

Get/Set TELNET port

Input

[ESP131]<port> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • port

    • if port is empty, it will display current port
    • if port is not empty, it will set the port

Output

  • In json format
{
   "cmd":"131",
   "status":"ok",
   "data":"23"
}
  • cmd Id of requested command, should be 131
  • status status of command, should be ok
  • data content of response, here the port

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP140]

Sync / Set / Get current time

Input

[ESP140]<SYNC> <srv1=XXXXX> <srv2=XXXXX> <srv3=XXXXX> <tzone=+HH:SS> <ntp=YES/NO> <time=YYYY-MM-DDTHH:mm:ss> NOW json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • srv1 / srv2 / srv3

    • if srv1 / srv2 / srv3 are empty, it will display current NTP servers
    • if srv1 / srv2 / srv3 are not empty, it will set the NTP servers
  • tzone

    • if tzone is empty, it will display current time zone
    • if tzone is not empty, it will set the time zone
  • time

    • if time is empty, it will display current time
    • if time is not empty, it will set the time
  • ntp

    • if ntp is empty, it will display current NTP state
    • if ntp is not empty, it will set the NTP state
  • SYNC

    • if SYNC, it will restart NTP service to sync time
  • NOW

    • if NOW, it will display current time in ISO 8601 format with time zone

Output

  • In json format
{
   "cmd":"140",
   "status":"ok",
   "data":"2020-01-01T00:00:00 (+08:00)"
}
  • cmd Id of requested command, should be 140
  • status status of command, should be ok
  • data content of response, here the time

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP150]

Get/Set boot delay in ms / Verbose boot

Input

[ESP150]<delay=time in milliseconds> <verbose=ON/OFF> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • delay

    • if delay is empty, it will display current delay
    • if delay is not empty, it will set the delay
  • verbose

    • if verbose is empty, it will display current verbose state
    • if verbose is not empty, it will set the verbose state

Output

  • In json format
{
   "cmd":"150",
   "status":"ok",
   "data": {
      "delay": "100",
      "verbose": "OFF"
    }
}
  • cmd Id of requested command, should be 150
  • status status of command, should be ok
  • data content of response, here the delay and verbose state

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP160]

Get/Set WebSocket state which can be ON, OFF, CLOSE

Input

[ESP160]<mode> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • mode

    • if mode is empty, it will display current mode
    • if mode is not empty, it will set the setting mode: ON, OFF or CLOSE

Output

  • In json format
{
   "cmd":"160",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 160
  • status status of command, should be ok
  • data content of response, here the mode

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP161]

Get/Set WebSocket port

Input

[ESP161]<port> json=<no> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • port

    • if port is empty, it will display current port
    • if port is not empty, it will set the port

Output

  • In json format
{
   "cmd":"161",
   "status":"ok",
   "data":"81"
}
  • cmd Id of requested command, should be 161
  • status status of command, should be ok
  • data content of response, here the port

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP170]

Get /Set Camera command value / list all values in JSON/plain text

Input

[ESP170]<label=value> <json=no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • label

    • if label is empty, it will display current value
    • if label is not empty, it will set the value

    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
    value depend on label

Output

  • In json format
{
   "cmd":"170",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 170
  • status status of command, should be ok | data content of response, here ok

Framesize

Framesize can be:

Value Description resolution
0 FRAMESIZE_96X96 96x96
1 FRAMESIZE_QQVGA 160x120
2 FRAMESIZE_QCIF 176x144
3 FRAMESIZE_HQVGA 240x176
4 FRAMESIZE_240X240 240x240
5 FRAMESIZE_QVGA 320x240
6 FRAMESIZE_CIF 400x296
7 FRAMESIZE_HVGA 480x320
8 FRAMESIZE_VGA 640x480
9 FRAMESIZE_SVGA 800x600
10 FRAMESIZE_XGA 1024x768
11 FRAMESIZE_HD 1280x720
12 FRAMESIZE_SXGA 1280x1024
13 FRAMESIZE_UXGA 1600x1200
14 FRAMESIZE_FHD 1920x1080
15 FRAMESIZE_P_HD 720x1280
16 FRAMESIZE_P_3MP 864x1536
17 FRAMESIZE_QXGA 2048x1536
18 FRAMESIZE_QHD 2560x1440
19 FRAMESIZE_WQXGA 2560x1600
20 FRAMESIZE_P_FHD 1080x1920
21 FRAMESIZE_QSXGA 2560x1920

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP171]

Save frame to target path and filename (default target = today date, default name=timestamp.jpg)

Input

[ESP171]<json=no> path=<target path> filename=<target filename> pwd=<admin/user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • path

    • if path is not empty, it will set the path
  • filename

    • if filename is not empty, it will set the filename

Output

  • In json format
{
   "cmd":"171",
   "status":"ok",
   "data":"Snapshot taken"
}
  • cmd Id of requested command, should be 171
  • status status of command, should be ok
  • data content of response, here Snapshot taken

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP180]

Get/Set Ftp state which can be ON, OFF, CLOSE

Input

[ESP180]<state> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • state

    • if state is empty, it will display current state
    • if state is not empty, it will set the state ON, OFF, CLOSE

Output

  • In json format
{
   "cmd":"180",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 180
  • status status of command, should be ok
  • data content of response, here the state

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP181]

Get/Set Ftp ports

Input

ESP181]ctrl=<port> active=<port> passive=<port> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • ctrl

    • if ctrl is empty, it will display current ctrl port
    • if ctrl is not empty, it will set the ctrl port
  • active

    • if active is empty, it will display current active port
    • if active is not empty, it will set the active port
  • passive

    • if passive is empty, it will display current passive port
    • if passive is not empty, it will set the passive port

Output

  • In json format
{
   "cmd":"181",
   "status":"ok",
   "data":{
      "ctrl":"21",
      "active":"50000",
      "passive":"50001"
   }
}

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP190]

Set WebDav state which can be ON, OFF, CLOSE

Input

[ESP190]<state> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • state

    • if state is empty, it will display current state
    • if state is not empty, it will set the state ON, OFF, CLOSE

Output

  • In json format
{
   "cmd":"190",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 190
  • status status of command, should be ok
  • data content of response, here the state

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP191]

Get/Set WebDav port

Input

[ESP191]<port> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

    • port
      • if port is empty, it will display current port
      • if port is not empty, it will set the port

Output

  • In json format
{
   "cmd":"191",
   "status":"ok",
   "data":"80"
}
  • cmd Id of requested command, should be 191
  • status status of command, should be ok
  • data content of response, here the port

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP200]

Get/Set SD state

Input

[ESP200] json=<YES/NO> <RELEASESD> <REFRESH> pwd=<user/admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

    • RELEASESD

      • if RELEASESD is present, it will release SD card
    • REFRESH

      • if REFRESH is present, it will refresh SD card

Output

  • In json format
{
   "cmd":"200",
   "status":"ok",
   "data":"ok"
}

states can be : Busy. "Not available, ok, No SD card

  • cmd Id of requested command, should be 200
  • status status of command, should be ok
  • data content of response, here ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP201]

Get/Set pin value

Input

[ESP201]P=<pin> V=<value> <json=YES/NO> <PULLUP=YES> <RAW=YES> <ANALOG=NO> <ANALOG_RANGE=255> pwd=<admin password> Range can be 255 / 1024 / 2047 / 4095 / 8191

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

    • P

      • if P is not empty, it will use the pin value
    • V

      • if V is empty, it will display current pin value
      • if V is not empty, it will set the pin value
  • RAW

    • if RAW is present, it will set the pin mode
  • PULLUP

    • if PULLUP is present, it will set the pullup pin mode
  • ANALOG

    • if ANALOG is present, it will set the pin ANALOG
  • ANALOG_RANGE

    • if ANALOG_RANGE is not empty, it will set the ANALOG_RANGE

Output

  • In json format
{
   "cmd":"201",
   "status":"ok",
   "data":"1"
}
  • cmd Id of requested command, should be 201
  • status status of command, should be ok
  • data content of response, here the pin value is 1 or High

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP202]

Get/Set SD card Speed factor 1 2 4 6 8 16 32

Input

[ESP202]SPEED=<factor> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • SPEED=

    • if factor is empty, it will display current factor
    • if factor is not empty, it will set the factor

Output

  • In json format
{
   "cmd":"202",
   "status":"ok",
   "data":"1"
}
  • cmd Id of requested command, should be 202
  • status status of command, should be ok
  • data content of response, here the current SPI factor

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP210]

Get Sensor Value / type/Set Sensor type

Input

[ESP210]<type=NONE/xxx> <interval=XXX in millisec> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

    • type

      • if type is empty, it will display current type
      • if type is not empty, it will set the type
    • interval

      • if interval is empty, it will display current interval
      • if interval is not empty, it will set the interval

Output

  • In json format
{
   "cmd":"210",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 210
  • status status of command, should be ok
  • data content of response, here ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP212]

Output to esp screen status

Input

[ESP212]<Text> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • Text

    • if Text is not empty, it will set the Text
    • if Text is empty, it will clear current Text

    The text can also contain the following variables:

    • %ESP_IP% : the IP address of the ESP
    • %ESP_NAME% : the name of the ESP
    • %ESP_DATETIME% : the current date and time

Output

  • In json format
{
   "cmd":"212",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 212
  • status status of command, should be ok
  • data content of response, here ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP214]

Output to esp screen status

Input

[ESP214]<Text> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • Text

    • if Text is not empty, it will set the Text
    • if Text is empty, it will clear current Text

    The text can also contain the following variables:

    • %ESP_IP% : the IP address of the ESP
    • %ESP_NAME% : the name of the ESP
    • %ESP_DATETIME% : the current date and time

Output

  • In json format
{
   "cmd":"214",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 214
  • status status of command, should be ok
  • data content of response, here ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP215]

Start a Touch Calibration

Input

[ESP215]<CALIBRATE> json=<no> pwd=<admin password>

  • json=no the output format

  • pwd= the admin password if authentication is enabled

  • CALIBRATE

    • if CALIBRATE is present, it will start the calibration

Output

  • In json format
{
   "cmd":"215",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 215
  • status status of command, should be ok
  • data content of response, here ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP220]

Get ESP3D pins definition

Input

[ESP220] json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
 "cmd": "220",
 "status": "ok",
 "data": [
  {
   "id": "SD CS",
   "value": "13"
  },
  {
   "id": "SD MOSI",
   "value": "15"
  },
  {
   "id": "SD MISO",
   "value": "2"
  },
  {
   "id": "SD SCK",
   "value": "14"
  },
  {
   "id": "SD DETECT",
   "value": "-1"
  },
  {
   "id": "SD SWITCH",
   "value": "26"
  }
 ]
}
  • cmd Id of requested command, should be 220
  • status status of command, should be ok
  • data content of response, here the pins definitions
  • plain text format
SD CS: 13
SD MOSI: 15
SD MISO: 2
SD SCK: 14
SD DETECT: -1
SD SWITCH: 26

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP250]

Play sound

Input

[ESP250]F=<frequency> D=<duration> json=<no> pwd=<user password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • F

    • if F is empty, it will use current frequency
    • if F is not empty, it will use the frequency
  • D

    • if D is empty, it will use current duration
    • if D is not empty, it will use the duration

Output

  • In json format
{
   "cmd":"250",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 250
  • status status of command, should be ok
  • data content of response, here ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP290]

Delay/Pause command

Input

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

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • delay

    • if delay is empty, it will use 0 delay
    • if delay is not empty, it will use the delay

Output

  • In json format
{
   "cmd":"290",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 290
  • status status of command, should be ok
  • data content of response, here ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP400]

Get full ESP3D settings

Input

[ESP400] json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

Output

Passwords are not displayed and replaced by ********

  • if json
{"cmd":"400","status":"ok","data":[
{"F":"network/network","P":"130","T":"S","R":"1","V":"esp3d","H":"hostname" ,"S":"32", "M":"1"},
{"F":"network/network","P":"0","T":"B","R":"1","V":"1","H":"radio mode","O":[{"none":"0"},
{"sta":"1"},
{"ap":"2"},
{"setup":"5"}]},
{"F":"network/network","P":"1034","T":"B","R":"1","V":"1","H":"radio_boot","O":[{"no":"0"},
{"yes":"1"}]},
{"F":"network/sta","P":"1","T":"S","V":"Luc-Lab","S":"32","H":"SSID","M":"1"},
{"F":"network/sta","P":"34","T":"S","N":"1","MS":"0","R":"1","V":"********","S":"64","H":"pwd","M":"8"},
{"F":"network/sta","P":"99","T":"B","R":"1","V":"1","H":"ip mode","O":[{"dhcp":"1"},
{"static":"0"}]},
{"F":"network/sta","P":"100","T":"A","R":"1","V":"192.168.0.1","H":"ip"},
{"F":"network/sta","P":"108","T":"A","R":"1","V":"192.168.0.1","H":"gw"},
{"F":"network/sta","P":"104","T":"A","R":"1","V":"255.255.255.0","H":"msk"},
{"F":"network/sta","P":"1029","T":"A","R":"1","V":"192.168.0.1","H":"DNS"},
{"F":"network/sta","P":"1035","T":"B","R":"0","V":"5","H":"sta fallback mode","O":[{"none":"0"},
{"setup":"5"}]},
{"F":"network/ap","P":"218","T":"S","R":"1","V":"ESP3D","S":"32","H":"SSID","M":"1"},
{"F":"network/ap","P":"251","T":"S","N":"1","MS":"0","R":"1","V":"********","S":"64","H":"pwd","M":"8"},
{"F":"network/ap","P":"316","T":"A","R":"1","V":"192.168.0.1","H":"ip"},
{"F":"network/ap","P":"118","T":"B","R":"1","V":"11","H":"channel","O":[{"1":"1"},
{"2":"2"},
{"3":"3"},
{"4":"4"},
{"5":"5"},
{"6":"6"},
{"7":"7"},
{"8":"8"},
{"9":"9"},
{"10":"10"},
{"11":"11"},
{"12":"12"},
{"13":"13"},
{"14":"14"}]},
{"F":"service/http","P":"328","T":"B","R":"1","V":"1","H":"enable","O":[{"no":"0"},{"yes":"1"}]},
{"F":"service/http","P":"121","T":"I","R":"1","V":"8181","H":"port","S":"65001","M":"1"},
{"F":"service/telnetp","P":"329","T":"B","R":"1","V":"1","H":"enable","O":[{"no":"0"},{"yes":"1"}]},
{"F":"service/telnetp","P":"125","T":"I","R":"1","V":"23","H":"port","S":"65001","M":"1"},
{"F":"service/webdavp","P":"1024","T":"B","R":"1","V":"1","H":"enable","O":[{"no":"0"},{"yes":"1"}]},
{"F":"service/webdavp","P":"1025","T":"I","R":"1","V":"80","H":"port","S":"65001","M":"1"},
{"F":"service/time","P":"120","T":"B","V":"1","H":"i-time","O":[{"no":"0"},{"yes":"1"}]},
{"F":"service/time","P":"1042","T":"S","R":"1","V":"+08:00","H":"tzone","O":[{"-12:00":"-12:00"},
{"-11:00":"-11:00"},
{"-10:00":"-10:00"},
{"-09:00":"-09:00"},
{"-08:00":"-08:00"},
{"-07:00":"-07:00"},
{"-06:00":"-06:00"},
{"-05:00":"-05:00"},
{"-04:00":"-04:00"},
{"-03:30":"-03:30"},
{"-03:00":"-03:00"},
{"-02:00":"-02:00"},
{"-01:00":"-01:00"},
{"+00:00":"+00:00"},
{"+01:00":"+01:00"},
{"+02:00":"+02:00"},
{"+03:00":"+03:00"},
{"+03:30":"+03:30"},
{"+04:00":"+04:00"},
{"+04:30":"+04:30"},
{"+05:00":"+05:00"},
{"+05:30":"+05:30"},
{"+05:45":"+05:45"},
{"+06:00":"+06:00"},
{"+06:30":"+06:30"},
{"+07:00":"+07:00"},
{"+08:00":"+08:00"},
{"+08:45":"+08:45"},
{"+09:00":"+09:00"},
{"+09:30":"+09:30"},
{"+10:00":"+10:00"},
{"+10:30":"+10:30"},
{"+11:00":"+11:00"},
{"+12:00":"+12:00"},
{"+12:45":"+12:45"},
{"+13:00":"+13:00"},
{"+14:00":"+14:00"}]},
{"F":"service/time","P":"464","T":"S","R":"1","V":"time.windows.com","S":"128","H":"t-server","M":"0"},
{"F":"service/time","P":"593","T":"S","R":"1","V":"time.google.com","S":"128","H":"t-server","M":"0"},
{"F":"service/time","P":"722","T":"S","R":"1","V":"0.pool.ntp.org","S":"128","H":"t-server","M":"0"},
{"F":"service/notification","P":"1022","T":"B","R":"1","V":"1","H":"auto notif","O":[{"no":"0"},{"yes":"1"}]},
{"F":"service/notification","P":"116","T":"B","R":"1","V":"0","H":"notification","O":[{"none":"0"},
{"pushover":"1"},
{"email":"2"},
{"line":"3"},
{"telegram":"4"},
{"IFTTT":"5"}]},
{"F":"service/notification","P":"332","T":"S","R":"1","V":"********","S":"63","H":"t1","M":"0"},
{"F":"service/notification","P":"396","T":"S","R":"1","V":"********","S":"63","H":"t2","M":"0"},
{"F":"service/notification","P":"856","T":"S","R":"1","V":" ","S":"128","H":"ts","M":"0"},
{"F":"system/system","P":"461","T":"B","V":"0","H":"targetfw","O":[{"repetier":"50"},
{"marlin":"20"},
{"smoothieware":"40"},
{"grbl":"10"},
{"unknown":"0"}]},
{"F":"system/system","P":"112","T":"I","V":"115200","H":"baud","O":[{"9600":"9600"},
{"19200":"19200"},
{"38400":"38400"},
{"57600":"57600"},
{"74880":"74880"},
{"115200":"115200"},
{"230400":"230400"},
{"250000":"250000"},
{"500000":"500000"},
{"921600":"921600"},
{"1958400":"1958400"}]},
{"F":"system/boot","P":"320","T":"I","V":"100","H":"bootdelay","S":"40000","M":"0"},
{"F":"system/boot","P":"1023","T":"B","V":"0","H":"verbose","O":[{"no":"0"},{"yes":"1"}]},
{"F":"system/outputmsg","P":"129","T":"B","V":"1","H":"serial","O":[{"no":"0"},{"yes":"1"}]},
{"F":"system/outputmsg","P":"851","T":"B","V":"1","H":"M117","O":[{"no":"0"},{"yes":"1"}]},
{"F":"system/outputmsg","P":"1006","T":"B","V":"1","H":"telnet","O":[{"no":"0"},{"yes":"1"}]
}]}

1 - key : Settings
2 - value: array of data formated like this
{“F”:“network/network”,“P”:“130”,“T”:“S”,“V”:“esp3d”,“H”:“hostname”,“S”:“32”,“M”:“1”}
or
{“F”:“service/notification”,“P”:“1004”,“T”:“B”,“V”:“1”,“H”:“auto notif”,“O”:[{“no”:“0”},{“yes”:“1”}]}

-   F: is filter formated as section/sub-section, if section is same as sub-section, it means no sub-section
-   P: is id (also position reference so it is unique)
-   T: is type of data which can be:
    -   S: for string
    -   I: for integer
    -   B: for Byte
    -   A: for IP address / Mask
    -   F: for float (only grblHAL)
    -   M: for bits mask (only grblHAL)
    -   X: for exclusive bitsfield (only grblHAL)
-   V: is current value, if type is string and value is `********`, (8 stars) then it is a password
-   E: is integer for exactess / precision of float/double value (only grblHAL)
-   U: is text unit of value (only grblHAL)
-   H: is text label of value
-   S: is max size if type is string, and max possible value if value is number (byte, integer)
-   M: is min size if type is string, and min possible value if value is number (byte, integer)
-   MS: is additionnal min size if type is string (e.g for password can be 0 or 8, so need additional min size), M should be the more minimal value
    so MS value must be between M and S
-   O: is an array of {label:value} used for possible values in selection or bits labels list
-   R: need restart to be applied

Note: if Type M and X use O entry to define the label / position, if O is [] then axis label are used according need X, Y, Z, A, B, C
Note2 : the 2.1 Flag type is no more used, several entries are used instead grouped by sub-section

If no json the list is limited to a list of <help>: <value>

Settings:
network/network/hostname: esp3d
network/network/radio mode: 5
network/network/radio_boot: 1
network/sta/SSID: NETWORK_SSID
network/sta/pwd: ********
network/sta/ip mode: 1
network/sta/ip: 192.168.0.254
network/sta/gw: 192.168.0.254
network/sta/msk: 255.255.255.0
network/sta/DNS: 192.168.0.254
network/sta/sta fallback mode: 5
network/ap/SSID: ESP3D
network/ap/pwd: ********
network/ap/ip: 192.168.0.1
network/ap/channel: 11
service/time/i-time: 0
service/time/tzone: +00:00
service/time/t-server: time.windows.com
service/time/t-server: time.google.com
service/time/t-server: 0.pool.ntp.org
service/notification/auto notif: 1
service/notification/notification: 0
service/notification/t1: 
service/notification/t2:
service/notification/ts: 
system/system/targetfw: 0
system/system/baud: 115200
system/boot/bootdelay: 10000
system/boot/verbose: 0
ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP401]

Set ESP3D settings

Input

[ESP401]<P=id> <T=type> <V=value> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • P

    • P is the id or position in EEPROM of the setting to change
  • T * T is the type of the setting to change * T can be: - S: for string - I: for integer - B: for Byte - A: for IP address / Mask - F: for float (only grblHAL) - M: for bits mask (only grblHAL) - X: for exclusive bitsfield (only grblHAL)

  • V * V is the value to set if value has space add \`` in front of space to not be seen as separator e.g: [ESP401]P=1 T=S V=My\ SSID json`

Output

  • In json format
{
   "cmd":"401",
   "status":"ok",
   "data":"1"
}
  • cmd Id of requested command, should be 401
  • status status of command, should be ok
  • data content of response, here the id/position of the setting changed

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP402]

Get/Set SD updater check at boot time

Input

[ESP402]<state> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • state

    • if state is empty, it will display current state
    • if state is not empty, it will set the state ON, OFF

Output

  • In json format
{
   "cmd":"402",
   "status":"ok",
   "data":"OFF"
}
  • cmd Id of requested command, should be 402
  • status status of command, should be ok
  • data content of response, here the state

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP410]

List all AP detected around, if signal is too low, AP is not listed to avoid connection problems.

Input

[ESP410] json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"410",
   "status":"ok",
   "data":[
      {"SSID":"Luc-Lab","SIGNAL":"100","IS_PROTECTED":"1"},
      {"SSID":"CHT0573(Mesh)","SIGNAL":"100","IS_PROTECTED":"1"},
      {"SSID":"[LG_AirPurifier]","SIGNAL":"48","IS_PROTECTED":"1"},
   ]
}
  • cmd Id of requested command, should be 410
  • status status of command, should be ok
  • data content of response, here the list of AP detected with signal strength and if protected or not
  • plain text format
Start Scan
Luc-Lab 100%    Secure
CHT0573(Mesh)   100%    Secure
[LG_AirPurifier]    46%     Secure
End Scan

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP420]

Get ESP3D current status

Input

[ESP420] json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

Output

{
   "cmd":"420",
   "status":"ok",
   "data":[
      {"id":"chip id","value":"11111"},
      {"id":"CPU Freq","value":"240Mhz"},
      {"id":"CPU Temp","value":"72.8C"},
      {"id":"free mem","value":"232.43 KB"},
      {"id":"SDK","value":"v4.4.4"},
      {"id":"flash size","value":"4.00 MB"},
      {"id":"FS type","value":"LittleFS"},
      {"id":"FS usage","value":"112.00 KB/128.00 KB"},
      {"id":"baud","value":"115200"},
      {"id":"sleep mode","value":"none"},
      {"id":"wifi","value":"ON"},
      {"id":"hostname","value":"esp3d"},
      {"id":"wifi mode","value":"ap"},
      {"id":"mac","value":"D4:D4:D4:D4:D4:D4"},
      {"id":"SSID","value":"ESP3D"},
      {"id":"visible","value":"yes"},
      {"id":"authentication","value":"WPA2"},
      {"id":"DHCP Server","value":"ON"},
      {"id":"ip","value":"192.168.0.1"},
      {"id":"gw","value":"192.168.0.1"},
      {"id":"msk","value":"255.255.255.0"},
      {"id":"clients","value":"0"},{"id":"sta","value":"OFF"},
      {"id":"mac","value":"D4:D4:D4:D4:D4:D4"},
      {"id":"ntp","value":"OFF"},
      {"id":"serial","value":"ON"},
      {"id":"notification","value":"ON (none)"},
      {"id":"targetfw","value":"unknown"},
      {"id":"FW ver","value":"3.0.0.a225"},
      {"id":"FW arch","value":"ESP32"}]}
  • cmd Id of requested command, should be 420
  • status status of command, should be ok
  • data content of response, where each status is a key/value pair of id/value
  • plain text format
Configuration:
chip id: 1010100
CPU Freq: 240Mhz
CPU Temp: 72.8C
free mem: 232.47 KB
SDK: v4.4.4
flash size: 4.00 MB
FS type: LittleFS
FS usage: 112.00 KB/128.00 KB
baud: 115200
sleep mode: none
wifi: ON
hostname: esp3d
wifi mode: ap
mac: D4:D4:D4:D4:D4:D4
SSID: ESP3D
visible: yes
authentication: WPA2
DHCP Server: ON
ip: 192.168.0.1
gw: 192.168.0.1
msk: 255.255.255.0
clients: 0
sta: OFF
mac: D4:D4:D4:D4:D4:D4
ntp: OFF
serial: ON
notification: ON (none)
targetfw: unknown
FW ver: 3.0.0.a225
FW arch: ESP32
ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP444]

Set ESP3D state

Input

[ESP444]<state> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • state

    • RESET to reset all settings to default
    • RESTART to restart ESP3D

Output

  • In json format
{
   "cmd":"444",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 444
  • status status of command, should be ok
  • data content of response, here ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP450]

List available ESP3D modules/ ESP3D related devices around

Input

[ESP450] json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"450",
   "status":"ok",
   "data":[
      {
         "Hostname":"esp3d-tft",
         "IP":"192.168.1.108",
         "port":"80",
         "TxT":[
            {"key":"version","value":"1.0.0.a18"},
            {"key":"firmware","value":"ESP3D-TFT"}
         ]
      }
   ]
}
  • cmd Id of requested command, should be 450
  • status status of command, should be ok
  • data content of response, here the list of modules detected with hostname, IP, port and TXT record
  • plain text format
Start Scan
esp3d-tft (192.168.1.108:80) version=1.0.0.a18,firmware=ESP3D-TFT
End Scan

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP500]

Get authentication status

Input

[ESP500] json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"500",
   "status":"ok",
   "data":"admin"
}
  • cmd Id of requested command, should be 500
  • status status of command, should be ok
  • data content of response, here the current user authenticated
  • plain text format
admin

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP510]

Set/display session time out

Input

[ESP510]<timeout> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • timeout

    • if timeout is empty, it will display current timeout (0~255 minutes), 0 means disable timeout
    • if timeout is not empty, it will set the timeout
  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"510",
   "status":"ok",
   "data":"10"
}
  • cmd Id of requested command, should be 510
  • status status of command, should be ok
  • data content of response, here the current timeout
  • plain text format
10

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP550]

Set/Change admin password, only authenticated admin can change the password

Input

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

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • password for the admin limited to 20 characters

Output

  • In json format
{
   "cmd":"550",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 550
  • status status of command, should be ok
  • data content of response, here ok when password is changed

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP555]

Set/Change user password, only authenticated admin/user can change the password

Input

[ESP555]<password> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • password for the user limited to 20 characters

Output

  • In json format
{
   "cmd":"555",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 555
  • status status of command, should be ok
  • data content of response, here ok when password is changed

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP600]

Send Notification using defined method, will also send notification to webui and eventually to any connected screen

Input

[ESP600]<message> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • message the message to send, limited to 128 characters. Message can contain some variables:

    • %ESP_NAME% : ESP3D hostname
    • %ESP_IP% : ESP3D local IP address

Output

  • In json format
{
   "cmd":"600",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 600
  • status status of command, should be ok
  • data content of response, here ok when notification is sent

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP610]

Set/Get Notification settings

Input

[ESP610]type=<NONE/PUSHOVER/EMAIL/LINE/IFTTT/HOMEASSISTANT> T1=<token1> T2=<token2> TS=<Settings> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • type

    • if type is empty, it will display current type
    • if type is not empty, it will set the type currently only these types are supported:
      • NONE
      • PUSHOVER
      • EMAIL
      • LINE
      • TELEGRAM
      • IFTTT (by webhook)
      • HOMEASSISTANT (by webhook)
  • T1

  • T2

  • TS if TS is not empty, it will set the setting token which depend on type of notification

  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"610",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 610
  • status status of command, should be ok
  • data content of response, here ok when notification is sent

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP620]

Send Notification using encodded URL

Input

[ESP620]<url> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • url the url to send, limited to 128 characters, must be encoded

Output

  • In json format
{
   "cmd":"620",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 620
  • status status of command, should be ok
  • data content of response, here ok when notification is sent

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP700]

Process local file on /FS or /SD

Input

[ESP700]<filename> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • filename the filename to process, must be a valid file on /FS or /SD

Output

  • In json format
{
   "cmd":"700",
   "status":"ok",
   "data":"Processing <filename>"
}
  • cmd Id of requested command, should be 700
  • status status of command, should be ok
  • data content of response, here Processing <filename> when file is processing

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP701]

Query and Control ESP700 stream

Input

[ESP701]action=<action> <CLEAR_ERROR>json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • action

    • if action is empty, it will display current state
    • if action is not empty, it will set the action currently only these actions are supported:
      • ABORT
      • PAUSE
      • RESUME
  • CLEAR_ERROR

    • if CLEAR_ERROR is present, it will clear the current error state

Output

  • In json format
{
   "cmd":"701",
   "status":"ok",
   "data":{
      "status":"processing",
      "total":"1000",
      "processed":"500",
      "type":"1",
      "name":"/SD/myfile.gco"
   }
}
  • cmd Id of requested command, should be 701
  • status status of command, should be ok
  • data content of response, here the current state of stream

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP710]

Format ESP Filesystem

Input

[ESP710]FORMATFS json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • FORMATFS

    • if FORMATFS is present, it will format the local filesystem

Output

  • In json format
{
   "cmd":"710",
   "status":"ok",
   "data":"Starting formating..."
}
  • cmd Id of requested command, should be 710
  • status status of command, should be ok
  • data content of response, here Starting formating... when filesystem is starting

an new message is sent when formating is done

{
   "cmd":"710",
   "status":"ok",
   "data":"Formating done"
}
  • cmd Id of requested command, should be 710
  • status status of command, should be ok
  • data content of response, here Formating done when filesystem is done

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP715]

Format SD Card, this depend on SD card format defined in configuration.h

Input

[ESP715]FORMATSD json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • FORMATSD

    • if FORMATSD is present, it will format the SD card

Output

  • In json format
{
   "cmd":"715",
   "status":"ok",
   "data":"Starting formating..."
}
  • cmd Id of requested command, should be 715
  • status status of command, should be ok
  • data content of response, here Starting formating... when SD card is starting

an new message is sent when formating is done

{
   "cmd":"715",
   "status":"ok",
   "data":"Formating done"
}
  • cmd Id of requested command, should be 715
  • status status of command, should be ok
  • data content of response, here Formating done when SD card is done

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP720]

List files on /FS or defined repository

Input

[ESP720]<Root> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • Root

    • if Root is empty, it will list files on /FS
    • if Root is not empty, it will list files on defined repository

Output

  • json
{
   "cmd":"720",
   "status":"ok",
   "data":{
      "path":"/",
      "files":[
         {"name":"index.html.gz","size":"88.67 KB","time":"2023-11-05 11:57:57"}
      ], 
      "total":"128.00 KB",
      "used":"100.00 KB",
      "occupation":"78"
   }
}
  • cmd Id of requested command, should be 720

  • status status of command, should be ok

  • data content of response, here the list of files on /FS or defined repository

  • Text

Directory on Flash : /
         index.html.gz  88.67 KB        2023-11-05 11:57:57
Files: 1, Dirs :0
Total: 128.00 KB, Used: 100.00 KB, Available: 28.00 KB

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP730]

Do some actions on ESP Filesystem: rmdir / remove / mkdir / exists / create

Input

[ESP730]<action>=<path> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • action

    • if action is not empty, it will set the action currently only these actions are supported:
      • RMDIR (dir)
      • REMOVE (file)
      • MKDIR (dir)
      • EXISTS (file/dir)
      • CREATE (file)
  • path the path to process, must be a valid file or directory on /FS

Output

  • In json format
{
   "cmd":"730",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 730
  • status status of command, should be ok
  • data content of response, here ok when action is done

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP740]

List files on /SD or defined repository

Input

[ESP740]<Root> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • Root

    • if Root is empty, it will list files on /SD
    • if Root is not empty, it will list files on defined repository

Output

  • json
{
   "cmd":"720",
   "status":"ok",
   "data":{
      "path":"/",
      "files":[
         {"name":"System Volume Information","size":"-1"},
         {"name":"src","size":"-1"},
         {"name":"testdir","size":"-1"},
         {"name":"Newfolder2","size":"-1"},
         {"name":"conventions","size":"-1"},
         {"name":"extensions","size":"-1"},
         {"name":"fileupload","size":"-1"},
         {"name":"realtimecmd","size":"-1"},
         {"name":"variableslist","size":"-1"},
         {"name":"webhandlers","size":"-1"},
         {"name":"websockets","size":"-1"},
         {"name":"main","size":"-1"},
         {"name":"mks_pft70.sys","size":"5 B"},
         {"name":"index.html","size":"57.47 KB"},
         {"name":"index.xml","size":"7.53 KB"},
         {"name":"index.print.html","size":"77.74 KB"}
      ], 
      "total":"7.20 GB",
      "used":"52.06 MB",
      "occupation":"1"
   }
}
  • cmd Id of requested command, should be 740

  • status status of command, should be ok

  • data content of response, here the list of files on /SD or defined repository

  • text

Directory on SD : /
[DIR]   System Volume Information
[DIR]   src
[DIR]   testdir
[DIR]   New%20folder2
[DIR]   conventions
[DIR]   extensions
[DIR]   fileupload
[DIR]   realtimecmd
[DIR]   variableslist
[DIR]   webhandlers
[DIR]   websockets
[DIR]   main
         mks_pft70.sys  5 B 
         index.html     57.47 KB 
         index.xml      7.53 KB
         index.print.html       77.74 KB 
Files: 4, Dirs :12
Total: 7.20 GB, Used: 52.06 MB, Available: 7.15 GB

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP750]

Do some actions on SD Card: rmdir / remove / mkdir / exists / create

Input

[ESP750]<action>=<path> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • action

    • if action is not empty, it will set the action currently only these actions are supported:
      • RMDIR (dir)
      • REMOVE (file)
      • MKDIR (dir)
      • EXISTS (file/dir)
      • CREATE (file)
  • path the path to process, must be a valid file or directory on /SD

Output

  • In json format
{
   "cmd":"750",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 750
  • status status of command, should be ok
  • data content of response, here ok when action is done

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP780]

List Global Filesystem

Input

[ESP780]<Root> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • Root

    • if Root is empty, it will list files on /FS
    • if Root is not empty, it will list files on defined repository

Output

  • json
{
   "cmd":"780",
   "status":"ok",
   "data":{
      "path":"/",
      "files":[
         {"name":"FS","size":"-1"},
         {"name":"SD","size":"-1"}
      ], 
      "total":"0 B",
      "used":"0 B",
      "occupation":"0"
   }
}
  • cmd Id of requested command, should be 780

  • status status of command, should be ok

  • data content of response, here the list of files on /FS or defined repository

  • text

Directory on Global FS : /
[DIR]   FS
[DIR]   SD
Files: 0, Dirs :2
Total: 0 B, Used: 0 B, Available: 0 B

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP790]

Do some actions on Global Filesystem: rmdir / remove / mkdir / exists / create

Input

[ESP790]<action>=<path> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • pwd= the admin password if authentication is enabled

  • action

    • if action is not empty, it will set the action currently only these actions are supported:
      • RMDIR (dir)
      • REMOVE (file)
      • MKDIR (dir)
      • EXISTS (file/dir)
      • CREATE (file)
  • path the path to process, must be a valid file or directory on /FS or /SD

Output

  • In json format
{
   "cmd":"790",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 790
  • status status of command, should be ok
  • data content of response, here ok when action is done

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP800]

Get fw capabilities eventually set time with pc time and set setup state

Input

[ESP800]<time=YYYY-MM-DDTHH:mm:ss> <version=3.0.0-a11> <setup=0/1> json=<no> pwd=<admin password>

* json=yes
the output format
* time=
to set ESP3D time using ISO 8601 format : `YYYY`-`MM`-`DD`T`HH`:`minutes`:`seconds`
* tz=+08:00 (optional)
to set ESP3D time zone using ISO 8601 format : `+`/`-` `HH`-`minutes`
* version
version of webUI
* setup flag
Enable / Disable the setup flag

Output

  • In json format
{
   "cmd":"800",
   "status":"ok",
   "data":{
           "FWVersion":"bugfix-2.0.x-3.0.0.a200",
           "FWTarget":"marlin",
           "FWTargetID":"30",
           "Setup":"Enabled",
           "SDConnection":"shared",
           "SerialProtocol":"Socket",
           "Authentication":"Disabled",
           "WebCommunication":"Synchronous",
           "WebSocketIP":"192.168.2.117",
           "WebSocketPort":"81",
           "Hostname":"esp3d",
           "WiFiMode":"STA",
           "WebUpdate":"Enabled",
           "FlashFileSystem":"LittleFS",
           "HostPath":"www",
           "Time":"none"
           }
}
  • cmd Id of requested command, should be 800

  • status status of command, should be ok

  • data content of response:

    • FWVersion Version of ESP3D firmware or targeted FW (Marlin with ESP3DLib / grblHal)

    • FWTarget name of targeted Firmware

    • FWTargetID numerical ID of targeted FW as same name can have several Ids

    • Setup Should be Enabled or Disabled according flag in EEPROM/Preferences, this allows to WedUI to start wizard automaticaly (or not)

    • SDConnection This is SD capability, SD can be

      • shared ESP does share access to SD card reader with main board or Firmware (Marlin with ESP3Dlib, ESP3D with hardware SD share solution)
      • direct ESP does have direct access to SD card reader (e.g: ESP3D, grblHal)
      • none ESP does not have direct access to SD card reader, (e.g: ESP3D with only serial connection)
    • SerialProtocol It define how ESP3D FW communicate with main FW

      • Socket ESP and main FW use same FW (e.g: Marlin with ESP3DLib, grblHal)
      • Raw Classic serial connection
      • MKS Serial connection using MKS protocol
    • Authentication Can be Enabled or Disabled

    • WebCommunication currently only Synchronous, because Asychronous has been put in hold

    • WebSocketIP Ip address for the websocket terminal 192.168.2.117

    • WebSocketPort Port for the web socket terminal 81

    • Hostname Hostname of ESP3D or main Baord esp3d

    • WiFiMode Current wiFi mode in use can be AP or STA

    • WebUpdate Inform webUI the feature is available or not, can be Enabled or Disabled

    • FlashFileSystem (currently FileSystem, to be updated soon ) The file system used by ESP board can be LittleFS, SPIFFS, Fat, none

    • HostPath Path where the preferences.json and index.html.gz are stored and can be updated (e.g: www)

    • Time Type of time support

      • none Time is not supported
      • Auto Board use internet to sync time and it is successful
      • Failed to set Board use internet to sync time and it is failed
      • Manual Board use time of ESP800 to set the time and it is successful
      • Not set Board use time of ESP800 to set the time and command did not sent it (time may have been set by previous command)
    • CameraID if ESP has camera it contain the camera ID

    • CameraName if ESP has camera it contain the camera name

    • Axisletters Currently only used for grbHAL can be :

      • XYZABC
      • XYZUVZ (supported soon)
      • XYZABCUVZ (supported soon)

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP900]

Get state / Set Serial Communication

Input

[ESP900]<state> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • state

    • if state is empty, it will display current state
    • if state is not empty, it will set the state currently only these states are supported:
      • ENABLE
      • DISABLE
  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"900",
   "status":"ok",
   "data":"ENABLED"
}
  • cmd Id of requested command, should be 900
  • status status of command, should be ok
  • data content of response, here the current state

-Text

ENABLED

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP901]

Set Serial baudrate for main serial communication

Input

[ESP901]<baudrate> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • baudrate

    • if baudrate is empty, it will display current baudrate
    • if baudrate is not empty, it will set the baudrate currently only these baudrates are supported:
      • 9600
      • 19200
      • 38400
      • 57600
      • 74880
      • 115200
      • 230400
      • 250000
      • 500000
      • 921600
      • 1958400
  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"901",
   "status":"ok",
   "data":"115200"
}
  • cmd Id of requested command, should be 901
  • status status of command, should be ok
  • data content of response, here the current baudrate
  • plain text format
115200

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP910]

Get state / Set Enable / Disable buzzer

Input

[ESP910]<state> json=<no> pwd=<admin password>

  • json=no the output format can be in JSON or plain text

  • state

    • if state is empty, it will display current state
    • if state is not empty, it will set the state currently only these states are supported:
      • ENABLE
      • DISABLE
  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"910",
   "status":"ok",
   "data":"ENABLED"
}
  • cmd Id of requested command, should be 910
  • status status of command, should be ok
  • data content of response, here the current state
  • plain text format
ENABLED

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP930]

Set Serial Bridge state which can be ON, OFF, CLOSE

Input

[ESP930]<state> json=<no> pwd=<admin password>

  • json=no the output format

  • state

    • if state is empty, it will display current state
    • if state is not empty, it will set the state currently only these states are supported:
      • ENABLE
      • DISABLE
      • CLOSE
  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"930",
   "status":"ok",
   "data":"ENABLED"
}
  • cmd Id of requested command, should be 930
  • status status of command, should be ok
  • data content of response, here the current state
  • plain text format
ENABLED

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP931]

Set Serial Bridge baudrate

Input

[ESP931]<baudrate> json=<no> pwd=<admin password>

  • json=no the output format

  • baudrate

    • if baudrate is empty, it will display current baudrate
    • if baudrate is not empty, it will set the baudrate currently only these baudrates are supported:
      • 9600
      • 19200
      • 38400
      • 57600
      • 74880
      • 115200
      • 230400
      • 250000
      • 500000
      • 921600
      • 1958400
  • pwd= the admin password if authentication is enabled

Output

  • In json format
{
   "cmd":"931",
   "status":"ok",
   "data":"115200"
}
  • cmd Id of requested command, should be 931
  • status status of command, should be ok
  • data content of response, here the current baudrate
  • plain text format
115200

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

[ESP999]

Set quiet boot if strapping pin is High, can only be done once and cannot be reverted

Note

This command is only available if ESP32-S3, ESP32-C3 or ESP32-S2 is used

Input

[ESP999]QUIETBOOT json=<no> pwd=<admin password>

  • json=no the output format

  • pwd= the admin password if authentication is enabled

  • QUIETBOOT

    • if QUIETBOOT is present, it will set the quiet boot flag

Output

  • In json format
{
   "cmd":"999",
   "status":"ok",
   "data":"ok"
}
  • cmd Id of requested command, should be 999
  • status status of command, should be ok
  • data content of response, here ok when quiet boot is set
  • plain text format
ok

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Authentication

Definition

The authentication is an additional security layer to protect the ESP3D web interface and ESP3D commands from unauthorized access. It is based on a username and a password. The authentication is optional and can be enabled/disabled in the ESP3D configuration. There are 3 login levels for authentication:

  • guest, which is does not need any authentication
  • user, which has limited access to ESP3D features
  • admin, which has full access to ESP3D features

Currently the login cannot be customized and so is limited to user and admin levels. The guest level is always available and cannot be disabled.

Configuration

In configuration.h just uncomment the following line to enable the authentication:

#define AUTHENTICATION_FEATURE

Default password authentication for admin is admin and for ‘user’ is user. You can change them using WebInterface or [ESP550] and [ESP555] commands.

Usage

Web Interface

When user authentication is enabled, the web interface will ask for a username and a password. If the authentication is successful, the user will be redirected to the web interface. If the authentication fails, the user will be redirected to the login page.

The web interface allows also inline authentication. This means that you can pass the username and password in the URL. This is useful if you want to use some command line to access the web interface like curl or wget. The URL format is the following:

http://user:password@<ip_address>

On the web interface an authenticated session will stay open until the browser is closed. So if you close the browser and reopen it, you will be asked for authentication again. This session can also have a timeout. The default timeout is 3 minutes of inactivity. This timeout can be changed in the ESP3D configuration web interface or using [ESP510] command.

ESPXXX Command

When user authentication is enabled, the ESPXXX commands will ask for a password. If the authentication is successful, the command will be executed. If the authentication fails, the command will be rejected.

The session for ESPXXX commands is a sticky session. This means that once authenticated, the session will stay authenticated until the ESP3D is restarted or session is closed (e.g: Telnet / WebSocket).

Limitations

The current authentication miss a lot of features, like:

  • user management
  • https support
  • password encryption
  • password recovery
  • password expiration in time
  • password lockout if too many failed attempts

So you must not consider authentication as fullproof for security. It is just an additional layer of security.

Because ESPXXX commands only rely on password, do not use same password for user and admin users. If you do so, you will not be able to use ESPXXX commands with user level, everything will be considered as admin when authenticated.

The password are never been displayed in clear text, but they are stored in the ESP3D configuration in clear text. So if you want to change the password, you must use the WebInterface or ESPXXX commands. In web interface the passwords are replaced by ******* so any modification must be complete not partial.

All passwords and sensitive informations are sent using plain text. So if you want to use ESP3D in a public network or outside of your local network (which is not recommended), you must use a VPN.

Scope

Here the scope of right for each authentication level:

Feature not authenticated guest user admin
Web Interface No No Yes Yes
Telnet No No Yes Yes
WebSocket No No Yes Yes
WebDav No No Yes Yes
Bluetooth No No Yes Yes
Upload No No Yes Yes
Update No No No Yes
[ESP0] Yes Yes Yes Yes
[ESP100] No No Get Get/Set
[ESP101] No No No Set
[ESP102] No No Get Get/Set
[ESP103] No No Get Get/Set
[ESP104] No No Get Get/Set
[ESP105] No No Get Get/Set
[ESP106] No No No Set
[ESP107] No No Get Get/Set
[ESP108] No No Get Get/Set
[ESP110] No No Get Get/Set
[ESP111] No No Get Get
[ESP112] No No Get Get/Set
[ESP114] No No Get Get/Set
[ESP115] No No Get Get/Set
[ESP120] No No Get Get/Set
[ESP121] No No Get Get/Set
[ESP130] No No Get Get/Set
[ESP131] No No Get Get/Set
[ESP140] No No Get Get/Set
[ESP150] No No Get Get/Set
[ESP160] No No Get Get/Set
[ESP161] No No Get Get/Set
[ESP170] No No Get/Set Get/Set
[ESP171] No No Get Get
[ESP180] No No Get Get/Set
[ESP181] No No Get Get/Set
[ESP190] No No Get Get/Set
[ESP191] No No Get Get/Set
[ESP200] No No Get/Set Get/Set
[ESP201] No No Get/Set Get/Set
[ESP202] No No Get Get/Set
[ESP210] No No Get Get/Set
[ESP212] No No Set Set
[ESP214] No No Set Set
[ESP215] No No No Set
[ESP220] No No Get Get
[ESP250] No No Set Set
[ESP290] No No Set Set
[ESP400] No No Get Get
[ESP401] No No No Set
[ESP402] No No Get Get/Set
[ESP410] No No Get Get
[ESP420] No No Get Get
[ESP444] No No Set(only RESTART) Set
[ESP450] No No Get Get
[ESP500] Get/Set Get/Set Get/Set Get/Set
[ESP510] No No Get Get/Set
[ESP550] No No No Get/Set
[ESP555] No No Get/Set Get/Set
[ESP600] No No Set Set
[ESP610] No No Get Get/Set
[ESP620] No No Set Set
[ESP700] No No Set Set
[ESP701] No No Get/Set Get/Set
[ESP710] No No No Set
[ESP715] No No No Set
[ESP720] No No Get Get
[ESP730] No No Get/Set Get/Set
[ESP740] No No Get Get
[ESP750] No No Get/Set Get/Set
[ESP780] No No Get Get
[ESP790] No No Get/Set Get/Set
[ESP800] No No Get/Set Get/Set
[ESP900] No No Get/Set Get/Set
[ESP901] No No Get Get/Set
[ESP910] No No Get/Set Get/Set
[ESP930] No No Get Get/Set
[ESP931] No No Get Get/Set
[ESP999] No No No Set

API Description

Global

Each authenticated session have unique session id, that will be stored on ESP3D with additionnal informations:

  • session id (25 characters)
  • session level (Guest / Admin / User)
  • client_id (serial / http / telnet / WebSocket)
  • session last activity (timestamp)
  • client IP (http)
  • Client socket ID (telnet / WebSocket)

Http

When authentication is enabled, the http server will check if the session is authenticated. If not, it will ask for authentication. If the session is authenticated, it will check if the session is still valid. If not, it will ask for authentication again. If the session is still valid, it will process the request. the Session ID is stored in the cookie ESP3D_SESSIONID.


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Notifications

You can use only one type of notification from the following ones:

Pushover

A pay service

Please follow this link for more information on how to setup a pushover notification service

Line

A free service

Please follow this link for more information on how to setup a line notification service

Email using SMTP and HTTPS

Please follow this link for more information on how to setup a email notification service

IFTTT webhook

A free service up to 5 applets

Please follow this link for more information on how to setup a pushover iftt service

Telegram

A free service

Please follow this link for more information on how to setup a telegram notification service

The notification will also be sent to the WebUi

Home Assistant

Talk directly to your local home assistant

Please follow this link for more information on how to setup a Home Assistant notification service

How to send message ?

Just add following command in your slicer’s end script, or manualy on your GCODE file:
[ESP600]msg pwd=<admin password>

How to ask printer to send command from file played from SD ?

  • on Repetier
    M118 [ESP600]msg

  • on Marlin
    M118 P0 [ESP600]msg

  • on Smoothieware
    echo [ESP600]msg

Note

The message can also contain the following variables:

  • %ESP_IP% : the IP address of the ESP
  • %ESP_NAME% : the name of the ESP
  • %ESP_DATETIME% : the current date and time

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Subsections of Notifications

Pushover Notification

Pushover is paid service

Considering you have pushover account (even just trial) and you already installed pushover client on you phone/PC:

1 - Go to https://pushover.net/ and connect with email and password
image image

2 - Once connected you will be able to get the token 1, the user token
image image

3 - You also need to generate an application token, which is the token 2
image image

4 - The token 2 generation: image image

5 - Save the generate token 1 and token 2 in ESP3D, and set PUSHOVER as notification supplier
[ESP610]type=PUSHOVER T1=xxxxxxxxxxxxxxxxxx T2=yyyyyyyyyyyyyyyyy

6 - type [ESP610] to verify (T1 and T2 won’t be displayed)

7 - Try to send message:
[ESP600]Hi there, test from ESP3D


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Home Assistant

Home Assistant is a home automation platform

Considering you have Home Assistant running in your local network:

1 - Go to Open your Home Assistant instance and show your Home Assistant user&rsquo;s profile. Open your Home Assistant instance and show your Home Assistant user&rsquo;s profile. , and create a long-lived access token

2 - Save the generated token in ESP3D, and set HOMEASSISTANT as notification supplier
[ESP610]type=HOMEASSISTANT T1=xxxxxxxxxxxxx TS=homeassistant.local:8123

3 - type [ESP610] to verify (T1 won’t be displayed)

4 - Try to send message:

  • [ESP600]/api/services/light/toggle#{"entity_id":"light.wintergarten_spots"}

5 - At the end of your gcode, you can add the following have your vacuum cleaner announce the print is done:


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Line Notification

Line is free service

Considering you have line account and you already installed line on you phone/PC:

1 - Go to https://notify-bot.line.me/my/ and connect with email and password image image

2 - Once connected you will be able to generate token
image image

3 - Type token name on top, select recipient(s) and press Generate token
image image

4 - Once token is created you need to copy it
image image

5 - You can create as many tokens you want, and delete the ones you do not need
image image

6 - Save the generate token in ESP3D, and set LINE as notification supplier
[ESP610]type=LINE T1=xxxxxxxxxxxxxxxxxx

7 - type [ESP610] to verify (T1 won’t be displayed)

8 - Try to send message:
[ESP600]Hi there, test from ESP3D


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Email Notification

Email Notification is using SMTP and HTTPS, so you need to collect the following information fof your email supplier

  • smtp server address and https port
  • smtp username/ID
  • smtp password

ESP3D use the parameters as follow:

  • token 1 = ID to login to your email supplier
  • token 2 = Password to login to your email supplier
  • token settings = the_recipient email#smtp_server:port where # and : are fields separators.

For example: luc@gmail.com#smtp.gmail.com:465

1 -Save the token 1, token 2 and token settings in ESP3D, and set EMAIL as notification supplier
[ESP610]type=EMAIL T1=luc@gmail.com T2=mypassword TS=luc@gmail.com#smtp.gmail.com:465

2 - Type [ESP610] to verify (T1 and T2 won’t be displayed)

3 - Try to send message:
[ESP600]Hi there, test from ESP3D

4 - Important : if you are using Gmail there is an additional step, as by default https access is disabled.
go to : https://myaccount.google.com/lesssecureapps and allow less secure applications to connect gmail enabling http access gmail enabling http access


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

IFTTT Notification

IFTTT is free service up to 5 applets

IFTTT is a wrapper that allows several kind of notifications, please refer to it documentation.
ESP3D use the webhook method.

1 - If you do not have IFTTT account you can create for free to use up to 5 applets. IFFTT account creation step IFFTT account creation step

2 - Create New applet
Create applet Create applet

  • Create new trigger
    create trigger create trigger

  • The trigger is a webhook
    trigger is a webhook trigger is a webhook

  • Choose Web request
    choose web request choose web request

  • Set the event name set event name set event name

  • Define the action you want define wanted action define wanted action

  • Select the service you want to use
    As you can see there are a lot, let use email as example, but you can select any one that fit your needs select device select device select device select device

  • Define the message
    IFTTT allows some variables:

    • title from ESP3D –> value1
    • message from ESP3D –> value2
    • ESP3D hostname –> value3

    define message define message

  • Applet is created applet created applet created

3 - Retrieve the webhook key

  • Go to settings settings settings

  • Select service service service

  • Select webhook webhook webhook

  • Choose documentation documentation documentation

  • Copy the key copy key copy key

4 - Save the generate token and chatID in ESP3D, and set IFTTT as notification supplier
[ESP610]type=IFTTT T1={event} T2={webhooks_key}

5 - type [ESP610] to verify (T1/T2 won’t be displayed)

6 - Try to send message:
[ESP600]Hi there, test from ESP3D

7 - Verify the workflow

  • Go to Applets
    applets applets
  • Select Activity
    activity activity
  • Select the flow to display
    flow to display flow to display

Note: This documentation is not exaustive due to huge features of IFTTT notifications service but base is always same :

IFThis => webhooks based on webrequest
THENThat => IFTTT notification service

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Telegram Notification

Telegram is free service

Considering you have Telegram account and you already installed Telegram on you phone/PC:

You need a bot token and a chat/channel id:
1 - Create a bot with BotFather

  • Open telegram application and open chat with Botfather.
  • Type or select /newbot
    image image
  • Type the name of the bot (2) and its username (3)
    image image
  • Doing this you will get your bot token (4) that you need for T1=<bot token>
  • You can have notifications directly from your bot by finding the numeric chatid. In order to find it you need to say something to your bot: image image Copy this url into your browser and modify it with your bot’s token https://api.telegram.org/bot<TOKEN>/getUpdates?offset=-1 You can quickly find your numeric chat id T2=<numeric chat id> image image

2 - Alternatively you may create a public channel if you want to share your printer. If isn’t the case proceed to step 4.

  • In telegram select new channel
    image image
  • Type channel name (1) and description (2)
    image image
  • Make channel public and create your channelid/chatid image image
  • Now you have your chatid without the @

3 - Assign your bot as administrator of your channel so it can use it

  • Press your channel title, the top banner will expand
    image image
  • Selet manage channel image image
  • Push Administrators
    image image
  • Look for your bot in search and add it
    image image
  • Validate bot can have access to channel image image
  • Validate bot can admin the channel image image

4 - Save the generate token and chatID in ESP3D, and set Telegram as notification supplier
[ESP610]type=TELEGRAM T1=<bot token> T2=<numeric chat id>

[ESP610]type=TELEGRAM T1=<bot token> T2=<@chatID> (for channel)

5 - Type [ESP610] to verify (T1/T2 won’t be displayed)

6 - Try to send message:
[ESP600]Hi there, test from ESP3D


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

About SD card

Note

The SD transfer is current supported on these configurations:

Clarification

The M28/M29 protocol is no more supported on ESP3D V3.0, this protocol is slow like hell (0.4 KB/S = 40min for 1MB) so not really usable, often no well managed by FW and suject to error due to external queries.

People usualy after tested once they never use it again and are disappointed and complaining about it.

So instead of keeping it using flash space and development time, and having to support it, it has been removed from 3.0, no more M28/M29 support is planned neither add it back.


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Camera support

Note

Only camera with PSRAM are supported in ESP3D due to performances issue without PSRAM.

The camera does not actually stream a video stream but only frames. The purpose is to provide more time toesp mcu to monitor and control the target system. The maximum frame rate is 5 frames per second, which is more than enough to capture states for timelapse or for monitoring.

If you want a continuous stream use a separate camera dedicated to this function and add the stream to the web interface.


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Update support

You can update ESP3D using the maintenance page, the web ui and the SD Card and OTA process.

Maintenance page

You can update/manage flash file system content and update firmware.

This page is automaticaly available if no index.html / index.html.gz is present on flash filesystem. Another way to access it, is to add the parameter ?forcefallback=yes to your IP address in browser.
image image

Web UI

You need to have webupdate feature enabled.

You can update/manage flash file system content and update firmware.
image image

SD Card

You need to have sd card enabled and sd update feature enabled in configuration.h.

Settings

You can update all esp3d settings when board is starting using an ini file named esp3dcnf.ini at root of SD card.



[network]
#hostname string of 32 chars max
hostname = myesp

#radio mode bt, wifi-sta, wifi-ap, eth-sta, off
radio_mode = wifi-sta 

#station fallback mode bt, wifi-ap, off
sta_fallback  = wifi-ap

#active when boot device or not  yes / no
radio_enabled = yes

#sta ssid string of 32 chars max 
sta_ssid = myssid

#sta password string of 64 chars max, minimum  0 or 8 chars 
sta_password = *******

#sta ip mode dhcp / static
sta_ip_mode = dhcp

#sta static ip
sta_ip = 192.168.0.2

#sta static gateway
sta_gw = 192.168.0.1

#sta static mask
sta_msk = 255.255.255.0

#sta static dns
sta_dns = 192.168.0.1

#ap ssid string of 32 chars max 
ap_ssid = myssid

#ap password string of 64 chars max, minimum  0 or 8 chars
ap_password = 12345678

#ap static ip
ap_ip = 192.168.0.1

#ap channel 1~14
ap_channel = 11

[services] 
#active or not serial bridge yes / no
serial_bridge_active = yes

# serial bridge baudrate
serial_bridge_baud = 115200

#active or not http yes / no
http_active = yes

#http port
http_port = 80

#active or not telnet yes / no
telnet_active = yes

#telnet port
telnet_port = 23

#active or not websocket yes / no
websocket_active = yes

#websocket port
websocket_port = 8282

#active or not webdav yes / no
webdav_active = yes

#websocket port
webdav_port = 8282

#active or not ftp yes / no
ftp_active = yes

#ftp control port
ftp_control_port = 21

#ftp active port
ftp_active_port = 20

#ftp passive port
ftp_passive_port = 55600

#auto notification
autonotification = yes

#notification type none / pushover / line / email / telegram /ifttt
notif_type = none 

#notification token 1 string of 64 chars max
notif_token1 = 

#notification token 2 string of 64 chars max
notif_token2 = 

#notification settings string of 127 chars max
notif_token_settings= 

#sd card speed factor 1 2 4 6 8 16 32
sd_speed = 4

#check update from sd yes / no
check_for_update = yes

#enable buzzer yes / no
active_buzzer = yes

#active internet time yes / no
active_internet_time = yes

#time servers string of 127 chars max
time_server1 = 1.pool.ntp.org
time_server2 = 2.pool.ntp.org
time_server3 = 3.pool.ntp.org

#time zone -12~12
time_zone = 2
#is dst yes/no
time_dst = no

#authentication passwords string of 20 chars max
admin_password = xxxxxxx
user_password = xxxxxxx
#session time out in min
sesion_timeout = 3

#sensor type if enabled none / dht11 / dht22 / analog / bmp280 / bme280
sensor_type = none
#sensor poiling interval in ms
sensor_interval = 30000


[system]
#target firmware marlin / repetier / marlinkimbra / smoothieware / grbl
targetfw=marlin

#baud rate
baud_rate = 115200

#boot delay in ms
boot_delay = 5000

#boot verbose yes / no
boot_verbose = no

#outputs
#printer screen yes / no
active_remote_screen = yes
#esp3d screen yes / no
active_esp3d_screen = yes
#esp3d serial yes / no
active_serial = yes
#serial bridge yes / no
active_serial_bridge = yes
#websocket yes / no
active_websocket = yes
#telnet yes / no
active_telnet = yes
#bluetooth yes / no
active_bt = yes

Once update is done all passwords set in file will be replaced by ********.

Attachments

Firmware

You can update esp3d firmware when board is starting using a binary image file of firmware esp3dfw.bin at root of SD card. If update is sucessful the file will be renamed to esp3dfw.ok, if esp3dfw.ok already exists, it will be first renamed using some index. If update fail the file is renamed to esp3dfw.bad to avoid to try to update at each boot.

Flash filesystem

You can update esp3d flash filesystem when board is starting using a binary image file of filesystem esp3dfs.bin at root of SD card. If update is sucessful the file will be renamed to esp3dfs.ok, if esp3dfs.ok already exists, it will be first renamed using some index. If update fail the file is renamed to esp3dfs.bad to avoid to try to update at each boot.

OTA (Arduino IDE / PlatformIO)

This feature need to be enabled in configuration.h

Arduino IDE esp8266

Arduino IDE esp32

PlatformIO esp8266

PlatformIO esp32


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

About FTP

Note

FTP server accept only one connection at once, be sure you have limited the number of connections in your client settings

The FTP server can serve flash only, sd only or both at once, but the sd support is limited direct sd and shared sd connections, serial connection is not supported (e.g. MKS protocol)


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

About WebDAV

The WebDAV server can serve flash only, sd only or both at once, but the sd support is limited direct sd and shared sd connections, serial connection is not supported (e.g. MKS protocol)


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

FAQ

Make boot silent

At start the ESP board bootloader generate a report displayed on serial, this report may disturb communication with connected board. It may vary depending on boards but generally look like this:

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x17 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:1184
load:0x40078000,len:13104
load:0x40080400,len:3036
entry 0x400805e4

So make it silent is a must.

On ESP32

Bootloader report is not displayed if GPIO15 is connected to GND at startup.

On ESP32-S3 / ESP32-S2 / ESP32-C3

On ESP32-S3/S2/C3 bootloader report is always displayed by default, changing the behavior can be done only once for the pin GPIO46.

Use [ESP999]QUIETBOOT pwd=<admin/user password>

On ESP8266

It is not possible to make the boot silent on ESP8266.


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

API


If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Subsections of API

Web Handlers

/ (GET)

root is the default handler where all files will be served, if no file is defined, it looks for index.html or index.html.gz (compressed) if you call specific file, it will look for the filename and filename.gz (compressed) if no file is defined and there is not index.html(.gz) it will display embedded page another way to show the embedded page is /?forcefallback=yes

/sd/ (GET)

it will serve any file from SD card if there is one, it is only a wrapper to read SD card, no upload

/files (GET/POST)

this handler handle all commands for FS, including upload on FS.
possible options/arguments are:

  • quiet=yes can be used when you don’t want list files but just upload them
  • path=... define the path to the file
  • action=... define the action to execute which can be:
    - delete
    delete the file defined by filename=... it will also use path=... to do full path
    - deletedir
    delete the directory defined by filename=... it will also use path=... to do full path
    - createdir create the directory defined by filename=... it will also use path=... to do full path
  • createPath=yes when doing upload and the path do not exists, it will create it, POST only
  • <filename>S=... give the size of uploaded file with name, need to be set before file is set in upload, POST only

the output is a json file:

```json
{   
    "files":[ //the files list  
        {  
            "name":"index.html.gz", //the name of the file
            "size":"83.46 KB", //the formated size of the file 
            "time":"2022-09-04 11:56:05" //the time when the file was modified last time, this one is optional and depend on (FILESYSTEM_TIMESTAMP_FEATURE)
        },
        {
            "name":"subdir", //the name of the file / directory
            "size":"-1", //the size is -1 because it is a directory
            "time":"" //no time for directories optional as depend on (FILESYSTEM_TIMESTAMP_FEATURE)
        }
    ],
    "path":"/", //current path
    "occupation":"52", //% of occupation
    "status":"subdir created", //status 
    "total":"192.00 KB", //Formated total space of Filesystem
    "used":"100.00 KB" //Formated used space of Filesystem
}
```

/sdfiles (GET/POST) )

this handler handle all commands for SD, including upload on SD (only shared and direct SD) this handler handle all commands for FS, including upload on FS.
possible options/arguments are:

  • quiet=yes can be used when you don’t want list files but just upload them
  • path=... define the path to the file
  • action=... define the action to execute which can be:
    - list Will refresh the stats of the files - delete
    delete the file defined by filename=... it will also use path=... to do full path
    - deletedir
    delete the directory defined by filename=... it will also use path=... to do full path
    - createdir create the directory defined by filename=... it will also use path=... to do full path
  • createPath=yes when doing upload and the path do not exists, it will create it, POST only
  • <filename>S=... give the size of uploaded file with name, need to be set before file is set in upload, POST only

the output is a json file:

```json
{
    "files":[ //the files list
        {
            "name":"3Oc-pika2.gco",//the name of the file
            "shortname":"3Oc-pika2.gco", //the 8.3 shortname if available, if not the name of the file
            "size":"83.46 KB", //the formated size of the file 
            "time":"2022-09-04 11:56:05" //the time when the file was modified last time, this one is optional and depend on (SD_TIMESTAMP_FEATURE)
        },
        {
            "name":"subdir", //the name of the file / directory
            "size":"-1", //the size is -1 because it is a directory
            "time":"" //no time for directories optional as depend on (SD_TIMESTAMP_FEATURE)
        }
    ],
    "path":"/", //current path
    "occupation":"52", //% of occupation
    "status":"subdir created", //status 
    "total":"192.00 KB", //Formated total space of Filesystem
    "used":"100.00 KB" //Formated used space of Filesystem
}
```

/upload (POST)

this handler is for MKS boards using MKS communication protocol if enabled, it handle only upload on SD

/command (GET)

this handler is for all commands the parameter is cmd=... if it is an [ESPXXX] command the answer is the [ESPXXX] response if it is not an [ESPXXX] command the answer is ESP3D says: command forwarded and can be ignored

/login (GET/POST)

this handler is for authentication function if enabled possible options/arguments are:
- DISCONNECT=YES it will clear current session, remove authentication cookie, set status to disconnected and response code to 401 - SUBMIT=YES to login it will need also PASSWORD=... and USER=..., the answer will be 200 if success and 401 if failed if user is already authenticated it can use NEWPASSWORD=... instead of PASSWORD=... to change his password, if successful answer will be returned with code 200, otherwise code will be 500 if change failed or if password format is invalid

Output:

  • if authentified and no submission:
    {"status":"Identified","authentication_lvl":"admin"} and code 200
  • if not authenticated and no submission:
    {"status":"Wrong authentication!","authentication_lvl":"guest"} and code 401

/config (GET)

this handler is a shortcut to [ESP420] command in text mode, to get output in json add json=yes

/updatefw (GET/POST)

this handler is for FW upload and update Answer output is : {"status":"..."} if upload is successful the ESP will restart

/snap (GET)

this handler is on esp32cam with camera enabled to capture a Frame it answer by sending a jpg image

/description.xml (GET)

this handler is for SSDP if enabled to present device informations

<root xmlns="urn:schemas-upnp-org:device-1-0">
    <specVersion>
        <major>1</major>
        <minor>0</minor>
    </specVersion>
    <URLBase>http://192.168.2.178:80/</URLBase>
    <device>
        <deviceType>urn:schemas-upnp-org:device:upnp:rootdevice:1</deviceType>
        <friendlyName>esp3d</friendlyName>
        <presentationURL>/</presentationURL>
        <serialNumber>52332</serialNumber>
        <modelName>ESP Board</modelName>
        <modelDescription/>
        <modelNumber>ESP3D 3.0</modelNumber>
        <modelURL>https://www.espressif.com/en/products/devkits</modelURL>
        <manufacturer>Espressif Systems</manufacturer>
        <manufacturerURL>https://www.espressif.com</manufacturerURL>
        <UDN>uuid:38323636-4558-4dda-9188-cda0e600cc6c</UDN>
        <serviceList/>
        <iconList/>
    </device>
</root>

Captive portal bypass handlers

to avoid a redirect to index.html and so a refresh of the page, some classic handler have been added so they all go to / handler actually

  • /generate_204
  • /gconnectivitycheck.gstatic.com
  • /fwlink/

If any error or need any addition,
please let me know by opening a ticket here
or submit a fix by PR or use the edit button on top menu

Web Sockets

there are 2

  • terminal websocket used to stream data to webUI and exchange internal data

  • data websocket used to exchange data with external client (not used by WebUI)

Terminal websocket

use subprotocol webui-v3and port is web port +1 (e.g: 80+1=>81)

text mode

Reserved messages between webui / ESP Format: <label>:<message>

  • from ESP to WebUI

    • currentID:<id> Sent when client is connecting, it is the last ID used and become the active ID

    • activeID:<id> Broadcast current active ID, when new client is connecting, client without this is should close, ESP WS Server close all open WS connections but this one also

    • PING:<time left>:<time out> It is a response to PING from client to inform the time left if no activity (see below)

    • ERROR:<code>:<message> If an error raise when doing upload, it informs client it must stop uploading because sometimes the http answer is not possible, or cannot cancel the upload, this is a workaround as there is no API in current webserver to cancel active upload

    • NOTIFICATION:<message> Forward the message sent by [ESP600] to webUI toast system

    • SENSOR: <value>[<unit>] <value2>[<unit2>] ... The sensor connected to ESP like DHT22

  • from WebUI to ESP

    • PING:<current cookiesessionID / none > if any, or “none” if none

binary mode

Reserved

  • from ESP to WebUI stream data from ESP to WebUI

  • from WEBUI to ESP
    [-> File transfert from WebUI to ESP : not implemented yet]

Data websocket

use sub protocol arduino and port is any defined port (e.g: 8282)

text mode

This mode is used to transfert all GCODE commands and their answers from printer/cnc

binary mode

This mode is used to transfert files to / from esp board

it use frame of 1024 bytes, can be increased after test

the frame format is : 2 bytes: for frame type 2 bytes: for frame size to check some integrity, currently as already part of frame no checksume is used x bytes : extra data according frame type

Frame types

Query status frame

type: client -> esp Status Request

S R 0 0

with hexadecimal values:

0x53 0x52 0 0

Response frame use inverted header: Response Status

R S 0 1 A

with hexadecimal values:

0x52 0x53 0 1 0x41

the first byte of answer is the state

Code Hexa Meaning
B 0x42 busy
O 0x4F idle/ok
E 0x45 error
A 0x41 abort
D 0x44 download ongoing
U 0x55 upload ongoing

extra data may be added :

For Error:

error code and string, 1 byte : error code: 0->255 1 byte : string size 0->255 XX bytes for the string

R S x x C 4 X .. ..

For Upload:

Upload informations: 1 byte : path size 0->255 XX bytes : the path string 1 byte : the filename size 0->255 xx bytes : filename string 4 bytes : total file size 4 bytes : currently processed bytes 4 bytes : last packet id processed

R S x x U X .. .. X .. .. S1 S1 S1 S1 S2 S2 S2 S2

For Download:

Download informations: 1 byte : path size 0->255 XX bytes : the path string 1 byte : the filename size 0->255 xx bytes : filename string 4 bytes : total file size 4 bytes : currently processed bytes 4 bytes : last packet id processed

R S x x D X .. .. X .. .. S1 S1 S1 S1 S2 S2 S2 S2

Start upload frame

header is :

S U 0 0

the content is: 1 byte : path size 0->255 XX bytes : the path string 1 byte : the filename size 0->255 xx bytes : filename string 4 bytes : total file size

S U x x D X .. .. X .. .. S1 S1 S1 S1

if answer is :

U S 0 1 O

it means transfert can start

Transfert upload frame

header is :

U P x x ID ID ID ID .. ..

4 bytes is packet id XXXX bytes is data

if packet is received the answer is

P U 0 5 O ID ID ID ID

Start dowload frame

header is :

S D 0 0

the content is: 1 byte : path size 0->255 XX bytes : the path string 1 byte : the filename size 0->255 xx bytes : filename string 4 bytes : total file size

S D x x D X .. .. X .. .. S1 S1 S1 S1

if answer is :

D S 0 1 O

it means transfert can start

Transfert download frame

header is :

D P x x ID ID ID ID .. ..

4 bytes is packet id XXXX bytes is data

if packet is received the answer is

P D 0 5 O ID ID ID ID

Command frame

header is :

C M 0 1 X

Commands:

Code Hexa Meaning
A 0x41 abort

Abort command frame

C M 0 1 A