Planner: publish overrun duration (#13126)

This commit is contained in:
andig 2024-03-28 20:00:17 +01:00 • committed by GitHub
parent 72d33b5797
commit 6446d920e9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 15 additions and 13 deletions

View file

@ -15,7 +15,7 @@
<span class="targetTimeLabel"> {{ targetTimeLabel() }}</span>
<div
class="extraValue text-nowrap"
:class="{ 'text-warning': planOverrun }"
:class="{ 'text-warning': planTimeUnreachable }"
>
{{ targetSocLabel }}
</div>
@ -125,7 +125,7 @@ export default {
planActive: Boolean,
planEnergy: Number,
planTime: String,
planOverrun: Boolean,
planTimeUnreachable: Boolean,
rangePerSoc: Number,
smartCostLimit: Number,
smartCostType: String,
@ -146,7 +146,7 @@ export default {
},
computed: {
buttonColor: function () {
if (this.planOverrun) {
if (this.planTimeUnreachable) {
return "text-warning";
}
if (!this.enabled) {

View file

@ -78,10 +78,8 @@ export default {
if (planTime && this.endTime) {
const dateWanted = new Date(planTime);
const dateEstimated = new Date(this.endTime);
// account for rounding errors
dateWanted.setSeconds(60);
dateEstimated.setSeconds(0);
return dateWanted < dateEstimated;
// 1 minute tolerance
return dateEstimated - dateWanted > 60 * 1e3;
}
return false;
},

View file

@ -151,7 +151,7 @@ export default {
vehicles: Array,
planActive: Boolean,
planProjectedStart: String,
planOverrun: Boolean,
planOverrun: Number,
planEnergy: Number,
planTime: String,
effectivePlanTime: String,
@ -241,6 +241,10 @@ export default {
const features = this.vehicle?.features || [];
return features.includes("Offline") && features.includes("Retryable");
},
planTimeUnreachable: function () {
// 1 minute tolerance
return this.planOverrun > 60;
},
socBasedCharging: function () {
return this.vehicleHasSoc || this.vehicleSoc > 0;
},

View file

@ -106,7 +106,7 @@ export default {
planEnergy: Number,
planProjectedStart: String,
planTime: String,
planOverrun: Boolean,
planTimeUnreachable: Boolean,
pvAction: String,
pvRemainingInterpolated: Number,
smartCostActive: Boolean,

View file

@ -43,7 +43,7 @@
class="plan-marker"
data-bs-toggle="tooltip"
:class="{
'plan-marker--warning': planOverrun,
'plan-marker--warning': planTimeUnreachable,
'plan-marker--error': planMarkerUnreachable,
}"
:style="{ left: `${planMarkerPosition}%` }"
@ -91,7 +91,7 @@ export default {
effectiveLimitSoc: Number,
limitEnergy: Number,
planEnergy: Number,
planOverrun: Boolean,
planTimeUnreachable: Boolean,
chargedEnergy: Number,
socBasedCharging: Boolean,
socBasedPlanning: Boolean,

View file

@ -88,7 +88,7 @@ func (lp *Loadpoint) plannerActive() (active bool) {
}()
var planStart time.Time
var planOverrun bool
var planOverrun time.Duration
defer func() {
lp.publish(keys.PlanProjectedStart, planStart)
lp.publish(keys.PlanOverrun, planOverrun)
@ -125,7 +125,7 @@ func (lp *Loadpoint) plannerActive() (active bool) {
var overrun string
if excessDuration := requiredDuration - lp.clock.Until(planTime); excessDuration > 0 {
overrun = fmt.Sprintf("overruns by %v, ", excessDuration.Round(time.Second))
planOverrun = true
planOverrun = excessDuration
}
planStart = planner.Start(plan)