Added a primitive battery charge monitor.

This commit is contained in:
Hendrik van Wyk
2015-02-08 11:28:04 +02:00
parent e26aa12dce
commit 3cde999de9
4 changed files with 62 additions and 6 deletions

35
webgui/charge_tracker.go Normal file
View File

@@ -0,0 +1,35 @@
package webgui
import (
"time"
)
type ChargeTracker struct {
fullLevel float64
currentLevel float64
lastUpdate time.Time
}
// Creates a new charge tracker. fullLevel is in A h.
func NewChargeTracker(fullLevel float64) *ChargeTracker {
return &ChargeTracker{
fullLevel: fullLevel,
currentLevel: fullLevel, // Have to start somewhere.
lastUpdate: time.Now(),
}
}
func (c *ChargeTracker) Update(amp float64) {
newNow := time.Now()
elapsed := newNow.Sub(c.lastUpdate).Hours()
c.lastUpdate = newNow
c.currentLevel -= elapsed * amp
}
func (c *ChargeTracker) CurrentLevel() float64 {
return c.currentLevel
}
func (c *ChargeTracker) Reset() {
c.currentLevel = c.fullLevel
}