Configure the Cargo ESP32 controller. The Cargo ESP remains the source of truth for relays, sensors, WiFi, and AP settings.
+
+
+
-
-
-
-
-
-
Settings
-
Configure the Cargo ESP32 controller. The Cargo ESP remains the source of truth for relays, sensors, WiFi, and AP settings.
-
+
+
+
+
Access Point
+
This is the local camp network hosted by the Cargo ESP32. Phones and the dashboard connect here when no Starlink/home WiFi is available.
-
+
+
+
Current AP--
+
Security--
+
+
SSID must be 1-32 characters.
+
+
Password must be 8-63 characters. The current password is never displayed.
+
+
+
+
+
Saving AP settings restarts the access point. Your phone may disconnect and need to reconnect to the new SSID/password. Dashboard auto-migration is planned but not implemented yet.
+
+
-
-
-
-
General
-
Controller identity and general display settings.
-
+
+
+
+
Home / Starlink WiFi
+
Optional client networks the Cargo ESP can join. Lower priority number is tried first. The AP remains available for local access.
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
-
-
Access Point
-
This is the local camp network hosted by the Cargo ESP32. Phones and the dashboard connect here when no Starlink/home WiFi is available.
-
+
+
+
+
Relay Outputs
+
Rename relay outputs. IDs stay fixed for API/UART compatibility.
-
-
Current AP--
-
Security--
-
-
SSID must be 1-32 characters.
-
-
Password must be 8-63 characters. The current password is never displayed.
-
-
-
-
-
Saving AP settings restarts the access point. Your phone may disconnect and need to reconnect to the new SSID/password. Dashboard auto-migration is planned but not implemented yet.
-
-
+
+
+
+
-
-
-
-
Home / Starlink WiFi
-
Optional client networks the Cargo ESP can join. Lower priority number is tried first. The AP remains available for local access.
-
+
+
+
+
Temperature Assignment
+
Scan probes, then assign a discovered sensor to a configured temp slot.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
-
-
Relay Outputs
-
Rename relay outputs. IDs stay fixed for API/UART compatibility.
-
-
-
-
-
-
-
+
+
Temperature Sensor Config
+
Set how many temp sensors are enabled and rename each slot.
+
+
+
+
+
+
-
-
-
-
-
-
Temperature Assignment
-
Scan probes, then assign discovered sensors to configured temp slots.
-
+
+
+
+
Device
+
Controller identity and BMS connection settings.
-
-
-
-
-
+
+
+
+
+
+
-
-
-
-
Temperature Slots
-
Enable only the probes you use. Pick one weather sensor for the top badge.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
BMS
-
JBD/Xiaoxiang BLE settings. Do not change these unless pairing a different BMS.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
BMS Polling
-
Enable or disable BMS polling without changing BLE pairing details.
-
-
-
BMS Polling--
+
+
BMS Config
+
Use this for initial setup, bench mode, or replacing the battery/BMS.
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
Maintenance
-
Reset and recovery actions. These can disrupt the controller.
-
+
+
-
-
-
+
+
+
+
+
System Actions
+
Use carefully. Factory reset clears install-specific configuration.
+
+
+
+
+
+
+
System
+
Firmware--
+
Uptime--
+
AP IP--
+
+
@@ -516,15 +474,6 @@ function batteryTimeInfo(b){
return {label:"Battery time", value:"Idle"};
}
-function showConfigSubtab(name){
- ["general","wifi","relays","temps","bms","maintenance"].forEach(t=>{
- const page=$("config-"+t);
- const btn=$("configTab-"+t);
- if(page) page.classList.toggle("active",t===name);
- if(btn) btn.classList.toggle("active",t===name);
- });
-}
-
function showTab(name){
["overview","battery","config"].forEach(t=>{
$(t+"Page").classList.toggle("active",t===name);
diff --git a/tests/test_http_api_contract.py b/tests/test_http_api_contract.py
index 062196f..f9fd9a0 100644
--- a/tests/test_http_api_contract.py
+++ b/tests/test_http_api_contract.py
@@ -352,6 +352,7 @@ def test_embedded_webui_config_page_is_grouped():
assert "Relay Outputs" in source
assert "Temperature Assignment" in source
assert "Maintenance" in source
+<<<<<<< HEAD
def test_embedded_webui_config_subtabs():
@@ -375,3 +376,5 @@ def test_embedded_webui_api_badge_labels_are_clear():
assert "API Live" in source
assert "API Error" in source
assert 'textContent="Offline"' not in source
+=======
+>>>>>>> parent of 2f973a2 (webui: organize config page with subtabs)