76 lines
2.5 KiB
C++
76 lines
2.5 KiB
C++
#include "responses.h"
|
|
|
|
#include <Arduino.h>
|
|
#include <ESPAsyncWebServer.h>
|
|
#include "AsyncJson.h"
|
|
#include <ArduinoJson.h>
|
|
#include <Elog.h>
|
|
#include "json_builder.h"
|
|
#include "../tools/tools.h"
|
|
#include <SPIFFS.h>
|
|
|
|
extern WaterData water_data;
|
|
extern DeviceTelemetry telemetry;
|
|
extern NetworkData wifi_data;
|
|
extern NetworkData ethernet_data;
|
|
extern SensorData shunt_data;
|
|
extern OTAStatus ota_status;
|
|
|
|
extern AsyncWebServer server;
|
|
|
|
void setup_api_endpoints(){
|
|
server.on("/sensor_data", HTTP_GET, [](AsyncWebServerRequest* request) {
|
|
String output;
|
|
serializeJson(build_shunt_data_json(shunt_data), output);
|
|
request->send(200, "application/json", output); });
|
|
|
|
server.on("/water_data", HTTP_GET, [](AsyncWebServerRequest* request) {
|
|
String output;
|
|
serializeJson(build_water_data_json(water_data), output);
|
|
request->send(200, "application/json", output); });
|
|
|
|
server.on("/raw_percent", HTTP_GET, [](AsyncWebServerRequest* request) {
|
|
String output;
|
|
output = water_data.percentage;
|
|
request->send(200, "text/raw", output); });
|
|
|
|
server.on("/raw_level", HTTP_GET, [](AsyncWebServerRequest* request) {
|
|
String output;
|
|
output = water_data.level;
|
|
request->send(200, "text/raw", output); });
|
|
|
|
|
|
server.on("/telemetry", HTTP_GET, [](AsyncWebServerRequest* request) {
|
|
String output;
|
|
serializeJson(build_telemetry_json(telemetry), output);
|
|
request->send(200, "application/json", output); });
|
|
|
|
server.on("/network_info", HTTP_GET, [](AsyncWebServerRequest* request) {
|
|
String output;
|
|
serializeJson(build_network_json(ethernet_data, wifi_data), output);
|
|
request->send(200, "application/json", output);
|
|
});
|
|
|
|
server.on("/ota_udpate_status", HTTP_GET, [](AsyncWebServerRequest* request) {
|
|
String output;
|
|
serializeJson(build_ota_json(ota_status), output);
|
|
request->send(200, "application/json", output);
|
|
});
|
|
|
|
server.on("/run_ota_update", HTTP_GET, [](AsyncWebServerRequest* request) {
|
|
if (ota_status.update_progress > -1) {
|
|
request->send(200, "text/plain", "OTA Update already in progress");
|
|
return;
|
|
} else if (!ota_status.update_available) {
|
|
request->send(200, "text/plain", "No update available");
|
|
return;
|
|
}
|
|
|
|
static TaskArgs_t args = {
|
|
.ota_status = ota_status
|
|
};
|
|
|
|
xTaskCreate(run_ota_update_task, "RunOTAUpdate", 1024 * 8, (void *)&args, 1, NULL);
|
|
request->send(LittleFS, "/update_progress.html", "text/html", false, processor);
|
|
});
|
|
} |