Exemplo n.º 1
0
        public async Task MinerStatsCheck()
        {
            var currentProfit = 0.0d;

            _mainFormRatesComunication.ClearRates(_runningGroupMiners.Count);
            var checks = new List <GroupMiner>(_runningGroupMiners.Values);

            try
            {
                foreach (var groupMiners in checks)
                {
                    var m = groupMiners.Miner;

                    // skip if not running or if await already in progress
                    if (!m.IsRunning || m.IsUpdatingApi)
                    {
                        continue;
                    }

                    m.IsUpdatingApi = true;
                    var ad = await m.GetSummaryAsync();

                    m.IsUpdatingApi = false;
                    if (ad == null)
                    {
                        Helpers.ConsolePrint(m.MinerTag(), "GetSummary returned null..");
                    }

                    // set rates
                    if (ad != null && NHSmaData.TryGetPaying(ad.AlgorithmID, out var paying))
                    {
                        groupMiners.CurrentRate = paying * ad.Speed * 0.000000001;
                        if (NHSmaData.TryGetPaying(ad.SecondaryAlgorithmID, out var secPaying))
                        {
                            groupMiners.CurrentRate += secPaying * ad.SecondarySpeed * 0.000000001;
                        }
                        // Deduct power costs
                        var powerUsage = ad.PowerUsage > 0 ? ad.PowerUsage : groupMiners.TotalPower;
                        groupMiners.CurrentRate -= ExchangeRateApi.GetKwhPriceInBtc() * powerUsage * 24 / 1000;
                        groupMiners.PowerRate    = ExchangeRateApi.GetKwhPriceInBtc() * powerUsage * 24 / 1000;
                    }
                    else
                    {
                        groupMiners.CurrentRate = 0;
                        // set empty
                        ad = new ApiData(groupMiners.AlgorithmType);
                    }

                    currentProfit += groupMiners.CurrentRate;
                    // Update GUI
                    _mainFormRatesComunication.AddRateInfo(m.MinerTag(), groupMiners.DevicesInfoString, ad,
                                                           groupMiners.CurrentRate, groupMiners.PowerRate,
                                                           m.IsApiReadException);
                }
            }
            catch (Exception e) { Helpers.ConsolePrint(Tag, e.Message); }
        }
Exemplo n.º 2
0
        public void MinerStatsCheck(Dictionary <AlgorithmType, NiceHashSMA> NiceHashData)
        {
            double CurrentProfit = 0.0d;

            _mainFormRatesComunication.ClearRates(_runningGroupMiners.Count);
            foreach (var groupMiners in _runningGroupMiners.Values)
            {
                Miner m = groupMiners.Miner;

                // skip if not running
                if (!m.IsRunning)
                {
                    continue;
                }

                APIData AD = m.GetSummary();
                if (AD == null)
                {
                    Helpers.ConsolePrint(m.MinerTAG(), "GetSummary returned null..");
                }
                // set rates
                if (NiceHashData != null && AD != null)
                {
                    groupMiners.CurrentRate = NiceHashData[AD.AlgorithmID].paying * AD.Speed * 0.000000001;
                }
                else
                {
                    groupMiners.CurrentRate = 0;
                    // set empty
                    AD = new APIData(groupMiners.AlgorithmType);
                }
                CurrentProfit += groupMiners.CurrentRate;
                // Update GUI
                _mainFormRatesComunication.AddRateInfo(m.MinerTAG(), groupMiners.DevicesInfoString, AD, groupMiners.CurrentRate, m.IsAPIReadException);
            }
            // check if profitabile
            if (CheckStatus && !IsMiningRegardlesOfProfit)
            {
                CheckStatus = false;
                if (IsProfitable)
                {
                    // check current profit
                    CheckIfShouldMine(CurrentProfit, true);
                }
                else if (!IsProfitable)
                {
                    // recalculate and switch
                    SwichMostProfitableGroupUpMethod(NiceHashData, true);
                }
            }
        }
Exemplo n.º 3
0
        public async Task MinerStatsCheck(Dictionary <AlgorithmType, NiceHashSma> niceHashData)
        {
            var currentProfit = 0.0d;

            _mainFormRatesComunication.ClearRates(_runningGroupMiners.Count);
            var checks = new List <GroupMiner>(_runningGroupMiners.Values);

            try
            {
                foreach (var groupMiners in checks)
                {
                    var m = groupMiners.Miner;

                    // skip if not running or if await already in progress
                    if (!m.IsRunning || m.IsUpdatingApi)
                    {
                        continue;
                    }

                    m.IsUpdatingApi = true;
                    var ad = await m.GetSummaryAsync();

                    m.IsUpdatingApi = false;
                    if (ad == null)
                    {
                        Helpers.ConsolePrint(m.MinerTag(), "GetSummary returned null..");
                    }
                    // set rates
                    if (niceHashData != null && ad != null)
                    {
                        groupMiners.CurrentRate = niceHashData[ad.AlgorithmID].paying * ad.Speed * 0.000000001;
                        if (niceHashData.ContainsKey(ad.SecondaryAlgorithmID))
                        {
                            groupMiners.CurrentRate += niceHashData[ad.SecondaryAlgorithmID].paying * ad.SecondarySpeed * 0.000000001;
                        }
                    }
                    else
                    {
                        groupMiners.CurrentRate = 0;
                        // set empty
                        ad = new ApiData(groupMiners.AlgorithmType);
                    }
                    currentProfit += groupMiners.CurrentRate;
                    // Update GUI
                    _mainFormRatesComunication.AddRateInfo(m.MinerTag(), groupMiners.DevicesInfoString, ad, groupMiners.CurrentRate,
                                                           m.IsApiReadException);
                }
            }
            catch (Exception e) { Helpers.ConsolePrint(Tag, e.Message); }
        }
