keypatch/data/admin.html

147 lines
6.4 KiB
HTML

<!DOCTYPE HTML> <!-- For more information visit: https://fipsok.de -->
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="style.css">
<title>ESP8266 Admin</title>
<script>
addEventListener('load', () => {
renew(), once();
let output = document.querySelector('#note');
let btn = document.querySelectorAll('button');
let span = document.querySelectorAll('#right span');
btn[0].addEventListener('click', () => {
location = '/fs.html';
});
btn[1].addEventListener('click', () => {
location = '/';
});
btn[2].addEventListener('click', () => {
location = '/portconfig';
});
btn[3].addEventListener('click', check.bind(this, document.querySelector('input')));
btn[4].addEventListener('click', re.bind(this, 'reconnect'));
btn[5].addEventListener('click', () => {
if (confirm('Bist du sicher!')) re('restart');
});
async function once(val = '',arg) {
try {
let resp = await fetch('/admin/once', { method: 'POST', body: val});
let obj = await resp.json();
output.innerHTML = '';
output.classList.remove('note');
document.querySelector('form').reset();
if (val.length == 0) myIv = setInterval(renew, 1000);
if (arg == 'reconnect') re(arg);
document.getElementById('file').innerHTML = obj['File'];
document.getElementById('build').innerHTML = obj['Build'];
document.getElementById('size').innerHTML = obj['SketchSize'];
document.getElementById('space').innerHTML = obj['SketchSpace'];
document.getElementById('ip').innerHTML = obj['LocalIP'];
document.getElementById('hostname').innerHTML = obj['Hostname'];
document.getElementById('ssid').innerHTML = obj['SSID'];
document.getElementById('gateway').innerHTML = obj['GatewayIP'];
document.getElementById('channel').innerHTML = obj['Channel'];
document.getElementById('mac').innerHTML = obj['MacAddress'];
document.getElementById('subnet').innerHTML = obj['SubnetMask'];
document.getElementById('bssid').innerHTML = obj['BSSID'];
document.getElementById('clientip').innerHTML = obj['ClientIP'];
document.getElementById('dnsip').innerHTML = obj['DnsIP'];
document.getElementById('reset').innerHTML = obj['ResetReason'];
document.getElementById('cpu').innerHTML = obj['CpuFreqMHz'] + " MHz";
document.getElementById('heap').innerHTML = obj['FreeHeap'];
document.getElementById('frag').innerHTML = obj['HeapFrag'] + "%";
document.getElementById('flashsize').innerHTML = obj['ChipSize'];
document.getElementById('flashspeed').innerHTML = obj['ChipSpeed'] + " MHz";
document.getElementById('flashmode').innerHTML = obj['ChipMode'];
document.getElementById('ide').innerHTML = obj['IdeVersion'].replace(/(\d)(\d)(\d)(\d)/,obj['IdeVersion'][3]!=0 ? '$1.$3.$4' : '$1.$3.');
document.getElementById('core').innerHTML = obj['CoreVersion'].replace(/_/g,'.');
document.getElementById('sdk').innerHTML = obj['SdkVersion'];
} catch(err) {
re();
}
}
async function renew() {
const resp = await fetch('admin/renew');
const array = await resp.json();
document.getElementById('runtime').innerHTML = array[0];
document.getElementById('rssi').innerHTML = array[1];
document.getElementById('adc').innerHTML = array[2];
}
function check(inObj) {
!inObj.checkValidity() ? (output.innerHTML = inObj.validationMessage, output.classList.add('note')) : (once(inObj.value, 'reconnect'));
}
function re(arg = '') {
clearInterval(myIv);
fetch(arg);
output.classList.add('note');
if (arg == 'restart') {
output.innerHTML = 'Der Server wird neu gestartet. Die Daten werden in 15 Sekunden neu geladen.';
setTimeout(once, 15000);
}
else if (arg == 'reconnect'){
output.innerHTML = 'Die WiFi Verbindung wird neu gestartet. Daten werden in 10 Sekunden neu geladen.';
setTimeout(once, 10000);
}
else {
output.innerHTML = 'Es ist ein Verbindungfehler aufgetreten. Es wird versucht neu zu verbinden.';
setTimeout(once, 3000);
}
}
});
</script>
</head>
<body>
<h1>ESP8266 Admin Page</h1>
<main>
<table>
<tr><td>Runtime ESP:</td><td><span id="runtime">0</span></td></tr>
<tr><td>WiFi RSSI:</td><td><div><span id="rssi"></span> dBm</div></td></tr>
<tr><td>ADC/VCC:</td><td><span id="adc">0</span></td></tr>
<tr><td>Sketch Name:</td><td><span id="file">?</span></td></tr>
<tr><td>Sketch Build:</td><td><span id="build">0</span></td></tr>
<tr><td>SketchSize:</td><td><span id="size">0</span></td></tr>
<tr><td>FreeSketchSpace:</td><td><span id="space">0</span></td></tr>
<tr><td>IPv4 Address:</td><td><span id="ip">0</span></td></tr>
<tr><td>Hostname:</td><td><span id="hostname">?</span></td></tr>
<tr><td>Connected to:</td><td><span id="ssid">?</span></td></tr>
<tr><td>Gateway IP:</td><td><span id="gateway">0</span></td></tr>
<tr><td>Channel:</td><td><span id="channel">0</span></td></tr>
<tr><td>MacAddress:</td><td><span id="mac">0</span></td></tr>
<tr><td>SubnetMask:</td><td><span id="subnet">0</span></td></tr>
<tr><td>BSSID:</td><td><span id="bssid">0</span></td></tr>
<tr><td>Client IP:</td><td><span id="clientip">0</span></td></tr>
<tr><td>DnsIP:</td><td><span id="dnsip">0</span></td></tr>
<tr><td>Reset Ground:</td><td><span id="reset">?</span></td></tr>
<tr><td>CPU Freq:</td><td><span id="cpu">0</span> MHz</td></tr>
<tr><td>FreeHeap:</td><td><span id="heap">0</span></td></tr>
<tr><td>Heap Fragmentation:</td><td><span id="frag">0</span>%</td></tr>
<tr><td>FlashSize:</td><td><span id="flashsize">0</span></td></tr>
<tr><td>FlashSpeed:</td><td><span id="flashspeed">0</span> MHz</td></tr>
<tr><td>FlashMode:</td><td><span id="flashmode">0</span></td></tr>
<tr><td>Arduino IDE Version:</td><td><span id="ide">0</span></td></tr>
<tr><td>Esp Core Version:</td><td><span id="core">0</span></td></tr>
<tr><td>SDK Version:</td><td><span id="sdk">0</span></td></tr>
</table>
</main>
<div>
<button>Filesystem</button>
<button>Startseite</button>
<button>Port Konfiguration</button>
</div>
<div id="note"></div>
<div>
<form>
<input placeholder="neuer Hostname" pattern="([A-Za-z0-9\-]{1,32})" title="Es dürfen nur Buchstaben (a-z, A-Z), Ziffern (0-9) und Bindestriche (-) enthalten sein. Maximal 32 Zeichen" required>
<button type="button">Name Senden</button>
</form>
</div>
<div>
<button>WiFi Reconnect</button>
<button>ESP Restart</button>
</div>
</body>
</html>