smartcharging

package
v0.18.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 12, 2024 License: MIT Imports: 4 Imported by: 3

Documentation

Overview

The Smart charging functional block contains OCPP 2.0 features that enable the CSO (or a third party) to influence the charging current/power transferred during a transaction, or set limits to the amount of current/power a Charging Station can draw from the grid.

Index

Constants

View Source
const ClearChargingProfileFeatureName = "ClearChargingProfile"
View Source
const ClearedChargingLimitFeatureName = "ClearedChargingLimit"
View Source
const GetChargingProfilesFeatureName = "GetChargingProfiles"
View Source
const GetCompositeScheduleFeatureName = "GetCompositeSchedule"
View Source
const NotifyChargingLimitFeatureName = "NotifyChargingLimit"
View Source
const NotifyEVChargingNeedsFeatureName = "NotifyEVChargingNeeds"
View Source
const NotifyEVChargingScheduleFeatureName = "NotifyEVChargingSchedule"
View Source
const ProfileName = "smartCharging"
View Source
const ReportChargingProfilesFeatureName = "ReportChargingProfiles"
View Source
const SetChargingProfileFeatureName = "SetChargingProfile"

Variables

Functions

This section is empty.

Types

type ACChargingParameters

type ACChargingParameters struct {
	EnergyAmount int `json:"energyAmount" validate:"gte=0"` // Amount of energy requested (in Wh). This includes energy required for preconditioning.
	EVMinCurrent int `json:"evMinCurrent" validate:"gte=0"` // Minimum current (amps) supported by the electric vehicle (per phase).
	EVMaxCurrent int `json:"evMaxCurrent" validate:"gte=0"` // Maximum current (amps) supported by the electric vehicle (per phase). Includes cable capacity.
	EVMaxVoltage int `json:"evMaxVoltage" validate:"gte=0"` // Maximum voltage supported by the electric vehicle.
}

ACChargingParameters contains EV AC charging parameters. Used by ChargingNeeds.

type CSMSHandler

type CSMSHandler interface {
	// OnClearedChargingLimit is called on the CSMS whenever a ClearedChargingLimitRequest is received from a charging station.
	OnClearedChargingLimit(chargingStationID string, request *ClearedChargingLimitRequest) (response *ClearedChargingLimitResponse, err error)
	// OnNotifyChargingLimit is called on the CSMS whenever a NotifyChargingLimitRequest is received from a charging station.
	OnNotifyChargingLimit(chargingStationID string, request *NotifyChargingLimitRequest) (response *NotifyChargingLimitResponse, err error)
	// OnNotifyEVChargingNeeds is called on the CSMS whenever a NotifyEVChargingNeedsRequest is received from a charging station.
	OnNotifyEVChargingNeeds(chargingStationID string, request *NotifyEVChargingNeedsRequest) (response *NotifyEVChargingNeedsResponse, err error)
	// OnNotifyEVChargingSchedule is called on the CSMS whenever a NotifyEVChargingScheduleRequest is received from a charging station.
	OnNotifyEVChargingSchedule(chargingStationID string, request *NotifyEVChargingScheduleRequest) (response *NotifyEVChargingScheduleResponse, err error)
	// OnReportChargingProfiles is called on the CSMS whenever a ReportChargingProfilesRequest is received from a charging station.
	OnReportChargingProfiles(chargingStationID string, request *ReportChargingProfilesRequest) (reponse *ReportChargingProfilesResponse, err error)
}

Needs to be implemented by a CSMS for handling messages part of the OCPP 2.0 Smart charging profile.

type ChargingLimit

type ChargingLimit struct {
	ChargingLimitSource types.ChargingLimitSourceType `json:"chargingLimitSource" validate:"required,chargingLimitSource"` // Represents the source of the charging limit.
	IsGridCritical      *bool                         `json:"isGridCritical,omitempty" validate:"omitempty"`               // Indicates whether the charging limit is critical for the grid.
}

ChargingLimit contains the source of the charging limit and whether it is grid critical.

type ChargingNeeds

type ChargingNeeds struct {
	RequestedEnergyTransfer EnergyTransferMode    `json:"requestedEnergyTransfer" validate:"required,energyTransferMode"` // Mode of energy transfer requested by the EV.
	DepartureTime           *types.DateTime       `json:"departureTime,omitempty" validate:"omitempty"`                   // Estimated departure time of the EV.
	ACChargingParameters    *ACChargingParameters `json:"acChargingParameters,omitempty" validate:"omitempty,dive"`       // AC charging parameters.
	DCChargingParameters    *DCChargingParameters `json:"dcChargingParameters,omitempty" validate:"omitempty,dive"`       // AC charging parameters.
}

ChargingNeeds contains the characteristics of the energy delivery required. Used by NotifyEVChargingNeedsRequest.

type ChargingProfileCriterion

type ChargingProfileCriterion struct {
	ChargingProfilePurpose types.ChargingProfilePurposeType `json:"chargingProfilePurpose,omitempty" validate:"omitempty,chargingProfilePurpose201"`
	StackLevel             *int                             `json:"stackLevel,omitempty" validate:"omitempty,gte=0"`
	ChargingProfileID      []int                            `json:"chargingProfileId,omitempty" validate:"omitempty"` // This field SHALL NOT contain more ids than set in ChargingProfileEntries.maxLimit
	ChargingLimitSource    []types.ChargingLimitSourceType  `json:"chargingLimitSource,omitempty" validate:"omitempty,max=4,dive,chargingLimitSource"`
}

ChargingProfileCriterion specifies the charging profile within a GetChargingProfilesRequest. A ChargingProfile consists of ChargingSchedule, describing the amount of power or current that can be delivered per time interval.

type ChargingProfileStatus

type ChargingProfileStatus string

Status reported in SetChargingProfileResponse, indicating whether the Charging Station processed the message successfully. This does not guarantee the schedule will be followed to the letter.

const (
	ChargingProfileStatusAccepted ChargingProfileStatus = "Accepted"
	ChargingProfileStatusRejected ChargingProfileStatus = "Rejected"
)

type ChargingStationHandler

type ChargingStationHandler interface {
	// OnClearChargingProfile is called on a charging station whenever a ClearChargingProfileRequest is received from the CSMS.
	OnClearChargingProfile(request *ClearChargingProfileRequest) (response *ClearChargingProfileResponse, err error)
	// OnGetChargingProfiles is called on a charging station whenever a GetChargingProfilesRequest is received from the CSMS.
	OnGetChargingProfiles(request *GetChargingProfilesRequest) (response *GetChargingProfilesResponse, err error)
	// OnGetCompositeSchedule is called on a charging station whenever a GetCompositeScheduleRequest is received from the CSMS.
	OnGetCompositeSchedule(request *GetCompositeScheduleRequest) (response *GetCompositeScheduleResponse, err error)
	// OnSetChargingProfile is called on a charging station whenever a SetChargingProfileRequest is received from the CSMS.
	OnSetChargingProfile(request *SetChargingProfileRequest) (response *SetChargingProfileResponse, err error)
}

Needs to be implemented by Charging stations for handling messages part of the OCPP 2.0 Smart charging profile.

type ClearChargingProfileFeature

type ClearChargingProfileFeature struct{}

If the CSMS wishes to clear some or all of the charging profiles that were previously sent the Charging Station, it SHALL send a ClearChargingProfileRequest. The CSMS can use this message to clear (remove) either a specific charging profile (denoted by id) or a selection of charging profiles that match with the values of the optional connectorId, stackLevel and chargingProfilePurpose fields. The Charging Station SHALL respond with a ClearChargingProfileResponse payload specifying whether it was able to process the request.

func (ClearChargingProfileFeature) GetFeatureName

func (f ClearChargingProfileFeature) GetFeatureName() string

func (ClearChargingProfileFeature) GetRequestType

func (f ClearChargingProfileFeature) GetRequestType() reflect.Type

func (ClearChargingProfileFeature) GetResponseType

func (f ClearChargingProfileFeature) GetResponseType() reflect.Type

type ClearChargingProfileRequest

type ClearChargingProfileRequest struct {
	ChargingProfileID       *int                      `json:"chargingProfileId,omitempty" validate:"omitempty"`
	ChargingProfileCriteria *ClearChargingProfileType `json:"chargingProfileCriteria,omitempty" validate:"omitempty"`
}

The field definition of the ClearChargingProfile request payload sent by the CSMS to the Charging Station.

func NewClearChargingProfileRequest

func NewClearChargingProfileRequest() *ClearChargingProfileRequest

Creates a new ClearChargingProfileRequest. All fields are optional and may be set afterwards.

func (ClearChargingProfileRequest) GetFeatureName

func (r ClearChargingProfileRequest) GetFeatureName() string

