Pages:
Author

Topic: [ANN] Miner Control 1.6.1 - Auto profit switching miner controller - page 54. (Read 164304 times)

sr. member
Activity: 401
Merit: 250
Let me add a little bit to what Travis9x said.

"power" and "exchange" are currently only used to calculate the cost of mining for next profitability purposes.  The power consumption per algorithm for a machine can be looked at two different ways.  If your machine is a dedicated mining rig then the total power consumption of the machine should be considered.  This can probably best be found with a wall monitor or possibly with a UPS that has built in monitoring.  If your machine is normally used for other activities, and always left on, then you should only consider the difference in power consumption between machine idle and when mining an algorithm.  In this scenario the power when idle is a sunk cost as you would be burning that anyway and all you really care about is the added cost of mining.  As was said, if your power is free then just use 0 for power cost and then the exchange rate doesn't matter as anything multiplied by zero will still be zero.

As for automating the exchange rate, I actually did start looking into that recently and found a couple of exchanges with fairly comprehensive lists of fiat currency to Bitcoin exchange rates available via an API.  It is on my wish list to add to the program after I get the donation mining coded up.  Most likely implementation will be to have a new configuration value, called "currencycode", which gets the three letter currency code such as "USD" or "EUR".  On an occasional basis (perhaps once every 10 minutes) I'll call out to the two exchanges with the currency conversion api to get their rates for the currency code.  If one returns I'll use it, if both return I'll use an average, if none returns when I'll fall back to the manual rate entered or "0" if that has not been entered.

Once we have real exchange rates I'll probably add another column to the services column with the by service balance given in fiat currency so people will see how much they've earned in non digital money.

As for an update on open sourcing the program, I'm making progress in getting familiar with git and GitHub.  I'm leaning towards having the main branch wit releases published out there and keeping the development branch while I'm adding features local.  I still need to figure out how third parties submit code changes while I keep control of the commits.  I see it is there, just haven't played with it yet.  Once I do get the source code out there maybe someone else will have better luck finding the crash bug that a few people have reported.  I have never been able to reproduce it which makes it really hard to find since nobody out there has been able to capture a good error message from their event logs so far.
full member
Activity: 170
Merit: 100
Do any of these factor into the payout?

