示例#1
0
        private void GetChartBySOC(Chart chart,
                                   Project project,
                                   Parameters parameters,
                                   List <Cycle> cycles,
                                   StateOfCharge stateOfCharge,
                                   List <DataPoint> allPoints)
        {
            var firstCyscleIndex = 0;
            var pointCount       = 0;

            foreach (var cycle in FilterCycles(cycles, parameters))
            {
                firstCyscleIndex = firstCyscleIndex + pointCount;
                var tempPoints = allPoints.Where(cycle1 => cycle1.CycleIndex == cycle.Index).ToList();
                pointCount = tempPoints.Count();
                var    first       = tempPoints.First();
                var    last        = tempPoints.Last();
                double denominator = 1;
                if ((double)(last.Capacity.Value - first.Capacity.Value) > 0)
                {
                    denominator = (double)(last.Capacity.Value - first.Capacity.Value);
                }

                var pointsCC = Plot(allPoints, firstCyscleIndex, pointCount,
                                    p => Math.Abs((double)((p.Capacity - first.Capacity) / denominator) * 100),
                                    p => p.Voltage, parameters).ToList();
                AddSeries(chart, project, parameters, pointsCC, $"{Title.Charge} {cycle.Index}", cycle.Index);
            }
        }
示例#2
0
        public StateOfCharge GetStateOfCharge(string VehicleId, string access_token)
        {
            var client  = new RestClient("https://api.mercedes-benz.com/experimental/connectedvehicle/v1/vehicles/" + VehicleId + "/stateofcharge");
            var request = new RestRequest(Method.GET);

            request.AddHeader("Authorization", "Bearer " + access_token);
            request.AddHeader("Content-Type", "application/json");
            request.AddHeader("Accept", "application/json");
            IRestResponse response = client.Execute(request);

            StateOfCharge JSONObj = JsonConvert.DeserializeObject <StateOfCharge>(response.Content);

            return(JSONObj);
        }
示例#3
0
        public IHttpActionResult SetStateOfCharge(
            [FromUri] int[] projectId,
            [FromUri] double?chargeFrom = null,
            [FromUri] double?chargeTo   = null)
        {
            var result = _selectProjectListQuery.Execute(User.Identity.GetUserId(), projectId);

            if (result.Status != ProjectStatusDto.Ready)
            {
                return(Content(HttpStatusCode.NotFound, new { result.Status }));
            }

            StateOfCharge stateOfCharge = new StateOfCharge {
                ChargeFrom = chargeFrom,
                ChargeTo   = chargeTo
            };


            var parameters = _chartSettingProvider.MergeWithGlobal(User.Identity.GetUserId(), _chartSettingProvider.GetSettings(User.Identity.GetUserId()));
            var projectWithOneCycleExist        = result.Projects.HasProjectsWithOneCycle();
            var projectsSumCyclesGreaterThanMax = result.Projects.IsTotalProjectsCyclesGreaterThanMaximum(MaxSeriesPerPlot);

            parameters.PointSize = projectWithOneCycleExist ? PointSizeOnOneCyclePlots : parameters.PointSize;
            parameters.MaxCycles = projectsSumCyclesGreaterThanMax ? MaxSeriesPerPlot : parameters.MaxCycles;

            var timer = Stopwatch.StartNew();

            var chart = _chartPlotterFactory(PlotType.Soc).Plot(projectsSumCyclesGreaterThanMax,
                                                                new ChartPlotterContext
            {
                Parameters = parameters, ProjectIds = projectId,
                Trace      = User.Identity.Name,
                Data       = stateOfCharge
            });

            chart.PlotParameters = parameters;
            timer.Restart();

            return(Ok(chart.ToChartDto($"SOC ChargeFrom - {chargeFrom} ;ChargeTo - {chargeTo} ")));
        }
