<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>%DEVICENAME%</title> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="static/css/bootstrap.min.css"> <link rel="stylesheet" href="static/css/custom.css"> <link rel="stylesheet" href="static/css/tweaks.css"> <script src="static/js/jquery.min.js"></script> <script src="static/js/bootstrap.min.js"></script> <script src="static/js/websocket.js"></script> <link rel="apple-touch-icon" sizes="180x180" href="static/img/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="static/img/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="static/img/favicon-16x16.png"> <link rel="manifest" href="static/img/site.webmanifest"> </head> <body> <nav class="navbar fixed-top navbar-dark bg-primary" id="navbar1"> <a class="navbar-brand" href="#"> <img src="static/img/logo.png" width="30" height="30" class="d-inline-block align-top mr-1" alt=""> %DEVICENAME% </a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#collapsingNavbar" aria-controls="collapsingNavbar" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="collapsingNavbar"> <ul class="navbar-nav nav mr-auto mt-2 mt-lg-0"> <li class="nav-item"><a class="nav-link active" role="tab" data-toggle="tab" href="#tab_home">Home</a></li> <li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_maintenance">Wartung</a></li> <li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_source">Einstellungen</a></li> <li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_sysinfo">Systeminfo</a></li> <li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_fwupdate">Update</a></li> </ul> </div> </nav> <main class="container"> <!-- Tabs Content --> <div class="tab-content"> <!-- Div Tab Home--> <div id="tab_home" class="tab-pane fade show active" role="tabpanel"> <div class="col text-center"> <div class="jumbotron"> <img src="static/img/logo.png" width="120" height="120" class="img-fluid" alt=""> <h3 class="pt-3">%DEVICENAME%</h3> </div> </div> <!-- Div Group Battery remain --> <hr /> <p> <h4>Akku Ladestand</h4> <div class="progress"> <div class="progress-bar text-light" role="progressbar" aria-valuenow="%BAT_REMAIN_CAPACITY%" aria-valuemin="0" aria-valuemax="100" style="width: %BAT_REMAIN_CAPACITY%%"> %BAT_REMAIN_CAPACITY%% </div> </div> </p> <!-- Div Group Battery remain --> <!-- Div Group current Mode --> <hr /> <p> <h4>aktueller Modus</h4> <input class="form-control" type="text" placeholder="%SYSTEM_STATUS%" readonly> </p> <!-- Div Group current Mode --> <!-- Div Group Faction Points --> <hr /> <p> <h4>aktueller Punktestand</h4> <div class="table-responsive"> <table class="table table-borderless table-dark"> <thead> <tr> <th class="text-center" scope="col">%NAME_FAC_1%</th> <th class="text-center" scope="col">%NAME_FAC_2%</th> <th class="text-center" scope="col">%NAME_FAC_3%</th> </tr> </thead> <tbody> <tr> <td class="mx-auto"><img src="static/img/logo_fac1.png" class="rounded mx-auto img-fluid d-block" alt="..."></td> <td class="mx-auto"><img src="static/img/logo_fac2.png" class="rounded mx-auto img-fluid d-block" alt="..."></td> <td class="mx-auto"><img src="static/img/logo_fac3.png" class="rounded mx-auto img-fluid d-block" alt="..."></td> </tr> <tr> <td class="text-center">%POINTS_FAC_1%</td> <td class="text-center">%POINTS_FAC_2%</td> <td class="text-center">%POINTS_FAC_3%</td> </tr> </tbody> </table> </div> </p> <!-- Div GroupFaction Points --> <!-- Div Group DTC Table --> <div %SHOW_DTC_TABLE%> <hr /> <p> <h4>Fehlercodes</h4> <table class="table"> <tbody> <tr> <th class="col-6" scope="col">Zeitstempel</th> <th class="col-2" scope="col">Fehlercode</th> <th class="col-2" scope="col">Schwere</th> <th class="col-2" scope="col">Aktiv</th> </tr> %DTC_TABLE% </tbody> </table> </p> </div> <!-- Div Group DTC Table --> </div> <!-- Div Tab Home--> <!-- Div Tab Maintenance --> <div id="tab_maintenance" class="tab-pane fade" role="tabpanel"> <h3>Wartung</h3> <!-- Div Group Reset Timers --> <hr /> <p> <h4>Punkte zurücksetzen</h4> <form action="post.htm" method="POST" class="form-horizontal"> <div class="form-group row"> <div class="col text-center"> <button name="resetpoints" type="submit" class="btn btn-outline-primary">Reset</button> </div> </div> </form> </p> <!-- Div Group Reset Timers --> <!-- Div Group EEPROM formatting --> <hr /> <p> <h4>EEPROM formatieren</h4> <div class="alert alert-primary alert-dismissable show fade" role="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button> <strong>Achtung!</strong><br> Das Formatieren der EEPROM-Bereiche sollte nur ausgeführt werden wenn es unbedingt erforderlich ist! Hierdurch werden alle Einstellungen zurück gesetzt bzw. alle Betriebsdaten gehen verloren. Folgende Situationen erfordern unter anderem eine Formatierung: - Erstinitialisierung (bei neu aufgebautem Gerät) - Firmware-Update (nur wenn es die Release-Notes fordern) </div> <form action="post.htm" method="POST" class="form-horizontal"> <div class="form-group row"> <div class="offset-4 col-8"> <div class="form-check"> <input class="form-check-input" type="checkbox" name="reset_ee_cfg" id="reset_ee_cfg"> <label class="form-check-label" for="reset_ee_cfg"> Bereich "CFG" </label> </div> <div class="form-check"> <input class="form-check-input" type="checkbox" name="reset_ee_pds" id="reset_ee_pds"> <label class="form-check-label" for="reset_ee_pds"> Bereich "PDS" </label> </div> </div> </div> <div class="form-group row"> <div class="col text-center"> <button name="reset_ee_btn" type="submit" class="btn btn-outline-primary">EEPROM formatieren</button> </div> </div> </form> </p> <!-- Div Group EEPROM formatting --> <!-- Div Group Device Reboot --> <hr /> <p> <h4>Gerät neustarten</h4> <form action="post.htm" method="POST" class="form-horizontal"> <div class="form-group row"> <div class="col text-center"> <button name="reboot" type="submit" class="btn btn-outline-primary">Reboot</button> </div> </div> </form> </p> <!-- Div Group Device Reboot --> </div> <!-- Div Tab Maintenance --> <!-- Div Tab Settings--> <div id="tab_source" class="tab-pane fade" role="tabpanel"> <h3>Einstellungen</h3> <!-- Div Group Battery Type --> <hr /> <p> <h4>Akku-Variante</h4> <form action="post.htm" method="POST" class="form-horizontal"> <div class="form-group row"> <label for="battery_select" class="control-label col-4">Akku</label> <div class="col-8"> <select id="battery_select" name="battery_select" class="select form-control"> %BATTERY_SELECT_OPTIONS% </select> </div> </div> <div class="form-group row"> <div class="col text-center"> <button name="settingssave" type="submit" class="btn btn-outline-primary">Übernehmen</button> </div> </div> </form> </p> <!-- Div Group Battery Type --> </div> <!-- Div Tab Settings --> <!-- Div Tab SystemInfo --> <div id="tab_sysinfo" class="tab-pane fade" role="tabpanel"> <h3>Systeminfo</h3> <!-- Div Group Sysinfo:Geraeteinfo --> <hr /> <p> <h4>Gerät</h4> <table class="table"> <tbody> <tr> <th class="col-7" scope="col">Parameter</td> <th class="col-5" scope="col">Value</td> </tr> <tr> <td>Hostname</td> <td>%HOSTNAME%</td> </tr> <tr> <td>Battery Voltage</td> <td>%BAT_VOLTAGE%V</td> </tr> <tr> <td>Battery Remain</td> <td>%BAT_REMAIN_CAPACITY%%</td> </tr> </table> </p> <!-- Div Group Sysinfo:Geraeteinfo --> <!-- Div Group Sysinfo:Settings --> <hr /> <p> <h4>Einstellungen</h4> <table class="table"> <tbody> <tr> <th class="col-7" scope="col">Parameter</td> <th class="col-5" scope="col">Value</td> </tr> <tr> <td>Battery_type</td> <td>%BATTERY_TYPE%</td> </tr> <tr> <td>EEPROM Version</td> <td>%EEPROM_VERSION%</td> </tr> <tr> <td>Checksum</td> <td>%CONFIG_CHECKSUM%</td> </tr> </tbody> </table> </p> <!-- Div Group Sysinfo:Settings --> <!-- Div Group Sysinfo:Persistance --> <hr /> <p> <h4>Betriebsdaten</h4> <table class="table"> <tbody> <tr> <th class="col-7" scope="col">Parameter</td> <th class="col-5" scope="col">Value</td> </tr> <tr> <td>writeCycleCounter</td> <td>%WRITE_CYCLE_COUNT%</td> </tr> <tr> <td>PersistenceMarker</td> <td>%PERSISTENCE_MARKER%</td> </tr> <tr> <td>activeFaction</td> <td>%ACTIVE_FACTION%</td> </tr> <tr> <td>faction_1_timer</td> <td>%POINTS_FAC_1%</td> </tr> <tr> <td>faction_2_timer</td> <td>%POINTS_FAC_2%</td> </tr> <tr> <td>faction_3_timer</td> <td>%POINTS_FAC_3%</td> </tr> <tr> <td>checksum</td> <td>%PERSISTANCE_CHECKSUM%</td> </tr> </table> </p> <!-- Div Group Sysinfo:Persistance --> <!-- Div Group LiveDebug --> <hr /> <p> <h4>Live Debug</h4> <div class="form-group row"> <textarea class="form-control" spellcheck="false" id="livedebug-out" rows="3" readonly></textarea> </div> <div class="form-group row"> <div class="col text-center"> <button id="btn-ws-start" class="btn btn-outline-primary">Start</button> <button id="btn-ws-stop" class="btn btn-outline-primary ml-2">Stop</button> </div> </div> </p> <!-- Div Group LiveDebug --> </div> <!-- Div Tab SystemInfo --> <!-- Div Tab Firmware Update--> <div id="tab_fwupdate" class="tab-pane fade" role="tabpanel"> <h3>Firmware</h3> <!-- Div Group VersionInfo --> <hr /> <p> <h4>Version-Info</h4> <table class="table"> <tbody> <tr> <th class="col-7" scope="col">Parameter</td> <th class="col-5" scope="col">Value</td> </tr> <tr> <td>Firmware Version</td> <td>%SW_VERSION%</td> </tr> <tr> <td>Flash Version</td> <td>%FS_VERSION%</td> </tr> <tr> <td>Git Revision</td> <td>%GIT_REV%</td> </tr> </table> </p> <!-- Div Group VersionInfo --> <!-- Div Group EEPROM Backup --> <hr /> <p> <h4>EEPROM-Backup</h4> <div class="form-group row"> <div class="col text-center"> <a class="btn btn-outline-primary" href="eejson" role="button" id="ee-backup-download">Download</a> </div> </div> </p> <!-- Div Group EEPROM Backup --> <!-- Div Group EEPROM Restore --> <hr /> <p> <h4>EEPROM-Restore</h4> <form method='POST' action='eeRestore' enctype='multipart/form-data'> <div class="form-group row"> <div class="custom-file"> <input type="file" name="ee-restore-file" class="custom-file-input" id="ee-restore-file" accept=".ee.json" required /> <label class="custom-file-label" for="ee-restore-file">EEPROM-Backup auswählen</label> </div> </div> <div class="form-group row"> <div class="col text-center"> <button name="submit" type="submit" class="btn btn-outline-primary">Restore starten</button> </div> </div> </form> </p> <!-- Div Group EEPROM Restore --> <!-- Div Group Firmware Update --> <hr /> <p> <h4>Firmware-Update</h4> <form method='POST' action='doUpdate' enctype='multipart/form-data'> <div class="form-group row"> <div class="custom-file"> <input type="file" name="fw-update-file" class="custom-file-input" id="fw-update-file" accept=".fw.bin,.fs.gz" required /> <label class="custom-file-label" for="fw-update-file">Firmware-Update auswählen</label> </div> </div> <div class="form-group row"> <div class="col text-center"> <button name="submit" type="submit" class="btn btn-outline-primary">Update starten</button> </div> </div> </form> </p> <!-- Div Group Firmware Update --> </div> <!-- Div Tab Firmware Update--> </div> <!-- Tabs Content --> </main> <!-- Footer --> <footer class="page-footer navbar-dark bg-primary font-small fixed-bottom"> <div class="container-fluid text-center"> <div class="footer-copyright text-center py-3"> <span class="text-muted">© 2023 - <a class="text-reset fw-bold" href="https://hiabuto.de/">Hiabuto Defence Systems</a></span> </div> </div> </footer> <!-- Footer --> <!-- Modal Dialog --> <div class="modal fade" id="dtcModal" tabindex="-1" role="dialog" aria-labelledby="dtcModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="dtcModalLabel">DTC-Description</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> <p class="dtc-desc">DTC Description</p> <p class="dtc-debugval">DTC DebugVal</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button> </div> </div> </div> </div> <!-- Modal Dialog --> <script> $('.navbar-nav>li>a').on('click', function () { $('.navbar-collapse').collapse('hide'); }); document.querySelector('.custom-file-input').addEventListener('change', function (e) { var fileName = document.getElementById("fw-update-file").files[0].name; var nextSibling = e.target.nextElementSibling nextSibling.innerText = fileName }); $(document).ready(function () { $("tr[data-dtc]").each(function (i) { $(this).attr('data-toggle', "modal"); $(this).attr('data-target', "#dtcModal"); }); }); $('#dtcModal').on('show.bs.modal', function (event) { var dtctr = $(event.relatedTarget) var dtc = dtctr.data('dtc') var debugval = dtctr.data('debugval') var modal = $(this) $.getJSON('static/tt_dtc/dtc_' + dtc + '.json', function (data) { modal.find('.modal-title').text(data.title) modal.find('.dtc-desc').text(data.description) if (debugval > 0) { modal.find('.dtc-debugval').text("Debugvalue: " + debugval) } else { modal.find('.dtc-debugval').remove() } }).fail(function () { console.log("An error has occurred."); modal.find('.modal-title').text("Fehler") modal.find('.dtc-desc').text("DTC-Beschreibung konnte nicht geladen werden") }); }); </script> </body> </html>