wind.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_speed_get(AsyncWebServerRequest *request) { 11 WindSpeedSensorData sensor_data = {}; 12 bool ok = sensors::manager::accessWindSpeed(&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["wind_speed_kilometers_per_hour"] = sensor_data.kilometers_per_hour; 20 } 21 response->setLength(); 22 request->send(response); 23 } 24 25 void handle_direction_get(AsyncWebServerRequest *request) { 26 WindDirectionSensorData sensor_data = {}; 27 bool ok = sensors::manager::accessWindDirection(&sensor_data); 28 29 AsyncJsonResponse *response = new AsyncJsonResponse(); 30 JsonObject root = response->getRoot().to<JsonObject>(); 31 root["ok"] = ok && sensor_data.ok; 32 JsonObject data = root["data"].to<JsonObject>(); 33 if (ok && sensor_data.ok) { 34 data["wind_direction_degrees"] = sensor_data.degrees; 35 data["wind_direction_angle_slice"] = sensor_data.slice; 36 } 37 response->setLength(); 38 request->send(response); 39 } 40 41 } 42 43 void services::http::api::sensors::wind::registerRoutes(AsyncWebServer &server) { 44 server.on("/api/sensors/wind/speed", HTTP_GET, handle_speed_get); 45 server.on("/api/sensors/wind/direction", HTTP_GET, handle_direction_get); 46 }