Documentation
¶
Index ¶
- Constants
- Variables
- func ApplyForwarderRules(rules []ForwarderRule)
- func ExternalUrl() string
- func ForwarderEnabled() bool
- func NewServer(cfg Config, networkExternalUrl string)
- func Port() int
- func SetForwarderUpdated(cb func())
- func StationStatusStrings() []string
- type CP
- func (cp *CP) ChangeAvailabilityRequest(connectorId int, availabilityType core.AvailabilityType) error
- func (cp *CP) ChangeConfigurationRequest(key, value string) error
- func (cp *CP) Connected() bool
- func (cp *CP) GetCompositeScheduleRequest(connectorId int, duration int) (*smartcharging.GetCompositeScheduleConfirmation, error)
- func (cp *CP) GetConfigurationRequest(keys ...string) (*core.GetConfigurationConfirmation, error)
- func (cp *CP) HasConnected() <-chan struct{}
- func (cp *CP) HasMeasurement(val types.Measurand) bool
- func (cp *CP) ID() string
- func (cp *CP) MonitorReboot(ctx context.Context, setup func() error)
- func (cp *CP) OnBootNotification(request *core.BootNotificationRequest) (*core.BootNotificationConfirmation, error)
- func (cp *CP) OnMeterValues(request *core.MeterValuesRequest) (*core.MeterValuesConfirmation, error)
- func (cp *CP) OnStartTransaction(request *core.StartTransactionRequest) (*core.StartTransactionConfirmation, error)
- func (cp *CP) OnStatusNotification(request *core.StatusNotificationRequest) (*core.StatusNotificationConfirmation, error)
- func (cp *CP) OnStopTransaction(request *core.StopTransactionRequest) (*core.StopTransactionConfirmation, error)
- func (cp *CP) RegisterID(id string)
- func (cp *CP) RemoteStartTransactionRequest(connectorId int, idTag string) error
- func (cp *CP) SetChargingProfileRequest(connectorId int, profile *types.ChargingProfile) error
- func (cp *CP) Setup(ctx context.Context, meterValues string, meterInterval time.Duration, ...) error
- func (cp *CP) TriggerMessageRequest(connectorId int, requestedMessage remotetrigger.MessageTrigger) error
- type CS
- func (cs *CS) ChargePointDisconnected(chargePoint ocpp16.ChargePointConnection)
- func (cs *CS) ChargepointByID(id string) (*CP, error)
- func (cs *CS) Debug(args ...any)
- func (cs *CS) Debugf(f string, args ...any)
- func (cs *CS) Error(args ...any)
- func (cs *CS) Errorf(f string, args ...any)
- func (cs *CS) Info(args ...any)
- func (cs *CS) Infof(f string, args ...any)
- func (cs *CS) NewChargePoint(chargePoint ocpp16.ChargePointConnection)
- func (cs *CS) OnAuthorize(id string, request *core.AuthorizeRequest) (*core.AuthorizeConfirmation, error)
- func (cs *CS) OnBootNotification(id string, request *core.BootNotificationRequest) (*core.BootNotificationConfirmation, error)
- func (cs *CS) OnCertificateSigned(id string, request *security.CertificateSignedRequest) (*security.CertificateSignedResponse, error)
- func (cs *CS) OnDataTransfer(id string, request *core.DataTransferRequest) (*core.DataTransferConfirmation, error)
- func (cs *CS) OnDiagnosticsStatusNotification(id string, request *firmware.DiagnosticsStatusNotificationRequest) (*firmware.DiagnosticsStatusNotificationConfirmation, error)
- func (cs *CS) OnFirmwareStatusNotification(id string, request *firmware.FirmwareStatusNotificationRequest) (*firmware.FirmwareStatusNotificationConfirmation, error)
- func (cs *CS) OnHeartbeat(id string, request *core.HeartbeatRequest) (*core.HeartbeatConfirmation, error)
- func (cs *CS) OnMeterValues(id string, request *core.MeterValuesRequest) (*core.MeterValuesConfirmation, error)
- func (cs *CS) OnSecurityEventNotification(id string, request *security.SecurityEventNotificationRequest) (*security.SecurityEventNotificationResponse, error)
- func (cs *CS) OnSignCertificate(id string, request *security.SignCertificateRequest) (*security.SignCertificateResponse, error)
- func (cs *CS) OnStartTransaction(id string, request *core.StartTransactionRequest) (*core.StartTransactionConfirmation, error)
- func (cs *CS) OnStatusNotification(id string, request *core.StatusNotificationRequest) (*core.StatusNotificationConfirmation, error)
- func (cs *CS) OnStopTransaction(id string, request *core.StopTransactionRequest) (*core.StopTransactionConfirmation, error)
- func (cs *CS) RegisterChargepoint(id string, newfun func() *CP, init func(*CP) error) (*CP, error)
- func (cs *CS) SetUpdated(f func())
- func (cs *CS) WithConnectorStatus(id string, connector int, fun func(status *core.StatusNotificationRequest))
- func (cs *CS) Write(id string, data []byte) error
- type Config
- type Connector
- func (conn *Connector) ChangeAvailabilityRequest(availabilityType core.AvailabilityType) error
- func (conn *Connector) CurrentPower() (float64, error)
- func (conn *Connector) Currents() (float64, float64, float64, error)
- func (conn *Connector) GetCompositeScheduleRequest(duration int) (*smartcharging.GetCompositeScheduleConfirmation, error)
- func (conn *Connector) GetMaxCurrent() (float64, error)
- func (conn *Connector) GetMaxPower() (float64, error)
- func (conn *Connector) GetScheduleLimit(duration int) (float64, error)
- func (conn *Connector) ID() int
- func (conn *Connector) IdTag() string
- func (conn *Connector) Initialized() error
- func (conn *Connector) NeedsAuthentication() bool
- func (conn *Connector) OnMeterValues(request *core.MeterValuesRequest) (*core.MeterValuesConfirmation, error)
- func (conn *Connector) OnStartTransaction(request *core.StartTransactionRequest) (*core.StartTransactionConfirmation, error)
- func (conn *Connector) OnStatusChange(f func())
- func (conn *Connector) OnStatusNotification(request *core.StatusNotificationRequest) (*core.StatusNotificationConfirmation, error)
- func (conn *Connector) OnStopTransaction(request *core.StopTransactionRequest) (*core.StopTransactionConfirmation, error)
- func (conn *Connector) RemoteStartTransactionRequest(idTag string) error
- func (conn *Connector) SetChargingProfileRequest(profile *types.ChargingProfile) error
- func (conn *Connector) Soc() (float64, error)
- func (conn *Connector) Status() (core.ChargePointStatus, error)
- func (conn *Connector) TestClock(clock clock.Clock)
- func (conn *Connector) TotalEnergy() (float64, error)
- func (conn *Connector) TransactionID() (int, error)
- func (conn *Connector) TriggerMessageRequest(requestedMessage remotetrigger.MessageTrigger) error
- func (conn *Connector) Voltages() (float64, float64, float64, error)
- func (conn *Connector) WatchDog(ctx context.Context, timeout time.Duration)
- type ForwarderRule
- type ForwarderSessionStatus
- type StationStatus
- type Status
Constants ¶
const ( // Core profile keys KeyMeterValueSampleInterval = "MeterValueSampleInterval" KeyMeterValuesSampledData = "MeterValuesSampledData" KeyMeterValuesSampledDataMaxLength = "MeterValuesSampledDataMaxLength" KeyNumberOfConnectors = "NumberOfConnectors" KeySupportedFeatureProfiles = "SupportedFeatureProfiles" KeyWebSocketPingInterval = "WebSocketPingInterval" // SmartCharging profile keys KeyChargeProfileMaxStackLevel = "ChargeProfileMaxStackLevel" KeyChargingScheduleAllowedChargingRateUnit = "ChargingScheduleAllowedChargingRateUnit" KeyConnectorSwitch3to1PhaseSupported = "ConnectorSwitch3to1PhaseSupported" KeyMaxChargingProfilesInstalled = "MaxChargingProfilesInstalled" // Vendor specific keys KeyAlfenPlugAndChargeIdentifier = "PlugAndChargeIdentifier" KeyChargeAmpsPhaseSwitchingSupported = "ACPhaseSwitchingSupported" KeyEvBoxSupportedMeasurands = "evb_SupportedMeasurands" )
Variables ¶
var ( ErrInvalidRequest = errors.New("invalid request") ErrInvalidConnector = errors.New("invalid connector") ErrInvalidTransaction = errors.New("invalid transaction") )
var Timeout = time.Minute // default request / response timeout on protocol level
var TriggerBootDelay = 5 * time.Second
TriggerBootDelay defines how long to wait after WebSocket connect before proactively triggering a BootNotification. This allows the connection to stabilize and gives the charger a chance to send a spontaneous BootNotification. It is a var so tests can shorten it.
Functions ¶
func ApplyForwarderRules ¶
func ApplyForwarderRules(rules []ForwarderRule)
ApplyForwarderRules replaces the forwarding rules at runtime and republishes status.
func ExternalUrl ¶
func ExternalUrl() string
ExternalUrl returns the auto-generated OCPP external URL based on network external URL
func ForwarderEnabled ¶
func ForwarderEnabled() bool
ForwarderEnabled returns true when at least one rule is configured.
func Port ¶
func Port() int
Port returns the TCP port the central system is bound to. With the default configuration this equals the configured port; when port 0 is configured (as in tests) it is the OS-assigned ephemeral port. It returns 0 while the server is not bound.
func SetForwarderUpdated ¶
func SetForwarderUpdated(cb func())
SetForwarderUpdated registers a callback fired when a session connects or disconnects.
func StationStatusStrings ¶
func StationStatusStrings() []string
StationStatusStrings returns a slice of all String values of the enum
Types ¶
type CP ¶
type CP struct {
// configuration properties
PhaseSwitching bool
HasRemoteTriggerFeature bool
ChargingRateUnit types.ChargingRateUnitType
ChargingProfileId int
StackLevel int
NumberOfConnectors int
IdTag string
BootNotificationResult *core.BootNotificationRequest
// contains filtered or unexported fields
}
func (*CP) ChangeAvailabilityRequest ¶
func (cp *CP) ChangeAvailabilityRequest(connectorId int, availabilityType core.AvailabilityType) error
func (*CP) ChangeConfigurationRequest ¶
func (*CP) GetCompositeScheduleRequest ¶
func (cp *CP) GetCompositeScheduleRequest(connectorId int, duration int) (*smartcharging.GetCompositeScheduleConfirmation, error)
func (*CP) GetConfigurationRequest ¶
func (cp *CP) GetConfigurationRequest(keys ...string) (*core.GetConfigurationConfirmation, error)
func (*CP) HasConnected ¶
func (cp *CP) HasConnected() <-chan struct{}
func (*CP) HasMeasurement ¶
HasMeasurement checks if meterValuesSample contains given measurement
func (*CP) MonitorReboot ¶
MonitorReboot ensures the given function runs only once per CP instance. Used to start the reboot monitor goroutine for multi-connector charge points.
func (*CP) OnBootNotification ¶
func (cp *CP) OnBootNotification(request *core.BootNotificationRequest) (*core.BootNotificationConfirmation, error)
func (*CP) OnMeterValues ¶
func (cp *CP) OnMeterValues(request *core.MeterValuesRequest) (*core.MeterValuesConfirmation, error)
func (*CP) OnStartTransaction ¶
func (cp *CP) OnStartTransaction(request *core.StartTransactionRequest) (*core.StartTransactionConfirmation, error)
func (*CP) OnStatusNotification ¶
func (cp *CP) OnStatusNotification(request *core.StatusNotificationRequest) (*core.StatusNotificationConfirmation, error)
func (*CP) OnStopTransaction ¶
func (cp *CP) OnStopTransaction(request *core.StopTransactionRequest) (*core.StopTransactionConfirmation, error)
func (*CP) RegisterID ¶
func (*CP) RemoteStartTransactionRequest ¶
func (*CP) SetChargingProfileRequest ¶
func (cp *CP) SetChargingProfileRequest(connectorId int, profile *types.ChargingProfile) error
func (*CP) TriggerMessageRequest ¶
func (cp *CP) TriggerMessageRequest(connectorId int, requestedMessage remotetrigger.MessageTrigger) error
type CS ¶
type CS struct {
ocpp16.CentralSystem
// contains filtered or unexported fields
}
func Instance ¶
Instance returns the central system, starting it once on first call. It returns an error if the server fails to bind its port.
func (*CS) ChargePointDisconnected ¶
func (cs *CS) ChargePointDisconnected(chargePoint ocpp16.ChargePointConnection)
ChargePointDisconnected implements ocpp16.ChargePointConnectionHandler
func (*CS) NewChargePoint ¶
func (cs *CS) NewChargePoint(chargePoint ocpp16.ChargePointConnection)
NewChargePoint implements ocpp16.ChargePointConnectionHandler
func (*CS) OnAuthorize ¶
func (cs *CS) OnAuthorize(id string, request *core.AuthorizeRequest) (*core.AuthorizeConfirmation, error)
func (*CS) OnBootNotification ¶
func (cs *CS) OnBootNotification(id string, request *core.BootNotificationRequest) (*core.BootNotificationConfirmation, error)
func (*CS) OnCertificateSigned ¶
func (cs *CS) OnCertificateSigned(id string, request *security.CertificateSignedRequest) (*security.CertificateSignedResponse, error)
func (*CS) OnDataTransfer ¶
func (cs *CS) OnDataTransfer(id string, request *core.DataTransferRequest) (*core.DataTransferConfirmation, error)
func (*CS) OnDiagnosticsStatusNotification ¶
func (cs *CS) OnDiagnosticsStatusNotification(id string, request *firmware.DiagnosticsStatusNotificationRequest) (*firmware.DiagnosticsStatusNotificationConfirmation, error)
func (*CS) OnFirmwareStatusNotification ¶
func (cs *CS) OnFirmwareStatusNotification(id string, request *firmware.FirmwareStatusNotificationRequest) (*firmware.FirmwareStatusNotificationConfirmation, error)
func (*CS) OnHeartbeat ¶
func (cs *CS) OnHeartbeat(id string, request *core.HeartbeatRequest) (*core.HeartbeatConfirmation, error)
func (*CS) OnMeterValues ¶
func (cs *CS) OnMeterValues(id string, request *core.MeterValuesRequest) (*core.MeterValuesConfirmation, error)
func (*CS) OnSecurityEventNotification ¶
func (cs *CS) OnSecurityEventNotification(id string, request *security.SecurityEventNotificationRequest) (*security.SecurityEventNotificationResponse, error)
func (*CS) OnSignCertificate ¶
func (cs *CS) OnSignCertificate(id string, request *security.SignCertificateRequest) (*security.SignCertificateResponse, error)
func (*CS) OnStartTransaction ¶
func (cs *CS) OnStartTransaction(id string, request *core.StartTransactionRequest) (*core.StartTransactionConfirmation, error)
func (*CS) OnStatusNotification ¶
func (cs *CS) OnStatusNotification(id string, request *core.StatusNotificationRequest) (*core.StatusNotificationConfirmation, error)
func (*CS) OnStopTransaction ¶
func (cs *CS) OnStopTransaction(id string, request *core.StopTransactionRequest) (*core.StopTransactionConfirmation, error)
func (*CS) RegisterChargepoint ¶
RegisterChargepoint registers a charge point with the central system of returns an already registered charge point
func (*CS) SetUpdated ¶
func (cs *CS) SetUpdated(f func())
SetUpdated sets a callback function that is called when the status changes
func (*CS) WithConnectorStatus ¶
func (cs *CS) WithConnectorStatus(id string, connector int, fun func(status *core.StatusNotificationRequest))
type Config ¶
type Config struct {
Port int `json:"port"`
}
func CurrentConfig ¶
func CurrentConfig() Config
CurrentConfig returns the current runtime OCPP configuration.
type Connector ¶
type Connector struct {
// contains filtered or unexported fields
}
func NewConnector ¶
func (*Connector) ChangeAvailabilityRequest ¶
func (conn *Connector) ChangeAvailabilityRequest(availabilityType core.AvailabilityType) error
func (*Connector) CurrentPower ¶
func (*Connector) GetCompositeScheduleRequest ¶
func (conn *Connector) GetCompositeScheduleRequest(duration int) (*smartcharging.GetCompositeScheduleConfirmation, error)
func (*Connector) GetMaxCurrent ¶
GetMaxCurrent returns the maximum phase current the charge point is set to offer
func (*Connector) GetMaxPower ¶
GetMaxPower returns the maximum power the charge point is set to offer
func (*Connector) GetScheduleLimit ¶
getScheduleLimit queries the current or power limit the charge point is currently set to offer
func (*Connector) Initialized ¶
Initialized waits for initial charge point status notification
func (*Connector) NeedsAuthentication ¶
NeedsAuthentication checks if local authentication or an initial RemoteStartTransaction is required
func (*Connector) OnMeterValues ¶
func (conn *Connector) OnMeterValues(request *core.MeterValuesRequest) (*core.MeterValuesConfirmation, error)
func (*Connector) OnStartTransaction ¶
func (conn *Connector) OnStartTransaction(request *core.StartTransactionRequest) (*core.StartTransactionConfirmation, error)
func (*Connector) OnStatusChange ¶
func (conn *Connector) OnStatusChange(f func())
OnStatusChange registers a callback for status changes relevant to the loadpoint
func (*Connector) OnStatusNotification ¶
func (conn *Connector) OnStatusNotification(request *core.StatusNotificationRequest) (*core.StatusNotificationConfirmation, error)
func (*Connector) OnStopTransaction ¶
func (conn *Connector) OnStopTransaction(request *core.StopTransactionRequest) (*core.StopTransactionConfirmation, error)
func (*Connector) RemoteStartTransactionRequest ¶
func (*Connector) SetChargingProfileRequest ¶
func (conn *Connector) SetChargingProfileRequest(profile *types.ChargingProfile) error
func (*Connector) Status ¶
func (conn *Connector) Status() (core.ChargePointStatus, error)
Status returns the unmapped charge point status
func (*Connector) TotalEnergy ¶
func (*Connector) TransactionID ¶
TransactionID returns the current transaction id
func (*Connector) TriggerMessageRequest ¶
func (conn *Connector) TriggerMessageRequest(requestedMessage remotetrigger.MessageTrigger) error
type ForwarderRule ¶
type ForwarderRule struct {
StationID string `json:"stationId" yaml:"stationId"`
UpstreamURL string `json:"upstreamUrl" yaml:"upstreamUrl"`
Password string `json:"password,omitempty" yaml:"password,omitempty"`
UpstreamStationID string `json:"upstreamStationId,omitempty" yaml:"upstreamStationId,omitempty"`
Username string `json:"username,omitempty" yaml:"username,omitempty"`
Insecure bool `json:"insecure,omitempty" yaml:"insecure,omitempty"`
CaCert string `json:"caCert,omitempty" yaml:"caCert,omitempty"`
ReadOnly bool `json:"readOnly,omitempty" yaml:"readOnly,omitempty"`
}
ForwarderRule maps a station ID (or "*" for all chargers) to an upstream OCPP server URL.
func ForwarderRules ¶
func ForwarderRules() []ForwarderRule
ForwarderRules returns the current forwarding rules.
func (ForwarderRule) Redacted ¶
func (r ForwarderRule) Redacted() ForwarderRule
type ForwarderSessionStatus ¶
type ForwarderSessionStatus struct {
ChargerID string `json:"chargerId"`
UpstreamURL string `json:"upstreamUrl"`
UpstreamConnected bool `json:"upstreamConnected"`
Error string `json:"error,omitempty"`
}
ForwarderSessionStatus is the observable state of one forwarder session.
func GetForwarderStatus ¶
func GetForwarderStatus() []ForwarderSessionStatus
GetForwarderStatus returns a snapshot of all active forwarder sessions.
type StationStatus ¶
type StationStatus int
const ( StationStatusUnknown StationStatus = iota StationStatusConfigured StationStatusConnected )
func StationStatusString ¶
func StationStatusString(s string) (StationStatus, error)
StationStatusString retrieves an enum value from the enum constants string name. Throws an error if the param is not part of the enum.
func StationStatusValues ¶
func StationStatusValues() []StationStatus
StationStatusValues returns all values of the enum
func (StationStatus) IsAStationStatus ¶
func (i StationStatus) IsAStationStatus() bool
IsAStationStatus returns "true" if the value is listed in the enum definition. "false" otherwise
func (StationStatus) MarshalJSON ¶
func (i StationStatus) MarshalJSON() ([]byte, error)
MarshalJSON implements the json.Marshaler interface for StationStatus
func (StationStatus) String ¶
func (i StationStatus) String() string
func (*StationStatus) UnmarshalJSON ¶
func (i *StationStatus) UnmarshalJSON(data []byte) error
UnmarshalJSON implements the json.Unmarshaler interface for StationStatus