Skip to content

Commit

Permalink
Indicate if plan can't be reached in time (evcc-io#11734)
Browse files Browse the repository at this point in the history
  • Loading branch information
naltatis committed Jan 18, 2024
1 parent ffc3ccd commit bd03813
Show file tree
Hide file tree
Showing 6 changed files with 34 additions and 9 deletions.
21 changes: 15 additions & 6 deletions assets/js/components/ChargingPlan.vue
Original file line number Diff line number Diff line change
Expand Up @@ -7,17 +7,16 @@
data-testid="charging-plan"
>
<div class="value m-0 d-block align-items-baseline justify-content-center">
<button
class="value-button p-0"
:class="enabled ? 'evcc-default-text' : 'text-gray'"
@click="openModal"
>
<button class="value-button p-0" :class="buttonColor" @click="openModal">
<strong v-if="minSocEnabled" class="text-decoration-underline">
{{ minSocLabel }}
</strong>
<strong v-else-if="targetChargeEnabled">
<span class="text-decoration-underline"> {{ targetTimeLabel() }}</span>
<div class="extraValue text-nowrap">
<div
class="extraValue text-nowrap"
:class="{ 'text-warning': planOverrun }"
>
{{ targetSocLabel }}
</div>
</strong>
Expand Down Expand Up @@ -126,6 +125,7 @@ export default {
planActive: Boolean,
planEnergy: Number,
planTime: String,
planOverrun: Boolean,
rangePerSoc: Number,
smartCostLimit: Number,
smartCostType: String,
Expand All @@ -145,6 +145,15 @@ export default {
};
},
computed: {
buttonColor: function () {
if (this.planOverrun) {
return "text-warning";
}
if (!this.enabled) {
return "text-gray";
}
return "evcc-default-text";
},
minSoc: function () {
return this.vehicle?.minSoc;
},
Expand Down
1 change: 1 addition & 0 deletions assets/js/components/Loadpoint.vue
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,7 @@ export default {
vehicles: Array,
planActive: Boolean,
planProjectedStart: String,
planOverrun: Boolean,
planEnergy: Number,
planTime: String,
effectivePlanTime: String,
Expand Down
1 change: 1 addition & 0 deletions assets/js/components/Vehicle.vue
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ export default {
planEnergy: Number,
planProjectedStart: String,
planTime: String,
planOverrun: Boolean,
pvAction: String,
pvRemainingInterpolated: Number,
smartCostActive: Boolean,
Expand Down
16 changes: 13 additions & 3 deletions assets/js/components/VehicleSoc.vue
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,10 @@
v-show="planMarkerAvailable"
class="plan-marker"
data-bs-toggle="tooltip"
:class="{ 'plan-marker--warn': planMarkerUnreachable }"
:class="{
'plan-marker--warning': planOverrun,
'plan-marker--error': planMarkerUnreachable,
}"
:style="{ left: `${planMarkerPosition}%` }"
data-testid="plan-marker"
@click="$emit('plan-clicked')"
Expand Down Expand Up @@ -88,6 +91,7 @@ export default {
effectiveLimitSoc: Number,
limitEnergy: Number,
planEnergy: Number,
planOverrun: Boolean,
chargedEnergy: Number,
socBasedCharging: Boolean,
socBasedPlanning: Boolean,
Expand Down Expand Up @@ -381,11 +385,17 @@ export default {
background-color: var(--evcc-darker-green);
transition: background-color var(--evcc-transition-fast) linear;
}
.plan-marker--warn {
.plan-marker--warning {
color: var(--bs-warning);
}
.plan-marker--warning::before {
background-color: var(--bs-warning);
}
.plan-marker--error {
opacity: 1;
color: var(--bs-danger);
}
.plan-marker--warn::before {
.plan-marker--error::before {
background-color: var(--bs-danger);
}
.energy-limit-marker {
Expand Down
1 change: 1 addition & 0 deletions core/keys/loadpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ const (
PlanSoc = "planSoc" // charge plan soc goal
PlanActive = "planActive" // charge plan has determined current slot to be an active slot
PlanProjectedStart = "planProjectedStart" // charge plan start time (earliest slot)
PlanOverrun = "planOverrun" // charge plan goal not reachable in time

// remote control
RemoteDisabled = "remoteDisabled" // remote disabled
Expand Down
3 changes: 3 additions & 0 deletions core/loadpoint_plan.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,10 @@ func (lp *Loadpoint) plannerActive() (active bool) {
}()

var planStart time.Time
var planOverrun bool
defer func() {
lp.publish(keys.PlanProjectedStart, planStart)
lp.publish(keys.PlanOverrun, planOverrun)
}()

planTime := lp.EffectivePlanTime()
Expand All @@ -115,6 +117,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
}

planStart = planner.Start(plan)
Expand Down

0 comments on commit bd03813

Please sign in to comment.