I'm now using this to monitor some g-blacks, went through and did some minor tweaks so that the grid will display in MH instead of GH, that sort of thing. Thanks for open sourcing this, a small token of my appreciation was just sent!
Not sure if those 1BTC transactions are donations or not, but it's a bit disappointing to see so few transactions...
Getting some null reference exceptions here and there, going to tinker a bit in debug and see if I can throw in a bit of error handling on the JSON parsing since that's where it looks to be coming from. Seems to be unhappy when the miners reboot themselves(I have local monitoring scripts) and it doesn't expect it, here's a stack trace if you're interested.
************** Exception Text **************
System.ArgumentNullException: Value cannot be null.
Parameter name: s
at System.IO.StringReader..ctor(String s)
at Newtonsoft.Json.Linq.JObject.Parse(String json)
at MMinerMonitor.frmMain.RefreshGrid(clsMinerRefreshData& MinerData) in frmAntMonitor.vb:line 1863
at MMinerMonitor.frmMain.timerDoStuff_Tick(Object sender, EventArgs e) in frmAntMonitor.vb:line 4935
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
If you'd like to add official support for my miners, here's the output from the Gridseed G-black:
STATS:
{"STATUS":[{"STATUS":"S","When":1420193802,"Code":70,"Msg":"CGMiner stats","Description":"cgminer 3.7.2"}],"STATS":[{"STATS":0,"ID":"GSD0","Elapsed":865,"Calls":8537,"Wait":2.268897,"Max":0.059081,"Min":0.000014,"DevKHs":2686,"LastNonceAt":1420193737.597956,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8823 0"},{"STATS":1,"ID":"GSD1","Elapsed":865,"Calls":75248,"Wait":5.834170,"Max":0.056958,"Min":0.000005,"DevKHs":2660,"LastNonceAt":1420193731.869072,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8794 0"},{"STATS":2,"ID":"GSD2","Elapsed":865,"Calls":8519,"Wait":2.643898,"Max":0.053637,"Min":0.000014,"DevKHs":2687,"LastNonceAt":1420193272.182696,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8833 0"},{"STATS":3,"ID":"GSD3","Elapsed":865,"Calls":57922,"Wait":5.186715,"Max":0.059216,"Min":0.000007,"DevKHs":2655,"LastNonceAt":1420193677.860447,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8801 0"},{"STATS":4,"ID":"GSD4","Elapsed":865,"Calls":8518,"Wait":2.200106,"Max":0.059792,"Min":0.000015,"DevKHs":2698,"LastNonceAt":1420193776.805768,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8838 0"},{"STATS":5,"ID":"GSD5","Elapsed":865,"Calls":8530,"Wait":2.206749,"Max":0.051991,"Min":0.000014,"DevKHs":2691,"LastNonceAt":1420193738.590054,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8825 0"},{"STATS":6,"ID":"GSD6","Elapsed":865,"Calls":8538,"Wait":2.310019,"Max":0.062163,"Min":0.000014,"DevKHs":2705,"LastNonceAt":1420193636.019906,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8825 0"},{"STATS":7,"ID":"GSD7","Elapsed":865,"Calls":8511,"Wait":2.339035,"Max":0.050391,"Min":0.000014,"DevKHs":2694,"LastNonceAt":1420193621.280800,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8837 0"},{"STATS":8,"ID":"GSD8","Elapsed":865,"Calls":8522,"Wait":2.228558,"Max":0.063541,"Min":0.000014,"DevKHs":2694,"LastNonceAt":1420193742.162070,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8824 0"},{"STATS":9,"ID":"GSD9","Elapsed":865,"Calls":32769,"Wait":4.152249,"Max":0.055482,"Min":0.000007,"DevKHs":2701,"LastNonceAt":1420193747.606851,"USB Pipe":"0","USB Delay":"r0 0.000000 w0 0.000000","USB tmo":"8819 0"},{"STATS":10,"ID":"POOL0","Elapsed":865,"Calls":225614,"Wait":31.370396,"Max":0.063541,"Min":0.000005,"Pool Calls":0,"Pool Attempts":0,"Pool Wait":0.000000,"Pool Max":0.000000,"Pool Min":99999999.000000,"Pool Av":0.000000,"Work Had Roll Time":false,"Work Can Roll":false,"Work Had Expire":false,"Work Roll Time":0,"Work Diff":13250.81894412,"Min Diff":16.00000000,"Max Diff":13250.81894412,"Min Diff Count":24,"Max Diff Count":12,"Times Sent":962,"Bytes Sent":103722,"Times Recv":998,"Bytes Recv":48794,"Net Bytes Sent":103722,"Net Bytes Recv":48794},{"STATS":11,"ID":"POOL1","Elapsed":865,"Calls":0,"Wait":0.000000,"Max":0.000000,"Min":99999999.000000,"Pool Calls":0,"Pool Attempts":0,"Pool Wait":0.000000,"Pool Max":0.000000,"Pool Min":99999999.000000,"Pool Av":0.000000,"Work Had Roll Time":false,"Work Can Roll":false,"Work Had Expire":false,"Work Roll Time":0,"Work Diff":1024.00000000,"Min Diff":1024.00000000,"Max Diff":1024.00000000,"Min Diff Count":1,"Max Diff Count":1,"Times Sent":2,"Bytes Sent":143,"Times Recv":5,"Bytes Recv":1519,"Net Bytes Sent":143,"Net Bytes Recv":1519},{"STATS":12,"ID":"POOL2","Elapsed":865,"Calls":0,"Wait":0.000000,"Max":0.000000,"Min":99999999.000000,"Pool Calls":0,"Pool Attempts":0,"Pool Wait":0.000000,"Pool Max":0.000000,"Pool Min":99999999.000000,"Pool Av":0.000000,"Work Had Roll Time":false,"Work Can Roll":false,"Work Had Expire":false,"Work Roll Time":0,"Work Diff":0.00000000,"Min Diff":0.00000000,"Max Diff":0.00000000,"Min Diff Count":0,"Max Diff Count":0,"Times Sent":2,"Bytes Sent":164,"Times Recv":4,"Bytes Recv":946,"Net Bytes Sent":164,"Net Bytes Recv":946}],"id":1}
POOLS:
{"STATUS":[{"STATUS":"S","When":1420193802,"Code":7,"Msg":"3 Pool(s)","Description":"cgminer 3.7.2"}],"POOLS":[{"POOL":0,"URL":"pool1","Status":"Alive","Priority":0,"Quota":1,"Long Poll":"N","Getworks":25,"Accepted":960,"Rejected":0,"Works":407,"Discarded":54,"Stale":0,"Get Failures":0,"Remote Failures":0,"User":"worker","Last Share Time":1420193777,"Diff1 Shares":960,"Proxy Type":"","Proxy":"","Difficulty Accepted":361248.43278278,"Difficulty Rejected":0.00000000,"Difficulty Stale":0.00000000,"Last Share Difficulty":3202.28124483,"Has Stratum":true,"Stratum Active":true,"Stratum URL":"pool1","Has GBT":false,"Best Share":1127174,"Pool Rejected%":0.0000,"Pool Stale%":0.0000},{"POOL":1,"URL":"pool2","Status":"Alive","Priority":1,"Quota":1,"Long Poll":"N","Getworks":2,"Accepted":0,"Rejected":0,"Works":0,"Discarded":0,"Stale":0,"Get Failures":0,"Remote Failures":0,"User":"worker","Last Share Time":0,"Diff1 Shares":0,"Proxy Type":"","Proxy":"","Difficulty Accepted":0.00000000,"Difficulty Rejected":0.00000000,"Difficulty Stale":0.00000000,"Last Share Difficulty":0.00000000,"Has Stratum":true,"Stratum Active":false,"Stratum URL":"","Has GBT":false,"Best Share":0,"Pool Rejected%":0.0000,"Pool Stale%":0.0000},{"POOL":2,"URL":"pool3","Status":"Alive","Priority":2,"Quota":1,"Long Poll":"N","Getworks":1,"Accepted":0,"Rejected":0,"Works":0,"Discarded":0,"Stale":0,"Get Failures":0,"Remote Failures":0,"User":"worker","Last Share Time":0,"Diff1 Shares":0,"Proxy Type":"","Proxy":"","Difficulty Accepted":0.00000000,"Difficulty Rejected":0.00000000,"Difficulty Stale":0.00000000,"Last Share Difficulty":0.00000000,"Has Stratum":true,"Stratum Active":false,"Stratum URL":"","Has GBT":false,"Best Share":0,"Pool Rejected%":0.0000,"Pool Stale%":0.0000}],"id":1}
SUMMARY:
{"STATUS":[{"STATUS":"S","When":1420193802,"Code":11,"Msg":"Summary","Description":"cgminer 3.7.2"}],"SUMMARY":[{"Elapsed":865,"MHS av":27.12,"MHS 5s":27.08,"Found Blocks":0,"Getworks":28,"Accepted":960,"Rejected":0,"Hardware Errors":4,"Utility":66.60,"Discarded":54,"Stale":0,"Get Failures":0,"Local Work":475,"Remote Failures":0,"Network Blocks":15,"Total MH":23459.3002,"Work Utility":66.60,"Difficulty Accepted":361248.43278278,"Difficulty Rejected":0.00000000,"Difficulty Stale":0.00000000,"Best Share":1127174,"Device Hardware%":0.4149,"Device Rejected%":0.0000,"Pool Rejected%":0.0000,"Pool Stale%":0.0000}],"id":1}
And here's my Innosilicon A2 88MH:
STATS:
{"STATUS":[{"STATUS":"S","When":1420194081,"Code":70,"Msg":"CGMiner stats","Description":"cgminer 3.9.0"}],"STATS":[{"STATS":0,"ID":"BA10","Elapsed":4855,"CS":0,"ASIC":8,"CORES(TOTAL)":432,"CORES(SOLO)":"54-54-54-54-54-54-54-54","TEMP(AVG)":31.25,"TEMP(SOLO)":"30-34-29-29-34-28-46-50"},{"STATS":1,"ID":"BA11","Elapsed":4855,"CS":1,"ASIC":8,"CORES(TOTAL)":432,"CORES(SOLO)":"54-54-54-54-54-54-54-54","TEMP(AVG)":31.50,"TEMP(SOLO)":"29-34-29-34-34-34-44-43"},{"STATS":2,"ID":"BA12","Elapsed":4855,"CS":2,"ASIC":8,"CORES(TOTAL)":389,"CORES(SOLO)":"53-53-37-53-49-40-53-51","TEMP(AVG)":31.25,"TEMP(SOLO)":"29-29-29-34-29-34-47-48"},{"STATS":3,"ID":"BA13","Elapsed":4855,"CS":3,"ASIC":8,"CORES(TOTAL)":432,"CORES(SOLO)":"54-54-54-54-54-54-54-54","TEMP(AVG)":32.00,"TEMP(SOLO)":"29-34-29-34-34-34-43-48"},{"STATS":4,"ID":"BA14","Elapsed":4855,"CS":4,"ASIC":8,"CORES(TOTAL)":432,"CORES(SOLO)":"54-54-54-54-54-54-54-54","TEMP(AVG)":29.62,"TEMP(SOLO)":"29-29-29-34-34-29-36-46"},{"STATS":5,"ID":"BA15","Elapsed":4855,"CS":5,"ASIC":8,"CORES(TOTAL)":432,"CORES(SOLO)":"54-54-54-54-54-54-54-54","TEMP(AVG)":29.88,"TEMP(SOLO)":"29-29-29-29-29-34-43-46"},{"STATS":6,"ID":"POOL0","Elapsed":4855,"Pool Calls":0,"Pool Attempts":0,"Pool Wait":0.000000,"Pool Max":0.000000,"Pool Min":99999999.000000,"Pool Av":0.000000,"Work Had Roll Time":false,"Work Can Roll":false,"Work Had Expire":false,"Work Roll Time":0,"Work Diff":2048.00000000,"Min Diff":16.00000000,"Max Diff":2048.00000000,"Min Diff Count":313,"Max Diff Count":28835,"Times Sent":3852,"Bytes Sent":426659,"Times Recv":8891,"Bytes Recv":883114,"Net Bytes Sent":426659,"Net Bytes Recv":883114},{"STATS":7,"ID":"POOL1","Elapsed":4855,"Pool Calls":0,"Pool Attempts":0,"Pool Wait":0.000000,"Pool Max":0.000000,"Pool Min":99999999.000000,"Pool Av":0.000000,"Work Had Roll Time":false,"Work Can Roll":false,"Work Had Expire":false,"Work Roll Time":0,"Work Diff":1024.00000000,"Min Diff":20.00000000,"Max Diff":1024.00000000,"Min Diff Count":533,"Max Diff Count":218,"Times Sent":159,"Bytes Sent":19658,"Times Recv":187,"Bytes Recv":17716,"Net Bytes Sent":19658,"Net Bytes Recv":17716},{"STATS":8,"ID":"POOL2","Elapsed":4855,"Pool Calls":0,"Pool Attempts":0,"Pool Wait":0.000000,"Pool Max":0.000000,"Pool Min":99999999.000000,"Pool Av":0.000000,"Work Had Roll Time":false,"Work Can Roll":false,"Work Had Expire":false,"Work Roll Time":0,"Work Diff":4096.00000000,"Min Diff":4096.00000000,"Max Diff":4096.00000000,"Min Diff Count":1,"Max Diff Count":1,"Times Sent":2,"Bytes Sent":150,"Times Recv":5,"Bytes Recv":1385,"Net Bytes Sent":150,"Net Bytes Recv":1385}],"id":1}
POOLS:
{"STATUS":[{"STATUS":"S","When":1420194081,"Code":7,"Msg":"3 Pool(s)","Description":"cgminer 3.9.0"}],"POOLS":[{"POOL":0,"URL":"pool1","Status":"Alive","Priority":0,"Quota":1,"Long Poll":"N","Getworks":1180,"Accepted":6584,"Rejected":1116,"Works":29780,"Discarded":2280,"Stale":0,"Get Failures":0,"Remote Failures":0,"User":"worker","Last Share Time":1420194079,"Diff1 Shares":6176064,"Proxy Type":"","Proxy":"","Difficulty Accepted":11659040.00000000,"Difficulty Rejected":754304.00000000,"Difficulty Stale":0.00000000,"Last Share Difficulty":2048.00000000,"Has Stratum":true,"Stratum Active":true,"Stratum URL":"pool1","Has GBT":false,"Best Share":9179304,"Pool Rejected%":6.0766,"Pool Stale%":0.0000},{"POOL":1,"URL":"pool2","Status":"Alive","Priority":1,"Quota":1,"Long Poll":"N","Getworks":19,"Accepted":134,"Rejected":3,"Works":723,"Discarded":10,"Stale":12,"Get Failures":1,"Remote Failures":2,"User":"worker","Last Share Time":1420189269,"Diff1 Shares":26072,"Proxy Type":"","Proxy":"","Difficulty Accepted":25772.00000000,"Difficulty Rejected":60.00000000,"Difficulty Stale":120.00000000,"Last Share Difficulty":1024.00000000,"Has Stratum":true,"Stratum Active":false,"Stratum URL":"","Has GBT":false,"Best Share":278930,"Pool Rejected%":0.2312,"Pool Stale%":0.4624},{"POOL":2,"URL":"pool3","Status":"Alive","Priority":2,"Quota":1,"Long Poll":"N","Getworks":2,"Accepted":0,"Rejected":0,"Works":0,"Discarded":0,"Stale":0,"Get Failures":0,"Remote Failures":0,"User":"worker","Last Share Time":0,"Diff1 Shares":0,"Proxy Type":"","Proxy":"","Difficulty Accepted":0.00000000,"Difficulty Rejected":0.00000000,"Difficulty Stale":0.00000000,"Last Share Difficulty":0.00000000,"Has Stratum":true,"Stratum Active":false,"Stratum URL":"","Has GBT":false,"Best Share":0,"Pool Rejected%":0.0000,"Pool Stale%":0.0000}],"id":1}
SUMMARY:
{"STATUS":[{"STATUS":"S","When":1420194081,"Code":11,"Msg":"Summary","Description":"cgminer 3.9.0"}],"SUMMARY":[{"Elapsed":4855,"MHS av":91.87,"MHS 5s":92.68,"Found Blocks":1,"Getworks":1201,"Accepted":6718,"Rejected":1119,"Hardware Errors":361,"Utility":83.03,"Discarded":2290,"Stale":12,"Get Failures":1,"Local Work":33046,"Remote Failures":2,"Network Blocks":281,"Total MH":446027.8491,"Work Utility":76652.61,"Difficulty Accepted":11684812.00000000,"Difficulty Rejected":754364.00000000,"Difficulty Stale":120.00000000,"Best Share":9179304,"Device Hardware%":0.0058,"Device Rejected%":12.1630,"Pool Rejected%":6.0644,"Pool Stale%":0.0010}],"id":1}
Thanks again!