diff --git a/docs/api-and-serial-commands.md b/docs/api-and-serial-commands.md index 8f484cc..e44ebdf 100644 --- a/docs/api-and-serial-commands.md +++ b/docs/api-and-serial-commands.md @@ -36,6 +36,14 @@ Relay display names are configurable. Firmware and API clients should not assume Returns saved configuration. +### POST /config/device + +Example: + + { + "device_name": "Overland Controller" + } + ### POST /config/relay Example: @@ -89,6 +97,12 @@ Line ending: save factory reset +## Device Configuration Commands + + devicename Overland Controller + +Run `save` after changing the device name. + ## Log Level Commands log quiet diff --git a/firmware/esp32/overland-controller/overland-controller.ino b/firmware/esp32/overland-controller/overland-controller.ino index 5c2de61..525c517 100644 --- a/firmware/esp32/overland-controller/overland-controller.ino +++ b/firmware/esp32/overland-controller/overland-controller.ino @@ -310,6 +310,12 @@ void handleDebugSerial() { return; } + if (command.startsWith("devicename ")) { + appConfig.deviceName = command.substring(11); + Serial.println("OK device name updated"); + return; + } + if (command.startsWith("relayname ")) { int firstSpace = command.indexOf(' '); int secondSpace = command.indexOf(' ', firstSpace + 1); @@ -458,6 +464,22 @@ void handleGetConfig() { sendConfigJson(); } +void handleUpdateDeviceConfig() { + DynamicJsonDocument doc(512); + DeserializationError error = deserializeJson(doc, server.arg("plain")); + + if (error) { + server.send(400, "application/json", "{\"ok\":false,\"error\":\"invalid_json\"}"); + return; + } + + if (doc["device_name"].is()) { + appConfig.deviceName = doc["device_name"].as(); + } + + sendOkConfig(); +} + void handleUpdateRelayConfig() { DynamicJsonDocument doc(1024); DeserializationError error = deserializeJson(doc, server.arg("plain")); @@ -616,6 +638,7 @@ void setup() { server.on("/relay/relay_2/off", HTTP_GET, handleGenericRelayRoute); server.on("/config", HTTP_GET, handleGetConfig); + server.on("/config/device", HTTP_POST, handleUpdateDeviceConfig); server.on("/config/relay", HTTP_POST, handleUpdateRelayConfig); server.on("/config/bms", HTTP_POST, handleUpdateBmsConfig); server.on("/config/temp", HTTP_POST, handleUpdateTempSensorConfig);