Skip to content

Commit

Permalink
Sessions: add odometer (#5069)
Browse files Browse the repository at this point in the history
  • Loading branch information
andig committed Nov 7, 2022
1 parent dc22d10 commit db9f5dd
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 11 deletions.
1 change: 1 addition & 0 deletions assets/i18n/de.toml
Expand Up @@ -201,6 +201,7 @@ title = "Ladevorgänge"
downloadCsv = "Als CSV herunterladen"
loadpoint = "Ladepunkt"
vehicle = "Fahrzeug"
odometer = "Kilometerstand"
energy = "Geladen"
date = "Zeitraum"

Expand Down
1 change: 1 addition & 0 deletions assets/i18n/en.toml
Expand Up @@ -207,6 +207,7 @@ date = "Period"
[sessions.csv]
loadpoint = "Loadpoint"
vehicle = "Vehicle"
odometer = "Mileage (km)"
identifier = "Identifier"
chargedenergy = "Energy (kWh)"
meterstart = "Meter Start (kWh)"
Expand Down
1 change: 1 addition & 0 deletions core/db/session.go
Expand Up @@ -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"`
Expand Down
15 changes: 14 additions & 1 deletion core/loadpoint.go
Expand Up @@ -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() {
Expand Down Expand Up @@ -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)
}
Expand Down
15 changes: 7 additions & 8 deletions core/loadpoint_database.go → core/loadpoint_session.go
Expand Up @@ -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 {
Expand Down Expand Up @@ -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() {
Expand Down

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion dist/index.html
Expand Up @@ -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>

Expand Down

0 comments on commit db9f5dd

Please sign in to comment.