Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- error_reporting(E_ALL ^ E_NOTICE);
- require './cgminerapi.php';
- require './hosts.php';
- function seconds_to_time($input_seconds)
- {
- $seconds_in_minute = 60;
- $seconds_in_hour = 60 * $seconds_in_minute;
- $seconds_in_day = 24 * $seconds_in_hour;
- // extract days
- $days = floor($input_seconds / $seconds_in_day);
- // extract hours
- $hour_seconds = $input_seconds % $seconds_in_day;
- $hours = floor($hour_seconds / $seconds_in_hour);
- // extract minutes
- $minute_seconds = $hour_seconds % $seconds_in_hour;
- $minutes = floor($minute_seconds / $seconds_in_minute);
- // extract the remaining seconds
- $remaining_seconds = $minute_seconds % $seconds_in_minute;
- $seconds = ceil($remaining_seconds);
- // return the final array
- $obj = array(
- 'd' => (int)$days,
- 'h' => sprintf('%02d', (int)$hours),
- 'm' => sprintf('%02d', (int)$minutes),
- 's' => sprintf('%02d', (int)$seconds)
- );
- return $obj;
- }
- print <<<HTML
- <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
- <head>
- <title>CGMiner Watcher Tool</title>
- <meta http-equiv="REFRESH" content="$refreshTime" />
- <link rel="stylesheet" type="text/css" href="status.css" />
- <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
- </head>
- HTML;
- $rigsArr = array();
- $poolsArr = array();
- foreach ($hosts as $host) {
- list ($hostname,$ip,$port) = explode(':',$host);
- $r = requestapi($ip,$port,'devs');
- $s = requestapi($ip,$port,'summary');
- $rdet = requestapi($ip,$port,'devdetails');
- $rpool = requestapi($ip,$port,'pools');
- $rcoin = requestapi($ip,$port,'coin');
- $rversion = requestapi($ip,$port,'version');
- $cgminerversion = $rversion['VERSION']['CGMiner'];
- $totalhash = $s['SUMMARY']['MHS av'];
- print "<PRE>";
- #print_r($rpool);
- print "</PRE>";
- $rigsArr[$hostname]['hostname'] = $hostname;
- $rigsArr[$hostname]['ip'] = $ip;
- $rigsArr[$hostname]['port'] = $port;
- $rigsArr[$hostname]['cgminerversion'] = $cgminerversion;
- $rigsArr[$hostname]['totalhash'] = $totalhash;
- $rigsArr[$hostname]['elapsed'] = $s['SUMMARY']['Elapsed'];
- foreach ($rpool as $pool) {
- if (array_key_exists('POOL', $pool)) {
- print "<PRE>";
- #print_r($pool);
- #print $pool['Accepted'];
- print "</PRE>";
- $poolsArr[$pool['URL']]['URL'] = $pool['URL'];
- $poolsArr[$pool['URL']]['User'] = $pool['User'];
- $poolsArr[$pool['URL']]['POOL'] = $pool['POOL'];
- $poolsArr[$pool['URL']]['Priority'] = $pool['Priority'];
- $poolsArr[$pool['URL']]['Status'] = $pool['Status'];
- $poolsArr[$pool['URL']]['diff'] = $pool['Last Share Difficulty'];
- $poolsArr[$pool['URL']]['Accepted'] = $pool['Accepted'];
- $poolsArr[$pool['URL']]['TAccepted'] = $poolsArr[$pool['URL']]['TAccepted'] + $pool['Accepted'];
- unset($poolsArr[$pool['URL']]['Accepted']);
- $poolsArr[$pool['URL']]['Rejected'] = $pool['Rejected'];
- $poolsArr[$pool['URL']]['TRejected'] = $poolsArr[$pool['URL']]['TRejected'] + $pool['Rejected'];
- unset($poolsArr[$pool['URL']]['Rejected']);
- $poolsArr[$pool['URL']]['Discarded'] = $pool['Discarded'];
- $poolsArr[$pool['URL']]['TDiscarded'] = $poolsArr[$pool['URL']]['TDiscarded'] + $pool['Discarded'];
- unset($poolsArr[$pool['URL']]['Discarded']);
- $poolsArr[$pool['URL']]['Stale'] = $pool['Stale'];
- $poolsArr[$pool['URL']]['TStale'] = $poolsArr[$pool['URL']]['TStale'] + $pool['Stale'];
- unset($poolsArr[$pool['URL']]['Stale']);
- $poolsArr[$pool['URL']]['Remote Failures'] = $pool['Remote Failures'];
- $poolsArr[$pool['URL']]['TRemote Failures'] = $poolsArr[$pool['URL']]['TRemote Failures'] + $pool['Remote Failures'];
- unset($poolsArr[$pool['URL']]['Remote Failures']);
- $poolsArr[$pool['URL']]['Get Failures'] = $pool['Get Failures'];
- $poolsArr[$pool['URL']]['TGet Failures'] = $poolsArr[$pool['URL']]['TGet Failures'] + $pool['Get Failures'];
- unset($poolsArr[$pool['URL']]['Get Failures']);
- }
- }
- foreach($r as $row) {
- if (array_key_exists('When',$row)) {
- $rigsArr[$hostname]['time'] = $row['When'];
- }
- if (array_key_exists('GPU',$row)) {
- print "<PRE>";
- #print_r($row);
- print "</PRE>";
- #print $ip;
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUactivity'] = $row['GPU Activity'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['HardwareErrors'] = $row['Hardware Errors'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUfanspeed'] = $row['Fan Speed'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUfanpercent'] = $row['Fan Percent'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUpercentrejected'] = round($row['Rejected'] * 100 / $row['Accepted'], 2);
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUhash5s'] = $row['MHS 5s'] * 1000;
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUhashav'] = $row['MHS av'] * 1000;
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUWU'] = round($row['Diff1 Work'] / ($row['Device Elapsed'] / 60), 3);
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUclock'] = $row['GPU Clock'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUmemclock'] = $row['Memory Clock'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUvoltage'] = $row['GPU Voltage'];
- $ArrDevName = 'DEVDETAILS' . $row['GPU'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUModel'] = str_replace('AMD Radeon','',$rdet[$ArrDevName]['Model']);
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUKernel'] = $rdet[$ArrDevName]['Kernel'];
- $ArrDevPool = 'POOL' . $row['Last Share Pool'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUPool'] = str_replace('stratum+tcp://','',$rpool[$ArrDevPool]['URL']);
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUnum'] = $row['GPU'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUTemp'] = $row['Temperature'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUAccepted'] = $row['Accepted'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPURejected'] = $row['Rejected'];
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUstatus'] = $row['Status'];
- if ($row['Last Share Time'] != "0") {
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPULastShareTime'] = $rigsArr[$hostname]['time'] - $row['Last Share Time'] . "s";
- }
- else {
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPULastShareTime'] = "N/A";
- }
- if ($cgminerversion < '3.6') {
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUcoindiff'] = round($rcoin['COIN']['Network Difficulty'] / 65536, 2);
- }
- else {
- $rigsArr[$hostname]['GPUS'][$row['GPU']]['GPUcoindiff'] = round($rcoin['COIN']['Network Difficulty'], 2);
- }
- }
- }
- }
- $Thash = "0";
- $Nrigs = "0";
- $Ngpus = "0";
- foreach($rigsArr as $h) {
- $Thash = $Thash + $h['totalhash'];
- $Nrigs++;
- foreach($h['GPUS'] as $gp) {
- $Ngpus++;
- }
- }
- print <<<HEAD
- <table bgcolor='black' cellspacing='0' cellpadding='0' border='0' width='100%' >
- <tr><td width='341'><img src='images/PCWT.jpg'></td><td valign='bottom' style='font-size:16;color:#FFFFFF'><br>Number of Rig(s): $Nrigs <br> Number of GPU(s) $Ngpus <br> Total Hash Power: $Thash MH/s <br> Version: beta4 - hutniks edit<br><br> </td></tr>
- </table>
- HEAD;
- foreach($rigsArr as $rig) {
- $hostname = $rig['hostname'];
- $totalhash = $rig['totalhash'];
- $elapsed = seconds_to_time($rig['elapsed']);
- $running = $elapsed['d'] . 'd ' . $elapsed['h'] . ':' . $elapsed['m'] . ':' . $elapsed['s'];
- //check if to show kernel
- if($showKernel==1){$KernelTD='<TD class="ghdr">Kernel</TD>';}
- print <<<TOPTABLE
- <p>
- <font size='5'> $hostname - Hashing average : $totalhash MH/sec - Uptime: $running</font>
- <table width='$tableWidth' style="border:1px solid black;border-collapse:collapse;text-align: center;">
- <TR class='ghdr' style="background-color:#000000;color:#FFFFFF">
- <TD class='ghdr' width='20'>#</TD>
- <TD class='ghdr'>Status</TD>
- <TD class='ghdr'>Temp</TD>
- <TD class='ghdr'>Fan% (rpm)</TD>
- <TD class='ghdr' width='130'>KHs (5s|avg)</TD>
- <TD class='ghdr'>Pool</TD>
- <TD class='ghdr'>Diff</TD>
- <TD class='ghdr' align='center'>Accept / Reject </TD>
- <TD class='ghdr' align='center'>LastShare</TD>
- <TD class='ghdr'>% Reject</TD>
- <TD class='ghdr'>WU</TD>
- $KernelTD
- <TD class='ghdr'>Core</TD>
- <TD class='ghdr'>Memory</TD>
- <TD class='ghdr'>Model</TD>
- <TD class='ghdr'>Power</TD>
- <TD class='ghdr'>HW</TD>
- </TR>
- TOPTABLE;
- foreach($rig['GPUS'] as $gpu) {
- if ($gpu['GPUhash5s'] == "0" && $gpu['GPUstatus'] == 'Alive') {
- } else {
- $GPUnum = $gpu['GPUnum'];
- $GPUstatus = $gpu['GPUstatus'];
- if ($gpu['GPUstatus'] == 'Alive') {
- $GPUstatus = "<img src='images/ok24.png'>";
- }
- else {
- $GPUstatus = "<img src='images/down24.png'>";
- }
- $GPUTemp = $gpu['GPUTemp'];
- $GPUactivity = $gpu['GPUactivity'];
- $GPUhash5s = $gpu['GPUhash5s'];
- $GPUhashav = $gpu['GPUhashav'];
- list($GPUPool,$GPUPort) = explode(':', $gpu['GPUPool']);
- $GPUcoindiff = $gpu['GPUcoindiff'];
- $GPUAccepted = $gpu['GPUAccepted'];
- $GPULastshare = $gpu['GPULastShareTime'];
- $GPURejected = $gpu['GPURejected'];
- $GPUWU = $gpu['GPUWU'];
- $GPUpercentrejected = round($GPURejected * 100 / ($GPUAccepted + $GPURejected), 2);
- $GPUfanpercent = $gpu['GPUfanpercent'];
- $GPUfanspeed = $gpu['GPUfanspeed'];
- $GPUclock = $gpu['GPUclock'];
- $GPUmemclock = $gpu['GPUmemclock'];
- $GPUModel = $gpu['GPUModel'];
- $GPUKernel = $gpu['GPUKernel'];
- $GPUvoltage = $gpu['GPUvoltage'];
- $HardwareErrors = $gpu['HardwareErrors'];
- //red style if too high rejected percent
- if($GPUpercentrejected > $rejectedPercentWarning ){
- $RejectedWarning=' style="background:red;" ';
- }else{
- $RejectedWarning='';
- }
- //red style if HW errors
- if($HardwareErrors > $HWerrorsWarning ){
- $errors=' style="background:red;" ';
- }else{
- $errors='';
- }
- //red style if low hashrate
- if($GPUhash5s / $hashrateWarning * 100 < $GPUhashav){
- $lowHashColor=' style="background:red;" ';
- }else{
- $lowHashColor='';
- }
- //check if to show kernel
- if($showKernel==1){$KernelTD='<TD class="ghdr myBorder">'.$GPUKernel.'</TD>';}else{$KernelTD='';}
- print <<<RIGS
- <TR style="border:1px solid gray; text-align: center;">
- <TD class='ghdr'>$GPUnum</TD>
- <TD class='ghdr'>$GPUstatus</TD>
- <TD class='ghdr myBorder'>$GPUTemp C</TD>
- <TD class='ghdr myBorder'>$GPUfanpercent ($GPUfanspeed)</TD>
- <TD class='ghdr myBorder'$lowHashColor>$GPUhash5s|$GPUhashav</TD>
- <TD class='ghdr myBorder'>$GPUPool</TD>
- <TD class='ghdr myBorder'>$GPUcoindiff</TD>
- <TD class='ghdr myBorder' align='center'>$GPUAccepted / $GPURejected</TD>
- <TD class='ghdr myBorder' align='center'>$GPULastshare</TD>
- <TD class='ghdr myBorder'$RejectedWarning>$GPUpercentrejected %</TD>
- <TD class='ghdr myBorder'>$GPUWU/m</TD>
- $KernelTD
- <TD class='ghdr myBorder'>$GPUclock Mhz</TD>
- <TD class='ghdr myBorder'>$GPUmemclock Mhz</TD>
- <TD class='dhdr myBorder'>$GPUModel</TD>
- <TD class='ghdr myBorder'>$GPUvoltage</TD>
- <TD class='ghdr myBorder'$errors>$HardwareErrors</TD>
- </TR>
- RIGS;
- }
- }
- print "</table>";
- }
- print <<<POOLTABLE
- <p>
- <font size='5'> Pools</font>
- <table width='$tableWidth' style="border:1px solid gray;border-collapse:collapse;text-align: center;"">
- <TR class='ghdr' style="background-color:#000000;color:#FFFFFF">
- <TD class='ghdr'>Pool #</TD>
- <TD class='ghdr'>Status</TD>
- <TD class='ghdr'>Priority</TD>
- <TD class='ghdr'>URL</TD>
- <TD class='ghdr'>Diff</TD>
- <TD class='ghdr'>Accepted</TD>
- <TD class='ghdr'>Rejected (%)</TD>
- <TD class='ghdr'>Discarded</TD>
- <TD class='ghdr'>Stales</TD>
- <TD class='ghdr' align='center'>Get / Remote Failures</TD>
- </TR>
- POOLTABLE;
- $poolpool = "0";
- foreach($poolsArr as $pool) {
- print "<PRE>";
- #print_r($pool);
- print "</PRE>";
- $poolpool++;
- $poolpriority = $pool['Priority'];
- $poolurl = $pool['URL'];
- $pooluser = $pool['User'];
- $pooldiff = round($pool['diff'], 2);
- $poolaccepted = $pool['TAccepted'];
- $poolrejected = $pool['TRejected'];
- if(($poolaccepted + $poolrejected)!=0){$poolrejpercentbef = $poolrejected * 100 / ($poolaccepted + $poolrejected);}else{$poolrejpercentbef='0';}
- $poolrejpercent = "(" . round($poolrejpercentbef, 2) . "%)";
- $pooldiscarded = $pool['TDiscarded'];
- $poolstale = $pool['TStale'];
- $poolgetfail = $pool['TGet Failures'];
- $poolremfail = $pool['TRemote Failures'];
- //red style if too high rejected percent
- if(round($poolrejpercentbef, 2) > $rejectedPercentWarning ){
- $poolRejectedWarning=' style="background:red;" ';
- }else{
- $poolRejectedWarning='';
- }
- if ($pool['Status'] == 'Alive') {
- $poolstatus = "<img src='images/ok24.png'>";
- }
- else {
- $poolstatus = "<img src='images/down24.png'>";
- }
- print <<<POOLROW
- <tr class='ghdr' style="border:1px solid gray;">
- <TD class='ghdr'>$poolpool</TD>
- <TD class='ghdr'>$poolstatus</TD>
- <TD class='ghdr myBorder'>$poolpriority</TD>
- <TD class='ghdr myBorder'>$poolurl @ $pooluser</TD>
- <TD class='ghdr myBorder'>$pooldiff</TD>
- <TD class='ghdr myBorder'>$poolaccepted</TD>
- <TD class='ghdr myBorder'$poolRejectedWarning>$poolrejected $poolrejpercent</TD>
- <TD class='ghdr myBorder'>$pooldiscarded</TD>
- <TD class='ghdr myBorder'>$poolstale</TD>
- <TD class='ghdr myBorder' align='center'>$poolgetfail / $poolremfail</TD>
- </tr>
- POOLROW;
- }
- print "</table>";
- print "<PRE>";
- #print_r($rigsArr);
- #print_r($poolsArr);
- print "</PRE>";
- ?>
- <p style='font-size:small;'>
- This tool is available <a href='http://www.pcwt.info'>here</a><br>
- BTC donation: 1K4fqtHHxc31JwoUmctUC1hgXDC2G4G8xp <br>
- </p>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement