This commit is contained in:
44
src/networking/json_builder.cpp
Normal file
44
src/networking/json_builder.cpp
Normal file
@@ -0,0 +1,44 @@
|
||||
#include "json_builder.h"
|
||||
|
||||
extern WaterData water_data;
|
||||
extern DeviceTelemetry telemetry;
|
||||
extern NetworkData wifi_data;
|
||||
extern NetworkData ethernet_data;
|
||||
extern SensorData shunt_data;
|
||||
|
||||
StaticJsonDocument<128> build_shunt_data_json(SensorData data) {
|
||||
StaticJsonDocument<128> doc;
|
||||
doc["bus_voltage"] = data.bus_voltage;
|
||||
doc["shunt_voltage"] = data.shunt_voltage;
|
||||
doc["current"] = data.shunt_current;
|
||||
return doc;
|
||||
}
|
||||
|
||||
StaticJsonDocument<128> build_water_data_json(WaterData data) {
|
||||
StaticJsonDocument<128> doc;
|
||||
doc["percentage"] = data.percentage;
|
||||
doc["water_height"] = data.level;
|
||||
doc["liters"] = data.liters;
|
||||
return doc;
|
||||
}
|
||||
|
||||
StaticJsonDocument<128> build_telemetry_json(DeviceTelemetry data) {
|
||||
StaticJsonDocument<128> doc;
|
||||
doc["uptime_seconds"] = data.uptime_seconds;
|
||||
doc["heap_percent"] = data.heap_used_percent;
|
||||
return doc;
|
||||
}
|
||||
|
||||
StaticJsonDocument<128> build_network_json(NetworkData wired, NetworkData wireless) {
|
||||
StaticJsonDocument<256> doc;
|
||||
doc["wifi"]["ip"] = wireless.ip_address;
|
||||
doc["wifi"]["rssi"] = wireless.rssi;
|
||||
doc["wifi"]["link"] = wireless.link;
|
||||
doc["wifi"]["ssid"] = wireless.network_name;
|
||||
|
||||
doc["ethernet"]["ip"] = wired.ip_address;
|
||||
doc["ethernet"]["rssi"] = wired.rssi;
|
||||
doc["ethernet"]["link"] = wired.link;
|
||||
|
||||
return doc;
|
||||
}
|
||||
7
src/networking/json_builder.h
Normal file
7
src/networking/json_builder.h
Normal file
@@ -0,0 +1,7 @@
|
||||
#include <ArduinoJson.h>
|
||||
#include "../global_data/global_data.h"
|
||||
|
||||
StaticJsonDocument<128> build_shunt_data_json(SensorData data);
|
||||
StaticJsonDocument<128> build_water_data_json(WaterData data);
|
||||
StaticJsonDocument<128> build_telemetry_json(DeviceTelemetry data);
|
||||
StaticJsonDocument<128> build_network_json(NetworkData wired, NetworkData wireless);
|
||||
39
src/networking/responses.cpp
Normal file
39
src/networking/responses.cpp
Normal file
@@ -0,0 +1,39 @@
|
||||
#include "responses.h"
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <ESPAsyncWebServer.h>
|
||||
#include "AsyncJson.h"
|
||||
#include <ArduinoJson.h>
|
||||
#include <ArduinoLog.h>
|
||||
#include "json_builder.h"
|
||||
|
||||
extern WaterData water_data;
|
||||
extern DeviceTelemetry telemetry;
|
||||
extern NetworkData wifi_data;
|
||||
extern NetworkData ethernet_data;
|
||||
extern SensorData shunt_data;
|
||||
|
||||
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("/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);
|
||||
});
|
||||
}
|
||||
3
src/networking/responses.h
Normal file
3
src/networking/responses.h
Normal file
@@ -0,0 +1,3 @@
|
||||
#include <ESPAsyncWebServer.h>
|
||||
|
||||
void setup_api_endpoints();
|
||||
Reference in New Issue
Block a user