Sessions: add odometer (#5069)
This commit is contained in:
parent
dc22d10ed3
commit
db9f5dd73d
7 changed files with 26 additions and 11 deletions
|
|
@ -201,6 +201,7 @@ title = "Ladevorgänge"
|
|||
downloadCsv = "Als CSV herunterladen"
|
||||
loadpoint = "Ladepunkt"
|
||||
vehicle = "Fahrzeug"
|
||||
odometer = "Kilometerstand"
|
||||
energy = "Geladen"
|
||||
date = "Zeitraum"
|
||||
|
||||
|
|
|
|||
|
|
@ -207,6 +207,7 @@ date = "Period"
|
|||
[sessions.csv]
|
||||
loadpoint = "Loadpoint"
|
||||
vehicle = "Vehicle"
|
||||
odometer = "Mileage (km)"
|
||||
identifier = "Identifier"
|
||||
chargedenergy = "Energy (kWh)"
|
||||
meterstart = "Meter Start (kWh)"
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ type Session struct {
|
|||
Loadpoint string `json:"loadpoint"`
|
||||
Identifier string `json:"identifier"`
|
||||
Vehicle string `json:"vehicle"`
|
||||
Odometer float64 `json:"odometer"`
|
||||
MeterStart float64 `json:"meterStart" csv:"Meter Start (kWh)" gorm:"column:meter_start_kwh"`
|
||||
MeterStop float64 `json:"meterStop" csv:"Meter Stop (kWh)" gorm:"column:meter_end_kwh"`
|
||||
ChargedEnergy float64 `json:"chargedEnergy" csv:"Charged Energy (kWh)" gorm:"column:charged_kwh"`
|
||||
|
|
|
|||
|
|
@ -905,7 +905,15 @@ func (lp *LoadPoint) setActiveVehicle(vehicle api.Vehicle) {
|
|||
lp.Lock()
|
||||
|
||||
lp.unpublishVehicle()
|
||||
lp.updateSession()
|
||||
|
||||
lp.updateSession(func(session *db.Session) {
|
||||
var title string
|
||||
if lp.vehicle != nil {
|
||||
title = lp.vehicle.Title()
|
||||
}
|
||||
|
||||
lp.session.Vehicle = title
|
||||
})
|
||||
}
|
||||
|
||||
func (lp *LoadPoint) wakeUpVehicle() {
|
||||
|
|
@ -1039,6 +1047,11 @@ func (lp *LoadPoint) vehicleOdometer() {
|
|||
if odo, err := vs.Odometer(); err == nil {
|
||||
lp.log.DEBUG.Printf("vehicle odometer: %.0fkm", odo)
|
||||
lp.publish(vehicleOdometer, odo)
|
||||
|
||||
// update session once odometer is read
|
||||
lp.updateSession(func(session *db.Session) {
|
||||
session.Odometer = odo
|
||||
})
|
||||
} else {
|
||||
lp.log.ERROR.Printf("vehicle odometer: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package core
|
|||
|
||||
import (
|
||||
"github.com/evcc-io/evcc/api"
|
||||
"github.com/evcc-io/evcc/core/db"
|
||||
)
|
||||
|
||||
func (lp *LoadPoint) chargeMeterTotal() float64 {
|
||||
|
|
@ -53,21 +54,19 @@ func (lp *LoadPoint) stopSession() {
|
|||
lp.db.Persist(lp.session)
|
||||
}
|
||||
|
||||
func (lp *LoadPoint) updateSession() {
|
||||
type sessionOption func(*db.Session)
|
||||
|
||||
func (lp *LoadPoint) updateSession(opts ...sessionOption) {
|
||||
// test guard
|
||||
if lp.db == nil || lp.session == nil {
|
||||
return
|
||||
}
|
||||
|
||||
var title string
|
||||
if lp.vehicle != nil {
|
||||
title = lp.vehicle.Title()
|
||||
for _, opt := range opts {
|
||||
opt(lp.session)
|
||||
}
|
||||
|
||||
if lp.session.Vehicle != title {
|
||||
lp.session.Vehicle = title
|
||||
lp.db.Persist(lp.session)
|
||||
}
|
||||
lp.db.Persist(lp.session)
|
||||
}
|
||||
|
||||
func (lp *LoadPoint) finalizeSession() {
|
||||
File diff suppressed because one or more lines are too long
2
dist/index.html
vendored
2
dist/index.html
vendored
|
|
@ -20,7 +20,7 @@
|
|||
<meta name="theme-color" content="#020318" />
|
||||
|
||||
<title>evcc</title>
|
||||
<script type="module" crossorigin src="./assets/index.2e41d610.js"></script>
|
||||
<script type="module" crossorigin src="./assets/index.3dafc84f.js"></script>
|
||||
<link rel="stylesheet" href="./assets/index.ab3ceb62.css">
|
||||
</head>
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue