From 1be58587b967e0803aeb532c6bd1a1991973ef2a Mon Sep 17 00:00:00 2001 From: andig Date: Fri, 4 Jul 2025 21:09:13 +0200 Subject: [PATCH] cli: add heartbeat option to charger/meter (#22170) --- cmd/charger.go | 10 ++++++++++ cmd/flags.go | 3 +++ cmd/meter.go | 4 ++++ 3 files changed, 17 insertions(+) diff --git a/cmd/charger.go b/cmd/charger.go index f29351aea..d75809484 100644 --- a/cmd/charger.go +++ b/cmd/charger.go @@ -3,6 +3,7 @@ package cmd import ( "strconv" "strings" + "time" "github.com/evcc-io/evcc/api" "github.com/evcc-io/evcc/util/config" @@ -27,6 +28,7 @@ func init() { chargerCmd.Flags().Bool(flagDiagnose, false, flagDiagnoseDescription) chargerCmd.Flags().BoolP(flagWakeup, "w", false, flagWakeupDescription) chargerCmd.Flags().IntP(flagPhases, "p", 0, flagPhasesDescription) + chargerCmd.Flags().Bool(flagHeartbeat, false, flagHeartbeatDescription) } func runCharger(cmd *cobra.Command, args []string) { @@ -117,6 +119,11 @@ func runCharger(cmd *cobra.Command, args []string) { } } + if ok, _ := cmd.Flags().GetBool(flagHeartbeat); flagUsed && ok { + log.INFO.Println("running heartbeat until interrupted (Ctrl-C to stop)") + time.Sleep(time.Hour) + } + if !flagUsed { d := dumper{len: len(chargers)} flag := cmd.Flag(flagDiagnose).Changed @@ -129,6 +136,9 @@ func runCharger(cmd *cobra.Command, args []string) { d.DumpDiagnosis(v) } } + } else if ok, _ := cmd.Flags().GetBool(flagHeartbeat); ok { + log.INFO.Println("running heartbeat (if any) until interrupted (Ctrl-C to stop)") + time.Sleep(time.Hour) } // wait for shutdown diff --git a/cmd/flags.go b/cmd/flags.go index 5d34301a6..c4a2736fc 100644 --- a/cmd/flags.go +++ b/cmd/flags.go @@ -65,6 +65,9 @@ const ( flagRepeatInterval = "repeat-interval" flagRepeatIntervalDescription = "Interval between repetitions" + flagHeartbeat = "heartbeat" + flagHeartbeatDescription = "After command, continue running device heartbeats (if any) until interrupted" + flagDigits = "digits" flagDelay = "delay" flagForce = "force" diff --git a/cmd/meter.go b/cmd/meter.go index d2f0c573b..e07be80ff 100644 --- a/cmd/meter.go +++ b/cmd/meter.go @@ -22,6 +22,7 @@ func init() { meterCmd.Flags().DurationP(flagBatteryModeWait, "w", 0, flagBatteryModeWaitDescription) meterCmd.Flags().BoolP(flagRepeat, "r", false, flagRepeatDescription) meterCmd.Flags().Duration(flagRepeatInterval, 0, flagRepeatIntervalDescription) + meterCmd.Flags().Bool(flagHeartbeat, false, flagHeartbeatDescription) } func runMeter(cmd *cobra.Command, args []string) { @@ -83,6 +84,9 @@ func runMeter(cmd *cobra.Command, args []string) { } goto REPEAT } + } else if ok, _ := cmd.Flags().GetBool(flagHeartbeat); ok { + log.INFO.Println("running heartbeat (if any) until interrupted (Ctrl-C to stop)") + time.Sleep(time.Hour) } // wait for shutdown