Skip to content

Commit 10c3d7f

Browse files
Merge pull request #486 from KipK:master
override version + fixes
2 parents 465e484 + 82183d9 commit 10c3d7f

File tree

6 files changed

+42
-28
lines changed

6 files changed

+42
-28
lines changed

src/current_shaper.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ unsigned long CurrentShaperTask::loop(MicroTasks::WakeReason reason) {
5252
event_send(event);
5353
}
5454
}
55+
else {
56+
//remove shaper claim
57+
if (_evse->clientHasClaim(EvseClient_OpenEVSE_Shaper)) {
58+
_evse->release(EvseClient_OpenEVSE_Shaper);
59+
}
60+
}
5561

5662

5763
return EVSE_SHAPER_LOOP_TIME;

src/evse_man.cpp

Lines changed: 8 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -268,8 +268,6 @@ bool EvseManager::evaluateClaims(EvseProperties &properties)
268268
DynamicJsonDocument event(capacity);
269269
event["manual_override"] = 1;
270270
event_send(event);
271-
event.clear();
272-
mqtt_publish_json(event, "/override");
273271
}
274272
}
275273
}
@@ -439,12 +437,6 @@ unsigned long EvseManager::loop(MicroTasks::WakeReason reason)
439437
{
440438
_evaluateTargetState = false;
441439
setTargetState(_targetProperties);
442-
443-
if ( manual.isActive() ) {
444-
// update /override topic to mqtt
445-
mqtt_publish_override();
446-
}
447-
448440
}
449441
return MicroTask.Infinate;
450442
}
@@ -477,18 +469,13 @@ bool EvseManager::claim(EvseClient client, int priority, EvseProperties &target)
477469
{
478470
DBUGF("Found slot");
479471
if(slot->claim(client, priority, target))
480-
{
481-
if (target.getState() != EvseState::None)
482-
// ignore incrementing claims_version if there's no state in the claim
483-
{
484-
DBUGF("Claim added/updated, waking task");
485-
StaticJsonDocument<128> event;
486-
event["claims_version"] = ++_version;
487-
event_send(event);
488-
}
489-
472+
{
473+
DBUGF("Claim added/updated, waking task");
490474
_evaluateClaims = true;
491475
MicroTask.wakeTask(this);
476+
StaticJsonDocument<128> event;
477+
event["claims_version"] = ++_version;
478+
event_send(event);
492479
}
493480
return true;
494481
}
@@ -508,19 +495,13 @@ bool EvseManager::release(EvseClient client)
508495
DynamicJsonDocument event(capacity);
509496
event["manual_override"] = 0;
510497
event_send(event);
511-
event.clear();
512-
// update /override topic to mqtt
513-
event["state"] = "null";
514-
mqtt_publish_json(event, "/override");
515498
}
516-
517-
StaticJsonDocument<128> event;
518-
event["claims_version"] = ++_version;
519-
event_send(event);
520-
521499
claim->release();
522500
_evaluateClaims = true;
523501
MicroTask.wakeTask(this);
502+
StaticJsonDocument<128> event;
503+
event["claims_version"] = ++_version;
504+
event_send(event);
524505
return true;
525506
}
526507

src/manual.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
#include "manual.h"
2+
#include "event.h"
23

34
ManualOverride::ManualOverride(EvseManager &evse) :
45
_evse((&evse))
56
{
7+
_version = 0;
68
}
79

810
ManualOverride::~ManualOverride()
@@ -18,6 +20,9 @@ bool ManualOverride::claim()
1820
bool ManualOverride::claim(EvseProperties &props)
1921
{
2022
if (!props.hasAutoRelease()) props.setAutoRelease(true);
23+
StaticJsonDocument<128> event;
24+
event["override_version"] = ++_version;
25+
event_send(event);
2126
return _evse->claim(EvseClient_OpenEVSE_Manual, EvseManager_Priority_Manual, props);
2227
}
2328

@@ -45,3 +50,8 @@ bool ManualOverride::getProperties(EvseProperties &props)
4550

4651
return false;
4752
}
53+
54+
uint8_t ManualOverride::getVersion() {
55+
return _version;
56+
}
57+

src/manual.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class ManualOverride
88
{
99
private:
1010
EvseManager *_evse;
11+
uint8_t _version;
1112
public:
1213
ManualOverride(EvseManager &evse);
1314
~ManualOverride();
@@ -21,6 +22,7 @@ class ManualOverride
2122
return _evse->clientHasClaim(EvseClient_OpenEVSE_Manual);
2223
}
2324
bool getProperties(EvseProperties &props);
25+
uint8_t getVersion();
2426
};
2527

2628
extern ManualOverride manual;

src/mqtt.cpp

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ static long nextMqttReconnectAttempt = 0;
3131
static unsigned long mqttRestartTime = 0;
3232
static bool connecting = false;
3333
static bool mqttRetained = false;
34+
uint8_t claimsVersion = 0;
35+
uint8_t overrideVersion = 0;
3436

3537
String lastWill = "";
3638

@@ -70,7 +72,7 @@ void mqttmsg_callback(MongooseString topic, MongooseString payload) {
7072
else if (topic_string == mqtt_live_pwr)
7173
{
7274
shaper.setLivePwr(payload_str.toInt());
73-
DBUGF("shaper: available power:%dW", shaper.getAvlPwr());
75+
DBUGF("shaper: available amps:%dA", shaper.getChgCur());
7476
}
7577
else if (topic_string == mqtt_vrms)
7678
{
@@ -496,6 +498,18 @@ mqtt_loop() {
496498
}
497499
}
498500

501+
if (claimsVersion != evse.getClaimsVersion() || !claimsVersion) {
502+
mqtt_publish_claim();
503+
DBUGF("Claims has changed, publishing to MQTT");
504+
claimsVersion = evse.getClaimsVersion();
505+
}
506+
507+
if (overrideVersion != manual.getVersion() || !overrideVersion ) {
508+
mqtt_publish_override;
509+
DBUGF("Claims has changed, publishing to MQTT");
510+
overrideVersion = manual.getVersion();
511+
}
512+
499513
Profile_End(mqtt_loop, 5);
500514
}
501515

src/web_server.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ void buildStatus(DynamicJsonDocument &doc) {
254254

255255
doc["config_version"] = config_version;
256256
doc["claims_version"] = evse.getClaimsVersion();
257+
doc["override_version"] = manual.getVersion();
257258
doc["schedule_version"] = scheduler.getVersion();
258259
doc["schedule_plan_version"] = scheduler.getPlanVersion();
259260

0 commit comments

Comments
 (0)