122 lines
3.6 KiB
Go
122 lines
3.6 KiB
Go
package ocpp
|
|
|
|
import (
|
|
"errors"
|
|
|
|
"github.com/evcc-io/evcc/api"
|
|
"github.com/lorenzodonini/ocpp-go/ocpp1.6/core"
|
|
"github.com/lorenzodonini/ocpp-go/ocpp1.6/remotetrigger"
|
|
"github.com/lorenzodonini/ocpp-go/ocpp1.6/smartcharging"
|
|
"github.com/lorenzodonini/ocpp-go/ocpp1.6/types"
|
|
)
|
|
|
|
func (cp *CP) ChangeAvailabilityRequest(connectorId int, availabilityType core.AvailabilityType) error {
|
|
rc := make(chan error, 1)
|
|
|
|
err := Instance().ChangeAvailability(cp.id, func(request *core.ChangeAvailabilityConfirmation, err error) {
|
|
if err == nil && request != nil && request.Status != core.AvailabilityStatusAccepted && request.Status != core.AvailabilityStatusScheduled {
|
|
err = errors.New(string(request.Status))
|
|
}
|
|
|
|
rc <- err
|
|
}, connectorId, availabilityType)
|
|
|
|
return wait(err, rc)
|
|
}
|
|
|
|
func (cp *CP) GetCompositeScheduleRequest(connectorId int, duration int) (*smartcharging.GetCompositeScheduleConfirmation, error) {
|
|
var res *smartcharging.GetCompositeScheduleConfirmation
|
|
rc := make(chan error, 1)
|
|
|
|
err := Instance().GetCompositeSchedule(cp.id, func(request *smartcharging.GetCompositeScheduleConfirmation, err error) {
|
|
if err == nil && request != nil && request.Status != smartcharging.GetCompositeScheduleStatusAccepted {
|
|
err = errors.New(string(request.Status))
|
|
}
|
|
|
|
res = request
|
|
|
|
rc <- err
|
|
}, connectorId, duration)
|
|
|
|
return res, wait(err, rc)
|
|
}
|
|
|
|
func (cp *CP) RemoteStartTransactionRequest(connectorId int, idTag string) error {
|
|
rc := make(chan error, 1)
|
|
err := Instance().RemoteStartTransaction(cp.id, func(request *core.RemoteStartTransactionConfirmation, err error) {
|
|
if err == nil && request != nil && request.Status != types.RemoteStartStopStatusAccepted {
|
|
err = errors.New(string(request.Status))
|
|
}
|
|
|
|
rc <- err
|
|
}, idTag, func(request *core.RemoteStartTransactionRequest) {
|
|
if connectorId > 0 {
|
|
request.ConnectorId = &connectorId
|
|
}
|
|
})
|
|
|
|
return wait(err, rc)
|
|
}
|
|
|
|
func (cp *CP) SetChargingProfileRequest(connectorId int, profile *types.ChargingProfile) error {
|
|
rc := make(chan error, 1)
|
|
|
|
err := Instance().SetChargingProfile(cp.id, func(request *smartcharging.SetChargingProfileConfirmation, err error) {
|
|
if err == nil && request != nil && request.Status != smartcharging.ChargingProfileStatusAccepted {
|
|
err = errors.New(string(request.Status))
|
|
}
|
|
|
|
rc <- err
|
|
}, connectorId, profile)
|
|
|
|
return wait(err, rc)
|
|
}
|
|
|
|
func (cp *CP) TriggerMessageRequest(connectorId int, requestedMessage remotetrigger.MessageTrigger) error {
|
|
if !cp.Connected() {
|
|
return api.ErrTimeout
|
|
}
|
|
|
|
rc := make(chan error, 1)
|
|
|
|
err := Instance().TriggerMessage(cp.id, func(request *remotetrigger.TriggerMessageConfirmation, err error) {
|
|
if err == nil && request != nil && request.Status != remotetrigger.TriggerMessageStatusAccepted {
|
|
err = errors.New(string(request.Status))
|
|
}
|
|
|
|
rc <- err
|
|
}, requestedMessage, func(request *remotetrigger.TriggerMessageRequest) {
|
|
if connectorId > 0 {
|
|
request.ConnectorId = &connectorId
|
|
}
|
|
})
|
|
|
|
return wait(err, rc)
|
|
}
|
|
|
|
func (cp *CP) ChangeConfigurationRequest(key, value string) error {
|
|
rc := make(chan error, 1)
|
|
|
|
err := Instance().ChangeConfiguration(cp.id, func(request *core.ChangeConfigurationConfirmation, err error) {
|
|
if err == nil && request != nil && request.Status != core.ConfigurationStatusAccepted {
|
|
err = errors.New(string(request.Status))
|
|
}
|
|
|
|
rc <- err
|
|
}, key, value)
|
|
|
|
return wait(err, rc)
|
|
}
|
|
|
|
func (cp *CP) GetConfigurationRequest() (*core.GetConfigurationConfirmation, error) {
|
|
rc := make(chan error, 1)
|
|
|
|
var res *core.GetConfigurationConfirmation
|
|
err := Instance().GetConfiguration(cp.id, func(request *core.GetConfigurationConfirmation, err error) {
|
|
res = request
|
|
|
|
rc <- err
|
|
}, nil)
|
|
|
|
return res, wait(err, rc)
|
|
}
|