From 5750d0d1e98393e04c4ae3ff08fdb660165da4b7 Mon Sep 17 00:00:00 2001 From: andig Date: Sat, 11 May 2024 09:56:00 +0200 Subject: [PATCH] Mqtt: add batteryDischargeControl and smartCostLimit (#13864) --- server/mqtt.go | 9 ++++++++- server/mqtt_setter.go | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/server/mqtt.go b/server/mqtt.go index f96c31f01..199d8d635 100644 --- a/server/mqtt.go +++ b/server/mqtt.go @@ -173,10 +173,17 @@ func (m *MQTT) Listen(site site.API) error { func (m *MQTT) listenSiteSetters(topic string, site site.API) error { for _, s := range []setter{ - {"/prioritySoc", floatSetter(site.SetPrioritySoc)}, {"/bufferSoc", floatSetter(site.SetBufferSoc)}, {"/bufferStartSoc", floatSetter(site.SetBufferStartSoc)}, + {"/batteryDischargeControl", boolSetter(site.SetBatteryDischargeControl)}, + {"/prioritySoc", floatSetter(site.SetPrioritySoc)}, {"/residualPower", floatSetter(site.SetResidualPower)}, + {"/smartCostLimit", floatSetter(func(limit float64) error { + for _, lp := range site.Loadpoints() { + lp.SetSmartCostLimit(limit) + } + return nil + })}, } { if err := m.Handler.ListenSetter(topic+s.topic, s.fun); err != nil { return err diff --git a/server/mqtt_setter.go b/server/mqtt_setter.go index 44c215da3..a1a648d99 100644 --- a/server/mqtt_setter.go +++ b/server/mqtt_setter.go @@ -2,6 +2,8 @@ package server import ( "strconv" + + "github.com/spf13/cast" ) type setter struct { @@ -26,3 +28,9 @@ func floatSetter(set func(float64) error) func(string) error { func intSetter(set func(int) error) func(string) error { return setterFunc(strconv.Atoi, set) } + +func boolSetter(set func(bool) error) func(string) error { + return setterFunc(func(v string) (bool, error) { + return cast.ToBoolE(v) + }, set) +}