Esempio n. 1
0
 public QueryInfo(
     EmeraDriver driver,
     SynchRequestDataDrv requestData,
     SynchParamsDataDrv requestParam,
     EmeraSharedSetting ss,
     EmeraContentSetting cs,
     DriverSetting driverSetting)
 {
     RequestData   = requestData;
     RequestParam  = requestParam;
     this.driver   = driver;
     Request       = new EmeraRequest(driver, driverSetting, driver.ReadTimeOutRequestMSec());
     DriverSetting = driverSetting;
     DataBus       = driver.Channel;
     Ss            = ss;
     Cs            = cs;
     NextPoint     = new AccountNextPoint(
         TimeZoneMap.Local,
         timeOffset: TimeOffset.Level_1,
         useMin3: false,
         useMin30: ss.Enbl30min,
         useDay1: true,
         useMonth1: true,
         useYear1: false,
         archSync: ss.Arch.ToSch());
     ElectroChannel = driver.ElectroChannel.ByBrowseName <ElectroChannel>(ElectroChannels.BN.ElectroChannel);
 }
Esempio n. 2
0
        public override SynchResponse Synch(SynchRequestDataDrv requestData, SynchParamsDataDrv requestParam)
        {
            Log.Trace.Write(1, (l) => l.Info(SR.SYNC_ARCH));
            var info = new QueryInfo(
                this,
                requestData,
                requestParam,
                requestData.GetSharedSetting(() => new EmeraSharedSetting()),
                requestData.GetContentSetting(() => new EmeraContentSetting()),
                requestData.GetDriverSetting(() => new DriverSetting())
                );

            //Любая работа с устройством должна начинаться с открытия сессии
            using (var session = new PhysicalSession <EmeraSynchState, AccountNextPoint>(this, requestData, info.NextPoint))
            {
                info.SetSession(session);
                //чтение времени
                session.OnReadDateTime = () => { return(IO.ReadDateTime(info)); };
                //чтение серийного номера и т.д.
                session.OnReadPhysicalInfo = () => { return(IO.ReadPhysicalInfo(info)); };
                if (info.Ss.EnblTimeCorr)
                {
                    //записть времени
                    session.OnWriteDateTime = (diff) => { return(IO.WriteDateTime(diff, info)); };
                }
                //произвольные операции перед открытии сессии
                session.OnBeforeOpenSession = () => { return(IO.BeforeOpenSession(info)); };
                session.AutoOpen            = true;


                var eDef        = info.ElectroChannel.Energy;
                var eDefCounter = info.ElectroChannel.Counter;

                /*if (session.LaunchPoint(info.NextPoint.Min3))
                 * {
                 * Log.Trace.Info(1, SR.Read3Min);
                 * IO.ReadInc(
                 *  info,
                 *  TimeStep.Minute_3.Round(info.NowTimeInZone),
                 *  TypeQuery.Power3min,
                 *  TypeInc.Min3,
                 *  eDef.Aplus.Min3,
                 *  eDef.Aminus.Min3,
                 *  eDef.Rplus.Min3,
                 *  eDef.Rminus.Min3,
                 *  EmeraRequest.Depth3Min,
                 *  requestParam.DeepSync);
                 * if (info.Ss.EnblEvents) IO.ReadAllEvents(info);
                 * }*/

                #region if (session.LaunchPoint(info.NextPoint.Min30))
                if (session.LaunchPoint(info.NextPoint.Min30))
                {
                    Log.Trace.Info(1, SR.Read30Min);
                    IO.ReadInc(
                        info,
                        TimeStep.Minute_30.Round(info.NowTimeInZone),
                        TypeQuery.SlicesEnergy,
                        TypeInc.Min30,
                        eDef.Aplus.Min30,
                        eDef.Aminus.Min30,
                        eDef.Rplus.Min30,
                        eDef.Rminus.Min30,
                        EmeraRequest.Depth30MinDefault,
                        FineTuneUtils.ReadDeepSync30Local(FineTune, this, requestParam.DeepSync, EmeraRequest.Depth30MinDefault));
                    //if ((!info.Ss.Enbl3min) &&  (info.Ss.EnblEvents)) IO.ReadAllEvents(info);
                }
                #endregion
                #region if (session.LaunchPoint(info.NextPoint.Day1))
                if (session.LaunchPoint(info.NextPoint.Day1))
                {
                    Log.Trace.Info(1, SR.ReadDay);

                    /*IO.ReadInc(
                     * info,
                     * TimeStep.Day_1.Round(info.NowTimeInZone),
                     * TypeQuery.Inc,
                     * TypeInc.Day,
                     * eDef.Aplus.Day1,
                     * eDef.Aminus.Day1,
                     * eDef.Rplus.Day1,
                     * eDef.Rminus.Day1,
                     * EmeraRequest.DepthDay,
                     * requestParam.DeepSync);*/

                    IO.ReadInc(
                        info,
                        TimeStep.Day_1.Round(info.NowTimeInZone) /*.AddDays(-1)*/,
                        TypeQuery.Counter,
                        TypeInc.Day,
                        eDefCounter.Aplus.Day1,
                        eDefCounter.Aminus.Day1,
                        eDefCounter.Rplus.Day1,
                        eDefCounter.Rminus.Day1,
                        EmeraRequest.DepthDayCounter,
                        requestParam.DeepSync,
                        ETariff.NoTariff);

                    #region if (info.Ss.EnblCounterTariff1)
                    if (info.Ss.EnblCounterTariff1)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Day_1.Round(info.NowTimeInZone) /*.AddDays(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Day,
                            eDefCounter.Aplus.Day1Tariff1,
                            eDefCounter.Aminus.Day1Tariff1,
                            eDefCounter.Rplus.Day1Tariff1,
                            eDefCounter.Rminus.Day1Tariff1,
                            EmeraRequest.DepthDayCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff1);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff2)
                    if (info.Ss.EnblCounterTariff2)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Day_1.Round(info.NowTimeInZone) /*.AddDays(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Day,
                            eDefCounter.Aplus.Day1Tariff2,
                            eDefCounter.Aminus.Day1Tariff2,
                            eDefCounter.Rplus.Day1Tariff2,
                            eDefCounter.Rminus.Day1Tariff2,
                            EmeraRequest.DepthDayCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff2);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff3)
                    if (info.Ss.EnblCounterTariff3)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Day_1.Round(info.NowTimeInZone) /*.AddDays(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Day,
                            eDefCounter.Aplus.Day1Tariff3,
                            eDefCounter.Aminus.Day1Tariff3,
                            eDefCounter.Rplus.Day1Tariff3,
                            eDefCounter.Rminus.Day1Tariff3,
                            EmeraRequest.DepthDayCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff3);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff4)
                    if (info.Ss.EnblCounterTariff4)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Day_1.Round(info.NowTimeInZone) /*.AddDays(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Day,
                            eDefCounter.Aplus.Day1Tariff4,
                            eDefCounter.Aminus.Day1Tariff4,
                            eDefCounter.Rplus.Day1Tariff4,
                            eDefCounter.Rminus.Day1Tariff4,
                            EmeraRequest.DepthDayCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff4);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff5)
                    if (info.Ss.EnblCounterTariff5)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Day_1.Round(info.NowTimeInZone) /*.AddDays(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Day,
                            eDefCounter.Aplus.Day1Tariff5,
                            eDefCounter.Aminus.Day1Tariff5,
                            eDefCounter.Rplus.Day1Tariff5,
                            eDefCounter.Rminus.Day1Tariff5,
                            EmeraRequest.DepthDayCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff5);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff6)
                    if (info.Ss.EnblCounterTariff6)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Day_1.Round(info.NowTimeInZone) /*.AddDays(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Day,
                            eDefCounter.Aplus.Day1Tariff6,
                            eDefCounter.Aminus.Day1Tariff6,
                            eDefCounter.Rplus.Day1Tariff6,
                            eDefCounter.Rminus.Day1Tariff6,
                            EmeraRequest.DepthDayCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff6);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff7)
                    if (info.Ss.EnblCounterTariff7)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Day_1.Round(info.NowTimeInZone) /*.AddDays(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Day,
                            eDefCounter.Aplus.Day1Tariff7,
                            eDefCounter.Aminus.Day1Tariff7,
                            eDefCounter.Rplus.Day1Tariff7,
                            eDefCounter.Rminus.Day1Tariff7,
                            EmeraRequest.DepthDayCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff7);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff8)
                    if (info.Ss.EnblCounterTariff8)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Day_1.Round(info.NowTimeInZone) /*.AddDays(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Day,
                            eDefCounter.Aplus.Day1Tariff8,
                            eDefCounter.Aminus.Day1Tariff8,
                            eDefCounter.Rplus.Day1Tariff8,
                            eDefCounter.Rminus.Day1Tariff8,
                            EmeraRequest.DepthDayCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff8);
                    }
                    #endregion
                }
                #endregion
                #region if (session.LaunchPoint(info.NextPoint.Month1))
                if (session.LaunchPoint(info.NextPoint.Month1))
                {
                    Log.Trace.Info(1, SR.ReadMonth);

                    /*IO.ReadInc(
                     * info,
                     * TimeStep.Month.Round(info.NowTimeInZone),
                     * TypeQuery.Inc,
                     * TypeInc.Month,
                     * eDef.Aplus.Month1,
                     * eDef.Aminus.Month1,
                     * eDef.Rplus.Month1,
                     * eDef.Rminus.Month1,
                     * EmeraRequest.DepthMonth,
                     * requestParam.DeepSync);*/

                    IO.ReadInc(
                        info,
                        TimeStep.Month.Round(info.NowTimeInZone) /*.AddMonths(-1)*/,
                        TypeQuery.Counter,
                        TypeInc.Month,
                        eDefCounter.Aplus.Month1,
                        eDefCounter.Aminus.Month1,
                        eDefCounter.Rplus.Month1,
                        eDefCounter.Rminus.Month1,
                        EmeraRequest.DepthMonthCounter,
                        requestParam.DeepSync,
                        ETariff.NoTariff);

                    #region if (info.Ss.EnblCounterTariff1)
                    if (info.Ss.EnblCounterTariff1)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Month.Round(info.NowTimeInZone) /*.AddMonths(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Month,
                            eDefCounter.Aplus.Month1Tariff1,
                            eDefCounter.Aminus.Month1Tariff1,
                            eDefCounter.Rplus.Month1Tariff1,
                            eDefCounter.Rminus.Month1Tariff1,
                            EmeraRequest.DepthMonthCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff1);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff2)
                    if (info.Ss.EnblCounterTariff2)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Month.Round(info.NowTimeInZone) /*.AddMonths(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Month,
                            eDefCounter.Aplus.Month1Tariff2,
                            eDefCounter.Aminus.Month1Tariff2,
                            eDefCounter.Rplus.Month1Tariff2,
                            eDefCounter.Rminus.Month1Tariff2,
                            EmeraRequest.DepthMonthCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff2);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff3)
                    if (info.Ss.EnblCounterTariff3)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Month.Round(info.NowTimeInZone) /*.AddMonths(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Month,
                            eDefCounter.Aplus.Month1Tariff3,
                            eDefCounter.Aminus.Month1Tariff3,
                            eDefCounter.Rplus.Month1Tariff3,
                            eDefCounter.Rminus.Month1Tariff3,
                            EmeraRequest.DepthMonthCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff3);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff4)
                    if (info.Ss.EnblCounterTariff4)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Month.Round(info.NowTimeInZone) /*.AddMonths(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Month,
                            eDefCounter.Aplus.Month1Tariff4,
                            eDefCounter.Aminus.Month1Tariff4,
                            eDefCounter.Rplus.Month1Tariff4,
                            eDefCounter.Rminus.Month1Tariff4,
                            EmeraRequest.DepthMonthCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff4);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff5)
                    if (info.Ss.EnblCounterTariff5)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Month.Round(info.NowTimeInZone) /*.AddMonths(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Month,
                            eDefCounter.Aplus.Month1Tariff5,
                            eDefCounter.Aminus.Month1Tariff5,
                            eDefCounter.Rplus.Month1Tariff5,
                            eDefCounter.Rminus.Month1Tariff5,
                            EmeraRequest.DepthMonthCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff5);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff6)
                    if (info.Ss.EnblCounterTariff6)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Month.Round(info.NowTimeInZone) /*.AddMonths(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Month,
                            eDefCounter.Aplus.Month1Tariff6,
                            eDefCounter.Aminus.Month1Tariff6,
                            eDefCounter.Rplus.Month1Tariff6,
                            eDefCounter.Rminus.Month1Tariff6,
                            EmeraRequest.DepthMonthCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff6);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff7)
                    if (info.Ss.EnblCounterTariff7)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Month.Round(info.NowTimeInZone) /*.AddMonths(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Month,
                            eDefCounter.Aplus.Month1Tariff7,
                            eDefCounter.Aminus.Month1Tariff7,
                            eDefCounter.Rplus.Month1Tariff7,
                            eDefCounter.Rminus.Month1Tariff7,
                            EmeraRequest.DepthMonthCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff7);
                    }
                    #endregion
                    #region if (info.Ss.EnblCounterTariff8)
                    if (info.Ss.EnblCounterTariff8)
                    {
                        IO.ReadInc(
                            info,
                            TimeStep.Month.Round(info.NowTimeInZone) /*.AddMonths(-1)*/,
                            TypeQuery.Counter,
                            TypeInc.Month,
                            eDefCounter.Aplus.Month1Tariff8,
                            eDefCounter.Aminus.Month1Tariff8,
                            eDefCounter.Rplus.Month1Tariff8,
                            eDefCounter.Rminus.Month1Tariff8,
                            EmeraRequest.DepthMonthCounter,
                            requestParam.DeepSync,
                            ETariff.Tariff8);
                    }
                    #endregion
                }
                #endregion

                Log.Trace.Write(1, (l) => l.Info("Next session from {0} min", Math.Round((session.Result.Next - DateTimeUtc.Now).TotalMinutes), 1));
                return(session);
            }
        }