diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml
index edda08a..0994bf5 100644
--- a/.github/workflows/beta.yml
+++ b/.github/workflows/beta.yml
@@ -113,23 +113,22 @@ jobs:
run: |
mkdir -p ota/beta/
mkdir -p ota/master/
- mkdir -p webflash/
mkdir -p resources/
mkdir -p src/
cp -vf release/*/nuki_hub_*.bin ota/beta/
cp -vf master/resources/ota_manifest.py resources/ota_manifest.py
cp -vf master/src/Config.h src/Config.h
python3 resources/ota_manifest.py beta $Version
- find * -not -path "ota*" -not -path "webflash*" -delete
+ find * -not -path "ota*" -delete
rm -rf .github .gitignore .gitmodules
touch ota/beta/empty
+ touch ota/beta/dummy.bin
touch ota/master/empty
- touch webflash/empty
- name: Commit binaries to binary
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Update binaries"
- file_pattern: 'ota/* ota/master/* ota/beta/* webflash/*'
+ file_pattern: 'ota/* ota/master/* ota/beta/*'
branch: binary
skip_dirty_check: true
skip_fetch: true
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index a53d0f6..7559b85 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -136,23 +136,21 @@ jobs:
run: |
mkdir -p ota/beta/
mkdir -p ota/master/
- mkdir -p webflash/
mkdir -p resources/
mkdir -p src/
cp -vf release/*/nuki_hub_*.bin ota/master/
cp -vf master/resources/ota_manifest.py resources/ota_manifest.py
cp -vf master/src/Config.h src/Config.h
python3 resources/ota_manifest.py master $Version
- find * -not -path "ota*" -not -path "webflash*" -delete
+ find * -not -path "ota*" -delete
rm -rf .github .gitignore .gitmodules
touch ota/beta/empty
touch ota/master/empty
- touch webflash/empty
- name: Commit binaries to binary
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Update binaries"
- file_pattern: 'ota/* ota/master/* ota/beta/* webflash/*'
+ file_pattern: 'ota/* ota/master/* ota/beta/*'
branch: binary
skip_dirty_check: true
skip_fetch: true
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3f4bafc..f8546b6 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -124,7 +124,7 @@ jobs:
echo "${FOLDER} -- ${ZIPFILE}"
cd $FOLDER
- zip -9r ../../${ZIPFILE} * -x "webflash_nuki_hub_*.bin"
+ zip -9r ../../${ZIPFILE} *
ARTIFACTS="${ARTIFACTS}${ZIPFILE},"
cd ../..
@@ -140,7 +140,7 @@ jobs:
prerelease: false
allowUpdates: true
updateOnlyUnreleased: false
- draft: false
+ draft: true
generateReleaseNotes: true
makeLatest: true
name: "Nuki Hub ${{ steps.get_version.outputs.VERSION }}"
@@ -148,32 +148,29 @@ jobs:
artifacts: ${{ steps.zip.outputs.artifacts }}
artifactContentType: application/zip
tag: ${{ steps.get_version.outputs.VERSION }}
- - name: Copy binaries to ota and webflash and remove beta
+ - name: Copy binaries to ota and remove beta
env:
Version: ${{ github.run_id }}.${{ github.run_number }}.${{ github.run_attempt }}
run: |
mkdir -p ota/beta/
mkdir -p ota/master/
- mkdir -p webflash/
mkdir -p resources/
mkdir -p src/
- cp -vf release/*/nuki_hub_*.bin ota/
- cp -vf release/*/webflash_nuki_hub_*.bin webflash/
+ cp -vf release/*/nuki_hub_*.bin ota/
cp -vf master/resources/ota_manifest.py resources/ota_manifest.py
cp -vf master/src/Config.h src/Config.h
python3 resources/ota_manifest.py release $Version
python3 resources/ota_manifest.py beta none
- find * -not -path "ota*" -not -path "webflash*" -delete
+ find * -not -path "ota*" -delete
rm -rf ota/beta/*.bin
rm -rf .github .gitignore .gitmodules
touch ota/beta/empty
touch ota/master/empty
- touch webflash/empty
- name: Commit binaries to binary
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: "Update binaries"
- file_pattern: 'ota/* ota/master/* ota/beta/* webflash/*'
+ file_pattern: 'ota/* ota/master/* ota/beta/*'
branch: binary
skip_dirty_check: true
skip_fetch: true
diff --git a/README.md b/README.md
index 01ba2b9..94aa692 100644
--- a/README.md
+++ b/README.md
@@ -15,7 +15,7 @@ Feel free to join us on Discord: https://discord.gg/9nPq85bP4p
## Supported devices
Supported ESP32 devices:
-- Nuki Hub is compiled against all ESP32 models with Wi-Fi and Bluetooh Low Energy (BLE) which are supported by ESP-IDF 5.3.2 and Arduino Core 3.1.3.
+- Nuki Hub is compiled against all ESP32 models with Wi-Fi and Bluetooh Low Energy (BLE) which are supported by ESP-IDF 5.4.1 and Arduino Core 3.2.0.
- Tested stable builds are provided for the ESP32, ESP32-S3, ESP32-C3, ESP32-C6 and ESP32-H2.
- Untested builds are provided for the ESP32-P4 (with the ESP32-C6-MINI-1 module for BLE and WiFi) and ESP32-Solo1 (as the developers don't own one).
@@ -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).
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.
+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.
+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).
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.
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:
- ESP32-P4 with ESP32-C6-MINI-1 module (UNTESTED)
- ESP32-S3 with PSRAM
-- ......
+- ......
+(Devices below will not support some Nuki Hub functions, be slower and/or are more likely to experience unexpected crashes)
+- ESP32-S3 without PSRAM
- ......
- ESP32 with PSRAM
-- ......
-(Devices below will not support some Nuki Hub functions)
- ......
-- ESP32-S3 without PSRAM
- ESP32 without PSRAM
- ......
-(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 crashes)
- ESP32-C6
- ESP32-solo1
- ESP32-C3
@@ -128,7 +129,6 @@ This project is free to use for everyone. However if you feel like donating, you
Flash the firmware to an ESP32. The easiest way to install is to use the web installer using a compatible browser like Chrome/Opera/Edge:
https://technyon.github.io/nuki_hub/
-NOTE: Webflash is not available for the ESP32-Solo1
Alternatively download the latest release for your ESP32 model from https://github.com/technyon/nuki_hub/releases
Unpack the zip archive and read the included how-to-flash.txt for installation instructions for either "Espressif Flash Download Tools" or "esptool".
@@ -211,7 +211,6 @@ You can check on the info page of the Web configurator if PSRAM is available.
Note that there are two builds of Nuki Hub for the ESP32-S3 available.
One for devices with no or Quad SPI PSRAM and one for devices with Octal SPI PSRAM.
-Webflash will automatically flash the no/Quad SPI PSRAM build when an ESP32-S3 is connected.
If your ESP32-S3 device has PSRAM but it is not detected please switch to the other S3 binary.
You can do this by flashing the correct binaries manually or by selecting the option to switch S3 binary build from the Firmware Update page of the Web Configurator.
@@ -225,7 +224,7 @@ In a browser navigate to the IP address assigned to the ESP32.
#### Network Configuration
-- Hostname (needs to be unique, "nukihub" is not allowed): Set the hostname for the Nuki Hub ESP, will also be used as the MQTT client ID. Needs to be unique.
+- Hostname (needs to be unique): Set the hostname for the Nuki Hub ESP, will also be used as the MQTT client ID. Needs to be unique.
- Network hardware: "Wi-Fi only" by default, set to one of the specified ethernet modules if available, see the "Supported Ethernet devices" and "[Connecting via Ethernet](#connecting-via-ethernet-optional)" section of this README.
- Home Assistant device configuration URL: When using Home Assistant discovery the link to the Nuki Hub Web Configuration will be published to Home Assistant. By default when this setting is left empty this will link to the current IP of the Nuki Hub. When using a reverse proxy to access the Web Configuration you can set a custom URL here.
- RSSI Publish interval: Set to a positive integer to set the amount of seconds between updates to the maintenance/wifiRssi MQTT topic with the current Wi-Fi RSSI, set to -1 to disable, default 60.
diff --git a/index.html b/index.html
index 5062380..3c6fa7a 100644
--- a/index.html
+++ b/index.html
@@ -1,37 +1,104 @@
-