@@ -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)
491499bool 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+
535552EvseProperties &EvseManager::getClaimProperties (EvseClient client)
536553{
537554 if (EvseClient_NULL == client) {
0 commit comments