Skip to content

Commit 0e6fc30

Browse files
Merge pull request #474 from KipK/master
add "claims_version" event sent at each claims change.
2 parents 13f7183 + 9590faf commit 0e6fc30

File tree

3 files changed

+24
-3
lines changed

3 files changed

+24
-3
lines changed

src/evse_man.cpp

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -478,7 +478,15 @@ bool EvseManager::claim(EvseClient client, int priority, EvseProperties &target)
478478
DBUGF("Found slot");
479479
if(slot->claim(client, priority, target))
480480
{
481-
DBUGF("Claim added/updated, waking task");
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+
482490
_evaluateClaims = true;
483491
MicroTask.wakeTask(this);
484492
}
@@ -491,7 +499,7 @@ bool EvseManager::claim(EvseClient client, int priority, EvseProperties &target)
491499
bool EvseManager::release(EvseClient client)
492500
{
493501
Claim *claim;
494-
502+
495503
if(findClaim(client, &claim))
496504
{
497505
// if claim is manual override, publish data to socket & mqtt
@@ -506,9 +514,13 @@ bool EvseManager::release(EvseClient client)
506514
mqtt_publish_json(event, "/override");
507515
}
508516

517+
StaticJsonDocument<128> event;
518+
event["claims_version"] = ++_version;
519+
event_send(event);
520+
509521
claim->release();
510522
_evaluateClaims = true;
511-
MicroTask.wakeTask(this);
523+
MicroTask.wakeTask(this);
512524
return true;
513525
}
514526

@@ -532,6 +544,11 @@ bool EvseManager::clientHasClaim(EvseClient client) {
532544
return findClaim(client);
533545
}
534546

547+
uint8_t EvseManager::getClaimsVersion() {
548+
return _version;
549+
}
550+
551+
535552
EvseProperties &EvseManager::getClaimProperties(EvseClient client)
536553
{
537554
if(EvseClient_NULL == client) {

src/evse_man.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,6 +253,7 @@ class EvseManager : public MicroTasks::Task
253253

254254
EvseProperties _targetProperties;
255255
bool _hasClaims;
256+
uint8_t _version;
256257

257258
EvseClient _state_client;
258259
EvseClient _charge_current_client;
@@ -297,6 +298,7 @@ class EvseManager : public MicroTasks::Task
297298
bool claim(EvseClient client, int priority, EvseProperties &target);
298299
bool release(EvseClient client);
299300
bool clientHasClaim(EvseClient client);
301+
uint8_t getClaimsVersion();
300302

301303
EvseProperties &getClaimProperties(EvseClient client);
302304
EvseState getState(EvseClient client = EvseClient_NULL);

src/web_server.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ typedef const __FlashStringHelper *fstr_t;
3939
#include "scheduler.h"
4040
#include "rfid.h"
4141
#include "current_shaper.h"
42+
#include "evse_man.h"
4243

4344
MongooseHttpServer server; // Create class for Web server
4445

@@ -252,6 +253,7 @@ void buildStatus(DynamicJsonDocument &doc) {
252253
doc["offset"] = String(offset);
253254

254255
doc["config_version"] = config_version;
256+
doc["claims_version"] = evse.getClaimsVersion();
255257
doc["schedule_version"] = scheduler.getVersion();
256258
doc["schedule_plan_version"] = scheduler.getPlanVersion();
257259

0 commit comments

Comments
 (0)