From d0e5f90e90a7d81d2f4d968072d3c16db2ac30e7 Mon Sep 17 00:00:00 2001 From: gilex-dev Date: Mon, 21 Jul 2025 22:43:19 +0200 Subject: [PATCH] Add reset task for ESP8266 --- extra_scripts/reset_board.py | 38 ++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 extra_scripts/reset_board.py diff --git a/extra_scripts/reset_board.py b/extra_scripts/reset_board.py new file mode 100644 index 0000000..e63846e --- /dev/null +++ b/extra_scripts/reset_board.py @@ -0,0 +1,38 @@ +# thanks to [maxgerhardt](https://community.platformio.org/u/maxgerhardt/summary) +Import("env") +import os +from platformio.builder.tools.pioupload import AutodetectUploadPort + +platform = env.PioPlatform() + +AutodetectUploadPort(env) +upload_port = env.subst('$UPLOAD_PORT') + +def get_esptoolpy_reset_flags(resetmethod): + # no dtr, no_sync + resets = ("no_reset_no_sync", "soft_reset") + if resetmethod == "nodemcu": + # dtr + resets = ("default_reset", "hard_reset") + elif resetmethod == "ck": + # no dtr + resets = ("no_reset", "soft_reset") + + return ["--before", resets[0], "--after", resets[1]] + +reset_flags = ' '.join(get_esptoolpy_reset_flags(env.subst("$UPLOAD_RESETMETHOD"))) + +esptool = os.path.join(platform.get_package_dir("tool-esptoolpy"), "esptool.py") +esptool_cmd = f'$PYTHONEXE "{esptool}" --port {upload_port} {reset_flags} --no-stub run' + +# Multiple actions +env.AddCustomTarget( + name="reset", + dependencies=None, + actions=[ + esptool_cmd, + "pio device monitor" + ], + title="Reset ESP8266", + description="Resets the ESP8266 board" +)