Documentation ¶
Index ¶
- Constants
- Variables
- func ClassStrings() []string
- func EncoderLanguage(lang string)
- func FuncMap(tmpl *template.Template) *template.Template
- func ParamTypeStrings() []string
- func TestClass(t *testing.T, class Class, ...)
- type Class
- type Instance
- type LinkedTemplate
- type Param
- func (p *Param) DefaultValue(renderMode string) interface{}
- func (p *Param) IsAdvanced() bool
- func (p *Param) IsAllInOne() bool
- func (p *Param) IsDeprecated() bool
- func (p *Param) IsMasked() bool
- func (p *Param) IsReference() bool
- func (p *Param) IsRequired() bool
- func (p *Param) OverwriteProperties(withParam Param)
- type ParamType
- type Product
- type Requirements
- type Template
- func (t *Template) Defaults(renderMode string) map[string]interface{}
- func (t *Template) GroupTitle(lang string) string
- func (t *Template) GuidedSetupEnabled() bool
- func (t *Template) ModbusChoices() []string
- func (t *Template) ModbusParams(modbusType string, values map[string]interface{})
- func (t *Template) ModbusValues(renderMode string, values map[string]interface{})
- func (t *Template) ParamByName(name string) (int, Param)
- func (t *Template) RenderDocumentation(product Product, lang string) ([]byte, error)
- func (t *Template) RenderProxyWithValues(values map[string]interface{}, lang string) ([]byte, error)
- func (t *Template) RenderResult(renderMode string, other map[string]interface{}) ([]byte, map[string]interface{}, error)
- func (t *Template) ResolveGroup() error
- func (t *Template) ResolvePresets() error
- func (t *Template) SetCombinedTitle(lang string)
- func (t *Template) SetParamDefault(name string, value string)
- func (t *Template) SetTitle(title string)
- func (t *Template) Title() string
- func (t *Template) Titles(lang string) []string
- func (t *Template) UpdateParamsWithDefaults() error
- func (t *Template) Usages() []string
- func (t *Template) Validate() error
- type TemplateDefinition
- type TextLanguage
Constants ¶
const ( ParamUsage = "usage" ParamModbus = "modbus" UsageChoiceGrid = "grid" UsageChoicePV = "pv" UsageChoiceBattery = "battery" UsageChoiceCharge = "charge" HemsTypeSMA = "sma" ModbusChoiceRS485 = "rs485" ModbusChoiceTCPIP = "tcpip" ModbusKeyRS485Serial = "rs485serial" ModbusKeyRS485TCPIP = "rs485tcpip" ModbusKeyTCPIP = "tcpip" ModbusParamNameId = "id" ModbusParamNameDevice = "device" ModbusParamNameBaudrate = "baudrate" ModbusParamNameComset = "comset" ModbusParamNameURI = "uri" ModbusParamNameHost = "host" ModbusParamNamePort = "port" ModbusParamNameRTU = "rtu" TemplateRenderModeDocs = "docs" TemplateRenderModeUnitTest = "unittest" TemplateRenderModeInstance = "instance" )
const ( DependencyCheckEmpty = "empty" DependencyCheckNotEmpty = "notempty" DependencyCheckEqual = "equal" )
const ( CapabilityISO151182 = "iso151182" // ISO 15118-2 support CapabilityMilliAmps = "mA" // Granular current control support CapabilityRFID = "rfid" // RFID support Capability1p3p = "1p3p" // 1P/3P phase switching support CapabilitySMAHems = "smahems" // SMA HEMS Support )
const ( RequirementEEBUS = "eebus" // EEBUS Setup is required RequirementMQTT = "mqtt" // MQTT Setup is required RequirementSponsorship = "sponsorship" // Sponsorship is required )
Variables ¶
var ( ValidModbusChoices = []string{ModbusChoiceRS485, ModbusChoiceTCPIP} ValidUsageChoices = []string{UsageChoiceGrid, UsageChoicePV, UsageChoiceBattery, UsageChoiceCharge} )
var (
ConfigDefaults configDefaults
)
var ValidCapabilities = []string{CapabilityISO151182, CapabilityMilliAmps, CapabilityRFID, Capability1p3p, CapabilitySMAHems}
var ValidDependencies = []string{DependencyCheckEmpty, DependencyCheckNotEmpty, DependencyCheckEqual}
var ValidRequirements = []string{RequirementEEBUS, RequirementMQTT, RequirementSponsorship}
Functions ¶
func ClassStrings ¶
func ClassStrings() []string
ClassStrings returns a slice of all String values of the enum
func EncoderLanguage ¶
func EncoderLanguage(lang string)
EncoderLanguage sets the template language for encoding json
func ParamTypeStrings ¶
func ParamTypeStrings() []string
ParamTypeStrings returns a slice of all String values of the enum
Types ¶
type Class ¶
type Class int
const ( Charger Class Meter Vehicle Tariff )
func ClassString ¶
ClassString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
type LinkedTemplate ¶
type LinkedTemplate struct { Template string Usage string // usage: "grid", "pv", "battery" Multiple bool // if true, multiple instances of this template can be added ExcludeTemplate string // only consider this if no device of the named linked template was added }
Linked Template
type Param ¶
type Param struct { Name string // Param name which is used for assigning defaults properties and referencing in render Description TextLanguage // language specific titles (presented in UI instead of Name) Help TextLanguage // cli configuration help Reference *bool `json:",omitempty"` // if this is references another param definition ReferenceName string `json:",omitempty"` // name of the referenced param if it is not identical to the defined name Preset string `json:"-"` // Reference a predefined set of params Required *bool `json:",omitempty"` // cli if the user has to provide a non empty value Mask *bool `json:",omitempty"` // cli if the value should be masked, e.g. for passwords Advanced *bool `json:",omitempty"` // cli if the user does not need to be asked. Requires a "Default" to be defined. Deprecated *bool `json:",omitempty"` // if the parameter is deprecated and thus should not be presented in the cli or docs Default string `json:",omitempty"` // default value if no user value is provided in the configuration Example string `json:",omitempty"` // cli example value Value string `json:"-"` // user provided value via cli configuration Values []string `json:",omitempty"` // user provided list of values e.g. for Type "stringlist" Usages []string `json:",omitempty"` // restrict param to these usage types, e.g. "battery" for home battery capacity Type ParamType // string representation of the value type, "string" is default ValidValues []string `json:",omitempty"` // list of valid values the user can provide Choice []string `json:",omitempty"` // defines a set of choices, e.g. "grid", "pv", "battery", "charge" for "usage" AllInOne *bool `json:"-"` // defines if the defined usages can all be present in a single device Requirements Requirements `json:"-"` // requirements for this param to be usable, only supported via Type "bool" // TODO move somewhere else should not be part of the param definition Baudrate int `json:"-"` // device specific default for modbus RS485 baudrate Comset string `json:"-"` // device specific default for modbus RS485 comset Port int `json:"-"` // device specific default for modbus TCPIP port ID int `json:"-"` // device specific default for modbus ID }
Param is a proxy template parameter Params can be defined: 1. in the template: uses entries in 4. for default properties and values, can be overwritten here 2. in defaults.yaml presets: can ne referenced in 1 and some values set here can be overwritten in 1. See OverwriteProperties method 3. in defaults.yaml modbus section: are referenced in 1 by a `name:modbus` param entry. Some values here can be overwritten in 1. 4. in defaults.yaml param section: defaults for some params Generelle Reihenfolge der Werte (außer Description, Default, Type): 1. defaults.yaml param section 2. defaults.yaml presets 3. defaults.yaml modbus section 4. template
func (*Param) DefaultValue ¶
DefaultValue returns a default or example value depending on the renderMode
func (*Param) IsAdvanced ¶
func (*Param) IsAllInOne ¶
func (*Param) IsDeprecated ¶
func (*Param) IsReference ¶
func (*Param) IsRequired ¶
func (*Param) OverwriteProperties ¶
OverwriteProperties merges properties from parameter definition
type ParamType ¶
type ParamType int
func ParamTypeString ¶
ParamTypeString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
func ParamTypeValues ¶
func ParamTypeValues() []ParamType
ParamTypeValues returns all values of the enum
func (ParamType) IsAParamType ¶
IsAParamType returns "true" if the value is listed in the enum definition. "false" otherwise
func (*ParamType) UnmarshalText ¶
type Product ¶
type Product struct { Brand string // product brand Description TextLanguage `json:",omitempty"` // product name }
Product contains naming information about a product a template supports
type Requirements ¶
type Requirements struct { EVCM []string // EVCM requirements, e.g. sponsorship Description TextLanguage // Description of requirements, e.g. how the device needs to be prepared URI string // URI to a webpage with more details about the preparation requirements }
Requirements
type Template ¶
type Template struct { TemplateDefinition // contains filtered or unexported fields }
Template describes is a proxy device for use with cli and automated testing
func (*Template) GroupTitle ¶
return the language specific group title
func (*Template) GuidedSetupEnabled ¶
GuidedSetupEnabled returns true if there are linked templates or >1 usage
func (*Template) ModbusChoices ¶
return all modbus choices defined in the template
func (*Template) ModbusParams ¶
ModbusParams adds the modbus parameters' default values
func (*Template) ModbusValues ¶
ModbusValues adds the values required for modbus.tpl to the value map
func (*Template) ParamByName ¶
return the param with the given name
func (*Template) RenderDocumentation ¶
RenderDocumentation renders the documentation template
func (*Template) RenderProxyWithValues ¶
func (t *Template) RenderProxyWithValues(values map[string]interface{}, lang string) ([]byte, error)
RenderProxyWithValues renders the proxy template
func (*Template) RenderResult ¶
func (t *Template) RenderResult(renderMode string, other map[string]interface{}) ([]byte, map[string]interface{}, error)
RenderResult renders the result template to instantiate the proxy
func (*Template) ResolveGroup ¶
check if the provided group exists
func (*Template) ResolvePresets ¶
add the referenced base Params and overwrite existing ones
func (*Template) SetCombinedTitle ¶
set the language title by combining all product titles
func (*Template) SetParamDefault ¶
SetParamDefault updates the default value of a param
func (*Template) UpdateParamsWithDefaults ¶
UpdateParamWithDefaults adds default values to specific param name entries
type TemplateDefinition ¶
type TemplateDefinition struct { Template string Group string `json:",omitempty"` // the group this template belongs to, references groupList entries Covers []string `json:",omitempty"` // list of covered outdated template names Products []Product `json:",omitempty"` // list of products this template is compatible with Capabilities []string `json:",omitempty"` Requirements Requirements `json:"-"` Linked []LinkedTemplate `json:",omitempty"` // a list of templates that should be processed as part of the guided setup Params []Param `json:",omitempty"` Render string `json:"-"` // rendering template }
TemplateDefinition contains properties of a device template
type TextLanguage ¶
type TextLanguage struct { Generic string `json:",omitempty"` // language independent DE string `json:",omitempty"` // german text EN string `json:",omitempty"` // english text }
TextLanguage contains language-specific texts
func (*TextLanguage) MarshalJSON ¶
func (t *TextLanguage) MarshalJSON() (out []byte, err error)
MarshalJSON implements the json.Marshaler interface
func (*TextLanguage) ShortString ¶
func (t *TextLanguage) ShortString(lang string) string
ShortString reduces help texts to one line and adds ...
func (*TextLanguage) String ¶
func (t *TextLanguage) String(lang string) string
func (*TextLanguage) Update ¶
func (t *TextLanguage) Update(new TextLanguage, always bool)
Update the language specific texts
always true to always update if the new value is not empty
always false to update only if the old value is empty and the new value is not empty