/ firmware / src / services / http / api / sensors / solar_radiation.cpp
solar_radiation.cpp
 1  #include "routes.h"
 2  #include <manager.h>
 3  
 4  #include <ESPAsyncWebServer.h>
 5  #include <AsyncJson.h>
 6  #include <ArduinoJson.h>
 7  
 8  namespace {
 9  
10  void handle_get(AsyncWebServerRequest *request) {
11    SolarRadiationSensorData sensor_data = {};
12    bool ok = sensors::manager::accessSolarRadiation(&sensor_data);
13  
14    AsyncJsonResponse *response = new AsyncJsonResponse();
15    JsonObject root = response->getRoot().to<JsonObject>();
16    root["ok"] = ok && sensor_data.ok;
17    JsonObject data = root["data"].to<JsonObject>();
18    if (ok && sensor_data.ok) {
19      data["watts_per_square_meter"] = sensor_data.watts_per_square_meter;
20    }
21    response->setLength();
22    request->send(response);
23  }
24  
25  }
26  
27  void services::http::api::sensors::solar_radiation::registerRoutes(AsyncWebServer &server) {
28    server.on("/api/sensors/solar-radiation", HTTP_GET, handle_get);
29  }