type ClearChargingProfileResponse

type ClearChargingProfileResponse struct {
	Status     ClearChargingProfileStatus `json:"status" validate:"required,clearChargingProfileStatus201"`
	StatusInfo *types.StatusInfo          `json:"statusInfo,omitempty" validate:"omitempty"`
}

This field definition of the ClearChargingProfile response payload, sent by the Charging Station to the CSMS in response to a ClearChargingProfileRequest. In case the request was invalid, or couldn't be processed, an error will be sent instead.

func NewClearChargingProfileResponse

func NewClearChargingProfileResponse(status ClearChargingProfileStatus) *ClearChargingProfileResponse

Creates a new ClearChargingProfileResponse, containing all required fields. There are no optional fields for this message.

func (ClearChargingProfileResponse) GetFeatureName

func (c ClearChargingProfileResponse) GetFeatureName() string

type ClearChargingProfileStatus

type ClearChargingProfileStatus string

Status reported in ClearChargingProfileResponse.

const (
	ClearChargingProfileStatusAccepted ClearChargingProfileStatus = "Accepted"
	ClearChargingProfileStatusUnknown  ClearChargingProfileStatus = "Unknown"
)

type ClearChargingProfileType

type ClearChargingProfileType struct {
	EvseID                 *int                             `json:"evseId,omitempty" validate:"omitempty,gte=0"`
	ChargingProfilePurpose types.ChargingProfilePurposeType `json:"chargingProfilePurpose,omitempty" validate:"omitempty,chargingProfilePurpose201"`
	StackLevel             *int                             `json:"stackLevel,omitempty" validate:"omitempty,gt=0"`
}

type ClearedChargingLimitFeature

type ClearedChargingLimitFeature struct{}

When an external control system sends a signal to release a previously imposed charging limit to a Charging Station, the Charging Station sends a ClearedChargingLimitRequest to notify the CSMS about this. The CSMS acknowledges with a ClearedChargingLimitResponse to the Charging Station. When the change has impact on an ongoing charging transaction and is more than: LimitChangeSignificance, the Charging Station needs to send a TransactionEventRequest to notify the CSMS.

func (ClearedChargingLimitFeature) GetFeatureName

func (f ClearedChargingLimitFeature) GetFeatureName() string

func (ClearedChargingLimitFeature) GetRequestType

func (f ClearedChargingLimitFeature) GetRequestType() reflect.Type

func (ClearedChargingLimitFeature) GetResponseType

func (f ClearedChargingLimitFeature) GetResponseType() reflect.Type

type ClearedChargingLimitRequest

type ClearedChargingLimitRequest struct {
	ChargingLimitSource types.ChargingLimitSourceType `json:"chargingLimitSource" validate:"required,chargingLimitSource"`
	EvseID              *int                          `json:"evseId,omitempty" validate:"omitempty,gte=0"`
}

The field definition of the ClearedChargingLimit request payload sent by the Charging Station to the CSMS.

func NewClearedChargingLimitRequest

func NewClearedChargingLimitRequest(chargingLimitSource types.ChargingLimitSourceType) *ClearedChargingLimitRequest

Creates a new ClearedChargingLimitRequest, containing all required fields. Optional fields may be set afterwards.

func (ClearedChargingLimitRequest) GetFeatureName

func (r ClearedChargingLimitRequest) GetFeatureName() string

type ClearedChargingLimitResponse

type ClearedChargingLimitResponse struct {
}

This field definition of the ClearedChargingLimit response payload, sent by the CSMS to the Charging Station in response to a ClearedChargingLimitRequest. In case the request was invalid, or couldn't be processed, an error will be sent instead.

func NewClearedChargingLimitResponse

func NewClearedChargingLimitResponse() *ClearedChargingLimitResponse

Creates a new ClearedChargingLimitResponse, which doesn't contain any required or optional fields.

func (ClearedChargingLimitResponse) GetFeatureName

func (c ClearedChargingLimitResponse) GetFeatureName() string

type CompositeSchedule

type CompositeSchedule struct {
	StartDateTime    *types.DateTime         `json:"startDateTime,omitempty" validate:"omitempty"`
	ChargingSchedule *types.ChargingSchedule `json:"chargingSchedule,omitempty" validate:"omitempty"`
}

type DCChargingParameters

