dashboard: improve relay command responsiveness
This commit is contained in:
@@ -479,21 +479,42 @@ static bool post_relay_state(const String &relay_id, bool state)
|
||||
Serial.println(payload);
|
||||
|
||||
HTTPClient http;
|
||||
http.setTimeout(5000);
|
||||
http.setTimeout(1200);
|
||||
http.begin(CARGO_API_RELAY_SET_URL);
|
||||
http.addHeader("Content-Type", "application/json");
|
||||
|
||||
unsigned long start_ms = millis();
|
||||
int code = http.POST(payload);
|
||||
String body = http.getString();
|
||||
|
||||
Serial.print("Relay HTTP code: ");
|
||||
Serial.println(code);
|
||||
Serial.print(code);
|
||||
Serial.print(" total=");
|
||||
Serial.print(millis() - start_ms);
|
||||
Serial.println("ms");
|
||||
Serial.println(body);
|
||||
|
||||
bool ok = code >= 200 && code < 300;
|
||||
|
||||
if (ok && body.length() > 0) {
|
||||
DynamicJsonDocument response(512);
|
||||
DeserializationError error = deserializeJson(response, body);
|
||||
if (!error && response["state"].is<bool>()) {
|
||||
bool applied_state = response["state"].as<bool>();
|
||||
const char *applied_id = response["id"] | "";
|
||||
for (int i = 0; i < relay_count; i++) {
|
||||
if (relay_ids[i] == String(applied_id)) {
|
||||
relay_states[i] = applied_state;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
http.end();
|
||||
api_request_in_progress = false;
|
||||
|
||||
return code >= 200 && code < 300;
|
||||
return ok;
|
||||
}
|
||||
|
||||
static void relay_button_event_cb(lv_event_t *event)
|
||||
@@ -1030,7 +1051,7 @@ static bool fetch_status_fields(const char *url, const char *label)
|
||||
unsigned long start_ms = millis();
|
||||
|
||||
HTTPClient http;
|
||||
http.setTimeout(5000);
|
||||
http.setTimeout(900);
|
||||
http.begin(url);
|
||||
int code = http.GET();
|
||||
|
||||
@@ -1066,7 +1087,7 @@ static void poll_status_api()
|
||||
return;
|
||||
}
|
||||
|
||||
if (fast_status_refresh_requested || millis() - last_status_poll_ms >= 2000) {
|
||||
if (fast_status_refresh_requested || millis() - last_status_poll_ms >= 1500) {
|
||||
fast_status_refresh_requested = false;
|
||||
last_status_poll_ms = millis();
|
||||
fetch_status_fields(CARGO_API_FAST_STATUS_URL, "fast status");
|
||||
@@ -1444,5 +1465,5 @@ void loop()
|
||||
process_pending_relay_command();
|
||||
poll_status_api();
|
||||
|
||||
delay(250);
|
||||
delay(50);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user