Skip to content

Commit

Permalink
simplify lp updating
Browse files Browse the repository at this point in the history
  • Loading branch information
naltatis committed Jun 14, 2024
1 parent ab0af27 commit 94020d1
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 54 deletions.
1 change: 0 additions & 1 deletion assets/js/components/Config/LoadpointModal.vue
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,6 @@
{ key: 0, name: 'automatic switching' },
{ key: null, name: null },
{ key: 1, name: '1-phase' },
{ key: 2, name: '2-phase' },
{ key: 3, name: '3-phase' },
]"
required
Expand Down
101 changes: 48 additions & 53 deletions server/http_config_loadpoint_handler.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package server

import (
"errors"
"net/http"

"github.com/evcc-io/evcc/api"
Expand All @@ -10,38 +9,38 @@ import (
)

type loadpointStruct struct {
ID int `json:"id"`
Charger *string `json:"charger"`
Meter *string `json:"meter"`
DefaultVehicle *string `json:"defaultVehicle"`
Title *string `json:"title"`
Mode *string `json:"mode"`
Priority *int `json:"priority"`
Phases *int `json:"phases"`
MinCurrent *float64 `json:"minCurrent"`
MaxCurrent *float64 `json:"maxCurrent"`
SmartCostLimit *float64 `json:"smartCostLimit"`

Thresholds *loadpoint.ThresholdsConfig `json:"thresholds"`
Soc *loadpoint.SocConfig `json:"soc"`
ID int `json:"id"`
Charger string `json:"charger"`
Meter string `json:"meter"`
DefaultVehicle string `json:"defaultVehicle"`
Title string `json:"title"`
Mode string `json:"mode"`
Priority int `json:"priority"`
Phases int `json:"phases"`
MinCurrent float64 `json:"minCurrent"`
MaxCurrent float64 `json:"maxCurrent"`
SmartCostLimit float64 `json:"smartCostLimit"`

Thresholds loadpoint.ThresholdsConfig `json:"thresholds"`
Soc loadpoint.SocConfig `json:"soc"`
}

// loadpointConfig returns a single loadpoint's configuration
func loadpointConfig(id int, lp loadpoint.API) loadpointStruct {
res := loadpointStruct{
ID: id,
Charger: ptr(lp.GetCharger()),
Meter: ptr(lp.GetMeter()),
DefaultVehicle: ptr(lp.GetDefaultVehicle()),
Title: ptr(lp.GetTitle()),
Mode: ptr(string(lp.GetMode())),
Priority: ptrZero(lp.GetPriority()),
Phases: ptrZero(lp.GetPhases()),
MinCurrent: ptr(lp.GetMinCurrent()),
MaxCurrent: ptr(lp.GetMaxCurrent()),
SmartCostLimit: ptr(lp.GetSmartCostLimit()),
Thresholds: ptr(lp.GetThresholds()),
Soc: ptr(lp.GetSocConfig()),
Charger: lp.GetCharger(),
Meter: lp.GetMeter(),
DefaultVehicle: lp.GetDefaultVehicle(),
Title: lp.GetTitle(),
Mode: string(lp.GetMode()),
Priority: lp.GetPriority(),
Phases: lp.GetPhases(),
MinCurrent: lp.GetMinCurrent(),
MaxCurrent: lp.GetMaxCurrent(),
SmartCostLimit: lp.GetSmartCostLimit(),
Thresholds: lp.GetThresholds(),
Soc: lp.GetSocConfig(),
}

return res
Expand Down Expand Up @@ -79,50 +78,46 @@ func updateLoadpointHandler(lp loadpoint.API) http.HandlerFunc {
return
}

var err error
if payload.Charger != nil || payload.Meter != nil || payload.DefaultVehicle != nil {
err = errors.New("not implemented")
}
// TODO: handle charger, meter, defaultVehicle

if err == nil && payload.Title != nil {
lp.SetTitle(*payload.Title)
var err error
if err == nil {
lp.SetTitle(payload.Title)
}

if err == nil && payload.Priority != nil {
lp.SetPriority(*payload.Priority)
if err == nil {
lp.SetPriority(payload.Priority)
}

if err == nil && payload.SmartCostLimit != nil {
lp.SetSmartCostLimit(*payload.SmartCostLimit)
if err == nil {
lp.SetSmartCostLimit(payload.SmartCostLimit)
}

if err == nil && payload.Thresholds != nil {
lp.SetThresholds(*payload.Thresholds)
if err == nil {
lp.SetThresholds(payload.Thresholds)
}

// TODO mode warning
if err == nil && payload.Soc != nil {
lp.SetSocConfig(*payload.Soc)
if err == nil {
lp.SetSocConfig(payload.Soc)
}

if payload.Mode != nil {
var mode api.ChargeMode
mode, err = api.ChargeModeString(*payload.Mode)
if err == nil {
lp.SetMode(mode)
}
var mode api.ChargeMode
mode, err = api.ChargeModeString(payload.Mode)
if err == nil {
lp.SetMode(mode)
}

if err == nil && payload.Phases != nil {
err = lp.SetPhases(*payload.Phases)
if err == nil {
err = lp.SetPhases(payload.Phases)
}

if err == nil && payload.MinCurrent != nil {
err = lp.SetMinCurrent(*payload.MinCurrent)
if err == nil {
err = lp.SetMinCurrent(payload.MinCurrent)
}

if err == nil && payload.MaxCurrent != nil {
err = lp.SetMaxCurrent(*payload.MaxCurrent)
if err == nil {
err = lp.SetMaxCurrent(payload.MaxCurrent)
}

if err != nil {
Expand Down

0 comments on commit 94020d1

Please sign in to comment.