type DCChargingParameters struct {
	EVMaxCurrent     int  `json:"evMaxCurrent" validate:"gte=0"`                              // Maximum current (amps) supported by the electric vehicle (per phase). Includes cable capacity.
	EVMaxVoltage     int  `json:"evMaxVoltage" validate:"gte=0"`                              // Maximum voltage supported by the electric vehicle.
	EnergyAmount     *int `json:"energyAmount,omitempty" validate:"omitempty,gte=0"`          // Amount of energy requested (in Wh). This includes energy required for preconditioning.
	EVMaxPower       *int `json:"evMaxPower,omitempty" validate:"omitempty,gte=0"`            // Maximum power (in W) supported by the electric vehicle. Required for DC charging.
	StateOfCharge    *int `json:"stateOfCharge,omitempty" validate:"omitempty,gte=0,lte=100"` // Energy available in the battery (in percent of the battery capacity).
	EVEnergyCapacity *int `json:"evEnergyCapacity,omitempty" validate:"omitempty,gte=0"`      // Capacity of the electric vehicle battery (in Wh)
	FullSoC          *int `json:"fullSoC,omitempty" validate:"omitempty,gte=0,lte=100"`       // Percentage of SoC at which the EV considers the battery fully charged. (possible values: 0 - 100)
	BulkSoC          *int `json:"bulkSoC,omitempty" validate:"omitempty,gte=0,lte=100"`       // Percentage of SoC at which the EV considers a fast charging process to end. (possible values: 0 - 100)
}

DCChargingParameters contains EV DC charging parameters. Used by ChargingNeeds.

type EVChargingNeedsStatus

type EVChargingNeedsStatus string

EVChargingNeedsStatus contains the status returned by the CSMS.

const (
	EVChargingNeedsStatusAccepted   EVChargingNeedsStatus = "Accepted"
	EVChargingNeedsStatusRejected   EVChargingNeedsStatus = "Rejected"
	EVChargingNeedsStatusProcessing EVChargingNeedsStatus = "Processing"
)

type EnergyTransferMode

type EnergyTransferMode string
const (
	EnergyTransferModeDC       EnergyTransferMode = "DC"              // DC charging.
	EnergyTransferModeAC1Phase EnergyTransferMode = "AC_single_phase" // AC single phase charging according to IEC 62196.
	EnergyTransferModeAC2Phase EnergyTransferMode = "AC_two_phase"    // AC two phase charging according to IEC 62196.
	EnergyTransferModeAC3Phase EnergyTransferMode = "AC_three_phase"  // AC three phase charging according to IEC 62196.
)

type GetChargingProfileStatus

type GetChargingProfileStatus string

Status reported in GetChargingProfilesResponse.

const (
	GetChargingProfileStatusAccepted   GetChargingProfileStatus = "Accepted"
	GetChargingProfileStatusNoProfiles GetChargingProfileStatus = "NoProfiles"
)

type GetChargingProfilesFeature

type GetChargingProfilesFeature struct{}

The CSMS MAY ask a Charging Station to report all, or a subset of all the install Charging Profiles from the different possible sources, by sending a GetChargingProfilesRequest. This can be used for some automatic smart charging control system, or for debug purposes by a CSO. The Charging Station SHALL respond, indicating if it can report Charging Schedules by sending a GetChargingProfilesResponse message.

func (GetChargingProfilesFeature) GetFeatureName

func (f GetChargingProfilesFeature) GetFeatureName() string

func (GetChargingProfilesFeature) GetRequestType

func (f GetChargingProfilesFeature) GetRequestType() reflect.Type

func (GetChargingProfilesFeature) GetResponseType

func (f GetChargingProfilesFeature) GetResponseType() reflect.Type

type GetChargingProfilesRequest

type GetChargingProfilesRequest struct {
	RequestID       int                      `json:"requestId"`
	EvseID          *int                     `json:"evseId,omitempty" validate:"omitempty,gte=0"`
	ChargingProfile ChargingProfileCriterion `json:"chargingProfile" validate:"required"`
}

The field definition of the GetChargingProfiles request payload sent by the CSMS to the Charging Station.

func NewGetChargingProfilesRequest

func NewGetChargingProfilesRequest(chargingProfile ChargingProfileCriterion) *GetChargingProfilesRequest

Creates a new GetChargingProfilesRequest, containing all required fields. Optional fields may be set afterwards.

func (GetChargingProfilesRequest) GetFeatureName

func (r GetChargingProfilesRequest) GetFeatureName() string

type GetChargingProfilesResponse

