cli: add battery mode option (#10901)

This commit is contained in:
andig 2023-11-24 19:04:15 +05:00 • committed by GitHub
parent e2f38fa140
commit 0e2a9578ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 25 additions and 0 deletions

View file

@ -12,6 +12,9 @@ const (
flagHeaders = "log-headers"
flagHeadersDescription = "Log headers"
flagBatteryMode = "battery-mode"
flagBatteryModeDescription = "Set battery mode (normal, hold, charge)"
flagCurrent = "current"
flagCurrentDescription = "Set maximum current"

View file

@ -1,6 +1,7 @@
package cmd
import (
"github.com/evcc-io/evcc/api"
"github.com/evcc-io/evcc/util/config"
"github.com/spf13/cobra"
)
@ -15,6 +16,7 @@ var meterCmd = &cobra.Command{
func init() {
rootCmd.AddCommand(meterCmd)
meterCmd.Flags().StringP(flagBatteryMode, "b", "", flagBatteryModeDescription)
}
func runMeter(cmd *cobra.Command, args []string) {
@ -37,8 +39,28 @@ func runMeter(cmd *cobra.Command, args []string) {
log.FATAL.Fatal(err)
}
mode := api.BatteryUnknown
if val := cmd.Flags().Lookup(flagBatteryMode).Value.String(); val != "" {
var err error
mode, err = api.BatteryModeString(val)
if err != nil {
log.ERROR.Fatalln(err)
}
}
meters := config.Meters().Devices()
if mode != api.BatteryUnknown {
for _, dev := range meters {
v := dev.Instance()
if b, ok := v.(api.BatteryController); ok {
if err := b.SetBatteryMode(mode); err != nil {
log.FATAL.Fatalln("set battery mode:", err)
}
}
}
}
d := dumper{len: len(meters)}
for _, dev := range meters {
v := dev.Instance()