Skip to content

Commit 23d3bb6

Browse files
committed
Rework WIP
1 parent e5ee65e commit 23d3bb6

File tree

222 files changed

+16115
-6537
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

222 files changed

+16115
-6537
lines changed

cmd/charge-point.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package cmd
2+
3+
import (
4+
"context"
5+
6+
"github.com/ChargePi/ChargePi-go/internal/auth"
7+
"github.com/ChargePi/ChargePi-go/internal/chargepoint"
8+
v16 "github.com/ChargePi/ChargePi-go/internal/chargepoint/v16"
9+
"github.com/ChargePi/ChargePi-go/internal/diagnostics"
10+
"github.com/ChargePi/ChargePi-go/internal/evse/manager"
11+
settings "github.com/ChargePi/ChargePi-go/internal/pkg/configuration/manager"
12+
"github.com/ChargePi/ChargePi-go/internal/sessions"
13+
"github.com/ChargePi/ChargePi-go/pkg/hardware/indicator"
14+
"github.com/ChargePi/ChargePi-go/pkg/ocpp"
15+
"github.com/lorenzodonini/ocpp-go/ocpp1.6/core"
16+
"github.com/lorenzodonini/ocpp-go/ocpp1.6/localauth"
17+
"github.com/lorenzodonini/ocpp-go/ocpp1.6/remotetrigger"
18+
"github.com/lorenzodonini/ocpp-go/ocpp1.6/reservation"
19+
"github.com/pkg/errors"
20+
log "github.com/sirupsen/logrus"
21+
)
22+
23+
var supportedOcppV16Profiles = []string{
24+
core.ProfileName,
25+
reservation.ProfileName,
26+
remotetrigger.ProfileName,
27+
localauth.ProfileName,
28+
}
29+
30+
// NewChargePoint Creates a OCPP-enabled charge point based on the protocol version
31+
func NewChargePoint(
32+
ctx context.Context,
33+
protocolVersion ocpp.ProtocolVersion,
34+
logger log.FieldLogger,
35+
manager manager.Manager,
36+
tagManager auth.Service,
37+
settingsManager settings.Manager,
38+
sessionManager sessions.Service,
39+
diagnosticsManager diagnostics.Service,
40+
hardware chargepoint.Hardware,
41+
) (chargepoint.ChargePoint, error) {
42+
43+
// Create a status indicator (if enabled)
44+
statusIndicator := indicator.NewIndicator(len(manager.GetEVSEs()), hardware.Indicator)
45+
46+
// Attach additional components based on the configuration
47+
opts := []chargepoint.Options{
48+
chargepoint.WithDisplayFromSettings(hardware.Display),
49+
chargepoint.WithReaderFromSettings(ctx, hardware.TagReader),
50+
chargepoint.WithLogger(logger),
51+
chargepoint.WithIndicator(statusIndicator),
52+
}
53+
54+
switch protocolVersion {
55+
case ocpp.OCPP16:
56+
// Setup OCPP configuration from the database
57+
return v16.NewChargePoint(manager, settingsManager, tagManager, sessionManager, diagnosticsManager, opts...)
58+
case ocpp.OCPP201:
59+
return nil, errors.New("Version 2.0.1 is not supported yet.")
60+
default:
61+
return nil, errors.New("Invalid protocol version")
62+
}
63+
}

cmd/export.go

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,13 @@ package cmd
33
import (
44
"fmt"
55

6-
"github.com/ChargePi/ChargePi-go/internal/pkg/models/settings"
7-
cfg "github.com/ChargePi/ChargePi-go/internal/pkg/settings"
6+
"github.com/ChargePi/ChargePi-go/internal/auth"
7+
"github.com/ChargePi/ChargePi-go/internal/chargepoint"
8+
"github.com/ChargePi/ChargePi-go/internal/pkg/badger"
9+
cfg "github.com/ChargePi/ChargePi-go/internal/pkg/configuration"
10+
exporter2 "github.com/ChargePi/ChargePi-go/internal/pkg/configuration/exporter"
11+
"github.com/ChargePi/ChargePi-go/internal/pkg/configuration/manager"
12+
"github.com/ChargePi/ocppManager-go/ocpp_v16"
813
"github.com/spf13/cobra"
914
)
1015

@@ -13,21 +18,40 @@ var (
1318
exportOcppConfigurationFilePath *string
1419
exportAuthFilePath *string
1520
exportSettingsFilePath *string
21+
databasePath *string
1622
)
1723

