public new async Task Refresh()
        {
            CurrentPowerUsage = new PowerData(await ExecuteAsync("emeter", "get_realtime"), HardwareVersion);
            _gainData         = await ExecuteAsync("emeter", "get_vgain_igain");

            await base.Refresh();
        }
 public static PowerDataDto ToPowerDataDto(this PowerData pd)
 {
     return(new PowerDataDto
     {
         Id = pd.Key, Pbat = pd.Pbat, PmeterDc = pd.PmeterDc, PmeterL1 = pd.PmeterL1, PmeterL2 = pd.PmeterL2, PmeterL3 = pd.PmeterL3, Ppv1 = pd.Ppv1, Ppv2 = pd.Ppv2,
         PrealL1 = pd.PrealL1, PrealL2 = pd.PrealL2, PrealL3 = pd.PrealL3, Pva = pd.Sva, Sn = pd.Sn, UploadTime = pd.UploadTime, VarAC = pd.VarAC, VarDC = pd.VarDC
     });
 }
Beispiel #3
0
        /// <summary>
        /// Read realtime power data of specified plug index
        /// </summary>
        /// <param name="plugId">Plug index start from one</param>
        /// <returns>Power data</returns>
        public PowerData ReadRealtimePowerData(int plugId)
        {
            var pd = new PowerData(Execute("emeter", "get_realtime", childIdS: new List <string> {
                Plugs[plugId - 1].Id
            }));

            return(pd);
        }
        /// <summary>
        /// 解析功率数据
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public static List<PowerData> GetPowerData(MeterList data)
        {
            List<PowerData> powerDataList = new List<PowerData>();

            foreach (var item in data.Meters)
            {
                PowerData power = new PowerData();
                power.BuildID = data.BuildId;
                power.MeterCode = item.MeterId;
                power.Time = data.CollectTime;

                MeterParam p = item.MeterParams.Find(m => m.ParamName.ToLower() == "P".ToLower());
                MeterParam pa = item.MeterParams.Find(m => m.ParamName.ToLower() == "Pa".ToLower());
                MeterParam pb = item.MeterParams.Find(m => m.ParamName.ToLower() == "Pb".ToLower());
                MeterParam pc = item.MeterParams.Find(m => m.ParamName.ToLower() == "Pc".ToLower());

                MeterParam q = item.MeterParams.Find(m => m.ParamName.ToLower() == "Q".ToLower());
                MeterParam qa = item.MeterParams.Find(m => m.ParamName.ToLower() == "Qa".ToLower());
                MeterParam qb = item.MeterParams.Find(m => m.ParamName.ToLower() == "Qb".ToLower());
                MeterParam qc = item.MeterParams.Find(m => m.ParamName.ToLower() == "Qc".ToLower());

                MeterParam s = item.MeterParams.Find(m => m.ParamName.ToLower() == "S".ToLower());
                MeterParam sa = item.MeterParams.Find(m => m.ParamName.ToLower() == "Sa".ToLower());
                MeterParam sb = item.MeterParams.Find(m => m.ParamName.ToLower() == "Sb".ToLower());
                MeterParam sc = item.MeterParams.Find(m => m.ParamName.ToLower() == "Sc".ToLower());

                if (p != null)
                    power.P = p.ParamValue;
                if (pa != null)
                    power.Pa = pa.ParamValue;
                if (pb != null)
                    power.Pb = pb.ParamValue;
                if (pc != null)
                    power.Pc = pc.ParamValue;

                if (q != null)
                    power.Q = q.ParamValue;
                if (qa != null)
                    power.Qa = qa.ParamValue;
                if (qb != null)
                    power.Qb = qb.ParamValue;
                if (qc != null)
                    power.Qc = qc.ParamValue;

                if (s != null)
                    power.S = s.ParamValue;
                if (sa != null)
                    power.Sa = sa.ParamValue;
                if (sb != null)
                    power.Sb = sb.ParamValue;
                if (sc != null)
                    power.Sc = sc.ParamValue;

                powerDataList.Add(power);
            }

            return powerDataList;
        }
        public new async Task Refresh()
        {
            dynamic powerdata = await Execute("emeter", "get_realtime").ConfigureAwait(false);

            CurrentPowerUsage = new PowerData(powerdata, HardwareVersion);
            _gainData         = await Execute("emeter", "get_vgain_igain").ConfigureAwait(false);

            await base.Refresh().ConfigureAwait(false);
        }
