/ firmware / src / services / http / api / sensors / pressure.cpp
pressure.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    BarometricPressureSensorData sensor_data = {};
12    bool ok = sensors::manager::accessBarometricPressure(&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["pressure_hpa"] = sensor_data.pressure_hpa;
20      data["temperature_celsius"] = sensor_data.temperature_celsius;
21      data["model"] = sensor_data.model;
22    }
23    response->setLength();
24    request->send(response);
25  }
26  
27  }
28  
29  void services::http::api::sensors::pressure::registerRoutes(AsyncWebServer &server) {
30    server.on("/api/sensors/pressure", HTTP_GET, handle_get);
31  }