|
|
|
@ -17,6 +17,7 @@ using MQTTnet.Formatter;
|
|
|
|
|
using MQTTnet.Protocol;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using Newtonsoft.Json.Linq;
|
|
|
|
|
using Org.BouncyCastle.Utilities;
|
|
|
|
|
using Repository.Station;
|
|
|
|
|
using Service.Cloud.Handler;
|
|
|
|
|
using Service.Cloud.Msg;
|
|
|
|
@ -25,6 +26,7 @@ using Service.Cloud.Msg.Cloud.Resp;
|
|
|
|
|
using Service.Cloud.Msg.Cloud.Resp.OutCharger;
|
|
|
|
|
using Service.Cloud.Msg.Host.Req;
|
|
|
|
|
using Service.Cloud.Msg.Host.Req.OutCharger;
|
|
|
|
|
using Service.Cloud.Msg.Host.Resp;
|
|
|
|
|
|
|
|
|
|
namespace Service.Cloud.Client;
|
|
|
|
|
|
|
|
|
@ -73,29 +75,57 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
|
|
|
|
|
public CarCanStart? CarCanStart { get; set; }
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
///
|
|
|
|
|
/// 站端发-云端收
|
|
|
|
|
/// </summary>
|
|
|
|
|
public MsgPair<VehicleCertification, VehicleCertificationResp> CarAuth { get; set; } = new();
|
|
|
|
|
public MsgPair<CarAuth, CarAuthRes> CarAuth { get; set; } = new();
|
|
|
|
|
public MsgPair<CardataReport, CardataReportRes> VehicleData { get; set; } = new();
|
|
|
|
|
public MsgPair<SignIn, SignInRes> Sign { get; set; } = new();
|
|
|
|
|
public MsgPair<DevList, DevListRes> ReportingDevice { get; set; } = new();
|
|
|
|
|
public MsgPair<StaSwapRecord, StaSwapRecordRes> UploadPowerChange { get; set; } = new();
|
|
|
|
|
public MsgPair<ChargeRecordReport, ChargeRecordReportRes> ChargeRecord { get; set; } = new();
|
|
|
|
|
public MsgPair<StationRunStatus, StationRunStatusRes> HostStatus { get; set; } = new();
|
|
|
|
|
public MsgPair<StationChnRunStatus, StationChnRunStatusRes> ChannelStatus { get; set; } = new();
|
|
|
|
|
public MsgPair<FaultReport, FaultReportRes> RealTimeFault { get; set; } = new();
|
|
|
|
|
public MsgPair<EvmDataInfo, EvmDataInfoRes> TemperatureHumidity { get; set; } = new();
|
|
|
|
|
public MsgPair<AcDataInfo, AcDataInfoRes> AirConditioning { get; set; } = new();
|
|
|
|
|
public MsgPair<EqmStateStartLogInfo, EqmStateStartLogInfoRes> StartLog { get; set; } = new();
|
|
|
|
|
public MsgPair<EqmStateEndLogInfo, EqmStateEndLogInfoRes> EndLog { get; set; } = new();
|
|
|
|
|
public MsgPair<ChargeDevDataInfo, ChargeDevDataInfoRes> ChargeDevDataInfo { get; set; } = new();
|
|
|
|
|
public MsgPair<BatDataInfo, BatDataInfoRes> BatData { get; set; } = new();
|
|
|
|
|
public MsgPair<ChannelStatusReporting, ChannelStatusReportingResp> ChannelStatus { get; set; } = new();
|
|
|
|
|
public MsgPair<AirConditioningData, AirConditioningDataResp> AirConditioning { get; set; } = new();
|
|
|
|
|
public MsgPair<ChargeRecordReporting, ChargeRecordReportingResp> ChargeRecord { get; set; } = new();
|
|
|
|
|
public MsgPair<EndLogMessage, EndLogMessageResp> EndLog { get; set; } = new();
|
|
|
|
|
public MsgPair<HostStatusReported, HostStatusReportedResp> HostStatus { get; set; } = new();
|
|
|
|
|
public MsgPair<RealTimeFaultInfo, RealTimeFaultInfoResp> RealTimeFault { get; set; } = new();
|
|
|
|
|
public MsgPair<ReportingDeviceList, ReportingDeviceListResp> ReportingDevice { get; set; } = new();
|
|
|
|
|
public MsgPair<SignIn, SignInResp> Sign { get; set; } = new();
|
|
|
|
|
public MsgPair<StartLogMessage, StartLogMessageResp> StartLog { get; set; } = new();
|
|
|
|
|
public MsgPair<TemperatureHumidityData, TemperatureHumidityDataResp> TemperatureHumidity { get; set; } = new();
|
|
|
|
|
public MsgPair<UploadSwapOrder, UploadSwapOrderResp> UploadPowerChange { get; set; } = new();
|
|
|
|
|
public MsgPair<VehicleDataReporting, VehicleDataReportingResp> VehicleData { get; set; } = new();
|
|
|
|
|
public MsgPair<ChargeRecordUpLoad, ChargeRecordUploadRes> ChargeRecordUpLoad { get; set; } = new();
|
|
|
|
|
public MsgPair<ChargeDevDataInfo, ChargeDevDataInfoRes> ChargeDevDataInfo { get; set; } = new();
|
|
|
|
|
|
|
|
|
|
public MsgPair<BatteryTotal, BatteryTotalRes> BatteryTotal { get; set; } = new();
|
|
|
|
|
public MsgPair<ChargingTotalDis, ChargingTotalDisRes> ChargingTotalDis { get; set; } = new();
|
|
|
|
|
public MsgPair<PowerTotal, PowerTotalRes> PowerTotal { get; set; } = new();
|
|
|
|
|
public MsgPair<StaChargingTotal, StaChargingTotalRes> StaChargingTotal { get; set; } = new();
|
|
|
|
|
public MsgPair<MeterEnergyKwh, MeterEnergyKwhRes> MeterEnergyKwh { get; set; } = new();
|
|
|
|
|
public MsgPair<MeterDayEnergyVal, MeterDayEnergyValRes> MeterDayEnergyVal { get; set; } = new();
|
|
|
|
|
public MsgPair<StaHourEnergyVal, StaHourEnergyValRes> StaHourEnergyVal { get; set; } = new();
|
|
|
|
|
public MsgPair<StaDayEnergyVal, StaDayEnergyValRes> StaDayEnergyVal { get; set; } = new();
|
|
|
|
|
public MsgPair<StaDayOpeEnergyVal, StaDayOpeEnergyValRes> StaDayOpeEnergyVal { get; set; } = new();
|
|
|
|
|
public MsgPair<StaHourAmountVal, StaHourAmountValRes> StaHourAmountVal { get; set; } = new();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 云端发-站端收
|
|
|
|
|
/// </summary>
|
|
|
|
|
public MsgPair<CarCanStart, CarCanStartRes> CarCanStartInfo { get; set; } = new();
|
|
|
|
|
public MsgPair<SetStBaseInfo, SetStBaseInfoRes> SetStBaseInfo { get; set; } = new();
|
|
|
|
|
public MsgPair<SetService, SetServiceRes> SetService { get; set; } = new();
|
|
|
|
|
public MsgPair<SetOpTime, SetOpTimeRes> SetOpTime { get; set; } = new();
|
|
|
|
|
public MsgPair<SetOpModel, SetOpModelRes> SetOpModel { get; set; } = new();
|
|
|
|
|
public MsgPair<SetStaPrice, SetStaPriceRes> SetStaPrice { get; set; } = new();
|
|
|
|
|
public MsgPair<SetChargePrice, SetChargePriceRes> SetChargePrice { get; set; } = new();
|
|
|
|
|
public MsgPair<SetChangeCarData, SetChangeCarDataRes> SetChangeCarData { get; set; } = new();
|
|
|
|
|
public MsgPair<SetConfig, SetConfigRes> SetConfig { get; set; } = new();
|
|
|
|
|
public MsgPair<GetConfig, GetConfigRes> GetConfig { get; set; } = new();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//站外
|
|
|
|
|
public MsgPair<PileEndCharge, PileEndChargeResp> PileEndCharge { get; set; } = new();
|
|
|
|
|
|
|
|
|
|
public MsgPair<PileChargeRealtime, PileChargeRealtimeResp> PileChargeRealtime { get; set; } = new();
|
|
|
|
|
public MsgPair<PileRealtime, PileRealtimeResp> PileRealtime { get; set; } = new();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
@ -396,12 +426,12 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
|
|
|
|
|
|
|
|
|
|
#region 主动发送CMD
|
|
|
|
|
|
|
|
|
|
public VehicleCertificationResp? SendVehicleCertification(VehicleCertification vehicleCertification,
|
|
|
|
|
public CarAuthRes? SendVehicleCertification(CarAuth carAuth,
|
|
|
|
|
TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
Log.Info(vehicleCertification);
|
|
|
|
|
this.CarAuth.Req = vehicleCertification;
|
|
|
|
|
this.Publish(vehicleCertification);
|
|
|
|
|
Log.Info(carAuth);
|
|
|
|
|
this.CarAuth.Req = carAuth;
|
|
|
|
|
this.Publish(carAuth);
|
|
|
|
|
return CarAuth.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -416,96 +446,96 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 换电站通道状态上报
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="channelStatusReporting"></param>
|
|
|
|
|
/// <param name="stationChnRunStatus"></param>
|
|
|
|
|
/// <param name="timeSpan"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public ChannelStatusReportingResp? SendChannelStatusReporting(ChannelStatusReporting channelStatusReporting,
|
|
|
|
|
public StationChnRunStatusRes? SendChannelStatusReporting(StationChnRunStatus stationChnRunStatus,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.ChannelStatus.Req = channelStatusReporting;
|
|
|
|
|
this.Publish(channelStatusReporting);
|
|
|
|
|
this.ChannelStatus.Req = stationChnRunStatus;
|
|
|
|
|
this.Publish(stationChnRunStatus);
|
|
|
|
|
return ChannelStatus.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public AirConditioningDataResp? SendAirConditioningData(AirConditioningData airConditioningData,
|
|
|
|
|
public AcDataInfoRes? SendAirConditioningData(AcDataInfo acDataInfo,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.AirConditioning.Req = airConditioningData;
|
|
|
|
|
this.Publish(airConditioningData);
|
|
|
|
|
this.AirConditioning.Req = acDataInfo;
|
|
|
|
|
this.Publish(acDataInfo);
|
|
|
|
|
return AirConditioning.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public ChargeRecordReportingResp? SendChargeRecordReporting(ChargeRecordReporting chargeRecord,
|
|
|
|
|
public ChargeRecordReportRes? SendChargeRecordReporting(ChargeRecordReport chargeRecord,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.ChargeRecord.Req = chargeRecord;
|
|
|
|
|
this.Publish(chargeRecord);
|
|
|
|
|
return ChargeRecord.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public EndLogMessageResp? SendEndLogMessage(EndLogMessage endLogMessage,
|
|
|
|
|
public EqmStateEndLogInfoRes? SendEndLogMessage(EqmStateEndLogInfo endLogMessage,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.EndLog.Req = endLogMessage;
|
|
|
|
|
this.Publish(endLogMessage);
|
|
|
|
|
return EndLog.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public HostStatusReportedResp? SendHostStatusReported(HostStatusReported hostStatusReported,
|
|
|
|
|
public StationRunStatusRes? SendHostStatusReported(StationRunStatus hostStatusReported,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.HostStatus.Req = hostStatusReported;
|
|
|
|
|
this.Publish(hostStatusReported);
|
|
|
|
|
return HostStatus.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public RealTimeFaultInfoResp? SendRealTimeFaultInfo(RealTimeFaultInfo realTimeFaultInfo,
|
|
|
|
|
public FaultReportRes? SendRealTimeFaultInfo(FaultReport faultReport,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.RealTimeFault.Req = realTimeFaultInfo;
|
|
|
|
|
this.Publish(realTimeFaultInfo);
|
|
|
|
|
this.RealTimeFault.Req = faultReport;
|
|
|
|
|
this.Publish(faultReport);
|
|
|
|
|
return RealTimeFault.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public ReportingDeviceListResp? SendReportingDeviceList(ReportingDeviceList reportingDeviceList,
|
|
|
|
|
public DevListRes? SendReportingDeviceList(DevList devList,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.ReportingDevice.Req = reportingDeviceList;
|
|
|
|
|
this.Publish(reportingDeviceList);
|
|
|
|
|
this.ReportingDevice.Req = devList;
|
|
|
|
|
this.Publish(devList);
|
|
|
|
|
return ReportingDevice.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public SignInResp? SendSignIn(SignIn signIn,
|
|
|
|
|
public SignInRes? SendSignIn(SignIn signIn,
|
|
|
|
|
TimeSpan? timeSpan=null)
|
|
|
|
|
{
|
|
|
|
|
this.Sign.Req = signIn;
|
|
|
|
|
this.Publish(signIn);
|
|
|
|
|
return Sign.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public StartLogMessageResp? SendStartLogMessage(StartLogMessage startLogMessage,
|
|
|
|
|
public EqmStateStartLogInfoRes? SendStartLogMessage(EqmStateStartLogInfo eqmStateStartLogInfo,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.StartLog.Req = startLogMessage;
|
|
|
|
|
this.Publish(startLogMessage);
|
|
|
|
|
this.StartLog.Req = eqmStateStartLogInfo;
|
|
|
|
|
this.Publish(eqmStateStartLogInfo);
|
|
|
|
|
return StartLog.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public TemperatureHumidityDataResp? SendTemperatureHumidityData(TemperatureHumidityData temperatureHumidityData,
|
|
|
|
|
public EvmDataInfoRes? SendTemperatureHumidityData(EvmDataInfo evmDataInfo,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.TemperatureHumidity.Req = temperatureHumidityData;
|
|
|
|
|
this.Publish(temperatureHumidityData);
|
|
|
|
|
this.TemperatureHumidity.Req = evmDataInfo;
|
|
|
|
|
this.Publish(evmDataInfo);
|
|
|
|
|
return TemperatureHumidity.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 上传换电订单
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="uploadSwapOrder"></param>
|
|
|
|
|
/// <param name="staSwapRecord"></param>
|
|
|
|
|
/// <param name="timeSpan"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public UploadSwapOrderResp? SendUploadPowerChangeOrder(UploadSwapOrder uploadSwapOrder, TimeSpan? timeSpan = null)
|
|
|
|
|
public StaSwapRecordRes? SendUploadPowerChangeOrder(StaSwapRecord staSwapRecord, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.UploadPowerChange.Req = uploadSwapOrder;
|
|
|
|
|
this.Publish(uploadSwapOrder);
|
|
|
|
|
this.UploadPowerChange.Req = staSwapRecord;
|
|
|
|
|
this.Publish(staSwapRecord);
|
|
|
|
|
return UploadPowerChange.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
public VehicleDataReportingResp? SendVehicleDataReporting(VehicleDataReporting vehicleDataReporting,
|
|
|
|
|
public CardataReportRes? SendVehicleDataReporting(CardataReport cardataReport,
|
|
|
|
|
TimeSpan timeSpan)
|
|
|
|
|
{
|
|
|
|
|
this.VehicleData.Req = vehicleDataReporting;
|
|
|
|
|
this.Publish(vehicleDataReporting);
|
|
|
|
|
this.VehicleData.Req = cardataReport;
|
|
|
|
|
this.Publish(cardataReport);
|
|
|
|
|
return VehicleData.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -523,6 +553,76 @@ public class CloudClient : IMqttClientConnectedHandler, IMqttApplicationMessageR
|
|
|
|
|
return ChargeDevDataInfo.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public BatteryTotalRes? SendBatteryTotal(BatteryTotal req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.BatteryTotal.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return BatteryTotal.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ChargingTotalDisRes? SendChargingTotalDis(ChargingTotalDis req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.ChargingTotalDis.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return ChargingTotalDis.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public PowerTotalRes? SendPowerTotal(PowerTotal req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.PowerTotal.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return PowerTotal.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public StaChargingTotalRes? SendStaChargingTotal(StaChargingTotal req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.StaChargingTotal.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return StaChargingTotal.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public MeterEnergyKwhRes? SendMeterEnergyKwh(MeterEnergyKwh req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.MeterEnergyKwh.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return MeterEnergyKwh.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public MeterDayEnergyValRes? SendMeterDayEnergyVal(MeterDayEnergyVal req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.MeterDayEnergyVal.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return MeterDayEnergyVal.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public StaHourEnergyValRes? SendStaHourEnergyVal(StaHourEnergyVal req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.StaHourEnergyVal.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return StaHourEnergyVal.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public StaDayEnergyValRes? SendStaDayEnergyVal(StaDayEnergyVal req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.StaDayEnergyVal.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return StaDayEnergyVal.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public StaDayOpeEnergyValRes? SendStaDayOpeEnergyVal(StaDayOpeEnergyVal req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.StaDayOpeEnergyVal.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return StaDayOpeEnergyVal.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public StaHourAmountValRes? SendStaHourAmountVal(StaHourAmountVal req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.StaHourAmountVal.Req = req;
|
|
|
|
|
this.Publish(req);
|
|
|
|
|
return StaHourAmountVal.GetResp(timeSpan);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public PileEndChargeResp? SendPileEndCharge(PileEndCharge req, TimeSpan? timeSpan = null)
|
|
|
|
|
{
|
|
|
|
|
this.PileEndCharge.Req = req;
|
|
|
|
|