diff --git a/firmware/esp32/overland-controller/overland-controller.ino b/firmware/esp32/overland-controller/overland-controller.ino index a7e721a..8ff5245 100644 --- a/firmware/esp32/overland-controller/overland-controller.ino +++ b/firmware/esp32/overland-controller/overland-controller.ino @@ -50,6 +50,10 @@ input{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px;ba .list{display:grid;gap:8px;margin-top:12px} .item{display:flex;justify-content:space-between;gap:8px;background:#0f151d;border:1px solid var(--line);border-radius:12px;padding:10px} .btnrow{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px} +.configrow{display:grid;grid-template-columns:90px 1fr 90px;gap:8px;align-items:center;background:#0f151d;border:1px solid var(--line);border-radius:12px;padding:10px} +.configrow label{color:var(--muted);font-size:12px} +.configrow input[type="checkbox"]{width:auto} +.configrow input{margin:0} .kpi{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px} .kpi div{background:#0f151d;border:1px solid var(--line);border-radius:12px;padding:10px} .kpi .num{font-size:20px;font-weight:800;margin-top:4px} @@ -148,6 +152,23 @@ input{width:100%;border:1px solid var(--line);border-radius:12px;padding:12px;ba +
+
Relay Config
+
Rename relay outputs. IDs stay fixed for API/UART compatibility.
+
+ +
+ +
+
Temperature Sensor Config
+
Set how many temp sensors are enabled and rename each slot.
+
+ +
+ +
+
+
System
Firmware--
@@ -252,7 +273,100 @@ function render(data){ $("apIp").textContent=n.ap_ip||"--"; $("fw").textContent=(s.firmware_name||"--")+" "+(s.firmware_version||""); $("uptime").textContent=(s.uptime_seconds||0)+" sec"; + renderConfigControls(data); } + +function renderConfigControls(data){ + const cfg=data.config||{}; + const relays=cfg.relays||[]; + const temps=cfg.temperature_sensors||[]; + + const relayBox=$("relayConfigList"); + if(relayBox){ + relayBox.innerHTML=relays.map((r,i)=>` +
+ + + +
`).join(""); + } + + const tempCount=$("tempEnabledCount"); + if(tempCount){ + tempCount.value=temps.filter(t=>t.enabled).length; + } + + const tempBox=$("tempConfigList"); + if(tempBox){ + tempBox.innerHTML=temps.map((t,i)=>` +
+ + + +
`).join(""); + } +} + +async function saveRelayConfig(){ + const r=await fetch("/status",{cache:"no-store"}); + const data=await r.json(); + const relays=data.config?.relays||[]; + + for(let i=0;itemps.length) count=temps.length; + + for(let i=0;i