Beispiel #6
0
    // Use this for initialization

    void Start()
    {
        //Debug.Log("ayyysdasd");
        listener = new UDPListener(12003, handleOSC);

        powerData = new PowerData();
        //filename = Application.dataPath + "/PowerLog/AlphaLog/"+ GameManager.instance.settings.subjectName+ "_" + DateTime.Now.ToFileTimeUtc() + ".csv";
        //Debug.Log(Application.dataPath);
        writeHeader();
    }
Beispiel #7
0
    public static void SavePower(PowerUI pow)
    {
        BinaryFormatter formatter = new BinaryFormatter();

        string     path   = Application.persistentDataPath + "/Power.dat";
        FileStream stream = new FileStream(path, FileMode.Create);

        PowerData data = new PowerData(pow);

        formatter.Serialize(stream, data);
        stream.Close();
    }
Beispiel #8
0
        private void Start()
        {
            powerData = FindObjects.GameLogic.GetComponent <PowerData>();

            if (!LoadedActorData)
            {
                powerDict = new Dictionary <PowerSlotTag, PowerTag>();
                foreach (PowerSlotTag slot in Enum.GetValues(typeof(PowerSlotTag)))
                {
                    powerDict.Add(slot, PowerTag.INVALID);
                }
            }
        }
Beispiel #9
0
    private void LoadPowerData()
    {
        string filePath = Path.Combine(Application.streamingAssetsPath, m_PowerSource);

        m_PowerTable = JsonUtility.FromJson <PowerTable>(File.ReadAllText(filePath));

        foreach (PowerData data in m_PowerTable.powertypes)
        {
            if (data.name == m_PowerType)
            {
                m_PowerData = data;
                break;
            }
        }
    }
Beispiel #10
0
        public void PowerDataProcesing(ref PowerData dataInstance, byte CMD, byte eventAdr = 0x00, byte _event = 0x00)
        {
            if (CMD == 0x30)
            {
                int    dataLength;
                int    _bytes;
                byte[] _dataBytes = { eventAdr, _event };
                powerDataresponsePaket = PowerClient.TCPrequest(BuildPacket(0x01, 0x11, 2, CMD, _dataBytes, out dataLength), dataLength, out _bytes);
                if (_bytes > 7)
                {
                    dataInstance.EM_1 = powerDataresponsePaket[6];
                    dataInstance.EM_2 = powerDataresponsePaket[7];
                    dataInstance.EM_3 = powerDataresponsePaket[8];
                    dataInstance.EM_4 = powerDataresponsePaket[9];
                }
            }

            if (CMD == 0x31)
            {
                int    dataLength;
                int    _bytes;
                byte[] _dataBytes = { eventAdr, _event };
                powerDataresponsePaket = PowerClient.TCPrequest(BuildPacket(0x01, 0x11, 0, CMD, _dataBytes, out dataLength), dataLength, out _bytes);
                if (_bytes > 7)
                {
                    dataInstance.EM_1 = powerDataresponsePaket[6];
                    dataInstance.EM_2 = powerDataresponsePaket[7];
                    dataInstance.EM_3 = powerDataresponsePaket[8];
                    dataInstance.EM_4 = powerDataresponsePaket[9];
                }
            }
            else if (CMD == 0x32)
            {
                byte[] _dataBytes = { eventAdr, _event };
                PowerClient.TCPrequest(BuildPacket(0x01, 0x11, 2, CMD, _dataBytes, out int dataLength), dataLength, out int _bytes);
            }
            else if (CMD == 0x33)
            {
                byte[] _dataBytes = { eventAdr, _event };
                powerDataresponsePaket  = PowerClient.TCPrequest(BuildPacket(0x01, 0x11, 2, CMD, _dataBytes, out int dataLength), dataLength, out int _bytes);
                dataInstance.SupplyType = powerDataresponsePaket[6];
            }
            else if (CMD == 0x35)
            {
                byte[] _dataBytes = { eventAdr, _event };
                powerDataresponsePaket = PowerClient.TCPrequest(BuildPacket(0x01, 0x11, 2, CMD, _dataBytes, out int dataLength), dataLength, out int _bytes);
            }
        }
        protected override void ReadValues()
        {
            byte[] retVoltage, retCurrent, retPower, retPowerIn;

            using (var localMutexLock = CorsairRootDevice.usbGlobalMutex.GetLock())
            {
                SetPage();
                retVoltage = ReadRegister(0x88, 2);
                if (psuDevice is LinkDevicePSUHX)
                {
                    retCurrent = null;
                    retPowerIn = null;
                }
                else
                {
                    retCurrent = ReadRegister(0x89, 2);
                    retPowerIn = ReadRegister(0x97, 2);
                }
                retPower = ReadRegister(0xEE, 2);
            }

            cachedVoltage = BitCodec.ToFloat(retVoltage);
            cachedPower   = BitCodec.ToFloat(retPower);
            if (retCurrent == null)
            {
                cachedCurrent = cachedPower / cachedVoltage;
            }
            else
            {
                cachedCurrent = BitCodec.ToFloat(retCurrent);
            }
            if (retPowerIn == null)
            {
                cachedPowerIn = 0;
            }
            else
            {
                cachedPowerIn = (BitCodec.ToFloat(retPowerIn) + (cachedCurrent * cachedVoltage)) / 2.0;
            }

            PowerData adjustedData = PowerCurves.Interpolate(new PowerData(cachedPowerIn, cachedPower), cachedVoltage, psuDevice);

            cachedEfficiency = adjustedData.efficiency;
            cachedPowerIn    = adjustedData.powerIn;
            cachedPower      = adjustedData.powerOut;
        }
        public IActionResult Power([FromBody] PowerData data)
        {
            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }

            data.ValidateAndThrow();

            var result = Math.Pow(data.Operand1, data.Operand2);

            _logger.LogInformation($"{data.Operand1} ^ {data.Operand2} = {result}");

            return(Ok(new DataModel()
            {
                Result = result
            }));
        }
