Skip to content

Commit 10e2e9f

Browse files
committed
Merge branch 'master' into fewfixes
2 parents d50fdcd + 39a10b9 commit 10e2e9f

File tree

2 files changed

+75
-7
lines changed

2 files changed

+75
-7
lines changed

src/current_shaper.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ unsigned long CurrentShaperTask::loop(MicroTasks::WakeReason reason) {
4141
}
4242
if (millis() - _timer > EVSE_SHAPER_FAILSAFE_TIME) {
4343
//available power has not been updated since EVSE_SHAPER_FAILSAFE_TIME, pause charge
44-
DBUGF("MQTT avl_pwr has not been updated in time, pausing charge");
44+
DBUGF("shaper_live_pwr has not been updated in time, pausing charge");
4545
props.setState(EvseState::Disabled);
4646
evse.claim(EvseClient_OpenEVSE_Shaper,EvseManager_Priority_Limit, props);
4747
StaticJsonDocument<128> event;

src/web_server.cpp

Lines changed: 74 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -674,20 +674,88 @@ handleSaveOhmkey(MongooseHttpServerRequest *request) {
674674
// Returns status json
675675
// url: /status
676676
// -------------------------------------------------------------------
677+
void handleStatusPost(MongooseHttpServerRequest *request, MongooseHttpServerResponseStream *response)
678+
{
679+
String body = request->body().toString();
680+
// Deserialize the JSON document
681+
const size_t capacity = JSON_OBJECT_SIZE(50) + 1024;
682+
DynamicJsonDocument doc(capacity);
683+
DeserializationError error = deserializeJson(doc, body);
684+
if(!error)
685+
{
686+
if(doc.containsKey("voltage"))
687+
{
688+
double volts = doc["voltage"];
689+
DBUGF("voltage:%.1f", volts);
690+
evse.setVoltage(volts);
691+
}
692+
if(doc.containsKey("shaper_live_pwr"))
693+
{
694+
double shaper_live_pwr = doc["shaper_live_pwr"];
695+
shaper.setLivePwr(shaper_live_pwr);
696+
DBUGF("shaper: available power:%dW", shaper.getAvlPwr());
697+
}
698+
if(doc.containsKey("solar")) {
699+
solar = doc["solar"];
700+
DBUGF("solar:%dW", solar);
701+
divert.update_state();
702+
}
703+
else if(doc.containsKey("grid_ie")) {
704+
grid_ie = doc["grid_ie"];
705+
DBUGF("grid:%dW", grid_ie);
706+
divert.update_state();
707+
}
708+
if(doc.containsKey("battery_level")) {
709+
double vehicle_soc = doc["battery_level"];
710+
DBUGF("vehicle_soc:%d%%", vehicle_soc);
711+
evse.setVehicleStateOfCharge(vehicle_soc);
712+
}
713+
if(doc.containsKey("battery_range")) {
714+
double vehicle_range = doc["battery_range"];
715+
DBUGF("vehicle_range:%dKM", vehicle_range);
716+
evse.setVehicleRange(vehicle_range);
717+
}
718+
if(doc.containsKey("time_to_full_charge")){
719+
double vehicle_eta = doc["time_to_full_charge"];
720+
DBUGF("vehicle_eta:%d", vehicle_eta);
721+
evse.setVehicleEta(vehicle_eta);
722+
}
723+
// send back new value to clients
724+
event_send(doc);
725+
726+
response->setCode(200);
727+
serializeJson(doc, *response);
728+
} else {
729+
response->setCode(400);
730+
response->print("{\"msg\":\"Could not parse JSON\"}");
731+
}
732+
}
733+
734+
677735
void
678-
handleStatus(MongooseHttpServerRequest *request) {
736+
handleStatus(MongooseHttpServerRequest *request)
737+
{
738+
679739
MongooseHttpServerResponseStream *response;
680740
if(false == requestPreProcess(request, response)) {
681741
return;
682742
}
683743

684-
const size_t capacity = JSON_OBJECT_SIZE(40) + 1024;
685-
DynamicJsonDocument doc(capacity);
744+
if(HTTP_GET == request->method()) {
686745

687-
buildStatus(doc);
746+
const size_t capacity = JSON_OBJECT_SIZE(40) + 1024;
747+
DynamicJsonDocument doc(capacity);
748+
buildStatus(doc);
749+
response->setCode(200);
750+
serializeJson(doc, *response);
751+
752+
} else if(HTTP_POST == request->method()) {
753+
handleStatusPost(request, response);
754+
} else {
755+
response->setCode(405);
756+
response->print("{\"msg\":\"Method not allowed\"}");
757+
}
688758

689-
response->setCode(200);
690-
serializeJson(doc, *response);
691759
request->send(response);
692760
}
693761

0 commit comments

Comments
 (0)