evcc-io/cmd/dump.go

56 lines
1.2 KiB
Go

package cmd
import (
"fmt"
"github.com/andig/evcc/api"
)
var truefalse = map[bool]string{false: "false", true: "true"}
func dumpAPIs(v interface{}) {
if v, ok := v.(api.Meter); ok {
if power, err := v.CurrentPower(); err != nil {
fmt.Printf("Power: %v\n", err)
} else {
fmt.Printf("Power: %.0fW\n", power)
}
}
if v, ok := v.(api.MeterEnergy); ok {
if energy, err := v.TotalEnergy(); err != nil {
fmt.Printf("Energy: %v\n", err)
} else {
fmt.Printf("Energy: %.1fkWh\n", energy)
}
}
if v, ok := v.(api.MeterCurrent); ok {
if i1, i2, i3, err := v.Currents(); err != nil {
fmt.Printf("Current L1..L3: %v\n", err)
} else {
fmt.Printf("Current L1..L3: %.1fA %.1fA %.1fA\n", i1, i2, i3)
}
}
if v, ok := v.(api.ChargeRater); ok {
if energy, err := v.ChargedEnergy(); err != nil {
fmt.Printf("Charged: %v\n", err)
} else {
fmt.Printf("Charged: %.1fkWh\n", energy)
}
}
if v, ok := v.(api.ChargeTimer); ok {
if duration, err := v.ChargingTime(); err != nil {
fmt.Printf("Duration: %v\n", err)
} else {
fmt.Printf("Duration: %v\n", duration)
}
}
if v, ok := v.(api.Diagnosis); ok {
fmt.Println("Diagnostic dump:")
v.Diagnosis()
}
}