mirror of
https://github.com/OpenEPaperLink/OpenEPaperLink.git
synced 2026-03-21 04:06:29 +01:00
OTA update tweaks
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
"/www/painter.js",
|
||||
"/www/setup.html",
|
||||
"/www/setup.js",
|
||||
"/www/flash.js",
|
||||
"/www/upload-demo.html"
|
||||
]
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -530,6 +530,9 @@ options:
|
||||
<button id="confirmSelectRepo">Confirm</button><button id="cancelSelectRepo">Cancel</button>
|
||||
</div>
|
||||
<h4>Releases</h4>
|
||||
To update to the latest version, use the big 'update now' button if it is shown on top of this screen.<br>
|
||||
To up/downgrade to other versions: for the smoothest experience, first update the ESP32 part and<br>
|
||||
without rebooting, update the filesystem, then reboot the AP and reload the webpage.<br>
|
||||
<div id="releasetable" class="releasetable"></div>
|
||||
<h4 id="radio_release_title"></h4>
|
||||
<div id="radio_releasetable" class="releasetable"></div>
|
||||
|
||||
@@ -494,6 +494,12 @@ function updatecards() {
|
||||
} else {
|
||||
// $('#tag' + tagmac + ' .nextcheckin').innerHTML = "";
|
||||
}
|
||||
|
||||
if (item.dataset.nextupdate < (Date.now() / 1000) - servertimediff) {
|
||||
$('#tag' + tagmac + ' .waitingicon').style.display = 'inline-block';
|
||||
} else {
|
||||
$('#tag' + tagmac + ' .waitingicon').style.display = 'none';
|
||||
}
|
||||
})
|
||||
|
||||
$('#dashboardTagCount').innerHTML = tagcount;
|
||||
|
||||
@@ -19,7 +19,7 @@ export async function initUpdate() {
|
||||
gModuleType = "ESP32-C6";
|
||||
gShortName = "C6";
|
||||
}
|
||||
else if(apConfig?.H2 && apConfig.H2 == 1) {
|
||||
else if (apConfig?.H2 && apConfig.H2 == 1) {
|
||||
gIsH2 = true;
|
||||
gModuleType = "ESP32-H2";
|
||||
gShortName = "H2";
|
||||
@@ -71,13 +71,15 @@ export async function initUpdate() {
|
||||
print(`current env: ${sdata.env}`);
|
||||
print(`build date: ${formatEpoch(sdata.buildtime)}`);
|
||||
print(`esp32 version: ${sdata.buildversion}`);
|
||||
if(gModuleType != '') {
|
||||
var hex_ver = '0000' + sdata.ap_version.toString(16);
|
||||
print(`${gModuleType} version: ${hex_ver.slice(-4)}`);
|
||||
}
|
||||
print(`filesystem version: ${filesystemversion}`);
|
||||
print(`psram size: ${sdata.psramsize}`);
|
||||
print(`flash size: ${sdata.flashsize}`);
|
||||
if (gModuleType !== '') {
|
||||
let hex_ver = sdata.ap_version && !isNaN(sdata.ap_version)
|
||||
? ('0000' + sdata.ap_version.toString(16)).slice(-4)
|
||||
: 'unknown';
|
||||
print(`${gModuleType} version: ${hex_ver}`);
|
||||
}
|
||||
print("--------------------------", "gray");
|
||||
env = apConfig.env || sdata.env;
|
||||
if (sdata.env != env) {
|
||||
@@ -90,7 +92,7 @@ export async function initUpdate() {
|
||||
$('#environment').value = env;
|
||||
}
|
||||
|
||||
const rdata = await fetch(repoUrl).then(response => response.json())
|
||||
const rdata = await fetch(repoUrl).then(response => response.json())
|
||||
const JsonName = 'firmware_' + gShortName + '.json';
|
||||
const releaseDetails = rdata.map(release => {
|
||||
const assets = release.assets;
|
||||
@@ -137,7 +139,7 @@ export async function initUpdate() {
|
||||
releaseDetails.forEach(release => {
|
||||
if (rowCounter < 4 && release?.html_url) {
|
||||
const tableRow = document.createElement('tr');
|
||||
let tablerow = `<td><a href="${release.html_url}" target="_new">${release.tag_name}</a></td><td>${release.date}</td><td>${release.name}</td><td><button type="button" onclick="otamodule.updateWebpage('${release.file_url}','${release.tag_name}', true)">Filesystem</button></td><td><button type="button" onclick="otamodule.updateESP('${release.bin_url}', true)">ESP32</button></td>`;
|
||||
let tablerow = `<td><a href="${release.html_url}" target="_new">${release.tag_name}</a></td><td>${release.date}</td><td>${release.name}</td><td><button type="button" onclick="otamodule.updateESP('${release.bin_url}', true)">ESP32</button></td><td><button type="button" onclick="otamodule.updateWebpage('${release.file_url}','${release.tag_name}', true)">Filesystem</button></td>`;
|
||||
if (release.tag_name == currentVer) {
|
||||
tablerow += "<td>current version</td>";
|
||||
} else if (release.date < formatEpoch(currentBuildtime)) {
|
||||
@@ -150,85 +152,86 @@ export async function initUpdate() {
|
||||
rowCounter++;
|
||||
}
|
||||
if (release?.firmware_url) {
|
||||
radioFwCounter++;
|
||||
radioFwCounter++;
|
||||
}
|
||||
});
|
||||
$('#releasetable').innerHTML = "";
|
||||
$('#releasetable').appendChild(table);
|
||||
|
||||
if(radioFwCounter > 0) {
|
||||
const table1 = document.createElement('table');
|
||||
const tableHeader1 = document.createElement('tr');
|
||||
if (radioFwCounter > 0) {
|
||||
const table1 = document.createElement('table');
|
||||
const tableHeader1 = document.createElement('tr');
|
||||
|
||||
tableHeader1.innerHTML = '<th>Release</th><th>Date</th><th>Name</th><th><center>Update</center></th><th>Version</th><th>Remark</th>';
|
||||
table1.appendChild(tableHeader1);
|
||||
tableHeader1.innerHTML = '<th>Release</th><th>Date</th><th>Name</th><th><center>Update</center></th><th>Version</th><th>Remark</th>';
|
||||
table1.appendChild(tableHeader1);
|
||||
|
||||
rowCounter = 0;
|
||||
for (const release of releaseDetails) {
|
||||
if (rowCounter < 4 && release?.firmware_url) {
|
||||
const tableRow = document.createElement('tr');
|
||||
var tablerow;
|
||||
var firmwareVer = "unknown";
|
||||
var release_url = release.firmware_url;
|
||||
rowCounter = 0;
|
||||
for (const release of releaseDetails) {
|
||||
if (rowCounter < 4 && release?.firmware_url) {
|
||||
const tableRow = document.createElement('tr');
|
||||
var tablerow;
|
||||
var firmwareVer = "unknown";
|
||||
var release_url = release.firmware_url;
|
||||
|
||||
tablerow = `<td><a href="${release.html_url}" target="_new">${release.tag_name}</a></td><td>${release.date}</td><td>${release.name}</td>`;
|
||||
tablerow += `<td><button type="button" onclick="otamodule.updateC6H2('${release_url}')">${gModuleType}</button></td>`;
|
||||
const firmwareUrl = 'http://proxy.openepaperlink.org/proxy.php?url=' + release.firmware_url;
|
||||
firmwareVer = await fetch(firmwareUrl, { method: 'GET'})
|
||||
firmwareVer = await fetch(firmwareUrl, { method: 'GET' })
|
||||
.then(function (response) { return response.json(); })
|
||||
.then(function (response) {
|
||||
return response[2]['version']; })
|
||||
.catch(error => {
|
||||
print('Error fetching releases:' + error, "red");
|
||||
});
|
||||
tablerow += '<td>' + firmwareVer + '</td><td>';
|
||||
if(firmwareVer != 'unknown') {
|
||||
let Ver = Number('0x' + firmwareVer);
|
||||
if(Ver > gCurrentRfVer) {
|
||||
tablerow += 'newer';
|
||||
}
|
||||
else if (Ver < gCurrentRfVer) {
|
||||
tablerow += 'older';
|
||||
}
|
||||
else if(!Number.isNaN(Ver)){
|
||||
tablerow += 'current version';
|
||||
}
|
||||
}
|
||||
tablerow += '</td>';
|
||||
tableRow.innerHTML = tablerow;
|
||||
table1.appendChild(tableRow);
|
||||
rowCounter++;
|
||||
}
|
||||
};
|
||||
return response[2]['version'];
|
||||
})
|
||||
.catch(error => {
|
||||
print('Error fetching releases:' + error, "red");
|
||||
});
|
||||
tablerow += '<td>' + firmwareVer + '</td><td>';
|
||||
if (firmwareVer != 'unknown') {
|
||||
let Ver = Number('0x' + firmwareVer);
|
||||
if (Ver > gCurrentRfVer) {
|
||||
tablerow += 'newer';
|
||||
}
|
||||
else if (Ver < gCurrentRfVer) {
|
||||
tablerow += 'older';
|
||||
}
|
||||
else if (!Number.isNaN(Ver)) {
|
||||
tablerow += 'current version';
|
||||
}
|
||||
}
|
||||
tablerow += '</td>';
|
||||
tableRow.innerHTML = tablerow;
|
||||
table1.appendChild(tableRow);
|
||||
rowCounter++;
|
||||
}
|
||||
};
|
||||
|
||||
$('#radio_releasetable').innerHTML = "";
|
||||
$('#radio_releasetable').appendChild(table1);
|
||||
$('#radio_releasetable').innerHTML = "";
|
||||
$('#radio_releasetable').appendChild(table1);
|
||||
}
|
||||
|
||||
const table2 = document.createElement('table');
|
||||
{
|
||||
const tableHeader2 = document.createElement('tr');
|
||||
tableHeader2.innerHTML = '<th>Firmware</th><th><center>Update</center></th>';
|
||||
table2.appendChild(tableHeader2);
|
||||
const tableRow = document.createElement('tr');
|
||||
const table2 = document.createElement('table');
|
||||
{
|
||||
const tableHeader2 = document.createElement('tr');
|
||||
tableHeader2.innerHTML = '<th>Firmware</th><th><center>Update</center></th>';
|
||||
table2.appendChild(tableHeader2);
|
||||
const tableRow = document.createElement('tr');
|
||||
tablerow = '<td title="manual upload, make sure all four files are present">Binaries from <a href="/edit" target="littlefs">file system</a></td>';
|
||||
tablerow += `<td><button type="button" onclick="otamodule.updateC6H2('')">${gModuleType}</button></td>`;
|
||||
tableRow.innerHTML = tablerow;
|
||||
table2.appendChild(tableRow);
|
||||
}
|
||||
{
|
||||
const tableRow = document.createElement('tr');
|
||||
const Url = "https://raw.githubusercontent.com/" + repo +
|
||||
"/master/binaries/ESP32-" + gShortName +
|
||||
"/firmware_" + gShortName + ".json";
|
||||
tablerow += `<td><button type="button" onclick="otamodule.updateC6H2('')">${gModuleType}</button></td>`;
|
||||
tableRow.innerHTML = tablerow;
|
||||
table2.appendChild(tableRow);
|
||||
}
|
||||
{
|
||||
const tableRow = document.createElement('tr');
|
||||
const Url = "https://raw.githubusercontent.com/" + repo +
|
||||
"/master/binaries/ESP32-" + gShortName +
|
||||
"/firmware_" + gShortName + ".json";
|
||||
|
||||
tablerow = `<td><a href="https://github.com/${repo}/tree/master/binaries/ESP32-${gShortName}/" target="_new">Latest version from repo</a></td>`;
|
||||
tablerow += `<td><button type="button" onclick="otamodule.updateC6H2('${Url}')">${gModuleType}</button></td>`;
|
||||
tableRow.innerHTML = tablerow;
|
||||
table2.appendChild(tableRow);
|
||||
}
|
||||
$('#radio_releasetable1').innerHTML = "";
|
||||
$('#radio_releasetable1').appendChild(table2);
|
||||
tablerow += `<td><button type="button" onclick="otamodule.updateC6H2('${Url}')">${gModuleType}</button></td>`;
|
||||
tableRow.innerHTML = tablerow;
|
||||
table2.appendChild(tableRow);
|
||||
}
|
||||
$('#radio_releasetable1').innerHTML = "";
|
||||
$('#radio_releasetable1').appendChild(table2);
|
||||
|
||||
disableButtons(buttonState);
|
||||
}
|
||||
@@ -454,7 +457,7 @@ export async function updateC6H2(Url) {
|
||||
disableButtons(true);
|
||||
running = true;
|
||||
errors = 0;
|
||||
const ReleaseUrl = Url.substring(0,Url.lastIndexOf('/'));
|
||||
const ReleaseUrl = Url.substring(0, Url.lastIndexOf('/'));
|
||||
const consoleDiv = document.getElementById('updateconsole');
|
||||
consoleDiv.scrollTop = consoleDiv.scrollHeight;
|
||||
const formData = new FormData();
|
||||
|
||||
Reference in New Issue
Block a user