Exemplo n.º 4
0
        public async Task MinerStatsCheck(Dictionary <AlgorithmType, NiceHashSMA> NiceHashData)
        {
            double CurrentProfit = 0.0d;

            _mainFormRatesComunication.ClearRates(_runningGroupMiners.Count);
            var checks = new List <GroupMiner>(_runningGroupMiners.Values);

            try
            {
                foreach (var groupMiners in checks)
                {
                    Miner m = groupMiners.Miner;

                    // skip if not running or if await already in progress
                    if (!m.IsRunning || m.IsUpdatingAPI)
                    {
                        continue;
                    }

                    m.IsUpdatingAPI = true;
                    APIData AD = await m.GetSummaryAsync();

                    m.IsUpdatingAPI = false;
                    if (AD == null)
                    {
                        Helpers.ConsolePrint(m.MinerTAG(), "GetSummary returned null..");
                    }
                    // set rates
                    if (NiceHashData != null && AD != null)
                    {
                        groupMiners.CurrentRate = NiceHashData[AD.AlgorithmID].paying * AD.Speed * 0.000000001;
                        if (NiceHashData.ContainsKey(AD.SecondaryAlgorithmID))
                        {
                            groupMiners.CurrentRate += NiceHashData[AD.SecondaryAlgorithmID].paying * AD.SecondarySpeed * 0.000000001;
                        }
                    }
                    else
                    {
                        groupMiners.CurrentRate = 0;
                        // set empty
                        AD = new APIData(groupMiners.AlgorithmType);
                    }
                    CurrentProfit += groupMiners.CurrentRate;
                    // Update GUI
                    _mainFormRatesComunication.AddRateInfo(m.MinerTAG(), groupMiners.DevicesInfoString, AD, groupMiners.CurrentRate, m.IsAPIReadException);
                }
            }
            catch (Exception e) { Helpers.ConsolePrint(TAG, e.Message); }
        }
Exemplo n.º 5
0
        public void MinerStatsCheck(Dictionary <AlgorithmType, NiceHashSMA> NiceHashData)
        {
            double CurrentProfit = 0.0d;

            _mainFormRatesComunication.ClearRates(_runningGroupMiners.Count);
            List <String> devNames = new List <String>();

            foreach (var MD in _miningDevices)
            {
                devNames.Add(MD.Device.NameCount.ToString() + ' ' + MD.Device.Name);
            }
            foreach (var groupMiners in _runningGroupMiners.Values)
            {
                Miner m = groupMiners.Miner;

                // skip if not running
                if (!m.IsRunning)
                {
                    continue;
                }

                APIData AD = m.GetSummary();
                if (AD == null)
                {
                    Helpers.ConsolePrint(m.MinerTAG(), "GetSummary returned null..");
                }
                // set rates
                if (NiceHashData != null && AD != null)
                {
                    groupMiners.CurrentRate = NiceHashData[AD.AlgorithmID].paying * AD.Speed * 0.000000001;
                    if (NiceHashData.ContainsKey(AD.SecondaryAlgorithmID))
                    {
                        groupMiners.CurrentRate += NiceHashData[AD.SecondaryAlgorithmID].paying * AD.SecondarySpeed * 0.000000001;
                    }
                }
                else
                {
                    groupMiners.CurrentRate = 0;
                    // set empty
                    AD = new APIData(groupMiners.AlgorithmType);
                }
                CurrentProfit += groupMiners.CurrentRate;
                // Update GUI
                _mainFormRatesComunication.AddRateInfo(m.MinerTAG(), groupMiners.DevicesInfoString, AD, groupMiners.CurrentRate, devNames, m.IsAPIReadException);
            }
        }
Exemplo n.º 6
0
        public void MinerStatsCheck(Dictionary <AlgorithmType, NiceHashSMA> NiceHashData)
        {
            _mainFormRatesComunication.ClearRates(_currentAllGroupedDevices.Count);
            foreach (var group in _currentAllGroupedDevices)
            {
                var   groupMiners = _groupedDevicesMiners[CalcGroupedDevicesKey(group)];
                Miner m           = groupMiners.CurrentWorkingMiner;

                // skip if not running
                if (!m.IsRunning)
                {
                    continue;
                }

                APIData AD = m.GetSummary();
                if (AD == null)
                {
                    Helpers.ConsolePrint(m.MinerTAG(), "GetSummary returned null..");
                }
                // set rates
                if (NiceHashData != null && AD != null)
                {
                    m.CurrentRate = NiceHashData[AD.AlgorithmID].paying * AD.Speed * 0.000000001;
                }
                else
                {
                    m.CurrentRate = 0;
                    // set empty
                    AD = new APIData()
                    {
                        AlgorithmID   = m.CurrentAlgorithmType,
                        AlgorithmName = AlgorithmNiceHashNames.GetName(m.CurrentAlgorithmType),
                        Speed         = 0.0d
                    };
                }

                // Update GUI
                _mainFormRatesComunication.AddRateInfo(m.MinerTAG(), groupMiners.DevicesInfoString, AD, m.CurrentRate, m.IsAPIReadException);
            }
        }