Webflash
This commit is contained in:
3
.github/workflows/release.yml
vendored
3
.github/workflows/release.yml
vendored
@@ -157,8 +157,7 @@ jobs:
|
|||||||
mkdir -p webflash/
|
mkdir -p webflash/
|
||||||
mkdir -p resources/
|
mkdir -p resources/
|
||||||
mkdir -p src/
|
mkdir -p src/
|
||||||
cp -vf release/*/nuki_hub_*.bin ota/
|
cp -vf release/*/nuki_hub_*.bin ota/
|
||||||
cp -vf release/*/webflash_nuki_hub_*.bin webflash/
|
|
||||||
cp -vf master/resources/ota_manifest.py resources/ota_manifest.py
|
cp -vf master/resources/ota_manifest.py resources/ota_manifest.py
|
||||||
cp -vf master/src/Config.h src/Config.h
|
cp -vf master/src/Config.h src/Config.h
|
||||||
python3 resources/ota_manifest.py release $Version
|
python3 resources/ota_manifest.py release $Version
|
||||||
|
|||||||
13
README.md
13
README.md
@@ -58,6 +58,9 @@ See the "[Connecting via Ethernet](#connecting-via-ethernet-optional)" section f
|
|||||||
We don't recommend using single-core ESP32 devices (ESP32-C3, ESP32-C6, ESP32-H2, ESP32-Solo1).<br>
|
We don't recommend using single-core ESP32 devices (ESP32-C3, ESP32-C6, ESP32-H2, ESP32-Solo1).<br>
|
||||||
Although Nuki Hub supports single-core devices, Nuki Hub uses both CPU cores (if available) to process tasks (e.g. HTTP server/MQTT client/BLE scanner/BLE client) and thus runs much better on dual-core devices.<br>
|
Although Nuki Hub supports single-core devices, Nuki Hub uses both CPU cores (if available) to process tasks (e.g. HTTP server/MQTT client/BLE scanner/BLE client) and thus runs much better on dual-core devices.<br>
|
||||||
|
|
||||||
|
We also don't recommend using the original ESP32 or ESP32-Solo1 devices because these devices experience unexpected crashes related to the (closed-source) BLE controller.<br>
|
||||||
|
In all newer models (e.g. ESP32-S3, ESP32-P4, ESP32-C3, ESP32-C6, ESP32-H2) these unexpected crashed haven't been seen.
|
||||||
|
|
||||||
When buying a new device in 2025 we can only recommend the ESP32-S3 with PSRAM (look for an ESP32-S3 with the designation N>=4 and R>=2 such as an ESP32-S3 N16R8).<br>
|
When buying a new device in 2025 we can only recommend the ESP32-S3 with PSRAM (look for an ESP32-S3 with the designation N>=4 and R>=2 such as an ESP32-S3 N16R8).<br>
|
||||||
The ESP32-S3 is a dual-core CPU with many GPIO's, ability to enlarge RAM using PSRAM, ability to connect Ethernet modules over SPI and optionally power the device with a PoE splitter.<br>
|
The ESP32-S3 is a dual-core CPU with many GPIO's, ability to enlarge RAM using PSRAM, ability to connect Ethernet modules over SPI and optionally power the device with a PoE splitter.<br>
|
||||||
The only functions missing from the ESP32-S3 as compared to other ESP devices is the ability to use some Ethernet modules only supported by the original ESP32 (and ESP32-P4) and the ability to connect over WIFI6 (C6 or ESP32-P4 with C6 module)
|
The only functions missing from the ESP32-S3 as compared to other ESP devices is the ability to use some Ethernet modules only supported by the original ESP32 (and ESP32-P4) and the ability to connect over WIFI6 (C6 or ESP32-P4 with C6 module)
|
||||||
@@ -71,17 +74,15 @@ Other considerations:
|
|||||||
Devices ranked best-to-worst:
|
Devices ranked best-to-worst:
|
||||||
- ESP32-P4 with ESP32-C6-MINI-1 module (UNTESTED)
|
- ESP32-P4 with ESP32-C6-MINI-1 module (UNTESTED)
|
||||||
- ESP32-S3 with PSRAM
|
- ESP32-S3 with PSRAM
|
||||||
- ......
|
- ...... <br>
|
||||||
|
(Devices below will not support some Nuki Hub functions, be slower and/or are more likely to experience unexpected crashed)
|
||||||
|
- ESP32-S3 without PSRAM
|
||||||
- ......
|
- ......
|
||||||
- ESP32 with PSRAM
|
- ESP32 with PSRAM
|
||||||
- ......<br>
|
|
||||||
(Devices below will not support some Nuki Hub functions)
|
|
||||||
- ......
|
- ......
|
||||||
- ESP32-S3 without PSRAM
|
|
||||||
- ESP32 without PSRAM
|
- ESP32 without PSRAM
|
||||||
- ...... <br>
|
- ...... <br>
|
||||||
(Devices below will not support more Nuki Hub functions)
|
(Devices below will not support more Nuki Hub functions, be slower and/or are more likely to experience unexpected crashed)
|
||||||
- ......
|
|
||||||
- ESP32-C6
|
- ESP32-C6
|
||||||
- ESP32-solo1
|
- ESP32-solo1
|
||||||
- ESP32-C3
|
- ESP32-C3
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
type="module"
|
type="module"
|
||||||
src="https://unpkg.com/esp-web-tools/dist/web/install-button.js?module">
|
src="https://unpkg.com/esp-web-tools/dist/web/install-button.js?module">
|
||||||
</script>
|
</script>
|
||||||
<esp-web-install-button id="installButton" manifest="https://raw.githubusercontent.com/technyon/nuki_hub/binary/webflash/manifest.json"></esp-web-install-button>
|
<esp-web-install-button id="installButton" manifest="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/webflash_manifest.json"></esp-web-install-button>
|
||||||
<br><br><br><br>
|
<br><br><br><br>
|
||||||
Note: If flashing doesn't work, press and hold the "BOOT" switch, then click "Install".
|
Note: If flashing doesn't work, press and hold the "BOOT" switch, then click "Install".
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -28,11 +28,13 @@ def copy_files(source, target, env):
|
|||||||
project_dir = env.get('PROJECT_DIR')
|
project_dir = env.get('PROJECT_DIR')
|
||||||
board = get_board_name(env)
|
board = get_board_name(env)
|
||||||
|
|
||||||
if "partitions.bin" in file.name:
|
if "firmware" in file.stem:
|
||||||
shutil.copy(file, f"{target_dir}/nuki_hub.{file.name}")
|
|
||||||
elif "firmware" in file.stem:
|
|
||||||
shutil.copy(file, f"{target_dir}/nuki_hub_{board}{file.suffix}")
|
shutil.copy(file, f"{target_dir}/nuki_hub_{board}{file.suffix}")
|
||||||
shutil.copy(f"{project_dir}/updater/release/{board}/updater.bin", f"{target_dir}/nuki_hub_updater_{board}{file.suffix}")
|
shutil.copy(f"{project_dir}/updater/release/{board}/updater.bin", f"{target_dir}/nuki_hub_updater_{board}{file.suffix}")
|
||||||
|
elif "bootloader" in file.stem:
|
||||||
|
shutil.copy(file, f"{target_dir}/nuki_hub_bootloader_{board}{file.suffix}")
|
||||||
|
elif "partitions" in file.stem:
|
||||||
|
shutil.copy(file, f"{target_dir}/nuki_hub_partitions_{board}{file.suffix}")
|
||||||
else:
|
else:
|
||||||
shutil.copy(file, f"{target_dir}/{file.name}")
|
shutil.copy(file, f"{target_dir}/{file.name}")
|
||||||
|
|
||||||
@@ -79,4 +81,4 @@ env.AddPostAction("$BUILD_DIR/partitions.bin", copy_files)
|
|||||||
env.AddPostAction("$BUILD_DIR/bootloader.bin", copy_files)
|
env.AddPostAction("$BUILD_DIR/bootloader.bin", copy_files)
|
||||||
env.AddPostAction("$BUILD_DIR/firmware.elf", copy_files)
|
env.AddPostAction("$BUILD_DIR/firmware.elf", copy_files)
|
||||||
|
|
||||||
env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", merge_bin)
|
#env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", merge_bin)
|
||||||
@@ -24,64 +24,64 @@ Howto flash (Espressif Flash Download Tools)
|
|||||||
|
|
||||||
ESP32
|
ESP32
|
||||||
e000 boot_app0.bin
|
e000 boot_app0.bin
|
||||||
1000 bootloader.bin
|
1000 nuki_hub_bootloader_esp32.bin
|
||||||
8000 nuki_hub.partitions.bin
|
8000 nuki_hub_partitions_esp32.bin
|
||||||
10000 nuki_hub_esp32.bin
|
10000 nuki_hub_esp32.bin
|
||||||
280000 nuki_hub_updater_esp32.bin
|
280000 nuki_hub_updater_esp32.bin
|
||||||
|
|
||||||
ESP32-GL-S10
|
ESP32-GL-S10
|
||||||
e000 boot_app0.bin
|
e000 boot_app0.bin
|
||||||
1000 bootloader.bin
|
1000 nuki_hub_bootloader_esp32.bin
|
||||||
8000 nuki_hub.partitions.bin
|
8000 nuki_hub_partitions_esp32.bin
|
||||||
10000 nuki_hub_esp32.bin
|
10000 nuki_hub_esp32.bin
|
||||||
280000 nuki_hub_updater_esp32.bin
|
280000 nuki_hub_updater_esp32.bin
|
||||||
|
|
||||||
ESP32-S3
|
ESP32-S3
|
||||||
e000 boot_app0.bin
|
e000 boot_app0.bin
|
||||||
0 bootloader.bin
|
0 nuki_hub_bootloader_esp32s3.bin
|
||||||
8000 nuki_hub.partitions.bin
|
8000 nuki_hub_partitions_esp32s3.bin
|
||||||
10000 nuki_hub_esp32s3.bin
|
10000 nuki_hub_esp32s3.bin
|
||||||
280000 nuki_hub_updater_esp32s3.bin
|
280000 nuki_hub_updater_esp32s3.bin
|
||||||
|
|
||||||
ESP32-S3-OCT
|
ESP32-S3-OCT
|
||||||
e000 boot_app0.bin
|
e000 boot_app0.bin
|
||||||
0 bootloader.bin
|
0 nuki_hub_bootloader_esp32s3oct.bin
|
||||||
8000 nuki_hub.partitions.bin
|
8000 nuki_hub_partitions_esp32s3oct.bin
|
||||||
10000 nuki_hub_esp32s3oct.bin
|
10000 nuki_hub_esp32s3oct.bin
|
||||||
280000 nuki_hub_updater_esp32s3oct.bin
|
280000 nuki_hub_updater_esp32s3oct.bin
|
||||||
|
|
||||||
ESP32-C3
|
ESP32-C3
|
||||||
e000 boot_app0.bin
|
e000 boot_app0.bin
|
||||||
0 bootloader.bin
|
0 nuki_hub_bootloader_esp32c3.bin
|
||||||
8000 nuki_hub.partitions.bin
|
8000 nuki_hub_partitions_esp32c3.bin
|
||||||
10000 nuki_hub_esp32c3.bin
|
10000 nuki_hub_esp32c3.bin
|
||||||
280000 nuki_hub_updater_esp32c3.bin
|
280000 nuki_hub_updater_esp32c3.bin
|
||||||
|
|
||||||
ESP32-C6
|
ESP32-C6
|
||||||
e000 boot_app0.bin
|
e000 boot_app0.bin
|
||||||
0 bootloader.bin
|
0 nuki_hub_bootloader_esp32c6.bin
|
||||||
8000 nuki_hub.partitions.bin
|
8000 nuki_hub_partitions_esp32c6.bin
|
||||||
10000 nuki_hub_esp32c6.bin
|
10000 nuki_hub_esp32c6.bin
|
||||||
280000 nuki_hub_updater_esp32c6.bin
|
280000 nuki_hub_updater_esp32c6.bin
|
||||||
|
|
||||||
ESP32-H2
|
ESP32-H2
|
||||||
e000 boot_app0.bin
|
e000 boot_app0.bin
|
||||||
0 bootloader.bin
|
0 nuki_hub_bootloader_esp32h2.bin
|
||||||
8000 nuki_hub.partitions.bin
|
8000 nuki_hub_partitions_esp32h2.bin
|
||||||
10000 nuki_hub_esp32h2.bin
|
10000 nuki_hub_esp32h2.bin
|
||||||
280000 nuki_hub_updater_esp32h2.bin
|
280000 nuki_hub_updater_esp32h2.bin
|
||||||
|
|
||||||
ESP32-P4
|
ESP32-P4
|
||||||
e000 boot_app0.bin
|
e000 boot_app0.bin
|
||||||
0 bootloader.bin
|
0 nuki_hub_bootloader_esp32p4.bin
|
||||||
8000 nuki_hub.partitions.bin
|
8000 nuki_hub_partitions_esp32p4.bin
|
||||||
10000 nuki_hub_esp32p4.bin
|
10000 nuki_hub_esp32p4.bin
|
||||||
280000 nuki_hub_updater_esp32p4.bin
|
280000 nuki_hub_updater_esp32p4.bin
|
||||||
|
|
||||||
ESP32-SOLO1
|
ESP32-SOLO1
|
||||||
e000 boot_app0.bin
|
e000 boot_app0.bin
|
||||||
1000 bootloader.bin
|
1000 nuki_hub_bootloader_esp32-solo1.bin
|
||||||
8000 nuki_hub.partitions.bin
|
8000 nuki_hub_partitions_esp32-solo1.bin
|
||||||
10000 nuki_hub_esp32-solo1.bin
|
10000 nuki_hub_esp32-solo1.bin
|
||||||
280000 nuki_hub_updater_esp32-solo1.bin
|
280000 nuki_hub_updater_esp32-solo1.bin
|
||||||
|
|
||||||
@@ -99,38 +99,38 @@ As an alternative to the Download Tools, you can also use the esptool from the E
|
|||||||
|
|
||||||
## ESP32
|
## ESP32
|
||||||
|
|
||||||
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader.bin 0x10000 nuki_hub_esp32.bin 0x270000 nuki_hub_updater_esp32.bin 0x8000 nuki_hub.partitions.bin
|
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x1000 nuki_hub_bootloader_esp32.bin 0x10000 nuki_hub_esp32.bin 0x270000 nuki_hub_updater_esp32.bin 0x8000 nuki_hub_partitions_esp32.bin
|
||||||
|
|
||||||
## ESP32-GL-S10
|
## ESP32-GL-S10
|
||||||
|
|
||||||
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader.bin 0x10000 nuki_hub_esp32.bin 0x270000 nuki_hub_updater_esp32.bin 0x8000 nuki_hub.partitions.bin
|
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x1000 nuki_hub_bootloader_esp32.bin 0x10000 nuki_hub_esp32.bin 0x270000 nuki_hub_updater_esp32.bin 0x8000 nuki_hub_partitions_esp32.bin
|
||||||
|
|
||||||
## ESP32-S3
|
## ESP32-S3
|
||||||
|
|
||||||
esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 bootloader.bin 0x10000 nuki_hub_esp32s3.bin 0x270000 nuki_hub_updater_esp32s3.bin 0x8000 nuki_hub.partitions.bin
|
esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 nuki_hub_bootloader_esp32s3.bin 0x10000 nuki_hub_esp32s3.bin 0x270000 nuki_hub_updater_esp32s3.bin 0x8000 nuki_hub_partitions_esp32s3.bin
|
||||||
|
|
||||||
## ESP32-S3-OCT
|
## ESP32-S3-OCT
|
||||||
|
|
||||||
esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 bootloader.bin 0x10000 nuki_hub_esp32s3oct.bin 0x270000 nuki_hub_updater_esp32s3oct.bin 0x8000 nuki_hub.partitions.bin
|
esptool.py --chip esp32s3 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 nuki_hub_bootloader_esp32s3oct.bin 0x10000 nuki_hub_esp32s3oct.bin 0x270000 nuki_hub_updater_esp32s3oct.bin 0x8000 nuki_hub_partitions_esp32s3oct.bin
|
||||||
|
|
||||||
## ESP32-C3
|
## ESP32-C3
|
||||||
|
|
||||||
esptool.py --chip esp32c3 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 bootloader.bin 0x10000 nuki_hub_esp32c3.bin 0x270000 nuki_hub_updater_esp32c3.bin 0x8000 nuki_hub.partitions.bin
|
esptool.py --chip esp32c3 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 nuki_hub_bootloader_esp32c3.bin 0x10000 nuki_hub_esp32c3.bin 0x270000 nuki_hub_updater_esp32c3.bin 0x8000 nuki_hub_partitions_esp32c3.bin
|
||||||
|
|
||||||
## ESP32-C6
|
## ESP32-C6
|
||||||
|
|
||||||
esptool.py --chip esp32c6 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 bootloader.bin 0x10000 nuki_hub_esp32c6.bin 0x270000 nuki_hub_updater_esp32c6.bin 0x8000 nuki_hub.partitions.bin
|
esptool.py --chip esp32c6 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 nuki_hub_bootloader_esp32c6.bin 0x10000 nuki_hub_esp32c6.bin 0x270000 nuki_hub_updater_esp32c6.bin 0x8000 nuki_hub_partitions_esp32c6.bin
|
||||||
|
|
||||||
## ESP32-H2
|
## ESP32-H2
|
||||||
|
|
||||||
esptool.py --chip esp32h2 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 bootloader.bin 0x10000 nuki_hub_esp32h2.bin 0x270000 nuki_hub_updater_esp32h2.bin 0x8000 nuki_hub.partitions.bin
|
esptool.py --chip esp32h2 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 nuki_hub_bootloader_esp32h2.bin 0x10000 nuki_hub_esp32h2.bin 0x270000 nuki_hub_updater_esp32h2.bin 0x8000 nuki_hub_partitions_esp32h2.bin
|
||||||
|
|
||||||
## ESP32-P4
|
## ESP32-P4
|
||||||
|
|
||||||
esptool.py --chip esp32p4 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 bootloader.bin 0x10000 nuki_hub_esp32p4.bin 0x270000 nuki_hub_updater_esp32p4.bin 0x8000 nuki_hub.partitions.bin
|
esptool.py --chip esp32p4 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x0 nuki_hub_bootloader_esp32p4.bin 0x10000 nuki_hub_esp32p4.bin 0x270000 nuki_hub_updater_esp32p4.bin 0x8000 nuki_hub_partitions_esp32p4.bin
|
||||||
|
|
||||||
## ESP32-SOLO1
|
## ESP32-SOLO1
|
||||||
|
|
||||||
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x1000 bootloader.bin 0x10000 nuki_hub_esp32-solo1.bin 0x270000 nuki_hub_updater_esp32-solo1.bin 0x8000 nuki_hub.partitions.bin
|
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq keep --flash_size detect 0xe000 boot_app0.bin 0x1000 nuki_hub_bootloader_esp32-solo1.bin 0x10000 nuki_hub_esp32-solo1.bin 0x270000 nuki_hub_updater_esp32-solo1.bin 0x8000 nuki_hub_partitions_esp32-solo1.bin
|
||||||
|
|
||||||
Adjust the serial device and path to the binaries if necessary.
|
Adjust the serial device and path to the binaries if necessary.
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
#define NUKI_HUB_VERSION "9.10"
|
#define NUKI_HUB_VERSION "9.10"
|
||||||
#define NUKI_HUB_VERSION_INT (uint32_t)910
|
#define NUKI_HUB_VERSION_INT (uint32_t)910
|
||||||
#define NUKI_HUB_BUILD "unknownbuildnr"
|
#define NUKI_HUB_BUILD "unknownbuildnr"
|
||||||
#define NUKI_HUB_DATE "2025-04-02"
|
#define NUKI_HUB_DATE "2025-04-06"
|
||||||
|
|
||||||
#define GITHUB_LATEST_RELEASE_URL (char*)"https://github.com/technyon/nuki_hub/releases/latest"
|
#define GITHUB_LATEST_RELEASE_URL (char*)"https://github.com/technyon/nuki_hub/releases/latest"
|
||||||
#define GITHUB_OTA_MANIFEST_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/manifest.json"
|
#define GITHUB_OTA_MANIFEST_URL (char*)"https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/manifest.json"
|
||||||
|
|||||||
Reference in New Issue
Block a user