current.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 CurrentSensorData sensor_data = {}; 12 bool ok = sensors::manager::accessCurrent(&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["current_mA"] = sensor_data.current_mA; 20 data["bus_voltage_V"] = sensor_data.bus_voltage_V; 21 data["shunt_voltage_mV"] = sensor_data.shunt_voltage_mV; 22 data["power_mW"] = sensor_data.power_mW; 23 data["energy_J"] = sensor_data.energy_J; 24 data["charge_C"] = sensor_data.charge_C; 25 data["die_temperature_C"] = sensor_data.die_temperature_C; 26 } 27 response->setLength(); 28 request->send(response); 29 } 30 31 } 32 33 void services::http::api::sensors::current::registerRoutes(AsyncWebServer &server) { 34 server.on("/api/sensors/current", HTTP_GET, handle_get); 35 }