696 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			696 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <!DOCTYPE html>
 | ||
| <html>
 | ||
| 
 | ||
| <head>
 | ||
|   <meta charset="utf-8" />
 | ||
|   <title>KTM CAN Chain Oiler</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="">
 | ||
|       KTM CAN ChainLube
 | ||
|     </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_source">Wegstrecke</a></li>
 | ||
|         <li class="nav-item"><a class="nav-link" role="tab" data-toggle="tab" href="#tab_lube">Schmierung</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_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">KTM CAN Chain Lube</h3>
 | ||
|           </div>
 | ||
|         </div>
 | ||
|         <hr />
 | ||
|         <p>
 | ||
|         <h4>Tankinhalt verbleibend</h4>
 | ||
|         <div class="progress">
 | ||
|           <div class="progress-bar text-light" role="progressbar" aria-valuenow="%TANK_REMAIN_CAPACITY%"
 | ||
|             aria-valuemin="0" aria-valuemax="100" style="width: %TANK_REMAIN_CAPACITY%%">
 | ||
|             %TANK_REMAIN_CAPACITY%%
 | ||
|           </div>
 | ||
|         </div>
 | ||
|         </p>
 | ||
|         <hr />
 | ||
|         <p>
 | ||
|         <h4>aktueller Modus</h4>
 | ||
|         <input class="form-control" type="text" placeholder="%SYSTEM_STATUS%" readonly>
 | ||
|         </p>
 | ||
|         <hr />
 | ||
|         <div %SHOW_DTC_TABLE%>
 | ||
|           <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>
 | ||
|           <hr />
 | ||
|         </div>
 | ||
|       </div>
 | ||
|       <!-- Div Tab Home-->
 | ||
|       <!-- Div Tab Source Settings-->
 | ||
|       <div id="tab_source" class="tab-pane fade" role="tabpanel">
 | ||
|         <h3>Wegstreckenerfassung</h3>
 | ||
|         <hr />
 | ||
|         <p>
 | ||
|         <h4>Signalquelle</h4>
 | ||
|         <form action="post.htm" method="POST" class="form-horizontal">
 | ||
|           <div class="form-group row">
 | ||
|             <label for="sourceselect" class="control-label col-4">Schnittstelle</label>
 | ||
|             <div class="col-8">
 | ||
|               <select id="sourceselect" name="sourceselect" class="select form-control">
 | ||
|                 %SOURCE_SELECT_OPTIONS%
 | ||
|               </select>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|           <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>
 | ||
|             Bei Änderung der Signalquelle wird der CAN-Oiler neu gestartet.
 | ||
|             Dadurch wird die WiFi-Verbindung getrennt und muss neu aufgebaut werden.
 | ||
|           </div>
 | ||
|           <div class="form-group row">
 | ||
|             <div class="col text-center">
 | ||
|               <button name="sourcesave" type="submit" class="btn btn-outline-primary">Übernehmen</button>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|         </form>
 | ||
|         </p>
 | ||
|         <!-- Div Source:Impulse Settings-->
 | ||
|         <div %SHOW_IMPULSE_SETTINGS%>
 | ||
|           <hr />
 | ||
|           <p>
 | ||
|           <h4>Einstellungen Impulseingang</h4>
 | ||
|           <form action="post.htm" method="POST" class="form-horizontal">
 | ||
| 
 | ||
|             <div class="form-group row">
 | ||
|               <label for="tirewidth" class="control-label col-4">Reifenbreite</label>
 | ||
|               <div class="col-8">
 | ||
|                 <div class="input-group">
 | ||
|                   <input id="tirewidth" name="tirewidth" type="text" required="required" class="form-control"
 | ||
|                     value="%TIRE_WIDTH_MM%">
 | ||
|                   <div class="input-group-append">
 | ||
|                     <span class="input-group-text">mm</span>
 | ||
|                   </div>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
| 
 | ||
|             <div class="form-group row">
 | ||
|               <label for="tireratio" class="control-label col-4">Höhe/Breite-Verhältniss</label>
 | ||
|               <div class="col-8">
 | ||
|                 <div class="input-group">
 | ||
|                   <input id="tireratio" name="tireratio" type="text" required="required" class="form-control"
 | ||