Beispiel #13
0
        private PaginatedList <PowerData> GetLastPowerDataBySn(string api_Account, long timeStamp, string sign, string sn, int pIndex, int pSize, out int totalCount)
        {
            IList <PowerData> result = new List <PowerData>();

            PowerData cd = _powerRepository.GetAll().Where(x => x.Sn == sn).OrderByDescending(x => x.UploadTime).FirstOrDefault();

            if (cd != null)
            {
                result.Add(cd);
                totalCount = result.Count;
                return(new PaginatedList <PowerData>(pIndex, pSize, result.AsQueryable()));
            }
            else
            {
                totalCount = 0;
                return(new PaginatedList <PowerData>(pIndex, pSize, null));
            }
        }
Beispiel #14
0
    public static PowerData LoadPower()
    {
        string path = Application.persistentDataPath + "/Power.dat";

        if (File.Exists(path))
        {
            BinaryFormatter formatter = new BinaryFormatter();
            FileStream      stream    = new FileStream(path, FileMode.Open);

            PowerData data = formatter.Deserialize(stream) as PowerData;
            stream.Close();

            return(data);
        }
        else
        {
            Debug.LogError("Save File Not Found in " + path);
            return(null);
        }
    }
Beispiel #15
0
    public void LoadData()
    {
        string path = Application.persistentDataPath + "/Power.dat";

        if (File.Exists(path))
        {
            PowerData data = SaveSystem.LoadPower();

            for (int i = 0; i < power.Length; i++)
            {
                for (int k = 0; k < data.P.Count; k++)
                {
                    if (power[i].id == data.P[k].id)
                    {
                        power[i].amount = data.P[k].number;
                    }
                }
            }
        }
    }
 public PowerViewModel()
 {
     _dataStorage = new PowerData();
 }
