fix selftest button, allow selftest to run without prior config

This commit is contained in:
Empire 2025-06-06 22:18:57 +02:00
parent 3fe9aaeb6f
commit 93b37d0991
3 changed files with 23 additions and 2 deletions

View File

@ -115,7 +115,7 @@ fn get_live_moisture(
_request: &mut Request<&mut EspHttpConnection>, _request: &mut Request<&mut EspHttpConnection>,
) -> Result<Option<std::string::String>, anyhow::Error> { ) -> Result<Option<std::string::String>, anyhow::Error> {
let mut board = BOARD_ACCESS.lock().unwrap(); let mut board = BOARD_ACCESS.lock().unwrap();
let config = board.get_config().unwrap(); let config = board.get_config().unwrap_or(PlantControllerConfig::default());
let plant_state = Vec::from_iter( let plant_state = Vec::from_iter(
(0..PLANT_COUNT).map(|i| PlantState::read_hardware_state(i, &mut board, &config.plants[i])), (0..PLANT_COUNT).map(|i| PlantState::read_hardware_state(i, &mut board, &config.plants[i])),

View File

@ -279,6 +279,21 @@ export class Controller {
}) })
} }
selfTest() {
controller.progressview.addIndeterminate("boardtest", "Self test running");
fetch(PUBLIC_URL + "/boardtest", {
method: "POST"
})
.then(response => response.text())
.then(
_ => {
controller.progressview.removeProgress("boardtest");
}
)
}
testPlant(plantId: number) { testPlant(plantId: number) {
let counter = 0 let counter = 0
let limit = 30 let limit = 30
@ -466,6 +481,7 @@ export class Controller {
controller.exit(); controller.exit();
} }
} }
} }
const controller = new Controller(); const controller = new Controller();
controller.progressview.removeProgress("rebooting"); controller.progressview.removeProgress("rebooting");

View File

@ -5,6 +5,7 @@ export class OTAView {
readonly firmware_buildtime: HTMLDivElement; readonly firmware_buildtime: HTMLDivElement;
readonly firmware_githash: HTMLDivElement; readonly firmware_githash: HTMLDivElement;
readonly firmware_partition: HTMLDivElement; readonly firmware_partition: HTMLDivElement;
readonly test: HTMLButtonElement;
constructor(controller: Controller) { constructor(controller: Controller) {
(document.getElementById("firmwareview") as HTMLElement).innerHTML = require("./ota.html") (document.getElementById("firmwareview") as HTMLElement).innerHTML = require("./ota.html")
@ -12,7 +13,7 @@ export class OTAView {
this.firmware_buildtime = document.getElementById("firmware_buildtime") as HTMLDivElement; this.firmware_buildtime = document.getElementById("firmware_buildtime") as HTMLDivElement;
this.firmware_githash = document.getElementById("firmware_githash") as HTMLDivElement; this.firmware_githash = document.getElementById("firmware_githash") as HTMLDivElement;
this.firmware_partition = document.getElementById("firmware_partition") as HTMLDivElement; this.firmware_partition = document.getElementById("firmware_partition") as HTMLDivElement;
this.test = document.getElementById("test") as HTMLButtonElement;
const file = document.getElementById("firmware_file") as HTMLInputElement; const file = document.getElementById("firmware_file") as HTMLInputElement;
this.file1Upload = file this.file1Upload = file
@ -24,6 +25,10 @@ export class OTAView {
} }
controller.uploadNewFirmware(selectedFile); controller.uploadNewFirmware(selectedFile);
}; };
this.test.onclick = () => {
controller.selfTest()
}
} }
setVersion(versionInfo: VersionInfo) { setVersion(versionInfo: VersionInfo) {