evcc-io/cmd/configure/types.go
Andreas Linde 7e41a970d5
Experimentelle geführte Erstellung der Konfigurationsdatei (#1888)
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
2021-11-30 14:29:09 +01:00

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{}