Improve Webflash
This commit is contained in:
7
.github/workflows/beta.yml
vendored
7
.github/workflows/beta.yml
vendored
@@ -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
|
||||
|
||||
6
.github/workflows/nightly.yml
vendored
6
.github/workflows/nightly.yml
vendored
@@ -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
|
||||
|
||||
10
.github/workflows/release.yml
vendored
10
.github/workflows/release.yml
vendored
@@ -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 ../..
|
||||
@@ -148,13 +148,12 @@ 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/
|
||||
@@ -162,17 +161,16 @@ jobs:
|
||||
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
|
||||
|
||||
@@ -129,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:<br>
|
||||
https://technyon.github.io/nuki_hub/<br>
|
||||
NOTE: Webflash is not available for the ESP32-Solo1<br>
|
||||
<br>
|
||||
Alternatively download the latest release for your ESP32 model from https://github.com/technyon/nuki_hub/releases<br>
|
||||
Unpack the zip archive and read the included how-to-flash.txt for installation instructions for either "Espressif Flash Download Tools" or "esptool".<br>
|
||||
@@ -212,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.<br>
|
||||
One for devices with no or Quad SPI PSRAM and one for devices with Octal SPI PSRAM.<br>
|
||||
Webflash will automatically flash the no/Quad SPI PSRAM build when an ESP32-S3 is connected.<br>
|
||||
If your ESP32-S3 device has PSRAM but it is not detected please switch to the other S3 binary.<br>
|
||||
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.
|
||||
|
||||
|
||||
137
index.html
137
index.html
@@ -1,37 +1,104 @@
|
||||
<!DOCTYPE html>
|
||||
<title>Nuki Hub web installer</title>
|
||||
<html>
|
||||
<html lang="en" class="">
|
||||
<head>
|
||||
<meta charset='utf-8'>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no"/>
|
||||
<title>Install NukiHub</title>
|
||||
<style>
|
||||
div,input,select{padding:5px;font-size:1em;}
|
||||
input{width:100%;box-sizing:border-box;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;background:#dddddd;color:#000000;}
|
||||
input[type=checkbox],input[type=radio]{width:1em;margin-right:6px;vertical-align:-1px;}
|
||||
input[type=range]{width:99%;}
|
||||
select{width:100%;background:#dddddd;color:#000000;}
|
||||
body{text-align:center;font-family:verdana,sans-serif;background:#252525;}
|
||||
button{border:0;border-radius:0.3rem;background:#1fa3ec;color:#faffff;line-height:2.4rem;font-size:1.2rem;width:100%;-webkit-transition-duration:0.4s;transition-duration:0.4s;cursor:pointer;}
|
||||
button:hover{background:#0e70a4;}
|
||||
a{color:#1fa3ec;text-decoration:none;}
|
||||
.pick-variant{margin-bottom:16px;}
|
||||
</style>
|
||||
<script type="module" src="https://unpkg.com/esp-web-tools/dist/web/install-button.js?module"></script>
|
||||
<script>
|
||||
window.addEventListener("load", function(event) {
|
||||
const button = document.querySelector("esp-web-install-button");
|
||||
const selectEl = document.querySelector("#pick-variant-selector");
|
||||
|
||||
|
||||
<body>
|
||||
<h1>Nuki Hub</h1>
|
||||
|
||||
<div id="main" style="display: none;">
|
||||
|
||||
<br>
|
||||
<script
|
||||
type="module"
|
||||
src="https://unpkg.com/esp-web-tools/dist/web/install-button.js?module">
|
||||
</script>
|
||||
<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>
|
||||
Note: If flashing doesn't work, press and hold the "BOOT" switch, then click "Install".
|
||||
</div>
|
||||
<div id="notSupported" style="display: none;">
|
||||
Your browser does not support the Web Serial API. Try a different browser like Chrome, Opera, Edge.
|
||||
</div>
|
||||
|
||||
|
||||
<script>
|
||||
if(navigator.serial){
|
||||
document.getElementById("notSupported").style.display = 'none';
|
||||
document.getElementById("main").style.display = 'block';
|
||||
} else {
|
||||
document.getElementById("notSupported").style.display = 'block';
|
||||
document.getElementById("main").style.display = 'none';
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
fetch("https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/beta/dummy.bin").then(function(response) {
|
||||
if (!response.ok) {
|
||||
throw new Error("Not 2xx response", {cause: response});
|
||||
}
|
||||
else {
|
||||
for (let i = 0; i < selectEl.options.length; i++) {
|
||||
const text = selectEl.options[i].value;
|
||||
if (text == '') {
|
||||
selectEl.remove(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
}
|
||||
}).catch(function(err) {
|
||||
for (let i = 0; i < selectEl.options.length; i++) {
|
||||
const text = selectEl.options[i].value;
|
||||
if (text.includes('/beta/')) {
|
||||
selectEl.remove(i);
|
||||
i--;
|
||||
}
|
||||
}
|
||||
});
|
||||
try{
|
||||
button.manifest = "https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/webflash_manifest.json";
|
||||
selectEl.addEventListener("change", () => {
|
||||
button.manifest = selectEl.value;
|
||||
});
|
||||
}
|
||||
catch(e){
|
||||
console.log(e);
|
||||
}
|
||||
},{ once: true });
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div style='display:inline-block;color:#eaeaea;min-width:340px;'>
|
||||
<h1>Install NukiHub</h1>
|
||||
<div class='pick-variant'>
|
||||
<ol style='text-align:left'>
|
||||
<li>Connect the ESP device to your computer</br>using USB or serial-to-USB adapter</li></br>
|
||||
<li>Select the firmware variant suitable for</br>your device</li></br>
|
||||
<li>Click "Connect" and select the correct port</br>or find help if <a href="https://github.com/technyon/nuki_hub" target='_blank' style='color:#aaa;'>no device found</a></li>
|
||||
</ol>
|
||||
</br>
|
||||
</br>
|
||||
<div id="URL_based_input" class="collapsible">
|
||||
<select id="pick-variant-selector">
|
||||
<optgroup label="Release version">
|
||||
<option label="NukiHub Default (ESP32, ESP32-C3, ESP32-C6, ESP32-S3, ESP32-P4)" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/webflash_manifest.json"></option>
|
||||
<option label="NukiHub ESP32-S3 OCTAL PSRAM" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/webflash_manifest_s3octal.json"></option>
|
||||
<option label="NukiHub ESP32-SOLO1" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/webflash_manifest_solo1.json"></option>
|
||||
<option label="NukiHub GL-S10" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/webflash_manifest_gls10.json"></option>
|
||||
</optgroup>
|
||||
<optgroup label="Beta version">
|
||||
<option class="beta" label="NukiHub Default (ESP32, ESP32-C3, ESP32-C6, ESP32-S3, ESP32-P4)" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/beta/webflash_manifest.json"></option>
|
||||
<option class="beta" label="NukiHub ESP32-S3 OCTAL PSRAM" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/beta/webflash_manifest_s3octal.json"></option>
|
||||
<option class="beta" label="NukiHub GL-S10" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/beta/webflash_manifest_gls10.json"></option>
|
||||
<option class="beta" label="NukiHub ESP32-SOLO1" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/beta/webflash_manifest_solo1.json"></option>
|
||||
<option class="beta" label="No Beta available" disabled value=""></option>
|
||||
</optgroup>
|
||||
<optgroup label="Development version">
|
||||
<option label="NukiHub Default (ESP32, ESP32-C3, ESP32-C6, ESP32-S3, ESP32-P4)" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/master/webflash_manifest.json"></option>
|
||||
<option label="NukiHub ESP32-S3 OCTAL PSRAM" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/master/webflash_manifest_s3octal.json"></option>
|
||||
<option label="NukiHub ESP32-SOLO1" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/master/webflash_manifest_solo1.json"></option>
|
||||
<option label="NukiHub GL-S10" value="https://raw.githubusercontent.com/technyon/nuki_hub/binary/ota/master/webflash_manifest_gls10.json"></option>
|
||||
</optgroup>
|
||||
</select>
|
||||
</div>
|
||||
</br>
|
||||
<esp-web-install-button id="inst" style='text-align:center'>
|
||||
<i slot="unsupported">Your browser does not support Web Serial.</br>Open this page in Google Chrome or</br>Microsoft Edge instead.</i>
|
||||
</esp-web-install-button>
|
||||
</div>
|
||||
<div style='text-align:right;font-size:11px;'>
|
||||
<hr/>
|
||||
<a href="https://esphome.github.io/esp-web-tools/" target='_blank' style='color:#aaa;'>NukiHub Installer inspired by Tasmota and ESP Web Tools</a>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user