|                     value="%TIRE_RATIO%">
 | ||
|                   <div class="input-group-append">
 | ||
|                     <span class="input-group-text">mm</span>
 | ||
|                   </div>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|             <div class="form-group row">
 | ||
|               <label for="tiredia" class="control-label col-4">Felgendurchmesser</label>
 | ||
|               <div class="col-8">
 | ||
|                 <div class="input-group">
 | ||
|                   <input id="tiredia" name="tiredia" type="text" required="required" class="form-control"
 | ||
|                     value="%RIM_DIAMETER%">
 | ||
|                   <div class="input-group-append">
 | ||
|                     <span class="input-group-text">"</span>
 | ||
|                   </div>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|             <div class="form-group row">
 | ||
|               <label for="pulserev" class="control-label col-4">Pulse pro Umdrehung</label>
 | ||
|               <div class="col-8">
 | ||
|                 <div class="input-group">
 | ||
|                   <input id="pulserev" name="pulserev" type="text" required="required" class="form-control"
 | ||
|                     value="%PULSE_PER_REV%">
 | ||
|                   <div class="input-group-addon"></div>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|             <div class="form-group row">
 | ||
|               <div class="col text-center">
 | ||
|                 <button name="pulsesave" type="submit" class="btn btn-outline-primary">Speichern</button>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </form>
 | ||
|           </p>
 | ||
|           <hr />
 | ||
|         </div>
 | ||
|         <!-- Div Source:Impulse Settings-->
 | ||
|         <!-- Div Source:CAN Settings-->
 | ||
|         <div %SHOW_CAN_SETTINGS%>
 | ||
|           <hr />
 | ||
|           <p>
 | ||
|           <h4>Einstellungen CAN-Bus</h4>
 | ||
|           <form action="post.htm" method="POST" class="form-horizontal">
 | ||
|             <div class="form-group row">
 | ||
|               <label for="cansource" class="control-label col-4">Model</label>
 | ||
|               <div class="col-8">
 | ||
|                 <select id="cansource" name="cansource" class="select form-control">
 | ||
|                   %CANSOURCE_SELECT_OPTIONS%
 | ||
|                 </select>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|             <div class="form-group row">
 | ||
|               <div class="col text-center">
 | ||
|                 <button name="cansave" type="submit" class="btn btn-outline-primary">Speichern</button>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </form>
 | ||
|           </p>
 | ||
|           <hr />
 | ||
|         </div>
 | ||
|         <!-- Div Source:CAN Settings-->
 | ||
|         <!-- Div Source:GPS Settings-->
 | ||
|         <div %SHOW_GPS_SETTINGS%>
 | ||
|           <hr />
 | ||
|           <p>
 | ||
|           <h4>Einstellungen GPS</h4>
 | ||
|           <form action="post.htm" method="POST" class="form-horizontal">
 | ||
|             <div class="form-group row">
 | ||
|               <label for="gpsbaud" class="control-label col-4">Baudrate</label>
 | ||
|               <div class="col-8">
 | ||
|                 <select id="gpsbaud" name="gpsbaud" class="select form-control">
 | ||
|                   %GPSBAUD_SELECT_OPTIONS%
 | ||
|                 </select>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|             <div class="form-group row">
 | ||
|               <div class="col text-center">
 | ||
|                 <button name="gpssave" type="submit" class="btn btn-outline-primary">Speichern</button>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </form>
 | ||
|           </p>
 | ||
|           <hr />
 | ||
|         </div>
 | ||
|         <!-- Div Source:GPS Settings-->
 | ||
|       </div>
 | ||
|       <!-- Div Tab Source Settings-->
 | ||
|       <!-- Div Tab Lube -->
 | ||
|       <div id="tab_lube" class="tab-pane fade" role="tabpanel">
 | ||
|         <h3>Schmierung</h3>
 | ||
|         <hr />
 | ||
|         <p>
 | ||
|         <h4>Dosierung</h4>
 | ||
|         <form action="post.htm" method="POST" class="form-horizontal">
 | ||
|           <div class="form-group row">
 | ||
|             <label for="lubedistancenormal" class="control-label col-4">Normal (grün)</label>
 | ||
|             <div class="col-8">
 | ||
