better target time suggestion; exposed projected start (#3098)
This commit is contained in:
parent
a419d2cc9d
commit
e627c91106
9 changed files with 33 additions and 18 deletions
|
|
@ -60,7 +60,6 @@ export default {
|
|||
minSoC: Number,
|
||||
targetTime: String,
|
||||
targetTimeActive: Boolean,
|
||||
targetTimeHourSuggestion: Number,
|
||||
vehicleProviderLoggedIn: Boolean,
|
||||
vehicleProviderLoginPath: String,
|
||||
vehicleProviderLogoutPath: String,
|
||||
|
|
|
|||
|
|
@ -108,7 +108,8 @@
|
|||
<script>
|
||||
import formatter from "../mixins/formatter";
|
||||
|
||||
const DEFAULT_TARGET_HOUR = 7;
|
||||
const DEFAULT_TARGET_TIME = "7:00";
|
||||
const LAST_TARGET_TIME_KEY = "last_target_time";
|
||||
|
||||
export default {
|
||||
name: "TargetCharge",
|
||||
|
|
@ -117,7 +118,6 @@ export default {
|
|||
id: Number,
|
||||
targetTime: String,
|
||||
targetTimeActive: Boolean,
|
||||
targetTimeHourSuggestion: Number,
|
||||
targetSoC: Number,
|
||||
},
|
||||
data: function () {
|
||||
|
|
@ -158,14 +158,14 @@ export default {
|
|||
return this.$t("main.targetCharge.inactiveLabel");
|
||||
},
|
||||
defaultDate: function () {
|
||||
const [hours, minutes] = (
|
||||
window.localStorage[LAST_TARGET_TIME_KEY] || DEFAULT_TARGET_TIME
|
||||
).split(":");
|
||||
|
||||
const target = new Date();
|
||||
target.setSeconds(0);
|
||||
target.setMinutes(0);
|
||||
if (Number.isInteger(this.targetTimeHourSuggestion)) {
|
||||
target.setUTCHours(this.targetTimeHourSuggestion);
|
||||
} else {
|
||||
target.setHours(DEFAULT_TARGET_HOUR);
|
||||
}
|
||||
target.setMinutes(minutes);
|
||||
target.setHours(hours);
|
||||
// today or tomorrow?
|
||||
const isInPast = target < new Date();
|
||||
if (isInPast) {
|
||||
|
|
@ -208,6 +208,13 @@ export default {
|
|||
return new Date().toISOString().split("T")[1].slice(0, -8);
|
||||
},
|
||||
setTargetTime: function () {
|
||||
try {
|
||||
const hours = this.selectedTargetTime.getHours();
|
||||
const minutes = this.selectedTargetTime.getMinutes();
|
||||
window.localStorage[LAST_TARGET_TIME_KEY] = `${hours}:${minutes}`;
|
||||
} catch (e) {
|
||||
console.warn(e);
|
||||
}
|
||||
this.$emit("target-time-updated", this.selectedTargetTime);
|
||||
},
|
||||
removeTargetTime: function () {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
log: info
|
||||
log: trace
|
||||
|
||||
interval: 3s
|
||||
|
||||
|
|
@ -96,6 +96,7 @@ vehicles:
|
|||
- name: demo
|
||||
title: e-Golf
|
||||
type: custom
|
||||
capacity: 50
|
||||
soc:
|
||||
source: js
|
||||
vm: shared
|
||||
|
|
|
|||
|
|
@ -132,7 +132,6 @@ func (lp *LoadPoint) SetTargetCharge(finishAt time.Time, soc int) {
|
|||
|
||||
// don't remove soc
|
||||
if !finishAt.IsZero() {
|
||||
lp.publish("targetTimeHourSuggestion", finishAt.Hour())
|
||||
lp.setTargetSoC(soc)
|
||||
lp.requestUpdate()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -72,7 +72,13 @@ func (lp *Timer) Set(t time.Time) {
|
|||
}
|
||||
|
||||
lp.Time = t
|
||||
lp.Publish("targetTime", lp.Time)
|
||||
|
||||
if lp.Time.IsZero() {
|
||||
lp.Publish("targetTime", nil)
|
||||
lp.Publish("targetTimeProjectedStart", nil)
|
||||
} else {
|
||||
lp.Publish("targetTime", lp.Time)
|
||||
}
|
||||
}
|
||||
|
||||
// Reset resets the target charging request
|
||||
|
|
@ -114,8 +120,11 @@ func (lp *Timer) DemandActive() bool {
|
|||
if lp.active {
|
||||
lp.log.DEBUG.Printf("projected end: %v", lp.finishAt)
|
||||
lp.log.DEBUG.Printf("desired finish time: %v", lp.Time)
|
||||
lp.Publish("targetTimeProjectedStart", nil)
|
||||
} else {
|
||||
lp.log.DEBUG.Printf("projected start: %v", lp.Time.Add(-remainingDuration))
|
||||
projectedStart := lp.Time.Add(-remainingDuration)
|
||||
lp.log.DEBUG.Printf("projected start: %v", projectedStart)
|
||||
lp.Publish("targetTimeProjectedStart", projectedStart)
|
||||
}
|
||||
|
||||
// timer charging is already active- only deactivate once charging has stopped
|
||||
|
|
|
|||
4
dist/index.html
vendored
4
dist/index.html
vendored
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="EV Charge Controller"><meta name="author" content="andig"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="apple-touch-icon" sizes="180x180" href="ico/apple-touch-icon.png?[[.Version]]"><link rel="icon" type="image/png" sizes="32x32" href="ico/favicon-32x32.png?[[.Version]]"><link rel="icon" type="image/png" sizes="16x16" href="ico/favicon-16x16.png?[[.Version]]"><link rel="manifest" href="ico/site.webmanifest"><link rel="mask-icon" href="ico/safari-pinned-tab.svg?[[.Version]]" color="#18191a"><link rel="shortcut icon" href="ico/favicon.ico?[[.Version]]"><meta name="apple-mobile-web-app-title" content="evcc"><meta name="application-name" content="evcc"><meta name="msapplication-TileColor" content="#18191a"><meta name="msapplication-config" content="ico/browserconfig.xml"><meta name="theme-color" content="#18191a"><title>evcc</title><link href="css/chunk-vendors.38c609a9.css" rel="preload" as="style"><link href="css/index.0a6b5a0e.css" rel="preload" as="style"><link href="js/chunk-vendors.b6901fd4.js" rel="preload" as="script"><link href="js/index.9fddadfd.js" rel="preload" as="script"><link href="css/chunk-vendors.38c609a9.css" rel="stylesheet"><link href="css/index.0a6b5a0e.css" rel="stylesheet"></head><body><script>window.evcc = {
|
||||
<!DOCTYPE html><html lang="de"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="EV Charge Controller"><meta name="author" content="andig"><meta name="apple-mobile-web-app-capable" content="yes"><meta name="apple-mobile-web-app-status-bar-style" content="black"><link rel="apple-touch-icon" sizes="180x180" href="ico/apple-touch-icon.png?[[.Version]]"><link rel="icon" type="image/png" sizes="32x32" href="ico/favicon-32x32.png?[[.Version]]"><link rel="icon" type="image/png" sizes="16x16" href="ico/favicon-16x16.png?[[.Version]]"><link rel="manifest" href="ico/site.webmanifest"><link rel="mask-icon" href="ico/safari-pinned-tab.svg?[[.Version]]" color="#18191a"><link rel="shortcut icon" href="ico/favicon.ico?[[.Version]]"><meta name="apple-mobile-web-app-title" content="evcc"><meta name="application-name" content="evcc"><meta name="msapplication-TileColor" content="#18191a"><meta name="msapplication-config" content="ico/browserconfig.xml"><meta name="theme-color" content="#18191a"><title>evcc</title><link href="css/chunk-vendors.38c609a9.css" rel="preload" as="style"><link href="css/index.0a6b5a0e.css" rel="preload" as="style"><link href="js/chunk-vendors.b6901fd4.js" rel="preload" as="script"><link href="js/index.15932e9f.js" rel="preload" as="script"><link href="css/chunk-vendors.38c609a9.css" rel="stylesheet"><link href="css/index.0a6b5a0e.css" rel="stylesheet"></head><body><script>window.evcc = {
|
||||
version: "[[.Version]]",
|
||||
configured: "[[.Configured]]",
|
||||
commit: "[[.Commit]]",
|
||||
};</script><div id="app"></div><script src="js/chunk-vendors.b6901fd4.js"></script><script src="js/index.9fddadfd.js"></script></body></html>
|
||||
};</script><div id="app"></div><script src="js/chunk-vendors.b6901fd4.js"></script><script src="js/index.15932e9f.js"></script></body></html>
|
||||
File diff suppressed because one or more lines are too long
1
dist/js/index.15932e9f.js.map
vendored
Normal file
1
dist/js/index.15932e9f.js.map
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dist/js/index.9fddadfd.js.map
vendored
1
dist/js/index.9fddadfd.js.map
vendored
File diff suppressed because one or more lines are too long
Loading…
Add table
Add a link
Reference in a new issue