From 88ad6495d1bc70bed793d85dab97420a7ec5d8ee Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Sun, 9 Oct 2022 13:48:35 +0200 Subject: [PATCH] Implemented inverter restart via web ui --- src/WebApi_power.cpp | 19 +++++++++++-------- webapp/src/components/HomeView.vue | 22 +++++++++++++++++----- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/WebApi_power.cpp b/src/WebApi_power.cpp index 30aacf80..8ecda811 100644 --- a/src/WebApi_power.cpp +++ b/src/WebApi_power.cpp @@ -39,11 +39,9 @@ void WebApiPowerClass::onPowerStatus(AsyncWebServerRequest* request) String limitStatus = "Unknown"; if (status == LastCommandSuccess::CMD_OK) { limitStatus = "Ok"; - } - else if (status == LastCommandSuccess::CMD_NOK) { + } else if (status == LastCommandSuccess::CMD_NOK) { limitStatus = "Failure"; - } - else if (status == LastCommandSuccess::CMD_PENDING) { + } else if (status == LastCommandSuccess::CMD_PENDING) { limitStatus = "Pending"; } root[buffer]["power_set_status"] = limitStatus; @@ -86,7 +84,7 @@ void WebApiPowerClass::onPowerPost(AsyncWebServerRequest* request) } if (!(root.containsKey("serial") - && root.containsKey("power"))) { + && (root.containsKey("power") || root.containsKey("restart")))) { retMsg[F("message")] = F("Values are missing!"); response->setLength(); request->send(response); @@ -101,8 +99,6 @@ void WebApiPowerClass::onPowerPost(AsyncWebServerRequest* request) } uint64_t serial = strtoll(root[F("serial")].as().c_str(), NULL, 16); - uint16_t power = root[F("power")].as(); - auto inv = Hoymiles.getInverterBySerial(serial); if (inv == nullptr) { retMsg[F("message")] = F("Invalid inverter specified!"); @@ -111,7 +107,14 @@ void WebApiPowerClass::onPowerPost(AsyncWebServerRequest* request) return; } - inv->sendPowerControlRequest(Hoymiles.getRadio(), power); + if (root.containsKey("power")) { + uint16_t power = root[F("power")].as(); + inv->sendPowerControlRequest(Hoymiles.getRadio(), power); + } else { + if (root[F("restart")].as()) { + inv->sendRestartControlRequest(Hoymiles.getRadio()); + } + } retMsg[F("type")] = F("success"); retMsg[F("message")] = F("Settings saved!"); diff --git a/webapp/src/components/HomeView.vue b/webapp/src/components/HomeView.vue index d4611218..87b705c9 100644 --- a/webapp/src/components/HomeView.vue +++ b/webapp/src/components/HomeView.vue @@ -280,6 +280,9 @@ + @@ -568,11 +571,20 @@ export default defineComponent({ this.showAlertPower = false; }, - onSetPowerSettings(turnOn: boolean) { - const data = { - serial: this.powerSettingSerial, - power: turnOn, - }; + onSetPowerSettings(turnOn: boolean, restart = false) { + let data = {}; + if (restart) { + data = { + serial: this.powerSettingSerial, + restart: true, + }; + } else { + data = { + serial: this.powerSettingSerial, + power: turnOn, + }; + } + const formData = new FormData(); formData.append("data", JSON.stringify(data));