type GetChargingProfilesResponse struct {
	Status     GetChargingProfileStatus `json:"status" validate:"required,getChargingProfileStatus"`
	StatusInfo *types.StatusInfo        `json:"statusInfo,omitempty" validate:"omitempty"`
}

This field definition of the GetChargingProfiles response payload, sent by the Charging Station to the CSMS in response to a GetChargingProfilesRequest. In case the request was invalid, or couldn't be processed, an error will be sent instead.

func NewGetChargingProfilesResponse

func NewGetChargingProfilesResponse(status GetChargingProfileStatus) *GetChargingProfilesResponse

Creates a new GetChargingProfilesResponse, containing all required fields. Optional fields may be set afterwards.

func (GetChargingProfilesResponse) GetFeatureName

func (c GetChargingProfilesResponse) GetFeatureName() string

type GetCompositeScheduleFeature

type GetCompositeScheduleFeature struct{}

The CSMS MAY request the Charging System to report the Composite Charging Schedule by sending a GetCompositeScheduleRequest. The Charging System SHALL calculate the Composite Charging Schedule intervals, from the moment the request payload is received: Time X, up to X + Duration, and send them in the GetCompositeScheduleResponse to the CSMS. The reported schedule, in the GetCompositeScheduleResponse payload, is the result of the calculation of all active schedules and possible local limits present in the Charging System. If the ConnectorId in the request is set to '0', the Charging System SHALL report the total expected power or current the Charging System expects to consume from the grid during the requested time period. If the Charging System is not able to report the requested schedule, for instance if the connectorId is unknown, it SHALL respond with a status Rejected.

func (GetCompositeScheduleFeature) GetFeatureName

func (f GetCompositeScheduleFeature) GetFeatureName() string

func (GetCompositeScheduleFeature) GetRequestType

func (f GetCompositeScheduleFeature) GetRequestType() reflect.Type

func (GetCompositeScheduleFeature) GetResponseType

func (f GetCompositeScheduleFeature) GetResponseType() reflect.Type

type GetCompositeScheduleRequest

type GetCompositeScheduleRequest struct {
	Duration         int                        `json:"duration" validate:"gte=0"`
	ChargingRateUnit types.ChargingRateUnitType `json:"chargingRateUnit,omitempty" validate:"omitempty,chargingRateUnit201"`
	EvseID           int                        `json:"evseId" validate:"gte=0"`
}

The field definition of the GetCompositeSchedule request payload sent by the CSMS to the Charging System.

func NewGetCompositeScheduleRequest

func NewGetCompositeScheduleRequest(duration int, evseId int) *GetCompositeScheduleRequest

Creates a new GetCompositeScheduleRequest, containing all required fields. Optional fields may be set afterwards.

func (GetCompositeScheduleRequest) GetFeatureName

func (r GetCompositeScheduleRequest) GetFeatureName() string

type GetCompositeScheduleResponse

type GetCompositeScheduleResponse struct {
	Status   GetCompositeScheduleStatus `json:"status" validate:"required,getCompositeScheduleStatus"`
	EvseID   int                        `json:"evseId" validate:"gte=0"`
	Schedule *CompositeSchedule         `json:"schedule,omitempty" validate:"omitempty"`
}

This field definition of the GetCompositeSchedule response payload, sent by the Charging System to the CSMS in response to a GetCompositeScheduleRequest. In case the request was invalid, or couldn't be processed, an error will be sent instead.

func NewGetCompositeScheduleResponse

func NewGetCompositeScheduleResponse(status GetCompositeScheduleStatus, evseId int) *GetCompositeScheduleResponse

Creates a new GetCompositeScheduleResponse, containing all required fields. Optional fields may be set afterwards.

func (GetCompositeScheduleResponse) GetFeatureName

func (c GetCompositeScheduleResponse) GetFeatureName() string

type GetCompositeScheduleStatus

type GetCompositeScheduleStatus string

Status reported in GetCompositeScheduleResponse.

const (
	GetCompositeScheduleStatusAccepted GetCompositeScheduleStatus = "Accepted"
	GetCompositeScheduleStatusRejected GetCompositeScheduleStatus = "Rejected"
)

type NotifyChargingLimitFeature

type NotifyChargingLimitFeature struct{}

When an external control system sends a signal to release a previously imposed charging limit to a Charging Station, the Charging Station adjusts the charging speed of the ongoing transaction(s). If the charging limit changed by more than: LimitChangeSignificance, the Charging Station sends a NotifyChargingLimitRequest message to CSMS with optionally the set charging limit/schedule.