示例#4
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                try
                {
                    VehicleInformation getVehicleInformation = new VehicleInformation();
                    TireStates         getTireStates         = new TireStates();
                    Location           getLocation           = new Location();
                    Odometer           getOdometer           = new Odometer();
                    FuelState          getFuelState          = new FuelState();
                    StateOfCharge      getStateOfCharge      = new StateOfCharge();
                    StateOfDoors       getStateOfDoors       = new StateOfDoors();

                    if (Request.QueryString["code"] != null)
                    {
                        string Access_token = VerifyAuthentication(Request.QueryString["code"]);
                        string VehicleId    = GetVehicleId(Access_token);
                        getVehicleInformation = GetVehicleInformationById(VehicleId, Access_token);
                        getTireStates         = GetTireState(VehicleId, Access_token);
                        getLocation           = GetLocation(VehicleId, Access_token);
                        getOdometer           = GetOdometer(VehicleId, Access_token);
                        getFuelState          = GetFuelState(VehicleId, Access_token);
                        getStateOfCharge      = GetStateOfCharge(VehicleId, Access_token);
                        getStateOfDoors       = GetStateOfDoors(VehicleId, Access_token);
                        string kapidurum = SetLockStateOfDoors(VehicleId, Access_token);
                        if (kapidurum == "INITIATED")
                        {
                        }
                        else
                        {
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
示例#5
0
        public IHttpActionResult GetExportChart(
            [FromUri] int[] projectId,
            [FromUri] PlotType plotType,
            [FromUri] string format               = null,
            [FromUri] string templateIdValue      = null,
            [FromUri] int?maxCycles               = null,
            [FromUri] int?maxPointsPerSeries      = null,
            [FromUri] int?fromCycle               = null,
            [FromUri] int?toCycle                 = null,
            [FromUri] int?everyNthCycle           = null,
            [FromUri] string customCycleFilter    = null,
            [FromUri] bool?disableCharge          = null,
            [FromUri] bool?disableDischarge       = null,
            [FromUri] double?threshold            = null,
            [FromUri] double?minY                 = null,
            [FromUri] double?maxY                 = null,
            [FromUri] CurrentUoM?currentUoM       = null,
            [FromUri] CapacityUoM?capacityUoM     = null,
            [FromUri] TimeUoM?timeUoM             = null,
            [FromUri] PowerUoM?powerUoM           = null,
            [FromUri] EnergyUoM?energyUoM         = null,
            [FromUri] ResistanceUoM?resistanceUoM = null,
            [FromUri] NormalizeBy?normalizeBy     = null,
            [FromUri] int?pointSize               = null,
            [FromUri] double?chargeFrom           = null,
            [FromUri] double?chargeTo             = null)
        {
            var result = _selectProjectListQuery.Execute(User.Identity.GetUserId(), projectId);

            if (result.Status != ProjectStatusDto.Ready)
            {
                return(NotFound());
            }

            var   timer = Stopwatch.StartNew();
            Chart chart;

            if ((plotType == PlotType.View || plotType == PlotType.Template) && !string.IsNullOrEmpty(templateIdValue))
            {
                int.TryParse(templateIdValue, out var templateId);
                var item = _plotTemplateService.GetChartTemplate(new ChartOwner(User.Identity.GetUserId(), User.Identity.Name), templateId, result.Projects);
                if (item == null)
                {
                    Log.Error($"Template {templateId} not found");
                    return(NotFound());
                }
                chart = item.Chart;

                timer.Restart();
            }
            else if (plotType == PlotType.Soc)
            {
                var parameters = new PlotParameters
                {
                    MaxCycles          = maxCycles,
                    MaxPointsPerSeries = maxPointsPerSeries,
                    FromCycle          = fromCycle,
                    ToCycle            = toCycle,
                    EveryNthCycle      = everyNthCycle,
                    CustomCycleFilter  = customCycleFilter,
                    DisableCharge      = disableCharge,
                    DisableDischarge   = disableDischarge,
                    Threshold          = threshold,
                    MinY          = minY,
                    MaxY          = maxY,
                    CurrentUoM    = currentUoM,
                    CapacityUoM   = capacityUoM,
                    TimeUoM       = timeUoM,
                    PowerUoM      = powerUoM,
                    EnergyUoM     = energyUoM,
                    ResistanceUoM = resistanceUoM,
                    NormalizeBy   = normalizeBy,
                    PointSize     = pointSize
                };

                StateOfCharge stateOfCharge = new StateOfCharge
                {
                    ChargeFrom = chargeFrom,
                    ChargeTo   = chargeTo
                };

                chart = _chartPlotterFactory(PlotType.Soc).Plot(false,
                                                                new ChartPlotterContext
                {
                    Parameters = parameters, ProjectIds = projectId,
                    Trace      = User.Identity.Name,
                    Data       = stateOfCharge
                });

                chart.PlotParameters = parameters;
                Log.Info($"ChartController.GetExportChart: Plot({plotType}, {parameters}, {projectId}): plot {timer.ElapsedMilliseconds} ms");
            }
            else
            {
                PlotParameters parameters = new PlotParameters
                {
                    MaxCycles          = maxCycles,
                    MaxPointsPerSeries = maxPointsPerSeries,
                    FromCycle          = fromCycle,
                    ToCycle            = toCycle,
                    EveryNthCycle      = everyNthCycle,
                    CustomCycleFilter  = customCycleFilter,
                    DisableCharge      = disableCharge,
                    DisableDischarge   = disableDischarge,
                    Threshold          = threshold,
                    MinY          = minY,
                    MaxY          = maxY,
                    CurrentUoM    = currentUoM,
                    CapacityUoM   = capacityUoM,
                    TimeUoM       = timeUoM,
                    PowerUoM      = powerUoM,
                    EnergyUoM     = energyUoM,
                    ResistanceUoM = resistanceUoM,
                    NormalizeBy   = normalizeBy,
                    PointSize     = pointSize
                };

                chart = _chartPlotterFactory(plotType).Plot(true,
                                                            new ChartPlotterContext
                {
                    Parameters = parameters,
                    ProjectIds = projectId,
                    Trace      = User.Identity.Name
                });

                Log.Info($"ChartController.GetExportChart: Plot({plotType}, {parameters}, {projectId}): plot {timer.ElapsedMilliseconds} ms");

                chart.PlotParameters = parameters;
            }

            var    files       = HttpContext.Current.Request.Files;
            Stream imageStream = null;

            if (files.Count > 0)
            {
                imageStream = files[0].InputStream;
            }

            return(new ExcelHttpActionResult(_exporter.ToExcel(chart, imageStream)));
        }