Dies ist eine experimentelle Umsetzung im folgenden aufgeführten Ziele. Wie es verwendet: - Start über `evcc configure` - Die Konfiguration wird in evcc.yaml geschrieben. Falls diese existiert kann ein alternativer Dateiname angegeben werden Was es kann: - Eine geführte Erstellung der Konfigurationsdatei - Direktes Testen ob die Konfiguration jedes Gerätes auch funktioniert - Konfigurationsabhängigkeiten durch direkte Konfiguration der Abhängigkeit lösen (z.B. Sponsorshipt required) - Konfiguration in für Anwender bekannte Informationen und möglichst wenig Informationseingabe zu ermöglichen, z.B. anhand von Produkten anstatt aus der Implementierungssicht - Bisherige Konfiguration funktioniert weiter
90 lines
2.5 KiB
Go
90 lines
2.5 KiB
Go
package configure
|
|
|
|
import "github.com/evcc-io/evcc/util/templates"
|
|
|
|
const (
|
|
DefaultConfigFilename string = "evcc.yaml"
|
|
)
|
|
|
|
type UsageChoice string
|
|
|
|
func (u UsageChoice) String() string {
|
|
return string(u)
|
|
}
|
|
|
|
var ValidModbusChoices = []string{templates.ModbusChoiceRS485, templates.ModbusChoiceTCPIP}
|
|
|
|
type DeviceClass string
|
|
|
|
func (c DeviceClass) String() string {
|
|
return string(c)
|
|
}
|
|
|
|
const (
|
|
DeviceClassCharger DeviceClass = "charger"
|
|
DeviceClassMeter DeviceClass = "meter"
|
|
DeviceClassVehicle DeviceClass = "vehicle"
|
|
)
|
|
|
|
type DeviceCategory string
|
|
|
|
func (c DeviceCategory) String() string {
|
|
return string(c)
|
|
}
|
|
|
|
const (
|
|
DeviceCategoryCharger DeviceCategory = "wallbox"
|
|
DeviceCategoryGridMeter DeviceCategory = "grid"
|
|
DeviceCategoryPVMeter DeviceCategory = "pv"
|
|
DeviceCategoryBatteryMeter DeviceCategory = "battery"
|
|
DeviceCategoryChargeMeter DeviceCategory = "charge"
|
|
DeviceCategoryVehicle DeviceCategory = "vehicle"
|
|
DeviceCategoryGuidedSetup DeviceCategory = "guided"
|
|
)
|
|
|
|
var ValidUsageChoices = []DeviceCategory{DeviceCategoryGridMeter, DeviceCategoryPVMeter, DeviceCategoryBatteryMeter, DeviceCategoryChargeMeter}
|
|
|
|
const (
|
|
defaultNameCharger = "wallbox"
|
|
defaultNameGridMeter = "grid"
|
|
defaultNamePVMeter = "pv"
|
|
defaultNameBatteryMeter = "battery"
|
|
defaultNameChargeMeter = "charge"
|
|
defaultNameVehicle = "ev"
|
|
)
|
|
|
|
type DeviceCategoryData struct {
|
|
title, article, additional string
|
|
class DeviceClass
|
|
categoryFilter DeviceCategory
|
|
defaultName string
|
|
}
|
|
|
|
var DeviceCategories map[DeviceCategory]DeviceCategoryData = map[DeviceCategory]DeviceCategoryData{
|
|
DeviceCategoryCharger: {
|
|
class: DeviceClassCharger,
|
|
defaultName: defaultNameCharger},
|
|
DeviceCategoryGuidedSetup: {
|
|
class: DeviceClassMeter},
|
|
DeviceCategoryGridMeter: {
|
|
class: DeviceClassMeter,
|
|
categoryFilter: DeviceCategoryGridMeter,
|
|
defaultName: defaultNameGridMeter},
|
|
DeviceCategoryPVMeter: {
|
|
class: DeviceClassMeter,
|
|
categoryFilter: DeviceCategoryPVMeter,
|
|
defaultName: defaultNamePVMeter},
|
|
DeviceCategoryBatteryMeter: {
|
|
class: DeviceClassMeter,
|
|
categoryFilter: DeviceCategoryBatteryMeter,
|
|
defaultName: defaultNameBatteryMeter},
|
|
DeviceCategoryVehicle: {
|
|
class: DeviceClassVehicle,
|
|
defaultName: defaultNameVehicle},
|
|
DeviceCategoryChargeMeter: {
|
|
class: DeviceClassMeter,
|
|
categoryFilter: DeviceCategoryChargeMeter,
|
|
defaultName: defaultNameChargeMeter},
|
|
}
|
|
|
|
type localizeMap map[string]interface{}
|