Documentation ¶
Index ¶
- Constants
- type UCOPEV
- func (e *UCOPEV) AddFeatures()
- func (e *UCOPEV) AddUseCase()
- func (e *UCOPEV) CurrentLimits(entity spineapi.EntityRemoteInterface) ([]float64, []float64, []float64, error)
- func (e *UCOPEV) HandleEvent(payload spineapi.EventPayload)
- func (e *UCOPEV) IsUseCaseSupported(entity spineapi.EntityRemoteInterface) (bool, error)
- func (e *UCOPEV) LoadControlLimits(entity spineapi.EntityRemoteInterface) (limits []api.LoadLimitsPhase, resultErr error)
- func (e *UCOPEV) UpdateUseCaseAvailability(available bool)
- func (c *UCOPEV) UseCaseName() model.UseCaseNameType
- func (e *UCOPEV) WriteLoadControlLimits(entity spineapi.EntityRemoteInterface, limits []api.LoadLimitsPhase) (*model.MsgCounterType, error)
- type UCOPEVInterface
Constants ¶
const ( // EV current limits // // Use `CurrentLimits` to get the current data DataUpdateCurrentLimits api.EventType = "DataUpdateCurrentLimits" // EV load control obligation limit data updated // // Use `LoadControlLimits` to get the current data DataUpdateLimit api.EventType = "DataUpdateLimit" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type UCOPEV ¶
type UCOPEV struct {
// contains filtered or unexported fields
}
func NewUCOPEV ¶
func NewUCOPEV(service eebusapi.ServiceInterface, eventCB api.EntityEventCallback) *UCOPEV
func (*UCOPEV) AddFeatures ¶
func (e *UCOPEV) AddFeatures()
func (*UCOPEV) AddUseCase ¶
func (e *UCOPEV) AddUseCase()
func (*UCOPEV) CurrentLimits ¶
func (e *UCOPEV) CurrentLimits(entity spineapi.EntityRemoteInterface) ([]float64, []float64, []float64, error)
return the min, max, default limits for each phase of the connected EV
possible errors:
- ErrDataNotAvailable if no such measurement is (yet) available
- and others
func (*UCOPEV) HandleEvent ¶
func (e *UCOPEV) HandleEvent(payload spineapi.EventPayload)
handle SPINE events
func (*UCOPEV) IsUseCaseSupported ¶
func (e *UCOPEV) IsUseCaseSupported(entity spineapi.EntityRemoteInterface) (bool, error)
returns if the entity supports the usecase
possible errors:
- ErrDataNotAvailable if that information is not (yet) available
- and others
func (*UCOPEV) LoadControlLimits ¶
func (e *UCOPEV) LoadControlLimits(entity spineapi.EntityRemoteInterface) ( limits []api.LoadLimitsPhase, resultErr error)
return the current loadcontrol obligation limits
parameters:
- entity: the entity of the EV
return values:
- limits: per phase data
possible errors:
- ErrDataNotAvailable if no such limit is (yet) available
- and others
func (*UCOPEV) UpdateUseCaseAvailability ¶
func (*UCOPEV) UseCaseName ¶
func (c *UCOPEV) UseCaseName() model.UseCaseNameType
func (*UCOPEV) WriteLoadControlLimits ¶
func (e *UCOPEV) WriteLoadControlLimits(entity spineapi.EntityRemoteInterface, limits []api.LoadLimitsPhase) (*model.MsgCounterType, error)
send new LoadControlLimits to the remote EV
parameters:
- limits: a set of limits containing phase specific limit data
Sets a maximum A limit for each phase that the EV may not exceed. Mainly used for implementing overload protection of the site or limiting the maximum charge power of EVs when the EV and EVSE communicate via IEC61851 and with ISO15118 if the EV does not support the Optimization of Self Consumption usecase.
note: For obligations to work for optimizing solar excess power, the EV needs to have an energy demand. Recommendations work even if the EV does not have an active energy demand, given it communicated with the EVSE via ISO15118 and supports the usecase. In ISO15118-2 the usecase is only supported via VAS extensions which are vendor specific and needs to have specific EVSE support for the specific EV brand. In ISO15118-20 this is a standard feature which does not need special support on the EVSE.
type UCOPEVInterface ¶
type UCOPEVInterface interface { api.UseCaseInterface // return the min, max, default limits for each phase of the connected EV // // parameters: // - entity: the entity of the EV CurrentLimits(entity spineapi.EntityRemoteInterface) ([]float64, []float64, []float64, error) // return the current loadcontrol obligation limits // // parameters: // - entity: the entity of the EV // // return values: // - limits: per phase data // // possible errors: // - ErrDataNotAvailable if no such limit is (yet) available // - and others LoadControlLimits(entity spineapi.EntityRemoteInterface) (limits []api.LoadLimitsPhase, resultErr error) // send new LoadControlLimits to the remote EV // // parameters: // - entity: the entity of the EV // - limits: a set of limits containing phase specific limit data // // Sets a maximum A limit for each phase that the EV may not exceed. // Mainly used for implementing overload protection of the site or limiting the // maximum charge power of EVs when the EV and EVSE communicate via IEC61851 // and with ISO15118 if the EV does not support the Optimization of Self Consumption // usecase. // // note: // For obligations to work for optimizing solar excess power, the EV needs to // have an energy demand. Recommendations work even if the EV does not have an active // energy demand, given it communicated with the EVSE via ISO15118 and supports the usecase. // In ISO15118-2 the usecase is only supported via VAS extensions which are vendor specific // and needs to have specific EVSE support for the specific EV brand. // In ISO15118-20 this is a standard feature which does not need special support on the EVSE. WriteLoadControlLimits(entity spineapi.EntityRemoteInterface, limits []api.LoadLimitsPhase) (*model.MsgCounterType, error) }
interface for the Overload Protection by EV Charging Current Curtailment UseCase