260 lines
No EOL
8.4 KiB
HTML
260 lines
No EOL
8.4 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
|
|
<head>
|
|
<meta charset="utf-8" />
|
|
<title>BTClock Web Tools</title>
|
|
<meta name="description" content="Easily allow users to flash new firmware for the BTClock." />
|
|
<meta name="viewport" content="width=device-width" />
|
|
<meta name="color-scheme" content="dark light" />
|
|
<style>
|
|
/* antonio-latin-400-normal */
|
|
@font-face {
|
|
font-family: 'Antonio';
|
|
font-style: normal;
|
|
font-display: swap;
|
|
font-weight: 600;
|
|
src:
|
|
url(fonts/antonio/webfonts/antonio-latin-600-normal.woff2) format('woff2'),
|
|
url(fonts/antonio/webfonts/antonio-latin-600-normal.woff2) format('woff');
|
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'Ubuntu';
|
|
font-style: normal;
|
|
font-display: auto;
|
|
font-weight: 400;
|
|
src: url(fonts/ubuntu/webfonts/ubuntu-latin-400-normal.woff2) format('woff2'),
|
|
url(fonts/ubuntu/webfonts/ubuntu-latin-400-normal.woff2) format('woff');
|
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
}
|
|
|
|
@font-face {
|
|
font-family: 'Ubuntu';
|
|
font-style: normal;
|
|
font-display: auto;
|
|
font-weight: 700;
|
|
src: url(fonts/ubuntu/webfonts/ubuntu-latin-700-normal.woff2) format('woff2'),
|
|
url(fonts/ubuntu/webfonts/ubuntu-latin-700-normal.woff2) format('woff');
|
|
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
|
}
|
|
|
|
body {
|
|
font-family: 'Ubuntu', sans-serif;
|
|
padding: 0;
|
|
margin: 0;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.content {
|
|
max-width: 600px;
|
|
margin: 0 auto;
|
|
padding: 12px;
|
|
}
|
|
|
|
h1 {
|
|
font-family: 'Antonio';
|
|
}
|
|
|
|
h2 {
|
|
margin-top: 2em;
|
|
}
|
|
|
|
h3 {
|
|
margin-top: 1.5em;
|
|
}
|
|
|
|
.projects a {
|
|
color: initial;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.project .logo img {
|
|
height: 50px;
|
|
}
|
|
|
|
.project .name {
|
|
margin-top: 8px;
|
|
}
|
|
|
|
a {
|
|
color: #03a9f4;
|
|
}
|
|
|
|
.screenshot img {
|
|
max-width: 100%;
|
|
box-shadow: rgb(0 0 0 / 20%) 0px 2px 1px -1px,
|
|
rgb(0 0 0 / 14%) 0px 1px 1px 0px, rgb(0 0 0 / 12%) 0px 1px 3px 0px;
|
|
border-radius: 4px;
|
|
}
|
|
|
|
.screenshot i {
|
|
margin-top: 4px;
|
|
display: block;
|
|
}
|
|
|
|
.hidden {
|
|
display: none;
|
|
}
|
|
|
|
.footer {
|
|
margin-top: 24px;
|
|
border-top: 1px solid #ccc;
|
|
padding-top: 24px;
|
|
text-align: center;
|
|
}
|
|
|
|
.footer .initiative {
|
|
font-style: italic;
|
|
margin-top: 16px;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
body {
|
|
background-color: #333;
|
|
color: #fff;
|
|
}
|
|
|
|
a {
|
|
color: #58a6ff;
|
|
}
|
|
}
|
|
</style>
|
|
<script module>
|
|
import(
|
|
"https://unpkg.com/esp-web-tools/dist/web/install-button.js?module"
|
|
);
|
|
</script>
|
|
</head>
|
|
|
|
<body>
|
|
<div class="content">
|
|
<h1>BTClock Web Installer</h1>
|
|
<!-- V3 start -->
|
|
<h2>Version <span id="version">3</span></h2>
|
|
<h3>2.13 inch displays (rev. A)</h3>
|
|
<p><small>In most cases you have this version. All versions before block #841273 (2024-04-28) are rev. A.</small>
|
|
</p>
|
|
<esp-web-install-button manifest="manifest_btclock_v3_213.json">
|
|
<i slot="unsupported">
|
|
The flasher is not available because your browser does not support Web
|
|
Serial. Open this page in Google Chrome or Microsoft Edge instead<span class="not-supported-i hidden">
|
|
(but not on your iOS device)</span>.
|
|
</i>
|
|
<slot name="activate">Install using multiple parts</slot>
|
|
</esp-web-install-button>
|
|
<h3>2.13 inch displays (rev. B)</h3>
|
|
<p><small>First released on block #841273 (2024-04-28). If on the back it shows rev. B below the block hash, and you
|
|
have a BOOT button next to the RESET button you have rev. B.</small></p>
|
|
|
|
<esp-web-install-button manifest="manifest_btclock_v3_213_revb.json">
|
|
<i slot="unsupported">
|
|
The flasher is not available because your browser does not support Web
|
|
Serial. Open this page in Google Chrome or Microsoft Edge instead<span class="not-supported-i hidden">
|
|
(but not on your iOS device)</span>.
|
|
</i>
|
|
<button slot="activate">I'm 100% sure I have the rev. B version, install it</button>
|
|
<slot name="activate">Install using multiple parts</slot>
|
|
</esp-web-install-button>
|
|
<h4>2.9 inch displays (custom, experimental)</h4>
|
|
<p><small>Offered as a courtesy, if you have the kit or bought it pre-built, you need the 2.13 inch version.</small>
|
|
</p>
|
|
<esp-web-install-button manifest="manifest_btclock_v3_29.json">
|
|
<i slot="unsupported">
|
|
The flasher is not available because your browser does not support Web
|
|
Serial. Open this page in Google Chrome or Microsoft Edge instead<span class="not-supported-i hidden">
|
|
(but not on your iOS device)</span>.
|
|
</i>
|
|
<slot name="activate">Install using multiple parts</slot>
|
|
<button slot="activate">I know what I'm doing. Install 2.9 inch version</button>
|
|
|
|
</esp-web-install-button>
|
|
<ul>
|
|
<li><a href="https://git.btclock.dev/btclock/btclock_v3/src/branch/main/.forgejo/workflows/push.yaml">CI script
|
|
compiling the
|
|
V3
|
|
firmware</a></li>
|
|
<li><a href="https://git.btclock.dev/btclock/btclock_v3/releases/latest">Release to be flashed</a><br>
|
|
<code id="commitHashV3"></code> / <code id="buildDateV3"></code>
|
|
</li>
|
|
<li><a href="https://git.btclock.dev/btclock/btclock_v3">V3 Source</a></li>
|
|
</ul>
|
|
|
|
<!-- V3 end -->
|
|
<hr>
|
|
<h3>Verify, don't trust</h2>
|
|
|
|
<ul>
|
|
<li><a href="https://git.btclock.dev/btclock/web-flasher">Source code of this website</a></li>
|
|
</ul>
|
|
<hr>
|
|
|
|
<p>When you are building it yourself, the first time you have to put the S3 mini in to boot mode: Press both side
|
|
buttons at the same time
|
|
(RST/BOOT),
|
|
then first release the RST button and then the boot button.</p>
|
|
|
|
<p>
|
|
If this website does not work, you can download <code>full-firmware.bin</code> from the releases page and use <a
|
|
href="https://web.esphome.io/">ESPHome Web Flasher</a> to flash it instead.
|
|
</p>
|
|
|
|
<h2>How it works</h2>
|
|
<p>
|
|
ESP Web Tools works by using
|
|
<a href="https://developer.mozilla.org/docs/Web/API/Web_Serial_API">Web Serial</a> and a manifest which
|
|
describes
|
|
the firmware. ESP Web Tools detects the
|
|
chipset of the connected ESP device and automatically selects the right
|
|
firmware variant from the manifest.
|
|
</p>
|
|
<p>
|
|
Web Serial is available in Google Chrome and Microsoft Edge
|
|
browsers<span class="not-supported-i hidden">
|
|
(but not on your iOS device)</span>. Android support should be possible but has not been implemented yet.
|
|
</p>
|
|
|
|
|
|
<div class="footer">
|
|
<div class="initiative">
|
|
ESP Web Tools is a project by
|
|
<a href="https://esphome.io">ESPHome</a>.<br />
|
|
Development is funded by
|
|
<a href="https://www.nabucasa.com">Nabu Casa</a>.
|
|
</div>
|
|
<div>
|
|
ESP Web Tools is
|
|
<a href="https://github.com/esphome/esp-web-tools">open source</a>.
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
if (/iPad|iPhone|iPod/.test(navigator.userAgent)) {
|
|
document.querySelector(".not-supported-i").classList.remove("hidden");
|
|
}
|
|
|
|
fetch("firmware_v3/tag.txt")
|
|
.then(response => response.text())
|
|
.then((response) => {
|
|
document.getElementById('version').innerHTML = response;
|
|
})
|
|
.catch(err => console.log(err))
|
|
|
|
fetch("firmware_v3/commit.txt")
|
|
.then(response => response.text())
|
|
.then((response) => {
|
|
document.getElementById('commitHashV3').innerHTML = response;
|
|
})
|
|
.catch(err => console.log(err))
|
|
|
|
fetch("firmware_v3/date.txt")
|
|
.then(response => response.text())
|
|
.then((response) => {
|
|
document.getElementById('buildDateV3').innerHTML = new Date(response.trim()).toLocaleString();
|
|
})
|
|
.catch(err => console.log(err))
|
|
</script>
|
|
</body>
|
|
|
|
</html> |