The CSMS responds with NotifyChargingLimitResponse to the Charging Station.

If the charging rate changes by more than: LimitChangeSignificance, the Charging Station sends a TransactionEventRequest message to inform the CSMS.

func (NotifyChargingLimitFeature) GetFeatureName

func (f NotifyChargingLimitFeature) GetFeatureName() string

func (NotifyChargingLimitFeature) GetRequestType

func (f NotifyChargingLimitFeature) GetRequestType() reflect.Type

func (NotifyChargingLimitFeature) GetResponseType

func (f NotifyChargingLimitFeature) GetResponseType() reflect.Type

type NotifyChargingLimitRequest

type NotifyChargingLimitRequest struct {
	EvseID           *int                     `json:"evseId,omitempty" validate:"omitempty,gte=0"`
	ChargingLimit    ChargingLimit            `json:"chargingLimit" validate:"required"`
	ChargingSchedule []types.ChargingSchedule `json:"chargingSchedule,omitempty" validate:"omitempty,dive"`
}

The field definition of the NotifyChargingLimit request payload sent by the Charging Station to the CSMS.

func NewNotifyChargingLimitRequest

func NewNotifyChargingLimitRequest(chargingLimit ChargingLimit) *NotifyChargingLimitRequest

Creates a new NotifyChargingLimitRequest, containing all required fields. Optional fields may be set afterwards.

func (NotifyChargingLimitRequest) GetFeatureName

func (r NotifyChargingLimitRequest) GetFeatureName() string

type NotifyChargingLimitResponse

type NotifyChargingLimitResponse struct {
}

This field definition of the NotifyChargingLimit response payload, sent by the CSMS to the Charging Station in response to a NotifyChargingLimitRequest. In case the request was invalid, or couldn't be processed, an error will be sent instead.

func NewNotifyChargingLimitResponse

func NewNotifyChargingLimitResponse() *NotifyChargingLimitResponse

Creates a new NotifyChargingLimitResponse, which doesn't contain any required or optional fields.

func (NotifyChargingLimitResponse) GetFeatureName

func (c NotifyChargingLimitResponse) GetFeatureName() string

type NotifyEVChargingNeedsFeature

type NotifyEVChargingNeedsFeature struct{}

When an EV sends a ChargeParameterDiscoveryReq with with charging needs parameters, the Charging Station sends this information in a NotifyEVChargingNeedsRequest to the CSMS. The CSMS replies to the Charging Station with a NotifyEVChargingNeedsResponse message.

The CSMS will re-calculate a new charging schedule, trying to accomodate the EV needs, then asynchronously send a SetChargingProfileRequest with the new schedule to the Charging Station.

func (NotifyEVChargingNeedsFeature) GetFeatureName

func (f NotifyEVChargingNeedsFeature) GetFeatureName() string

func (NotifyEVChargingNeedsFeature) GetRequestType

func (f NotifyEVChargingNeedsFeature) GetRequestType() reflect.Type

func (NotifyEVChargingNeedsFeature) GetResponseType

func (f NotifyEVChargingNeedsFeature) GetResponseType() reflect.Type

type NotifyEVChargingNeedsRequest

type NotifyEVChargingNeedsRequest struct {
	MaxScheduleTuples *int          `json:"maxScheduleTuples,omitempty" validate:"omitempty,gte=0"`
	EvseID            int           `json:"evseId" validate:"gt=0"`
	ChargingNeeds     ChargingNeeds `json:"chargingNeeds" validate:"required"`
}

The field definition of the NotifyEVChargingNeeds request payload sent by the Charging Station to the CSMS.

func NewNotifyEVChargingNeedsRequest

func NewNotifyEVChargingNeedsRequest(evseID int, chargingNeeds ChargingNeeds) *NotifyEVChargingNeedsRequest

Creates a new NotifyEVChargingNeedsRequest, containing all required fields. Optional fields may be set afterwards.

func (NotifyEVChargingNeedsRequest) GetFeatureName

func (r NotifyEVChargingNeedsRequest) GetFeatureName() string

type NotifyEVChargingNeedsResponse

