Advertisement
Guest User

Untitled

a guest
Dec 28th, 2019
854
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.59 KB | None | 0 0
  1.  
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  7. <meta http-equiv="Content-Script-Type" content="text/javascript" />
  8. <meta http-equiv="cache-control" content="no-cache" />
  9. <link rel="stylesheet" type="text/css" media="screen" href="/css/cascade.css" />
  10. <!--[if IE 6]><link rel="stylesheet" type="text/css" media="screen" href="/css/ie6.css" /><![endif]-->
  11. <!--[if IE 7]><link rel="stylesheet" type="text/css" media="screen" href="/css/ie7.css" /><![endif]-->
  12. <!--[if IE 8]><link rel="stylesheet" type="text/css" media="screen" href="/css/ie8.css" /><![endif]-->
  13. <script type="text/javascript" src="/js/xhr.js"></script>
  14. <script type="text/javascript" src="/js/jquery-1.10.2.js"></script>
  15.  
  16. <script type="text/javascript">
  17.  
  18. function getAjaxData(url, backFun) {
  19. $.ajax({
  20. type: "GET",
  21. url: url,
  22. dataType: "json",
  23. async: false,
  24. success: function(data) {
  25. backFun(data);
  26. },
  27. error: function() {
  28. //alert("error");
  29. }
  30. });
  31. }
  32.  
  33. function getAjaxDataPlain(url, backFun) {
  34. $.ajax({
  35. type: "GET",
  36. url: url,
  37. dataType: "text",
  38. async: false,
  39. success: function(data) {
  40. backFun(data);
  41. },
  42. error: function() {
  43. //alert("error");
  44. }
  45. });
  46. }
  47.  
  48. function detectQuality() {
  49. var miner_type = "";
  50. var averageGH = 0;
  51. var hwError = 0;
  52. var frequency = 0;
  53. var miner_count = 0;
  54. var asic_count = 0;
  55. var elapsed = 0;
  56. var realtimeGH = 0;
  57.  
  58. var idealGH = 0;
  59. var idealHwError = 0.05;
  60. var idealFanSpeed = 4000;
  61.  
  62. var isGHOk = true;
  63. var isFanOk = true;
  64. var isHwErrorOk = true;
  65.  
  66. var expectedContent = "<tr><th width='34%'>GH Avg</th><th width='33%'>Fan Speed</th><th width='33%'>HW</th></tr>";
  67. var tableContent = "<tr><th width='34%'>GH Avg</th><th width='33%'>Fan Speed</th><th width='33%'>HW</th></tr>";
  68. var fanContent = "";
  69. var ghBgColor = "green";
  70. var hwBgColor = "green";
  71. var fanBgColor = "green";
  72. function setAntMiner(antMinerData) {
  73. if (antMinerData.STATS.length > 0) {
  74. var data0 = antMinerData.STATS[0];
  75. miner_type = data0.Type;
  76.  
  77. var data1 = antMinerData.STATS[1];
  78. frequency = data1.frequency;
  79. $.each(data1,
  80. function(i, v) {
  81. if (i.indexOf("Elapsed") > -1) {
  82. elapsed = v;
  83. }
  84. if (i.indexOf("Hardware") > -1) {
  85. hwError = v;
  86. }
  87. if (i.indexOf("GHS av") > -1) {
  88. averageGH = v;
  89. }
  90. if (i.indexOf("GHS 5s") > -1) {
  91. realtimeGH = v;
  92. }
  93. if (i.indexOf("miner_count") > -1) {
  94. miner_count = v;
  95. }
  96. if (i.indexOf("chain_acn") > -1) {
  97. if (v > 0) {
  98. asic_count = v;
  99. }
  100. }
  101. if (i.indexOf("fan_num") < 0 && i.indexOf("fan") > -1) {
  102. if (v > 0) {
  103. fanContent += (v + "/");
  104. if (v <= idealFanSpeed) {
  105. isFanOk = false;
  106. fanBgColor = "red";
  107. }
  108. }
  109. }
  110.  
  111. });
  112. }
  113. if (miner_type.indexOf("15") > -1) {
  114. idealFanSpeed = 4400;
  115. idealGH = frequency * 256 * asic_count * miner_count * 0.98 / 1000;
  116. if (idealGH > averageGH) {
  117. isGHOk = false;
  118. ghBgColor = "red";
  119. }
  120. }
  121. if (miner_type.indexOf("17") > -1) {
  122. idealFanSpeed = 5400;
  123. idealGH = frequency * 672 * asic_count * miner_count * 0.98 / 1000;
  124. if (idealGH > averageGH) {
  125. isGHOk = false;
  126. ghBgColor = "red";
  127. }
  128. }
  129. if ( realtimeGH <= 0 ){
  130. isGHOk = false;
  131. ghBgColor = "red";
  132. }
  133. if (hwError >= idealHwError) {
  134. isHwErrorOk = false;
  135. hwBgColor = "red";
  136. }
  137. fanContent = fanContent.substring(0, fanContent.length - 1);
  138. tableContent += "<tr><td " + "bgcolor=" + ghBgColor + ">" + averageGH + "</td><td "
  139. + "bgcolor=" + fanBgColor + ">" + fanContent + "</td><td "
  140. + "bgcolor=" + hwBgColor + ">" + hwError + "</td></tr>";
  141. var content = "";
  142. if ( realtimeGH <= 0 ) {
  143. content = "<span style='color:red; font-size:36px'>FAIL</span><br /><br />";
  144. } else if (elapsed < 600) {
  145. content = "<span style='font-size:24px'>挖矿时间不足600秒, 当前" + elapsed + "秒</span>" ;
  146. } else {
  147. if (isGHOk && isFanOk) {
  148. content = "<span style='color:green; font-size:36px'>PASS</span>";
  149. } else {
  150. content = "<span style='color:red; font-size:36px'>FAIL</span><br /><br />";
  151. if (!isGHOk) {
  152. content += "<span style='color:red; font-size:36px'> 算力不足</span><br /><br />";
  153. }
  154. //if (!isHwErrorOk) {
  155. // content += "<span style='color:red; font-size:36px'> HW错误率高</span><br /><br />";
  156. //}
  157. if (!isFanOk) {
  158. content += "<span style='color:red; font-size:36px'> 风扇转速不足</span><br /><br />";
  159. }
  160. }
  161. }
  162. expectedContent += "<tr><td>" + idealGH + "</td><td>" + idealFanSpeed
  163. + "</td><td>" + idealHwError + "</td>";
  164. $("#expectValueTable").html(expectedContent);
  165. $("#currentValueTable").html(tableContent);
  166. $("#result").html(content);
  167. }
  168.  
  169. function setGHErrorCode(rateData) {
  170. $("#errorCodeSpan").text(rateData);
  171. document.getElementById("errorCodeDiv").style.display = "";
  172. }
  173.  
  174. getAjaxData("/cgi-bin/miner_stats.cgi", setAntMiner);
  175.  
  176. if (realtimeGH <= 0.00) {
  177. getAjaxDataPlain("/cgi-bin/miner_rate.cgi", setGHErrorCode);
  178. }
  179. }
  180.  
  181. $(function() {
  182. detectQuality();
  183. setInterval(detectQuality, 5000);
  184. });
  185.  
  186. </script>
  187. </head>
  188.  
  189. <body class="lang_en">
  190. <p class="skiplink">
  191. <span id="skiplink1"><a href="#navigation">Skip to navigation</a></span>
  192. <span id="skiplink2"><a href="#content">Skip to content</a></span>
  193. </p>
  194. <div id="menubar">
  195. <h2 class="navigation"><a id="navigation" name="navigation">Navigation</a></h2>
  196. <div class="clear"></div>
  197. </div>
  198. <div id="menubar" style="background-color: #0a2b40;">
  199. <div class="hostinfo" style="float: left; with: 500px;">
  200. <img src="/images/antminer_logo.png" width="92" height="50" alt="" title="" border="0" />
  201. </div>
  202. <div class="clear"></div>
  203. </div>
  204. <div id="maincontainer">
  205. <div id="tabmenu">
  206. <div class="tabmenu1">
  207. <ul class="tabmenu l1">
  208. <li class="tabmenu-item-status"><a href="/index.html">System</a></li>
  209. <li class="tabmenu-item-system"><a href="/cgi-bin/minerConfiguration.cgi">Miner Configuration</a></li>
  210. <li class="tabmenu-item-network"><a href="/cgi-bin/minerStatus.cgi">Miner Status</a></li>
  211. <li class="tabmenu-item-system"><a href="/network.html">Network</a></li>
  212. <li class="tabmenu-item-system active"><a href="/quality.html">Quality</a></li>
  213. </ul>
  214. <br style="clear: both" />
  215. </div>
  216. </div>
  217. <div id="maincontent">
  218. <div id="expectValue">
  219. <label>Expect status:</label>
  220. <table id="expectValueTable" border="1"></table>
  221. </div>
  222. <br />
  223. <div id="currentValue">
  224. <label>Actual status:</label>
  225. <table id="currentValueTable" border="1"></table>
  226. </div>
  227. <br />
  228. <div id="errorCodeDiv" style="display: none;">
  229. <label>Error Code: </label><span id="errorCodeSpan"></span>
  230. </div>
  231. <br />
  232. <div id="result"></div>
  233. </div>
  234. </div>
  235. </body>
  236. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement