Return only the eventlog of one inverter

- Fix #131
- Prevent large responses in case of many inverters + many log entries
This commit is contained in:
Thomas Basler 2022-09-12 18:48:18 +02:00
parent 85d08e0aba
commit 9674e32c0c
2 changed files with 11 additions and 4 deletions

View File

@ -22,12 +22,19 @@ void WebApiEventlogClass::loop()
void WebApiEventlogClass::onEventlogStatus(AsyncWebServerRequest* request) void WebApiEventlogClass::onEventlogStatus(AsyncWebServerRequest* request)
{ {
AsyncJsonResponse* response = new AsyncJsonResponse(); AsyncJsonResponse* response = new AsyncJsonResponse(false, 2048);
JsonObject root = response->getRoot(); JsonObject root = response->getRoot();
for (uint8_t i = 0; i < Hoymiles.getNumInverters(); i++) { uint64_t serial = 0;
auto inv = Hoymiles.getInverterByPos(i); if (request->hasParam("inv")) {
String s = request->getParam("inv")->value();
char* t;
serial = strtoll(s.c_str(), &t, 16);
}
auto inv = Hoymiles.getInverterBySerial(serial);
if (inv != nullptr) {
// Inverter Serial is read as HEX // Inverter Serial is read as HEX
char buffer[sizeof(uint64_t) * 8 + 1]; char buffer[sizeof(uint64_t) * 8 + 1];
sprintf(buffer, "%0lx%08lx", sprintf(buffer, "%0lx%08lx",

View File

@ -298,7 +298,7 @@ export default defineComponent({
}, },
onShowEventlog(serial: number) { onShowEventlog(serial: number) {
this.eventLogLoading = true; this.eventLogLoading = true;
fetch("/api/eventlog/status") fetch("/api/eventlog/status?inv=" + serial)
.then((response) => response.json()) .then((response) => response.json())
.then((data) => { .then((data) => {
this.eventLogList = data[serial]; this.eventLogList = data[serial];