type NotifyEVChargingNeedsResponse struct {
	// Returns whether the CSMS has been able to process the message successfully.
	// It does not imply that the evChargingNeeds can be met with the current charging profile.
	Status     EVChargingNeedsStatus `json:"status" validate:"required,evChargingNeedsStatus"`
	StatusInfo *types.StatusInfo     `json:"statusInfo,omitempty" validate:"omitempty,dive"` // Detailed status information.
}

This field definition of the NotifyEVChargingNeeds response payload, sent by the CSMS to the Charging Station in response to a NotifyEVChargingNeedsRequest. In case the request was invalid, or couldn't be processed, an error will be sent instead.

func NewNotifyEVChargingNeedsResponse

func NewNotifyEVChargingNeedsResponse(status EVChargingNeedsStatus) *NotifyEVChargingNeedsResponse

Creates a new NotifyEVChargingNeedsResponse, containing all required fields. Optional fields may be set afterwards.

func (NotifyEVChargingNeedsResponse) GetFeatureName

func (c NotifyEVChargingNeedsResponse) GetFeatureName() string

type NotifyEVChargingScheduleFeature

type NotifyEVChargingScheduleFeature struct{}

A power renegotiation, either initiated by the EV or by the CSMS, may involve the EV providing a power profile. If a charging profile was provided, after receiving a PowerDeliveryResponse from the CSMS, the Charging Station will send a NotifyEVChargingScheduleRequest to the CSMS.

The CSMS replies to the Charging Station with a NotifyEVChargingScheduleResponse.

func (NotifyEVChargingScheduleFeature) GetFeatureName

func (f NotifyEVChargingScheduleFeature) GetFeatureName() string

func (NotifyEVChargingScheduleFeature) GetRequestType

func (f NotifyEVChargingScheduleFeature) GetRequestType() reflect.Type

func (NotifyEVChargingScheduleFeature) GetResponseType

func (f NotifyEVChargingScheduleFeature) GetResponseType() reflect.Type

type NotifyEVChargingScheduleRequest

type NotifyEVChargingScheduleRequest struct {
	TimeBase         *types.DateTime        `json:"timeBase" validate:"required"`
	EvseID           int                    `json:"evseId" validate:"gt=0"`
	ChargingSchedule types.ChargingSchedule `json:"chargingSchedule" validate:"required,dive"`
}

The field definition of the NotifyEVChargingSchedule request payload sent by the Charging Station to the CSMS.

func NewNotifyEVChargingScheduleRequest

func NewNotifyEVChargingScheduleRequest(timeBase *types.DateTime, evseID int, chargingSchedule types.ChargingSchedule) *NotifyEVChargingScheduleRequest

Creates a new NotifyEVChargingScheduleRequest, containing all required fields. Optional fields may be set afterwards.

func (NotifyEVChargingScheduleRequest) GetFeatureName

func (r NotifyEVChargingScheduleRequest) GetFeatureName() string

type NotifyEVChargingScheduleResponse

type NotifyEVChargingScheduleResponse struct {
	Status     types.GenericStatus `json:"status" validate:"required,genericStatus"`
	StatusInfo *types.StatusInfo   `json:"statusInfo,omitempty" validate:"omitempty,dive"` // Detailed status information.
}

This field definition of the NotifyEVChargingSchedule response payload, sent by the CSMS to the Charging Station in response to a NotifyEVChargingScheduleRequest. In case the request was invalid, or couldn't be processed, an error will be sent instead.

func NewNotifyEVChargingScheduleResponse

func NewNotifyEVChargingScheduleResponse(status types.GenericStatus) *NotifyEVChargingScheduleResponse

Creates a new NotifyEVChargingScheduleResponse, containing all required fields. Optional fields may be set afterwards.

func (NotifyEVChargingScheduleResponse) GetFeatureName

func (c NotifyEVChargingScheduleResponse) GetFeatureName() string

type ReportChargingProfilesFeature

type ReportChargingProfilesFeature struct{}

The CSMS can ask a Charging Station to report all, or a subset of all the install Charging Profiles from the different possible sources. This can be used for some automatic smart charging control system, or for debug purposes by a CSO. This is done via the GetChargingProfiles feature.

A Charging Station sends a number of ReportChargingProfilesRequest messages asynchronously to the CSMS, after having previously received a GetChargingProfilesRequest. The CSMS acknowledges reception of the reports by sending a ReportChargingProfilesResponse to the Charging Station for every received request.

func (ReportChargingProfilesFeature) GetFeatureName

func (f ReportChargingProfilesFeature) GetFeatureName() string

func (ReportChargingProfilesFeature) GetRequestType