Beispiel #17
0
        //HERE are my sources for this
        //https://books.google.com/books?id=_2brYQqb_RYC&pg=PA26&lpg=PA26&dq=average+watts/m%5E2+surface+peak&source=bl&ots=ImzfwuObq1&sig=oWaRpcitRVbF5M0YApRiLwb-qoA&hl=en&sa=X&ved=0ahUKEwi41IKkxLPaAhUBWK0KHXLbB3EQ6AEIiQEwBw#v=onepage&q=average%20watts%2Fm%5E2%20surface%20peak&f=false
        //https://solarpowerrocks.com/solar-basics/how-do-solar-panels-work-in-cloudy-weather/


        /*
         * Assumptions:
         * 1kw/m^2 during sunlight
         * 25% efficiency during cloudy day
         * 100% efficiency during sunny day
         *
         * panel is 15% efficient at converting power
         *
         * full power during daylight
         *
         * */
        public static PowerData MakePredictionAndGetAngles(string weather)
        {
            const double wattsPerM2           = 1000;
            const double coefficientForClouds = 0.25;
            const double panelAreaInM2        = 0.0687;
            const double panelEfficiency      = 0.15;

            //Get the minutes of the day that are avaiulable
            ExcelPackage   package = new ExcelPackage(new System.IO.FileInfo("wwwroot/xls/NOAA_Solar_Calculations_day.xlsx"));
            ExcelWorksheet sheet   = package.Workbook.Worksheets[1];
            var            start   = sheet.Dimension.Start;
            var            end     = sheet.Dimension.End;
            //double solarMinutes = Convert.ToDouble(sheet.Cells[27, 2].Text);
            //DateTime sunrise = Convert.ToDateTime(sheet.Cells[25, 2].Text);
            //DateTime sunset = Convert.ToDateTime(sheet.Cells[26, 2].Text);
            double    solarMinutes;
            PowerData data = new PowerData();

            //Now get all teh angle data
            List <DateTime> TimeFractions = new List <DateTime>();
            List <double>   AngleH        = new List <double>();
            List <double>   AngleA        = new List <double>();

            //Also get the coordinates
            var lat = Convert.ToDouble(sheet.Cells[3, 2].Text);
            var lng = Convert.ToDouble(sheet.Cells[4, 2].Text);
            int row = start.Row;

            //Get sunrise and sunset
            double sunrise = Convert.ToDouble(sheet.Cells[2, 25].Text);
            double sunset  = Convert.ToDouble(sheet.Cells[2, 26].Text);

            solarMinutes = (sunset - sunrise) * 24 * 60;

            //Skip headers
            row++;
            //Parse rows one by one
            while (row < end.Row)
            {
                if (row < 180 && row > 90)
                {
                    //Add the thing from this row to each
                    TimeFractions.Add(Convert.ToDateTime(sheet.Cells[row, 5].Text));
                    AngleH.Add(Convert.ToDouble(sheet.Cells[row, 33].Text));
                    AngleA.Add(Convert.ToDouble(sheet.Cells[row, 34].Text));
                }
                //increment row
                row++;
            }

            //Closes package
            package.Dispose();


            //Now get the weather
            OpenWeatherMap.OpenWeatherMapClient client = new OpenWeatherMap.OpenWeatherMapClient("933839ed82ba0ad5f89513a943b6f71c");
            OpenWeatherMap.Coordinates          coord  = new OpenWeatherMap.Coordinates();
            coord.Latitude  = lat;
            coord.Longitude = lng;

            //This is lowkey a little bit dangerous
            var currentWeather = client.CurrentWeather.GetByCoordinates(coord).Result;


            double cloudyNess = currentWeather.Clouds.Value;

            data.City           = currentWeather.City.Name;
            data.UrlForIcon     = "http://openweathermap.org/img/w/" + currentWeather.Weather.Icon + ".png";
            data.CurrentWeather = currentWeather.Weather.Value;

            //Make the predictions
            if (cloudyNess < 50)
            {
                data.DailyPower   = wattsPerM2 * panelAreaInM2 * panelEfficiency * (solarMinutes / 60.0) * ((100 - cloudyNess) / 100);
                data.CurrentPower = wattsPerM2 * panelAreaInM2 * panelEfficiency;
            }
            else
            {
                data.DailyPower   = wattsPerM2 * panelAreaInM2 * panelEfficiency * solarMinutes / 60.0;
                data.CurrentPower = wattsPerM2 * panelAreaInM2 * panelEfficiency;
            }

            data.Times = TimeFractions;
            //Process 3d angles
            if (cloudyNess < 50)
            {
                data.AngleA = AngleA;
                data.AngleH = AngleH;
            }
            else
            {
                data.AngleH = new List <double>();
                data.AngleA = new List <double>();
                foreach (var t in data.Times)
                {
                    data.AngleA.Add(0);
                    data.AngleH.Add(0);
                }
            }

            data.X = new List <double>();
            data.Y = new List <double>();
            data.Z = new List <double>();

            foreach (var angle in AngleA)
            {
                data.X.Add(5 * Math.Sin(angle));
                data.Z.Add(5 * Math.Cos(angle));
            }

            foreach (var angle in AngleH)
            {
                data.Y.Add(5 * Math.Tan(angle));
            }
            data.countAngs  = data.Y.Count;
            data.HoursOfSun = (int)solarMinutes / 60;
            return(data);
        }
Beispiel #18
0
//        [Route("ProjectPowerController/PersonAuthorise")]
        //[WriteLog(EComLib_ActionEnum.用户授权)]
        public async Task <IActionResult> PersonAuthorise(PowerData powerData)
        {
            throw new  NotImplementedException();
        }