Legend:
general - General configuration parameters
power - Rate per KW/hour in your currency units [My power is free, so do I put .00?]
exchange - Bitcoin price in your currency units for calculating power cost in Bitcoin [Can't this be parsed somehow from the latest exchange prices and not hard coded to a config file?]

algorithms - List of supported algorithms
power - Watts your GPU pulls when mining an algorithm [I run 8 GPUs, do I put the watts for 1 GPU? The combined estimated watts for all 8 of the GPUs? OR the combined watts for the entire PC from the wall?]
First off, only the pools you mine in do any factoring of your payouts.  Miner Control only uses the APIs from the pools, plus some info from you regarding your mining hardware, to calculate an estimated profitability for each algorithm/pool.  None of the parameters in the config file have any direct effect on the payouts received from any pools, they only help the tool to accurately pick which pool/algo to mine.

"General" is a title, a heading.  It's only used for organizing the config file to make it easier for humans to read (and presumably, any aliens capable of reading English  Grin).

If your electricity is free, then yes you can put 0 for power cost.  (where are you, that you get free electricity??)

I've often wondered about the exchange data, as well.  I suppose it could be pulled from a few different exchanges (almost all of them offer APIs for this kind of thing), and the values averaged together to come up with a general BTC value.  We would probably only need to put in what fiat currency we use, so it knows what data to read.  I'm sure StuffOfInterest could look into this when he's finished with more important things (or I could, once he opens the code to the public, and if he lets me help with coding  Wink)

Algorithms - not sure what help you need here?

Power - this is the power usage of all GPUs you're going to be using for mining.  You enter the total wattage, so yes you could enter the total amount being pulled by your entire rig, or just the total of all the GPUs added up.  Doesn't really make a difference either way, but if you want to know your true profit compared to power costs, then I would enter the amount your rig pulls from the wall.  
  …of course, in your case, you could be burning through 1.21 jigawatts and it wouldn't matter since your electricity is free!   Tongue  lol
member
Activity: 77
Merit: 10
Do any of these factor into the payout?

Legend:
general - General configuration parameters
power - Rate per KW/hour in your currency units [My power is free, so do I put .00?]
exchange - Bitcoin price in your currency units for calculating power cost in Bitcoin [Can't this be parsed somehow from the latest exchange prices and not hard coded to a config file?]

algorithms - List of supported algorithms
power - Watts your GPU pulls when mining an algorithm [I run 8 GPUs, do I put the watts for 1 GPU? The combined estimated watts for all 8 of the GPUs? OR the combined watts for the entire PC from the wall?]

full member
Activity: 170
Merit: 100
How's the work coming along for WafflePool??

Waiting for them to produce a realtime API.

Ok. Hopefully they will soon Smiley

By the way, I see you use 0.90 as weight in your .conf file. Why would one not trust the reported price of the pool?

If I don't want to put any weight, I simply use 1 as value, right?
He weights NiceHash slightly lower, since both NiceHash and WestHash provide exactly the same payout, and he is geographically closer to WestHash (thus the tiny weight difference will usually only make NiceHash reported profitability slightly less than WestHash, but not affect the value of WestHash against any other mining pools).  I use a weight of 0.99 on NiceHash for the same reason.
And yes, you can just put 1 for no weight, or remove that line entirely.

Also. I have noticed that since I have been using MinerControl, Nicehash seems to be reporting less hash power than when I used ccminer alone. Any ideas why?

Here are the stats. https://nicehash.com/?p=miners&a=4&d=7&addr=1F1DChiJvjyZymecjFY4JwTjrbkaeVZNKj
Notice the right side of the graph. Average hash is lower than all the left part where all the hash is more compact and miner was not constantly switching from one algo to the other.
It's probably because your miners are switching to other pools some of the time, so your total hashrate for NiceHash per hour is lower.  Just my guess.

Finally, what is the purpose of providing the hashrate, power and exchange values? Are they only used as visual reference in the GUI or are they used to calculate something?

Sorry if all these questions sound dumb but I'd rather ask than remain ignorant!
They are used to calculate the profitability of each algorithm/pool, yes.  The "Net" column indicates this.  (ie, hashrate x price = earn, and earn - fees - power = net…not precisely how the calculations work, but it should help you get the general idea)  This is how the tool knows which algorithm/pool to mine, by judging which is most profitable from these numbers (the one with the highest Net).
full member
Activity: 266
Merit: 100
How's the work coming along for WafflePool??

Waiting for them to produce a realtime API.

Ok. Hopefully they will soon Smiley

By the way, I see you use 0.90 as weight in your .conf file. Why would one not trust the reported price of the pool?

If I don't want to put any weight, I simply use 1 as value, right?

Also. I have noticed that since I have been using MinerControl, Nicehash seems to be reporting less hash power than when I used ccminer alone. Any ideas why?

Here are the stats. https://nicehash.com/?p=miners&a=4&d=7&addr=1F1DChiJvjyZymecjFY4JwTjrbkaeVZNKj
Notice the right side of the graph. Average hash is lower than all the left part where all the hash is more compact and miner was not constantly switching from one algo to the other.
Here is my .conf file as well:

Code:
{
    "general": {
        "power": 0.17,
        "exchange": 404,
        "mintime": 4,
        "maxtime": 0,
        "switchtime": 3,
        "deadtime": 10,
        "logerrors": true,
        "gridsortmode": 1,
        "minerkillmode": 1
    },
    "algorithms": [
        { "name": "x11", "hashrate": 15951, "power": 60 },
        { "name": "x13", "hashrate": 12600, "power": 60 },
        { "name": "x15", "hashrate": 9400, "power": 60 },
        { "name": "nist5", "hashrate": 48338, "power": 60 }
    ],
    "nicehash": {
        "account": "1F1DChiJvjyZymecjFY4JwTjrbkaeVZNKj",
        "worker": "1",
        "weight": 0.90,
"param1": "-R 15 -a",
"param2": "stratum+tcp://stratum.nicehash.com",
        "algos": [
            { "algo": "x11", "folder": "C:\\Users\\pl\\Desktop\\ccminer-1.2-x15-windows\\x86", "command": "ccminer.exe", "arguments": "_PARAM1_ x11 -o _PARAM2_:3336 -u _ACCOUNT_._WORKER_ -p d=0.16" },
            { "algo": "x13", "folder": "C:\\Users\\pl\\Desktop\\ccminer-1.2-x15-windows\\x86", "command": "ccminer.exe", "arguments": "_PARAM1_ x13 -o _PARAM2_:3337 -u _ACCOUNT_._WORKER_ -p d=0.16" },
            { "algo": "x15", "folder": "C:\\Users\\pl\\Desktop\\ccminer-1.2-x15-windows\\x86", "command": "ccminer.exe", "arguments": "_PARAM1_ x15 -o _PARAM2_:3339 -u _ACCOUNT_._WORKER_ -p d=0.16" },
            { "algo": "nist5", "folder": "C:\\Users\\pl\\Desktop\\ccminer-1.2-x15-windows\\x86", "command": "ccminer.exe", "arguments": "_PARAM1_ nist5 -o _PARAM2_:3340 -u _ACCOUNT_._WORKER_ -p d=0.16" }
        ]
    }
}

Any recommendation would be appreciated.

Finally, what is the purpose of providing the hashrate, power and exchange values? Are they only used as visual reference in the GUI or are they used to calculate something?

Sorry if all these questions sound dumb but I'd rather ask than remain ignorant!
full member
Activity: 170
Merit: 100
there is nothing else in error.log, only those two errors/lines. With 1.1.1 version i had same problem, error.log is 66kb big (was in use for ~4 days) and again with same errors like 1.1.2 + two lines with this:

27.09.2014 16:40:06
----------------------------------------------
Type: InvalidOperationException
Message: Process has exited, so the requested information is not available.
Stack trace:    at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.get_MainWindowHandle()
   at MinerControl.MiningEngine.StartMiner(PriceEntryBase entry, Boolean isMinimizedToTray)
He means your Windows Event logs, not the MinerControl error log.  As he explained, if the program crashes then it won't be able to write anything to the error log before it dies, but Windows may have logged something from the crash.
To check your Windows Event logs, find My Computer, or just "Computer" (either on the Desktop, or in your Start Menu) and right-click it.  Select "Manage" (you must be an Administrator to do this).  In the left-hand tree, click on Event Viewer.  Give it a moment to read the logs (can take anywhere from a couple seconds to a full minute depending on your drive speed and how long the logfile is).  The logs are sorted by type, and marked by how long ago they occurred, so depending on how long ago MinerControl crashed, I would suggest looking through the logs in "Error" and "Warning" (most likely Error), for the last hour if it crashed recently, and 24 hours if you're not sure (but you are sure it happened within the last day).  Look for anything having to do with MinerControl.exe

Hope this helps
sr. member
Activity: 401
Merit: 250
Please try to open this in a web browser:
Code:
https://pool.trademybit.com/api/balance?key=XYZ
Replace XYZ with your api key.  If your key is in correctly then the only thing it could be is a missing piece of information in the return so I need to see a sample of that returned data.

Thanks.

thanks for the input in all this but i have a update to the new 1.1.2 and same problem. I have tested the api and pulls all the data

As I asked before, please send me a sample of the output from the API call above.  I need to see how the data is structured to understand how it is different from what I'm expecting.
sr. member
Activity: 401
Merit: 250
How's the work coming along for WafflePool??

Waiting for them to produce a realtime API.
newbie
Activity: 29
Merit: 0
Please try to open this in a web browser:
Code:
https://pool.trademybit.com/api/balance?key=XYZ
Replace XYZ with your api key.  If your key is in correctly then the only thing it could be is a missing piece of information in the return so I need to see a sample of that returned data.

Thanks.

thanks for the input in all this but i have a update to the new 1.1.2 and same problem. I have tested the api and pulls all the data
full member
Activity: 266
Merit: 100
How's the work coming along for WafflePool??
jr. member
Activity: 212
Merit: 6
there is nothing else in error.log, only those two errors/lines. With 1.1.1 version i had same problem, error.log is 66kb big (was in use for ~4 days) and again with same errors like 1.1.2 + two lines with this:

27.09.2014 16:40:06
----------------------------------------------
Type: InvalidOperationException
Message: Process has exited, so the requested information is not available.
Stack trace:    at System.Diagnostics.Process.EnsureState(State state)
   at System.Diagnostics.Process.get_MainWindowHandle()
   at MinerControl.MiningEngine.StartMiner(PriceEntryBase entry, Boolean isMinimizedToTray)
sr. member
Activity: 401
Merit: 250
1.1.2 closed again without any error messages, here is what was in error.log:

30.09.2014 12:31:07
----------------------------------------------
Type: TargetInvocationException
Message: An exception occurred during the operation, making the result invalid.  Check InnerException for exception details.
Stack trace:    at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   at System.Net.DownloadStringCompletedEventArgs.get_Result()
   at MinerControl.Services.TradeMyBitService.DownloadStringBalanceCompleted(Object sender, DownloadStringCompletedEventArgs e)

30.09.2014 12:31:07
----------------------------------------------
Type: WebException
Message: The remote server returned an error: (524) Origin Time-out.
Stack trace:    at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)

all versions i tried starting from 1.0.0 had same problem with autoclosing (different errors in error.log) without error messages and i have to check everyday few times that it is still running.

feature request:

do mine only when "Net" is on + side and not -, or even better to make possible to specify to mine only when "Net" is for example 0,000500 and not less, if less then wait when it is 0,000500 or more.
I hope you understand what i mean, otherwise very good program, thanks!

Unfortunately, the error log file won't catch the exceptions which take the program down.  I've made several attempts to wire the error logger in low enough with no success.  The last error you see in the log has nothing to do with what caused the crash.  In your example above this was just the TradeMyBit balance API call timing out, which happens from time to time.  You may have something in your windows event log relating to the crash.  If you see something there and can put it here that would be a big help.

Regarding the minimum net to mine, I think this is a good idea.  I used to have it set to only mine for positive net values but I removed that a while back since there was usually some algo with a positive net (at least for me).  I think what may work better is to have a configurable parameter for the minimum net so that if nothing is above that threshold then the miner will pause until something rises up high enough again.  I'll add that to the wish list.
jr. member
Activity: 212
Merit: 6
1.1.2 closed again without any error messages, here is what was in error.log:

30.09.2014 12:31:07
----------------------------------------------
Type: TargetInvocationException
Message: An exception occurred during the operation, making the result invalid.  Check InnerException for exception details.
Stack trace:    at System.ComponentModel.AsyncCompletedEventArgs.RaiseExceptionIfNecessary()
   at System.Net.DownloadStringCompletedEventArgs.get_Result()
   at MinerControl.Services.TradeMyBitService.DownloadStringBalanceCompleted(Object sender, DownloadStringCompletedEventArgs e)

30.09.2014 12:31:07
----------------------------------------------
Type: WebException
Message: The remote server returned an error: (524) Origin Time-out.
Stack trace:    at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
   at System.Net.WebClient.GetWebResponse(WebRequest request, IAsyncResult result)
   at System.Net.WebClient.DownloadBitsResponseCallback(IAsyncResult result)

all versions i tried starting from 1.0.0 had same problem with autoclosing (different errors in error.log) without error messages and i have to check everyday few times that it is still running.

feature request:

do mine only when "Net" is on + side and not -, or even better to make possible to specify to mine only when "Net" is for example 0,000500 and not less, if less then wait when it is 0,000500 or more.
I hope you understand what i mean, otherwise very good program, thanks!
full member
Activity: 170
Merit: 100
A user wouldn't have to change the code to remove donation mining, just set the donation percentage to "0".

The process will be transparent and configurable by the user.  Here is how I plan to implement it.

There will be two configuration parameters, "donationpercentage" and "donationfrequency".  The percentage will default to "2" and the frequency will default to "240".  While in auto mode, at the end of each frequency of minutes, the miner will stop and restart mining against the donation address and continue for the percentage of that frequency of time.  With the defaults, it means that after 3 hours, 55.2 minutes of auto mining it will mine against the donation address on whatever is paying best for 4.8 minutes and then switch back to the user's address.

The code messiness will come from the time accounting side to make sure I only mine in donation mode at the set intervals for the set amount of time.

Does the program remember the total time, or does it reset whenever you hit the stop button. I, when I use the rig, often have to stop and start the program again due to fluctuations in need. If the counter resets, it would cause the donation time to be postponed again and again.

Nothing has been coded yet but my intention is to use a separate time tracker for mining time in auto mode since last donation round.  If you hit the stop button and later the auto button again the value will be preserved.  If you exit, you loose the value.  If someone was in a scenario where they need to exit or reboot more often and they still want to do donation mining then they could set a lower frequency time.  This would just cause shorter donation mining sessions.

There is another feature I've thought about adding in which sounds like something your usage model would benefit from.  If I can come up with a good way to detect when the screen saver is active, it would be possible to have MinerControl only start the miner when the screen saver is on and kill the miner as soon as the screen saver goes off.  I need to research that one some more.
I'm not sure if this will work, but it could be a way of getting Miner Control to "remember" how much time has passed since the last round of donation mining.  Perhaps allow it to save a small text file, containing the amount of time auto-mining elapsed, since the last round of donation mining completed.  It could read this file upon startup, to continue the timer where it left off, and rewrite it upon stop/exit.  If it was in the middle of donation mining upon stop/exit, then it could store a separate "clock" for that as well, so it would know to just start with donation mining, and finish out the last round.
Of course it wouldn't write or use this file at all, if donation mining is set to 0.   Tongue

EDIT:  May also want to include some kind of "catch" for this feature, in case the application did not stop/exit gracefully last time.  IE, just ignore the text file, and restart the timer.
legendary
Activity: 882
Merit: 1000
tnks! good job!
work in progress Wink
sr. member
Activity: 401
Merit: 250
A user wouldn't have to change the code to remove donation mining, just set the donation percentage to "0".

The process will be transparent and configurable by the user.  Here is how I plan to implement it.

There will be two configuration parameters, "donationpercentage" and "donationfrequency".  The percentage will default to "2" and the frequency will default to "240".  While in auto mode, at the end of each frequency of minutes, the miner will stop and restart mining against the donation address and continue for the percentage of that frequency of time.  With the defaults, it means that after 3 hours, 55.2 minutes of auto mining it will mine against the donation address on whatever is paying best for 4.8 minutes and then switch back to the user's address.

The code messiness will come from the time accounting side to make sure I only mine in donation mode at the set intervals for the set amount of time.

Does the program remember the total time, or does it reset whenever you hit the stop button. I, when I use the rig, often have to stop and start the program again due to fluctuations in need. If the counter resets, it would cause the donation time to be postponed again and again.

Nothing has been coded yet but my intention is to use a separate time tracker for mining time in auto mode since last donation round.  If you hit the stop button and later the auto button again the value will be preserved.  If you exit, you loose the value.  If someone was in a scenario where they need to exit or reboot more often and they still want to do donation mining then they could set a lower frequency time.  This would just cause shorter donation mining sessions.

There is another feature I've thought about adding in which sounds like something your usage model would benefit from.  If I can come up with a good way to detect when the screen saver is active, it would be possible to have MinerControl only start the miner when the screen saver is on and kill the miner as soon as the screen saver goes off.  I need to research that one some more.
full member
Activity: 146
Merit: 100
A user wouldn't have to change the code to remove donation mining, just set the donation percentage to "0".

The process will be transparent and configurable by the user.  Here is how I plan to implement it.

There will be two configuration parameters, "donationpercentage" and "donationfrequency".  The percentage will default to "2" and the frequency will default to "240".  While in auto mode, at the end of each frequency of minutes, the miner will stop and restart mining against the donation address and continue for the percentage of that frequency of time.  With the defaults, it means that after 3 hours, 55.2 minutes of auto mining it will mine against the donation address on whatever is paying best for 4.8 minutes and then switch back to the user's address.

The code messiness will come from the time accounting side to make sure I only mine in donation mode at the set intervals for the set amount of time.

Does the program remember the total time, or does it reset whenever you hit the stop button. I, when I use the rig, often have to stop and start the program again due to fluctuations in need. If the counter resets, it would cause the donation time to be postponed again and again.
sr. member
Activity: 401
Merit: 250
StuffOfInterest, how's the code cleanup coming along? Still not ready for open-source?

Getting close.  Before I put the code out there I want to get the donation mining integrated in.  This is going to require tweaking quite a bit of code, more than I had originally expected, so there will have to be some more cleanup after that.

I'm starting to get myself familiar with git and GitHub now as that is how I plan to release the source code.  I've worked with TFS and SVN for version control previously but git has become more or less the standard for open source projects, so this seems like a good time to start using it.  I've already manged to integrate local code in Visual Studio with the online repository a couple of different ways so now I need to spin up on how git handles branching and merging so that the main code line will be release quality while work in progress can still be out there.  That's also how I'll hopefully be able to open up for other people to contribute code.

How will you go about the donation mining? Mine most profitable to your address X time each day? And because it will be opensource, some people will just yank out the donation mining, especially if it is too much. Also, and this seems obvious, but I am going to say it anyway: Let it only donation mine when it is in auto-mode, or if a service is manually started, only on that algo (perhaps a more profitable pool, but still), because I sometimes stop the mining, or switch to a specific algo, for when I want that added stability or lessened load when I do something else on the rig, like watching youtube or editing text, etc.

Still, many thanks for the awesome work you're doing!

A user wouldn't have to change the code to remove donation mining, just set the donation percentage to "0".

The process will be transparent and configurable by the user.  Here is how I plan to implement it.

There will be two configuration parameters, "donationpercentage" and "donationfrequency".  The percentage will default to "2" and the frequency will default to "240".  While in auto mode, at the end of each frequency of minutes, the miner will stop and restart mining against the donation address and continue for the percentage of that frequency of time.  With the defaults, it means that after 3 hours, 55.2 minutes of auto mining it will mine against the donation address on whatever is paying best for 4.8 minutes and then switch back to the user's address.

The code messiness will come from the time accounting side to make sure I only mine in donation mode at the set intervals for the set amount of time.
full member
Activity: 146
Merit: 100
StuffOfInterest, how's the code cleanup coming along? Still not ready for open-source?

Getting close.  Before I put the code out there I want to get the donation mining integrated in.  This is going to require tweaking quite a bit of code, more than I had originally expected, so there will have to be some more cleanup after that.

I'm starting to get myself familiar with git and GitHub now as that is how I plan to release the source code.  I've worked with TFS and SVN for version control previously but git has become more or less the standard for open source projects, so this seems like a good time to start using it.  I've already manged to integrate local code in Visual Studio with the online repository a couple of different ways so now I need to spin up on how git handles branching and merging so that the main code line will be release quality while work in progress can still be out there.  That's also how I'll hopefully be able to open up for other people to contribute code.

How will you go about the donation mining? Mine most profitable to your address X time each day? And because it will be opensource, some people will just yank out the donation mining, especially if it is too much. Also, and this seems obvious, but I am going to say it anyway: Let it only donation mine when it is in auto-mode, or if a service is manually started, only on that algo (perhaps a more profitable pool, but still), because I sometimes stop the mining, or switch to a specific algo, for when I want that added stability or lessened load when I do something else on the rig, like watching youtube or editing text, etc.

Still, many thanks for the awesome work you're doing!
sr. member
Activity: 401
Merit: 250
StuffOfInterest, how's the code cleanup coming along? Still not ready for open-source?

Getting close.  Before I put the code out there I want to get the donation mining integrated in.  This is going to require tweaking quite a bit of code, more than I had originally expected, so there will have to be some more cleanup after that.

I'm starting to get myself familiar with git and GitHub now as that is how I plan to release the source code.  I've worked with TFS and SVN for version control previously but git has become more or less the standard for open source projects, so this seems like a good time to start using it.  I've already manged to integrate local code in Visual Studio with the online repository a couple of different ways so now I need to spin up on how git handles branching and merging so that the main code line will be release quality while work in progress can still be out there.  That's also how I'll hopefully be able to open up for other people to contribute code.
Pages:
Jump to: