Vehicle: fix detection indicator and add vehicledetect api (#4164)

This commit is contained in:
andig 2022-08-20 11:23:53 +02:00 • committed by GitHub
parent 48f208971d
commit 1b1358cb3f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 45 additions and 15 deletions

View file

@ -133,10 +133,11 @@ export default {
connected: Boolean,
// charging: Boolean,
enabled: Boolean,
vehicleTitle: String,
vehicleSoC: Number,
vehicleDetectionActive: Boolean,
vehiclePresent: Boolean,
vehicleRange: Number,
vehicleSoC: Number,
vehicleTitle: String,
vehicles: Array,
minSoC: Number,
targetTime: String,

View file

@ -70,6 +70,7 @@ export default {
enabled: Boolean,
charging: Boolean,
minSoC: Number,
vehicleDetectionActive: Boolean,
vehicleRange: Number,
vehicleTitle: String,
targetTimeActive: Boolean,

View file

@ -892,17 +892,21 @@ func (lp *LoadPoint) vehicleDefaultOrDetect() {
lp.addTask(lp.vehicleOdometer)
}
} else if len(lp.coordinatedVehicles()) > 0 {
// flush all vehicles before detection starts
lp.log.DEBUG.Println("vehicle api refresh")
provider.ResetCached()
// reset connection timer and starts api refresh timer
lp.vehicleDetect = lp.clock.Now()
lp.vehicleDetectTicker = lp.clock.Ticker(vehicleDetectInterval)
lp.publish(vehicleDetectionActive, true)
lp.startVehicleDetection()
}
}
// startVehicleDetection reset connection timer and starts api refresh timer
func (lp *LoadPoint) startVehicleDetection() {
// flush all vehicles before detection starts
lp.log.DEBUG.Println("vehicle api refresh")
provider.ResetCached()
lp.vehicleDetect = lp.clock.Now()
lp.vehicleDetectTicker = lp.clock.Ticker(vehicleDetectInterval)
lp.publish(vehicleDetectionActive, true)
}
// stopVehicleDetection expires the connection timer and ticker
func (lp *LoadPoint) stopVehicleDetection() {
lp.vehicleDetect = time.Time{}

View file

@ -85,4 +85,6 @@ type API interface {
// SetVehicle sets the active vehicle
SetVehicle(vehicle api.Vehicle)
// StartVehicleDetection allows triggering vehicle detection for debugging purposes
StartVehicleDetection()
}

View file

@ -274,3 +274,15 @@ func (lp *LoadPoint) SetVehicle(vehicle api.Vehicle) {
// disable auto-detect
lp.stopVehicleDetection()
}
// StartVehicleDetection allows triggering vehicle detection for debugging purposes
func (lp *LoadPoint) StartVehicleDetection() {
// reset vehicle
lp.setActiveVehicle(nil)
lp.Lock()
defer lp.Unlock()
// start auto-detect
lp.startVehicleDetection()
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4
dist/index.html vendored
View file

@ -20,8 +20,8 @@
<meta name="theme-color" content="#020318" />
<title>evcc</title>
<script type="module" crossorigin src="./assets/index.9738d453.js"></script>
<link rel="stylesheet" href="./assets/index.fb2bc24b.css">
<script type="module" crossorigin src="./assets/index.a11d5a54.js"></script>
<link rel="stylesheet" href="./assets/index.7fc627a8.css">
</head>
<body>
<script>

View file

@ -94,6 +94,7 @@ func NewHTTPd(addr string, site site.API, hub *SocketHub, cache *util.Cache) *HT
"targetcharge2": {[]string{"DELETE", "OPTIONS"}, "/targetcharge", targetChargeRemoveHandler(lp)},
"vehicle": {[]string{"POST", "OPTIONS"}, "/vehicle/{vehicle:[0-9]+}", vehicleHandler(site, lp)},
"vehicle2": {[]string{"DELETE", "OPTIONS"}, "/vehicle", vehicleRemoveHandler(lp)},
"vehicleDetect": {[]string{"PATCH", "OPTIONS"}, "/vehicle", vehicleDetectHandler(lp)},
"remotedemand": {[]string{"POST", "OPTIONS"}, "/remotedemand/{demand:[a-z]+}/{source::[0-9a-zA-Z_-]+}", remoteDemandHandler(lp)},
}

View file

@ -278,6 +278,15 @@ func vehicleRemoveHandler(loadpoint loadpoint.API) http.HandlerFunc {
}
}
// vehicleDetectHandler starts vehicle detection
func vehicleDetectHandler(loadpoint loadpoint.API) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
loadpoint.StartVehicleDetection()
res := struct{}{}
jsonResult(w, res)
}
}
// socketHandler attaches websocket handler to uri
func socketHandler(hub *SocketHub) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {