Skip to content

Commit 3b63402

Browse files
committed
Latest GUI
1 parent 9fcf65c commit 3b63402

File tree

4 files changed

+17
-6
lines changed

4 files changed

+17
-6
lines changed

src/web_static/web_server.home.html.h

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,17 @@ static const char CONTENT_HOME_HTML[] PROGMEM =
5353
" css: { right: !advancedMode() && !openevse.allTestsEnabled(),\n"
5454
" left: advancedMode() || openevse.allTestsEnabled() }\"> <h2>Display</h2> <div> <span data-bind=\"css: {selected: !advancedMode() }\">Simple</span> <label class=\"switch\"> <input type=\"checkbox\" data-bind=\"checked: advancedMode\"> <div class=\"slider round\"></div> </label> <span data-bind=\"css: {selected: advancedMode }\">Advanced</span><br> </div> <hr> <p data-bind=\"visible: config.led_brightness() !== false\"> <b>LED Brightness:</b><br \\> <span class=\"rangeslidercontainer\"> <input type=\"range\" min=\"0\" max=\"255\" class=\"rangeslider\" data-bind=\"value: config.led_brightness,\n"
5555
" disable: displayGroup.fetching(),\n"
56-
" css: { saved: displayGroup.success }\"> </span> </p> </div> </div> <div id=\"content-4\" data-bind=\"visible: isRapi() &amp;&amp; status.evse_connected()\"> <div class=\"box380 left\"> <form method=\"get\" action=\"r\" data-bind=\"with: rapi\"> <p> <b>RAPI Command:</b> <input type=\"text\" autocapitalize=\"none\" name=\"rapi\" length=\"32\" data-bind=\"textInput: cmd\"> </p> <p> <button data-bind=\"click: send, disable: rapiSend\">Send</button> </p> <p data-bind=\"text: ret\"></p> </form> </div> <div class=\"box380 right\"> <h2>RAPI System Functions</h2> <table> <tr> <th>Function</th> <th>Description</th> </tr> <tr> <td>$FB</td> <td>LCD Backlight Color (0-7)</td> </tr> <tr> <td>$FD</td> <td>Disable EVSE</td> </tr> <tr> <td>$FE</td> <td>Enable EVSE</td> </tr> <tr> <td>$FP</td> <td>Output text at x y position text to LCD (x y text)</td> </tr> <tr> <td>$FR</td> <td>Reset EVSE</td> </tr> <tr> <td>$FS</td> <td>Put EVSE to sleep</td> </tr> <tr> <td>$FF</td> <td>Enable/disable feature (feature_id 0|1)<br> Front panel (B)utton, (D)iode check, G(F)I self-test, (G)round check, Stuck (R)elay check, (T)emp monitoring, (V)ent required</td> </tr> </table> </div> <div class=\"box380 left\"> <h2>RAPI Get Commands</h2> <table> <tr> <th>Get</th> <th>Description</th> </tr> <tr> <td>$G0</td> <td>Get EV connected state, not connected (0), connected (1), unknown (2)</td> </tr> <tr> <td>$G3</td> <td>Get Charge Time Limit, 15-minutes (1), 30-minutes (2), etc...</td> </tr> <tr> <td>$GA</td> <td>Get Ammeter Scale/Offset, scale offset</td> </tr> <tr> <td>$GC</td> <td>Get current capacity range, integers</td> </tr> <tr> <td>$GD</td> <td>Get delay timer, start_hour start_min end_hour end_min</td> </tr> <tr> <td>$GE</td> <td>Get settings, amps flags</td> </tr> <tr> <td>$GF</td> <td>Get fault counters, gfi ground stuck (in hex)</td> </tr> <tr> <td>$GG</td> <td>Get charge current and voltage, milliamps millivolts</td> </tr> <tr> <td>$GH</td> <td>Get charge limit in kWh, integer</td> </tr> <tr> <td>$GM</td> <td>Get Voltmeter Scale/Offset, scale offset</td> </tr> <tr> <td>$GP</td> <td>Get Temperatures, LCD MCP9808 infrared (integers, °C * 10)</td> </tr> <tr> <td>$GS</td> <td>Get EVSE State, state elapsed_seconds</td> </tr> <tr> <td>$GT</td> <td>Get time, year month day hour minute second</td> </tr> <tr> <td>$GU</td> <td>Get Energy usage, wattseconds watt_hour_accumulated</td> </tr> <tr> <td>$GV</td> <td>Get Versions, evse_firmware protocol_version</td> </tr> </table> </div> <div class=\"box380 right\"> <h2>RAPI Set Commands</h2> <table> <tr> <th>Set</th> <th>Description</th> </tr> <tr> <td>$S0</td> <td>Set LCD Type, Monochrome (0), Color (1)</td> </tr> <tr> <td>$S1</td> <td>Set RTC, year month day hour minute second (all 2-digit max)</td> </tr> <tr> <td>$S2</td> <td>Enable (1)/ Disable (0) Ammeter Calibration Mode</td> </tr> <tr> <td>$S3</td> <td>Set Charge Time Limit, 15-minutes (1), 30-minutes (2), etc...</td> </tr> <tr> <td>$SA</td> <td>Set Ammeter Scale/Offset, scale offset</td> </tr> <tr> <td>$SC</td> <td>Set current capacity, integer</td> </tr> <tr> <td>$SH</td> <td>Set charge limit in kWh, integer</td> </tr> <tr> <td>$SK</td> <td>Set accumulated Wh, integer</td> </tr> <tr> <td>$SL</td> <td>Set service level (1/2/A)</td> </tr> <tr> <td>$SM</td> <td>Set Voltmeter Scale/Offset, scale offset</td> </tr> <tr> <td>$ST</td> <td>Set timer, start_hour start_min end_hour end_min</td> </tr> <tr> <td>$SV</td> <td>Set voltage for power calculations, millivolts</td> </tr> </table> </div> </div> <div id=\"content-5\" data-bind=\"visible: isVehicle\"> <div class=\"box380 right\" data-bind=\"visible: vehicle.has_status\"> <h2>Status</h2> <table> <tr> <th>Status</th> <th><span data-bind=\"text: formatUpdate(openevse.time.vehicle_state_update()), css: updateClass(openevse.time.vehicle_state_update())\"></span></th> </tr> <tr data-bind=\"visible: false !== status.battery_level()\"> <td>Battery Level:</td> <td><span data-bind=\"text: status.battery_level()+ '%'\"></span></td> </tr> <tr data-bind=\"visible: false !== status.battery_range()\"> <td>Battery Range:</td> <td><span data-bind=\"text: status.battery_range() + ' ' + (vehicle.mqtt_vehicle_range_units())\"></span></td> </tr> <tr data-bind=\"visible: false !== status.time_to_full_charge()\"> <td>Time to full charge:</td> <td><span data-bind=\"text: new Date(status.time_to_full_charge() * 1000).toISOString().substr(11, 8)\"></span></td> </tr> </table> </div> <div class=\"box380 left\"> <h2>Setup</h2> <select data-bind=\"value: vehicle.type\"> <option value=\"none\">None</option> <option value=\"mqtt\">MQTT</option> </select> <div data-bind=\"visible: 'none' == vehicle.type()\"> <p>Select the vehicle connection type</p> </div> <div data-bind=\"visible: 'tesla' == vehicle.type()\"> <hr> <h3>Tesla</h3> <p> <b>Username:</b> <input data-bind=\"textInput: vehicle.tesla.username\" type=\"text\" autocapitalize=\"none\"> </p> <p> <b>Password:</b> <input type=\"password\" autocapitalize=\"none\" data-bind=\"textInput: vehicle.tesla.password\"><br> </p> <p> <button data-bind=\"click: vehicle.tesla.login,\n"
57-
" text: (vehicle.tesla.fetching() ? 'Saving' : (vehicle.tesla.success() ? 'Saved' : 'Login')),\n"
58-
" disable: vehicle.tesla.fetching\">Login</button> </p> </div> <div data-bind=\"visible: 'ovms' == vehicle.type()\"> <hr> <h3>Open Vehicle Monitoring System</h3> </div> <div data-bind=\"visible: 'mqtt' == vehicle.type()\"> <hr> <h3>MQTT</h3> <div class=\"box error\" data-bind=\"visible: !config.mqtt_enabled()\"> <h4>MQTT not enabled.</h4> You need to enable MQTT on the <a href=\"#services\">Services</a> tab. </div> <p data-bind=\"visible: config.mqtt_enabled()\"> <b>State of Charge:</b><br> <input data-bind=\"textInput: config.mqtt_vehicle_soc\" type=\"text\" autocapitalize=\"none\"><br> <span class=\"small-text\">The battery level of charge as a percentage</span> </p> <div data-bind=\"visible: config.mqtt_enabled()\"> <b>Range:</b><br> <div class=\"divert\"> <input data-bind=\"textInput: config.mqtt_vehicle_range\" type=\"text\" autocapitalize=\"none\"> <select data-bind=\"value: vehicle.mqtt_vehicle_range_units\"> <option value=\"km\">km</option> <option value=\"mi\">miles</option> </select><br> <span class=\"small-text\">The range (on electric) of the vehicle based on the current battery level</span> </div> </div> <p data-bind=\"visible: config.mqtt_enabled()\"> <b>Time to charge:</b><br> <input data-bind=\"textInput: config.mqtt_vehicle_eta\" type=\"text\" autocapitalize=\"none\"><br> <span class=\"small-text\">The time until the battery is fully charged in seconds</span> </p> </div> <p data-bind=\"visible: 'tesla' != vehicle.type()\"> <button data-bind=\"click: vehicleStateGroup.save, text: (vehicleStateGroup.fetching() ? 'Saving' : (vehicleStateGroup.success() ? 'Saved' : 'Save')), disable: vehicleStateGroup.fetching\">Save</button> </p> </div> </div> </div> <div id=\"footer\"> <br><b> Powered by <a href=\"http://www.openevse.com\">OpenEVSE</a> and <a href=\"https://openenergymonitor.org\">OpenEnergyMonitor</a></b> <br> <b>Version: </b>V<span data-bind=\"text: config.version\"></span> </div> </div> </div> <script src=\"lib.js\"></script> <script src=\"home.js\"></script> </body> </html> \n";
56+
" css: { saved: displayGroup.success }\"> </span> </p> </div> </div> <div id=\"content-4\" data-bind=\"visible: isRapi() &amp;&amp; status.evse_connected()\"> <div class=\"box380 left\"> <form method=\"get\" action=\"r\" data-bind=\"with: rapi\"> <p> <b>RAPI Command:</b> <input type=\"text\" autocapitalize=\"none\" name=\"rapi\" length=\"32\" data-bind=\"textInput: cmd\"> </p> <p> <button data-bind=\"click: send, disable: rapiSend\">Send</button> </p> <p data-bind=\"text: ret\"></p> </form> </div> <div class=\"box380 right\"> <h2>RAPI System Functions</h2> <table> <tr> <th>Function</th> <th>Description</th> </tr> <tr> <td>$FB</td> <td>LCD Backlight Color (0-7)</td> </tr> <tr> <td>$FD</td> <td>Disable EVSE</td> </tr> <tr> <td>$FE</td> <td>Enable EVSE</td> </tr> <tr> <td>$FP</td> <td>Output text at x y position text to LCD (x y text)</td> </tr> <tr> <td>$FR</td> <td>Reset EVSE</td> </tr> <tr> <td>$FS</td> <td>Put EVSE to sleep</td> </tr> <tr> <td>$FF</td> <td>Enable/disable feature (feature_id 0|1)<br> Front panel (B)utton, (D)iode check, G(F)I self-test, (G)round check, Stuck (R)elay check, (T)emp monitoring, (V)ent required</td> </tr> </table> </div> <div class=\"box380 left\"> <h2>RAPI Get Commands</h2> <table> <tr> <th>Get</th> <th>Description</th> </tr> <tr> <td>$G0</td> <td>Get EV connected state, not connected (0), connected (1), unknown (2)</td> </tr> <tr> <td>$G3</td> <td>Get Charge Time Limit, 15-minutes (1), 30-minutes (2), etc...</td> </tr> <tr> <td>$GA</td> <td>Get Ammeter Scale/Offset, scale offset</td> </tr> <tr> <td>$GC</td> <td>Get current capacity range, integers</td> </tr> <tr> <td>$GD</td> <td>Get delay timer, start_hour start_min end_hour end_min</td> </tr> <tr> <td>$GE</td> <td>Get settings, amps flags</td> </tr> <tr> <td>$GF</td> <td>Get fault counters, gfi ground stuck (in hex)</td> </tr> <tr> <td>$GG</td> <td>Get charge current and voltage, milliamps millivolts</td> </tr> <tr> <td>$GH</td> <td>Get charge limit in kWh, integer</td> </tr> <tr> <td>$GM</td> <td>Get Voltmeter Scale/Offset, scale offset</td> </tr> <tr> <td>$GP</td> <td>Get Temperatures, LCD MCP9808 infrared (integers, °C * 10)</td> </tr> <tr> <td>$GS</td> <td>Get EVSE State, state elapsed_seconds</td> </tr> <tr> <td>$GT</td> <td>Get time, year month day hour minute second</td> </tr> <tr> <td>$GU</td> <td>Get Energy usage, wattseconds watt_hour_accumulated</td> </tr> <tr> <td>$GV</td> <td>Get Versions, evse_firmware protocol_version</td> </tr> </table> </div> <div class=\"box380 right\"> <h2>RAPI Set Commands</h2> <table> <tr> <th>Set</th> <th>Description</th> </tr> <tr> <td>$S0</td> <td>Set LCD Type, Monochrome (0), Color (1)</td> </tr> <tr> <td>$S1</td> <td>Set RTC, year month day hour minute second (all 2-digit max)</td> </tr> <tr> <td>$S2</td> <td>Enable (1)/ Disable (0) Ammeter Calibration Mode</td> </tr> <tr> <td>$S3</td> <td>Set Charge Time Limit, 15-minutes (1), 30-minutes (2), etc...</td> </tr> <tr> <td>$SA</td> <td>Set Ammeter Scale/Offset, scale offset</td> </tr> <tr> <td>$SC</td> <td>Set current capacity, integer</td> </tr> <tr> <td>$SH</td> <td>Set charge limit in kWh, integer</td> </tr> <tr> <td>$SK</td> <td>Set accumulated Wh, integer</td> </tr> <tr> <td>$SL</td> <td>Set service level (1/2/A)</td> </tr> <tr> <td>$SM</td> <td>Set Voltmeter Scale/Offset, scale offset</td> </tr> <tr> <td>$ST</td> <td>Set timer, start_hour start_min end_hour end_min</td> </tr> <tr> <td>$SV</td> <td>Set voltage for power calculations, millivolts</td> </tr> </table> </div> </div> <div id=\"content-5\" data-bind=\"visible: isVehicle\"> <div class=\"box380 left\"> <h2>Setup</h2> <select data-bind=\"value: vehicle.type\"> <option value=\"none\">None</option> <option value=\"tesla\">Tesla</option> <option value=\"mqtt\">MQTT</option> </select> <div data-bind=\"visible: 'none' == vehicle.type()\"> <p>Select the vehicle connection type</p> </div> <div data-bind=\"visible: 'tesla' == vehicle.type()\"> <hr> <h3>Tesla</h3> <p data-bind=\"visible: !vehicle.tesla.have_credentials()\"> <b>Username:</b> <input data-bind=\"textInput: vehicle.tesla.username\" type=\"text\" autocapitalize=\"none\"> </p> <p data-bind=\"visible: !vehicle.tesla.have_credentials()\"> <b>Password:</b> <input type=\"password\" autocapitalize=\"none\" data-bind=\"textInput: vehicle.tesla.password\"><br> </p> <p data-bind=\"visible: vehicle.tesla.have_credentials()\"> <select data-bind=\"options: vehicle.tesla.vehicles,\n"
57+
" optionsText: 'name',\n"
58+
" optionsValue: 'id',\n"
59+
" value: config.tesla_vehicle_id,\n"
60+
" visible: vehicle.tesla.vehicles().length > 0\"> </select> <span data-bind=\"visible: 0 == vehicle.tesla.vehicles().length\"> Fetching vehicle info ... </span> </p> </div> <div data-bind=\"visible: 'ovms' == vehicle.type()\"> <hr> <h3>Open Vehicle Monitoring System</h3> </div> <div data-bind=\"visible: 'mqtt' == vehicle.type()\"> <hr> <h3>MQTT</h3> <div class=\"box error\" data-bind=\"visible: !config.mqtt_enabled()\"> <h4>MQTT not enabled.</h4> You need to enable MQTT on the <a href=\"#services\">Services</a> tab. </div> <p data-bind=\"visible: config.mqtt_enabled()\"> <b>State of Charge:</b><br> <input data-bind=\"textInput: config.mqtt_vehicle_soc\" type=\"text\" autocapitalize=\"none\"><br> <span class=\"small-text\">The battery level of charge as a percentage</span> </p> <div data-bind=\"visible: config.mqtt_enabled()\"> <b>Range:</b><br> <div class=\"divert\"> <input data-bind=\"textInput: config.mqtt_vehicle_range\" type=\"text\" autocapitalize=\"none\"> <select data-bind=\"value: vehicle.mqtt_vehicle_range_units\"> <option value=\"km\">km</option> <option value=\"mi\">miles</option> </select><br> <span class=\"small-text\">The range (on electric) of the vehicle based on the current battery level</span> </div> </div> <p data-bind=\"visible: config.mqtt_enabled()\"> <b>Time to charge:</b><br> <input data-bind=\"textInput: config.mqtt_vehicle_eta\" type=\"text\" autocapitalize=\"none\"><br> <span class=\"small-text\">The time until the battery is fully charged in seconds</span> </p> </div> <p data-bind=\"\"> <button data-bind=\"visible: vehicle.show_save(),\n"
61+
" click: vehicleStateGroup.save,\n"
62+
" text: (vehicleStateGroup.fetching() ? 'Saving' : (vehicleStateGroup.success() ? 'Saved' : 'Save')),\n"
63+
" disable: vehicleStateGroup.fetching\"> Save </button> <button data-bind=\"visible: !vehicle.tesla.have_credentials(),\n"
64+
" click: vehicle.tesla.login,\n"
65+
" text: (vehicle.tesla.fetching() ? 'Saving' : (vehicle.tesla.success() ? 'Saved' : 'Login')),\n"
66+
" disable: vehicle.tesla.fetching\"> Login </button> <button data-bind=\"visible: vehicle.tesla.have_credentials(),\n"
67+
" click: vehicle.tesla.logout,\n"
68+
" text: (vehicle.tesla.fetching() ? 'Saving' : (vehicle.tesla.success() ? 'Saved' : 'Logout')),\n"
69+
" disable: vehicle.tesla.fetching\"> Logout </button> </p> </div> <div class=\"box380 right error\" data-bind=\"visible: false !== status.tesla_error()\"> <h4>Error</h4> <span data-bind=\"text: status.tesla_error\"></span> </div> <div class=\"box380 right\" data-bind=\"visible: vehicle.has_status\"> <h2>Status</h2> <table> <tr> <th>Status</th> <th><span data-bind=\"text: formatUpdate(openevse.time.vehicle_state_update()), css: updateClass(openevse.time.vehicle_state_update())\"></span></th> </tr> <tr data-bind=\"visible: false !== status.battery_level()\"> <td>Battery Level:</td> <td><span data-bind=\"text: status.battery_level()+ '%'\"></span></td> </tr> <tr data-bind=\"visible: false !== status.battery_range()\"> <td>Battery Range:</td> <td><span data-bind=\"text: status.battery_range() + ' ' + (vehicle.mqtt_vehicle_range_units())\"></span></td> </tr> <tr data-bind=\"visible: false !== status.time_to_full_charge()\"> <td>Time to full charge:</td> <td><span data-bind=\"text: new Date(status.time_to_full_charge() * 1000).toISOString().substr(11, 8)\"></span></td> </tr> </table> </div> </div> </div> <div id=\"footer\"> <br><b> Powered by <a href=\"http://www.openevse.com\">OpenEVSE</a> and <a href=\"https://openenergymonitor.org\">OpenEnergyMonitor</a></b> <br> <b>Version: </b>V<span data-bind=\"text: config.version\"></span> </div> </div> </div> <script src=\"lib.js\"></script> <script src=\"home.js\"></script> </body> </html> \n";

src/web_static/web_server.home.js.h

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

src/web_static/web_server.lib.js.h

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)