|               <div class="input-group">
 | ||
|                 <input id="lubedistancenormal" name="lubedistancenormal" value="%LUBE_DISTANCE_NORMAL%" type="text"
 | ||
|                   class="form-control" required="required">
 | ||
|                 <div class="input-group-append">
 | ||
|                   <span class="input-group-text">m</span>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|           <div class="form-group row">
 | ||
|             <label for="lubedistancerain" class="control-label col-4">Regen (blau)</label>
 | ||
|             <div class="col-8">
 | ||
|               <div class="input-group">
 | ||
|                 <input id="lubedistancerain" name="lubedistancerain" value="%LUBE_DISTANCE_RAIN%" type="text"
 | ||
|                   class="form-control" required="required">
 | ||
|                 <div class="input-group-append">
 | ||
|                   <span class="input-group-text">m</span>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|           <div class="form-group row">
 | ||
|             <div class="col text-center">
 | ||
|               <button name="oilsave" type="submit" class="btn btn-outline-primary">Speichern</button>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|         </form>
 | ||
|         </p>
 | ||
|         <hr />
 | ||
|       </div>
 | ||
|       <!-- Div Tab Lube -->
 | ||
|       <!-- Div Tab Maintenance -->
 | ||
|       <div id="tab_maintenance" class="tab-pane fade" role="tabpanel">
 | ||
|         <h3>Wartung</h3>
 | ||
|         <hr />
 | ||
|         <p>
 | ||
|         <h4>Ölvorrat</h4>
 | ||
|         <form action="post.htm" method="POST" class="form-horizontal">
 | ||
|           <div class="form-group row">
 | ||
|             <label for="tankcap" class="control-label col-4">Tankkapazität</label>
 | ||
|             <div class="col-8">
 | ||
|               <div class="input-group">
 | ||
|                 <input id="tankcap" name="tankcap" value="%TANK_CAPACITY%" type="text" class="form-control"
 | ||
|                   required="required">
 | ||
|                 <div class="input-group-append">
 | ||
|                   <span class="input-group-text">ml</span>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|           <div class="form-group row">
 | ||
|             <label for="tankwarn" class="control-label col-4">Leer-Warnung</label>
 | ||
|             <div class="col-8">
 | ||
|               <div class="input-group">
 | ||
|                 <input id="tankwarn" name="tankwarn" value="%TANK_REMIND%" type="text" class="form-control"
 | ||
|                   required="required">
 | ||
|                 <div class="input-group-append">
 | ||
|                   <span class="input-group-text">%</span>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|           <div class="form-group row">
 | ||
|             <label for="pumppulse" class="control-label col-4">Menge pro Puls</label>
 | ||
|             <div class="col-8">
 | ||
|               <div class="input-group">
 | ||
|                 <input id="pumppulse" name="pumppulse" value="%AMOUNT_PER_DOSE%" type="text" class="form-control"
 | ||
|                   required="required">
 | ||
|                 <div class="input-group-append">
 | ||
|                   <span class="input-group-text">µl</span>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|           <div class="form-group row">
 | ||
|             <label for="tankremain_maint" class="control-label col-4">Tankinhalt verbleibend</label>
 | ||
|             <div class="col-8">
 | ||
|               <div class="progress">
 | ||
|                 <div id="tankremain_maint" class="progress-bar text-light" role="progressbar"
 | ||
|                   aria-valuenow="%TANK_REMAIN_CAPACITY%" aria-valuemin="0" aria-valuemax="100"
 | ||
|                   style="width: %TANK_REMAIN_CAPACITY%%">
 | ||
|                   %TANK_REMAIN_CAPACITY%%
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|           <div class="form-group row">
 | ||
|             <div class="col text-center">
 | ||
|               <button name="oilsave" type="submit" class="btn btn-outline-primary">Speichern</button>
 | ||
|               <button name="resettank" type="submit" class="btn btn-outline-primary ml-2">Tank zurücksetzen</button>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|         </form>
 | ||
|         </p>
 | ||
|         <hr />
 | ||
|         <p>
 | ||
|         <h4>Entlüftung</h4>
 | ||
|         <form action="post.htm" method="POST" class="form-horizontal">
 | ||
|           <div class="form-group row">
 | ||
|             <label for="purgepulse" class="control-label col-4">Entlüftung Dosierung</label>
 | ||
|             <div class="col-8">
 | ||
|               <div class="input-group">
 | ||
|                 <input id="purgepulse" name="purgepulse" value="%BLEEDING_PULSES%" type="text" class="form-control">
 | ||
|                 <div class="input-group-append">
 | ||
|                   <span class="input-group-text">Pulse</span>
 | ||
|                 </div>
 | ||
|               </div>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|           <div class="form-group row">
 | ||
|             <div class="col text-center">
 | ||
|               <button name="maintsave" type="submit" class="btn btn-outline-primary">Speichern</button>
 | ||
|               <button name="purgenow" type="submit" class="btn btn-outline-primary ml-2">Entlüftung starten</button>
 | ||
|             </div>
 | ||
|           </div>
 | ||
|         </form>
 | ||
|         </p>
 | ||
|         <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>
 | ||
|         <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>
 | ||
|         <hr />
 | ||
|       </div>
 | ||
|       <!-- Div Tab Maintenance -->
 | ||
|       <!-- Div Tab SystemInfo -->
 | ||
|       <div id="tab_sysinfo" class="tab-pane fade" role="tabpanel">
 | ||
|         <h3>Systeminfo</h3>
 | ||
|         <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>DistancePerLube_Default</td>
 | ||
|               <td>%LUBE_DISTANCE_NORMAL%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>DistancePerLube_Rain</td>
 | ||
|               <td>%LUBE_DISTANCE_RAIN%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>tankCapacity_ml</td>
 | ||
|               <td>%TANK_CAPACITY%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>amountPerDose_µl</td>
 | ||
|               <td>%AMOUNT_PER_DOSE%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>TankRemindAtPercentage</td>
 | ||
|               <td>%TANK_REMIND%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>PulsePerRevolution</td>
 | ||
|               <td>%PULSE_PER_REV%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>TireWidth_mm</td>
 | ||
|               <td>%TIRE_WIDTH_MM%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>TireWidthHeight_Ratio</td>
 | ||
|               <td>%TIRE_RATIO%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>RimDiameter_Inch</td>
 | ||
|               <td>%RIM_DIAMETER%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>DistancePerRevolution_mm</td>
 | ||
|               <td>%DISTANCE_PER_REV%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>BleedingPulses</td>
 | ||
|               <td>%BLEEDING_PULSES%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>SpeedSource</td>
 | ||
|               <td>%SPEED_SOURCE%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>GPSBaudRate</td>
 | ||
|               <td>%GPS_BAUD%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>CANSource</td>
 | ||
|               <td>%CAN_SOURCE%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>Checksum</td>
 | ||
|               <td>%CONFIG_CHECKSUM%</td>
 | ||
|             </tr>
 | ||
|           </tbody>
 | ||
|         </table>
 | ||
|         </p>
 | ||
|         <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>tankRemain_µl</td>
 | ||
|               <td>%TANK_REMAIN_UL%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>TravelDistance_highRes</td>
 | ||
|               <td>%TRAVEL_DISTANCE_HIGHRES%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>Odometer</td>
 | ||
|               <td>%ODOMETER%,%ODOMETER_M%</td>
 | ||
|             </tr>
 | ||
|             <tr>
 | ||
|               <td>checksum</td>
 | ||
|               <td>%PERSISTANCE_CHECKSUM%</td>
 | ||
|             </tr>
 | ||
|         </table>
 | ||
|         </p>
 | ||
|         <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>
 | ||
|           <hr />
 | ||
|       </div>
 | ||
|       <!-- Div Tab SystemInfo -->
 | ||
|       <!-- Div Tab Firmware Update-->
 | ||
|       <div id="tab_fwupdate" class="tab-pane fade" role="tabpanel">
 | ||
|         <h3>Firmware</h3>
 | ||
|         <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>
 | ||
|         </table>
 | ||
|         </p>
 | ||
|         <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>
 | ||
|         <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>
 | ||
|         <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>
 | ||
|         <hr />
 | ||
|       </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">© 2022 -
 | ||
|           <a class="text-reset fw-bold" href="https://eventronics.de/">Marcel Peterkau</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> |