1824
// exportCommand represents the export command
1925
func exportCommand() *cobra.Command {
2026
exportCmd := &cobra.Command{
21-
Use: "export",
22-
Short: "Export settings from ChargePi.",
23-
Long: ``,
27+
Use: "export",
28+
Short: "Export settings from ChargePi.",
29+
Long: ``,
30+
Version: chargepoint.FirmwareVersion,
2431
RunE: func(cmd *cobra.Command, args []string) error {
25-
exporter := cfg.GetExporter()
32+
db, err := badger.NewBadgerDb(*databasePath)
33+
if err != nil {
34+
return fmt.Errorf("could not create database: %v", err)
35+
}
36+
37+
tagManager := auth.NewManager(db, db)
38+
39+
configurationManager, err := ocpp_v16.NewV16ConfigurationManager(ocpp_v16.NewEmptyConfiguration())
40+
if err != nil {
41+
return fmt.Errorf("could not create OCPP configuration manager: %v", err)
42+
}
43+
44+
settingsManager, err := manager.NewManager(db, db, configurationManager)
45+
if err != nil {
46+
return fmt.Errorf("could not create settings manager: %v", err)
47+
}
48+
49+
exporter := exporter2.NewExporter(tagManager, settingsManager, db)
2650

27-
evseFlag := cmd.Flags().Lookup(settings.EvseFlag).Changed
28-
ocppFlag := cmd.Flags().Lookup(settings.OcppConfigPathFlag).Changed
29-
authFlag := cmd.Flags().Lookup(settings.AuthFileFlag).Changed
30-
settingsFlag := cmd.Flags().Lookup(settings.SettingsFlag).Changed
51+
evseFlag := cmd.Flags().Lookup(cfg.EvseFlag).Changed
52+
ocppFlag := cmd.Flags().Lookup(cfg.OcppConfigPathFlag).Changed
53+
authFlag := cmd.Flags().Lookup(cfg.AuthFileFlag).Changed
54+
settingsFlag := cmd.Flags().Lookup(cfg.SettingsFlag).Changed
3155

3256
// If the flag was set, export the EVSE configurations
3357
if evseFlag {
@@ -65,10 +89,11 @@ func exportCommand() *cobra.Command {
6589
},
6690
}
6791

68-
exportEvseFolderPath = exportCmd.Flags().String(settings.EvseFlag, "./configs/evses", "evse folder path")
69-
exportOcppConfigurationFilePath = exportCmd.Flags().String(settings.OcppConfigPathFlag, "./configs/ocpp.yaml", "OCPP config file path")
70-
exportAuthFilePath = exportCmd.Flags().String(settings.AuthFileFlag, "./configs/authorization.yaml", "authorization file path")
71-
exportSettingsFilePath = exportCmd.Flags().String(settings.SettingsFlag, "./configs/settings.yaml", "settings file path")
92+
exportEvseFolderPath = exportCmd.Flags().String(cfg.EvseFlag, "./configs/evses", "evse folder path")
93+
exportOcppConfigurationFilePath = exportCmd.Flags().String(cfg.OcppConfigPathFlag, "./configs/ocpp.yaml", "OCPP config file path")
94+
exportAuthFilePath = exportCmd.Flags().String(cfg.AuthFileFlag, "./configs/authorization.yaml", "authorization file path")
95+
exportSettingsFilePath = exportCmd.Flags().String(cfg.SettingsFlag, "./configs/settings.yaml", "settings file path")
96+
databasePath = exportCmd.Flags().String("database", cfg.DatabasePath, "database path")
7297

7398
return exportCmd
7499
}

cmd/import.go

Lines changed: 36 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,13 @@ package cmd
33
import (
44
"fmt"
55

6-
"github.com/ChargePi/ChargePi-go/internal/pkg/models/settings"
7-
cfg "github.com/ChargePi/ChargePi-go/internal/pkg/settings"
8-
"github.com/ChargePi/ChargePi-go/pkg/models/ocpp"
6+
"github.com/ChargePi/ChargePi-go/internal/chargepoint"
7+
"github.com/ChargePi/ChargePi-go/internal/pkg/badger"
8+
cfg "github.com/ChargePi/ChargePi-go/internal/pkg/configuration"
9+
importer2 "github.com/ChargePi/ChargePi-go/internal/pkg/configuration/importer"
10+
"github.com/ChargePi/ChargePi-go/internal/pkg/configuration/manager"
11+
"github.com/ChargePi/ChargePi-go/pkg/ocpp"
12+
"github.com/ChargePi/ocppManager-go/ocpp_v16"
913
"github.com/spf13/cobra"
1014
)
1115

@@ -20,16 +24,32 @@ var (
2024
// importCmd represents the import command
2125
func importCommand() *cobra.Command {
2226
importCmd := &cobra.Command{
23-
Use: "import",
24-
Short: "Import configurations to ChargePi.",
25-
Long: ``,
27+
Use: "import",
28+
Short: "Import configurations to ChargePi.",
29+
Long: ``,
30+
Version: chargepoint.FirmwareVersion,
2631
RunE: func(cmd *cobra.Command, args []string) error {
27-
importer := cfg.GetImporter()
32+
db, err := badger.NewBadgerDb(*databasePath)
33+
if err != nil {
34+
return fmt.Errorf("could not create database: %v", err)
35+
}
36+
37+
configurationManager, err := ocpp_v16.NewV16ConfigurationManager(ocpp_v16.NewEmptyConfiguration())
38+
if err != nil {
39+
return fmt.Errorf("could not create OCPP configuration manager: %v", err)
40+
}
41+
42+
settingsManager, err := manager.NewManager(db, db, configurationManager)
43+
if err != nil {
44+
return fmt.Errorf("could not create settings manager: %v", err)
45+
}
46+
47+
importer := importer2.NewImporter(settingsManager, db, db)
2848

29-
evseFlag := cmd.Flags().Lookup(settings.EvseFlag).Changed
30-
ocppFlag := cmd.Flags().Lookup(settings.OcppConfigPathFlag).Changed
31-
authFlag := cmd.Flags().Lookup(settings.AuthFileFlag).Changed
32-
settingsFlag := cmd.Flags().Lookup(settings.SettingsFlag).Changed
49+
evseFlag := cmd.Flags().Lookup(cfg.EvseFlag).Changed
50+
ocppFlag := cmd.Flags().Lookup(cfg.OcppConfigPathFlag).Changed
51+
authFlag := cmd.Flags().Lookup(cfg.AuthFileFlag).Changed
52+
settingsFlag := cmd.Flags().Lookup(cfg.SettingsFlag).Changed
3353

3454
if evseFlag {
3555
// If a directory is specified, (try to) import all the files in that directory.
@@ -66,11 +86,11 @@ func importCommand() *cobra.Command {
6686
},
6787
}
6888

69-
evseFolderPath = importCmd.Flags().String(settings.EvseFlag, "", "evse folder path")
70-
ocppConfigurationFilePath = importCmd.Flags().String(settings.OcppConfigPathFlag, "", "OCPP config file path")
71-
ocppVersionFlag = importCmd.Flags().StringP(settings.OcppVersion, "v", "1.6", "OCPP config file path")
72-
authFilePath = importCmd.Flags().String(settings.AuthFileFlag, "", "authorization file path")
73-
importSettingsFilePath = importCmd.Flags().String(settings.SettingsFlag, "", "settings file path")
89+
evseFolderPath = importCmd.Flags().String(cfg.EvseFlag, "", "evse folder path")
90+
ocppConfigurationFilePath = importCmd.Flags().String(cfg.OcppConfigPathFlag, "", "OCPP config file path")
91+
ocppVersionFlag = importCmd.Flags().StringP(cfg.OcppVersion, "v", "1.6", "OCPP config file path")
92+
authFilePath = importCmd.Flags().String(cfg.AuthFileFlag, "", "authorization file path")
93+
importSettingsFilePath = importCmd.Flags().String(cfg.SettingsFlag, "", "settings file path")
7494

7595
return importCmd
7696
}

cmd/root.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package cmd
22

33
import (
4-
"github.com/ChargePi/ChargePi-go/internal/pkg/models/settings"
5-
"github.com/ChargePi/ChargePi-go/pkg/observability/logging"
4+
"github.com/ChargePi/ChargePi-go/internal/pkg/configuration"
5+
"github.com/ChargePi/ChargePi-go/pkg/observability"
66
"github.com/spf13/cobra"
77
"github.com/spf13/viper"
88
"go.uber.org/zap"
@@ -17,17 +17,16 @@ var rootCmd = &cobra.Command{
1717

1818
func init() {
1919
cobra.OnInitialize(func() {
20-
logger := logging.SetupZap(settings.Logging{}, viper.GetBool(settings.Debug))
21-
zap.ReplaceGlobals(logger)
20+
// observability.SetupLogging(log.StandardLogger(), observability.Logging{}, viper.GetBool(configuration.Debug))
2221
})
2322

2423
rootCmd.AddCommand(runCommand())
2524
rootCmd.AddCommand(versionCommand())
2625
rootCmd.AddCommand(exportCommand())
2726
rootCmd.AddCommand(importCommand())
2827

29-
rootCmd.PersistentFlags().BoolP(settings.DebugFlag, "d", false, "debug mode")
30-
_ = viper.BindPFlag(settings.Debug, rootCmd.PersistentFlags().Lookup(settings.DebugFlag))
28+
rootCmd.PersistentFlags().BoolP(configuration.DebugFlag, "d", false, "debug mode")
29+
_ = viper.BindPFlag(configuration.Debug, rootCmd.PersistentFlags().Lookup(configuration.DebugFlag))
3130
}
3231

3332
func Execute() {

0 commit comments

Comments
 (0)