func (f ReportChargingProfilesFeature) GetRequestType() reflect.Type

func (ReportChargingProfilesFeature) GetResponseType

func (f ReportChargingProfilesFeature) GetResponseType() reflect.Type

type ReportChargingProfilesRequest

type ReportChargingProfilesRequest struct {
	RequestID           int                           `json:"requestId" validate:"gte=0"`
	ChargingLimitSource types.ChargingLimitSourceType `json:"chargingLimitSource" validate:"required,chargingLimitSource"`
	Tbc                 bool                          `json:"tbc,omitempty" validate:"omitempty"`
	EvseID              int                           `json:"evseId" validate:"gte=0"`
	ChargingProfile     []types.ChargingProfile       `json:"chargingProfile" validate:"required,min=1,dive"`
}

The field definition of the ReportChargingProfiles request payload sent by the Charging Station to the CSMS.

func NewReportChargingProfilesRequest

func NewReportChargingProfilesRequest(requestID int, chargingLimitSource types.ChargingLimitSourceType, evseID int, chargingProfile []types.ChargingProfile) *ReportChargingProfilesRequest

Creates a new ReportChargingProfilesRequest, containing all required fields. Optional fields may be set afterwards.

func (ReportChargingProfilesRequest) GetFeatureName

func (r ReportChargingProfilesRequest) GetFeatureName() string

type ReportChargingProfilesResponse

type ReportChargingProfilesResponse struct {
}

This field definition of the ReportChargingProfiles response payload, sent by the CSMS to the Charging Station in response to a ReportChargingProfilesRequest. In case the request was invalid, or couldn't be processed, an error will be sent instead.

func NewReportChargingProfilesResponse

func NewReportChargingProfilesResponse() *ReportChargingProfilesResponse

Creates a new ReportChargingProfilesResponse, which doesn't contain any required or optional fields.

func (ReportChargingProfilesResponse) GetFeatureName

func (c ReportChargingProfilesResponse) GetFeatureName() string

type SetChargingProfileFeature

type SetChargingProfileFeature struct{}

The CSMS may influence the charging power or current drawn from a specific EVSE or the entire Charging Station, over a period of time. For this purpose, the CSMS calculates a ChargingSchedule to stay within certain limits, then sends a SetChargingProfileRequest to the Charging Station. The charging schedule limits may be imposed by any external system. The Charging Station responds to this request with a SetChargingProfileResponse.

While charging, the EVSE will continuously adapt the maximum current/power according to the installed charging profiles.

func (SetChargingProfileFeature) GetFeatureName

func (f SetChargingProfileFeature) GetFeatureName() string

func (SetChargingProfileFeature) GetRequestType

func (f SetChargingProfileFeature) GetRequestType() reflect.Type

func (SetChargingProfileFeature) GetResponseType

func (f SetChargingProfileFeature) GetResponseType() reflect.Type

type SetChargingProfileRequest

type SetChargingProfileRequest struct {
	EvseID          int                    `json:"evseId" validate:"gte=0"`
	ChargingProfile *types.ChargingProfile `json:"chargingProfile" validate:"required"`
}

The field definition of the SetChargingProfile request payload sent by the CSMS to the Charging Station.

func NewSetChargingProfileRequest

func NewSetChargingProfileRequest(evseID int, chargingProfile *types.ChargingProfile) *SetChargingProfileRequest

Creates a new SetChargingProfileRequest, containing all required fields. There are no optional fields for this message.

func (SetChargingProfileRequest) GetFeatureName

func (r SetChargingProfileRequest) GetFeatureName() string

type SetChargingProfileResponse

type SetChargingProfileResponse struct {
	Status     ChargingProfileStatus `json:"status" validate:"required,chargingProfileStatus201"`
	StatusInfo *types.StatusInfo     `json:"statusInfo,omitempty" validate:"omitempty"`
}

This field definition of the SetChargingProfile response payload, sent by the Charging Station to the CSMS in response to a SetChargingProfileRequest. In case the request was invalid, or couldn't be processed, an error will be sent instead.

func NewSetChargingProfileResponse

func NewSetChargingProfileResponse(status ChargingProfileStatus) *SetChargingProfileResponse

Creates a new SetChargingProfileResponse, containing all required fields. Optional fields may be set afterwards.

func (SetChargingProfileResponse) GetFeatureName

func (c SetChargingProfileResponse) GetFeatureName() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL