@@ -19,8 +19,7 @@ using namespace GuLinux;
1919
2020APB::WebServer::WebServer (Scheduler &scheduler) : AsyncWebServerBase{},
2121 events (" /api/events" ),
22- scheduler(scheduler)
23- {
22+ scheduler(scheduler) {
2423}
2524
2625
@@ -69,13 +68,13 @@ void APB::WebServer::setup() {
6968 new Task (1000 , TASK_FOREVER, [this ](){
7069 eventsDocument.clear ();
7170 if (Ambient::Instance.reading ().has_value ()) {
72- populateAmbientStatus (eventsDocument[" ambient" ].to <JsonObject>());
71+ Ambient::Instance. toJson (eventsDocument[" ambient" ].to <JsonObject>());
7372 } else {
7473 eventsDocument[" ambient" ] = static_cast <char *>(0 );
7574 }
7675
77- populatePowerStatus (eventsDocument[" power" ].to <JsonObject>());
78- populateHeatersStatus (eventsDocument[" heaters" ].to <JsonArray>());
76+ PowerMonitor::Instance. toJson (eventsDocument[" power" ].to <JsonObject>());
77+ Heaters::toJson (eventsDocument[" heaters" ].to <JsonArray>());
7978 eventsDocument[" app" ][" uptime" ] = esp_timer_get_time () / 1000'000.0 ;
8079 serializeJson (eventsDocument, eventsString.data (), eventsString.size ());
8180 this ->events .send (eventsString.data (), " status" , millis (), 5000 );
@@ -135,55 +134,23 @@ void APB::WebServer::onGetAmbient(AsyncWebServerRequest *request) {
135134 return ;
136135 }
137136 JsonResponse response (request);
138- populateAmbientStatus (response.root ().to <JsonObject>());
137+ Ambient::Instance. toJson (response.root ().to <JsonObject>());
139138}
140139
141140
142141
143142void APB::WebServer::onGetHeaters (AsyncWebServerRequest *request) {
144143 JsonResponse response (request);
145- populateHeatersStatus (response.root ().to <JsonArray>());
144+ Heaters::toJson (response.root ().to <JsonArray>());
146145}
147146
148- void APB::WebServer::populateHeatersStatus (JsonArray heatersStatus) {
149- std::for_each (Heaters::Instance.begin (), Heaters::Instance.end (), [heatersStatus](Heater &heater) {
150- heatersStatus[heater.index ()][" mode" ] = heater.modeAsString (),
151- heatersStatus[heater.index ()][" max_duty" ] = heater.maxDuty ();
152- heatersStatus[heater.index ()][" duty" ] = heater.duty ();
153- heatersStatus[heater.index ()][" active" ] = heater.active ();
154- heatersStatus[heater.index ()][" has_temperature" ] = heater.temperature ().has_value ();
155- optional::if_present (heater.rampOffset (), [&](float v){ heatersStatus[heater.index ()][" ramp_offset" ] = v; });
156- optional::if_present (heater.minDuty (), [&](float v){ heatersStatus[heater.index ()][" min_duty" ] = v; });
157- optional::if_present (heater.temperature (), [&](float v){ heatersStatus[heater.index ()][" temperature" ] = v; });
158- optional::if_present (heater.targetTemperature (), [&](float v){ heatersStatus[heater.index ()][" target_temperature" ] = v; });
159- optional::if_present (heater.dewpointOffset (), [&](float v){ heatersStatus[heater.index ()][" dewpoint_offset" ] = v; });
160- });
161- }
162-
163- void APB::WebServer::populateAmbientStatus (JsonObject ambientStatus) {
164- ambientStatus[" temperature" ] = Ambient::Instance.reading ()->temperature ;
165- ambientStatus[" humidity" ] = Ambient::Instance.reading ()->humidity ;
166- ambientStatus[" dewpoint" ] = Ambient::Instance.reading ()->dewpoint ();
167- }
168-
169-
170- void APB::WebServer::populatePowerStatus (JsonObject powerStatus) {
171- powerStatus[" busVoltage" ] = PowerMonitor::Instance.status ().busVoltage ;
172- powerStatus[" current" ] = PowerMonitor::Instance.status ().current ;
173- powerStatus[" power" ] = PowerMonitor::Instance.status ().power ;
174- powerStatus[" shuntVoltage" ] = PowerMonitor::Instance.status ().shuntVoltage ;
175- powerStatus[" charge" ] = PowerMonitor::Instance.status ().charge ;
176- }
177-
178-
179-
180147void APB::WebServer::onGetPower (AsyncWebServerRequest *request) {
181148 if (!PowerMonitor::Instance.status ().initialised ) {
182149 JsonResponse::error (500 , " Power reading not available" , request);
183150 return ;
184151 }
185152 JsonResponse response (request);
186- populatePowerStatus (response.root ().to <JsonObject>());
153+ PowerMonitor::Instance. toJson (response.root ().to <JsonObject>());
187154}
188155
189156void APB::WebServer::onGetMetrics (AsyncWebServerRequest *request) {
0 commit comments