set graphs to show and hide when getting data
This commit is contained in:
@@ -7,7 +7,7 @@ from network.net_range import MinerNetworkRange
|
|||||||
from miners.miner_factory import MinerFactory
|
from miners.miner_factory import MinerFactory
|
||||||
from miners.antminer.S9.bosminer import BOSMinerS9
|
from miners.antminer.S9.bosminer import BOSMinerS9
|
||||||
|
|
||||||
miner_network = MinerNetworkRange("192.168.1.1-192.168.1.38")
|
miner_network = MinerNetworkRange("192.168.1.10-192.168.1.33")
|
||||||
|
|
||||||
REFERRAL_FILE_S9 = os.path.join(os.path.dirname(__file__), "files", "referral.ipk")
|
REFERRAL_FILE_S9 = os.path.join(os.path.dirname(__file__), "files", "referral.ipk")
|
||||||
UPDATE_FILE_S9 = os.path.join(os.path.dirname(__file__), "files", "update.tar")
|
UPDATE_FILE_S9 = os.path.join(os.path.dirname(__file__), "files", "update.tar")
|
||||||
@@ -15,17 +15,10 @@ CONFIG_FILE = os.path.join(os.path.dirname(__file__), "files", "config.toml")
|
|||||||
|
|
||||||
|
|
||||||
# static states
|
# static states
|
||||||
(
|
(START, UNLOCK, INSTALL, UPDATE, REFERRAL, DONE) = range(6)
|
||||||
START,
|
|
||||||
UNLOCK,
|
|
||||||
INSTALL,
|
|
||||||
UPDATE,
|
|
||||||
REFERRAL,
|
|
||||||
DONE
|
|
||||||
) = range(6)
|
|
||||||
|
|
||||||
|
|
||||||
class testbenchMiner():
|
class testbenchMiner:
|
||||||
def __init__(self, host: ip_address):
|
def __init__(self, host: ip_address):
|
||||||
self.host = host
|
self.host = host
|
||||||
self.state = START
|
self.state = START
|
||||||
@@ -66,7 +59,8 @@ class testbenchMiner():
|
|||||||
proc = await asyncio.create_subprocess_shell(
|
proc = await asyncio.create_subprocess_shell(
|
||||||
f'{os.path.join(os.path.dirname(__file__), "files", "asicseer_installer.exe")} -p -f {str(self.host)} root',
|
f'{os.path.join(os.path.dirname(__file__), "files", "asicseer_installer.exe")} -p -f {str(self.host)} root',
|
||||||
stdout=asyncio.subprocess.PIPE,
|
stdout=asyncio.subprocess.PIPE,
|
||||||
stderr=asyncio.subprocess.PIPE)
|
stderr=asyncio.subprocess.PIPE,
|
||||||
|
)
|
||||||
stdout, stderr = await proc.communicate()
|
stdout, stderr = await proc.communicate()
|
||||||
if str(stdout).find("webUI") != -1:
|
if str(stdout).find("webUI") != -1:
|
||||||
return False
|
return False
|
||||||
@@ -76,11 +70,12 @@ class testbenchMiner():
|
|||||||
proc = await asyncio.create_subprocess_shell(
|
proc = await asyncio.create_subprocess_shell(
|
||||||
f'{os.path.join(os.path.dirname(__file__), "files", "bos-toolbox", "bos-toolbox.bat")} install {str(self.host)} --no-keep-pools --psu-power-limit 900 --no-nand-backup --feeds-url file:./feeds/',
|
f'{os.path.join(os.path.dirname(__file__), "files", "bos-toolbox", "bos-toolbox.bat")} install {str(self.host)} --no-keep-pools --psu-power-limit 900 --no-nand-backup --feeds-url file:./feeds/',
|
||||||
stdout=asyncio.subprocess.PIPE,
|
stdout=asyncio.subprocess.PIPE,
|
||||||
stderr=asyncio.subprocess.PIPE)
|
stderr=asyncio.subprocess.PIPE,
|
||||||
|
)
|
||||||
# get stdout of the install
|
# get stdout of the install
|
||||||
while True:
|
while True:
|
||||||
stdout = await proc.stderr.readuntil(b'\r')
|
stdout = await proc.stderr.readuntil(b"\r")
|
||||||
if stdout == b'':
|
if stdout == b"":
|
||||||
break
|
break
|
||||||
await proc.wait()
|
await proc.wait()
|
||||||
while not await ping_miner(self.host):
|
while not await ping_miner(self.host):
|
||||||
@@ -103,10 +98,12 @@ class testbenchMiner():
|
|||||||
miner = await MinerFactory().get_miner(self.host)
|
miner = await MinerFactory().get_miner(self.host)
|
||||||
if os.path.exists(REFERRAL_FILE_S9):
|
if os.path.exists(REFERRAL_FILE_S9):
|
||||||
try:
|
try:
|
||||||
await miner.send_file(REFERRAL_FILE_S9, '/tmp/referral.ipk')
|
await miner.send_file(REFERRAL_FILE_S9, "/tmp/referral.ipk")
|
||||||
await miner.send_file(CONFIG_FILE, '/etc/bosminer.toml')
|
await miner.send_file(CONFIG_FILE, "/etc/bosminer.toml")
|
||||||
|
|
||||||
await miner.send_ssh_command('opkg install /tmp/referral.ipk && /etc/init.d/bosminer restart')
|
await miner.send_ssh_command(
|
||||||
|
"opkg install /tmp/referral.ipk && /etc/init.d/bosminer restart"
|
||||||
|
)
|
||||||
except:
|
except:
|
||||||
self.state = START
|
self.state = START
|
||||||
return
|
return
|
||||||
@@ -124,16 +121,20 @@ class testbenchMiner():
|
|||||||
try:
|
try:
|
||||||
all_data = await miner.api.multicommand("devs", "temps", "fans")
|
all_data = await miner.api.multicommand("devs", "temps", "fans")
|
||||||
|
|
||||||
devs_raw = all_data['devs'][0]
|
devs_raw = all_data["devs"][0]
|
||||||
temps_raw = all_data['temps'][0]
|
temps_raw = all_data["temps"][0]
|
||||||
fans_raw = all_data['fans'][0]
|
fans_raw = all_data["fans"][0]
|
||||||
|
|
||||||
# parse temperature data
|
# parse temperature data
|
||||||
temps_data = {}
|
temps_data = {}
|
||||||
for board in range(len(temps_raw['TEMPS'])):
|
for board in range(len(temps_raw["TEMPS"])):
|
||||||
temps_data[f"board_{temps_raw['TEMPS'][board]['ID']}"] = {}
|
temps_data[f"board_{temps_raw['TEMPS'][board]['ID']}"] = {}
|
||||||
temps_data[f"board_{temps_raw['TEMPS'][board]['ID']}"]["Board"] = temps_raw['TEMPS'][board]['Board']
|
temps_data[f"board_{temps_raw['TEMPS'][board]['ID']}"][
|
||||||
temps_data[f"board_{temps_raw['TEMPS'][board]['ID']}"]["Chip"] = temps_raw['TEMPS'][board]['Chip']
|
"Board"
|
||||||
|
] = temps_raw["TEMPS"][board]["Board"]
|
||||||
|
temps_data[f"board_{temps_raw['TEMPS'][board]['ID']}"][
|
||||||
|
"Chip"
|
||||||
|
] = temps_raw["TEMPS"][board]["Chip"]
|
||||||
|
|
||||||
# parse individual board and chip temperature data
|
# parse individual board and chip temperature data
|
||||||
for board in temps_data.keys():
|
for board in temps_data.keys():
|
||||||
@@ -144,25 +145,27 @@ class testbenchMiner():
|
|||||||
|
|
||||||
# parse hashrate data
|
# parse hashrate data
|
||||||
hr_data = {}
|
hr_data = {}
|
||||||
for board in range(len(devs_raw['DEVS'])):
|
for board in range(len(devs_raw["DEVS"])):
|
||||||
hr_data[f"board_{devs_raw['DEVS'][board]['ID']}"] = {}
|
hr_data[f"board_{devs_raw['DEVS'][board]['ID']}"] = {}
|
||||||
hr_data[f"board_{devs_raw['DEVS'][board]['ID']}"]["HR"] = round(
|
hr_data[f"board_{devs_raw['DEVS'][board]['ID']}"]["HR"] = round(
|
||||||
devs_raw['DEVS'][board]['MHS 5s'] / 1000000,
|
devs_raw["DEVS"][board]["MHS 5s"] / 1000000, 2
|
||||||
2)
|
)
|
||||||
|
|
||||||
# parse fan data
|
# parse fan data
|
||||||
fans_data = {}
|
fans_data = {}
|
||||||
for fan in range(len(fans_raw['FANS'])):
|
for fan in range(len(fans_raw["FANS"])):
|
||||||
fans_data[f"fan_{fans_raw['FANS'][fan]['ID']}"] = {}
|
fans_data[f"fan_{fans_raw['FANS'][fan]['ID']}"] = {}
|
||||||
fans_data[f"fan_{fans_raw['FANS'][fan]['ID']}"]['RPM'] = fans_raw['FANS'][fan]['RPM']
|
fans_data[f"fan_{fans_raw['FANS'][fan]['ID']}"]["RPM"] = fans_raw[
|
||||||
|
"FANS"
|
||||||
|
][fan]["RPM"]
|
||||||
|
|
||||||
# set the miner data
|
# set the miner data
|
||||||
miner_data = {
|
miner_data = {
|
||||||
'IP': self.host,
|
"IP": self.host,
|
||||||
"Light": "show",
|
"Light": "show",
|
||||||
'Fans': fans_data,
|
"Fans": fans_data,
|
||||||
'HR': hr_data,
|
"HR": hr_data,
|
||||||
'Temps': temps_data
|
"Temps": temps_data,
|
||||||
}
|
}
|
||||||
|
|
||||||
# return stats
|
# return stats
|
||||||
|
|||||||
@@ -207,6 +207,7 @@ var ws = new WebSocket("ws://{{request.url.hostname}}:{% if request.url.port %}{
|
|||||||
// create miner graph container
|
// create miner graph container
|
||||||
var miner_graphs = document.createElement('div');
|
var miner_graphs = document.createElement('div');
|
||||||
miner_graphs.id = miner + "-graphs"
|
miner_graphs.id = miner + "-graphs"
|
||||||
|
miner_graphs.hidden = true
|
||||||
|
|
||||||
// append the rows to the column
|
// append the rows to the column
|
||||||
miner_graphs.append(row_hr)
|
miner_graphs.append(row_hr)
|
||||||
@@ -273,9 +274,11 @@ var ws = new WebSocket("ws://{{request.url.hostname}}:{% if request.url.port %}{
|
|||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (data.hasOwnProperty("HR")) {
|
else if (data.hasOwnProperty("HR")) {
|
||||||
var miner_stdout = document.getElementById(data["IP"] + "-stdout")
|
var miner_stdout = document.getElementById(data["IP"] + "-stdout")
|
||||||
miner_stdout.hidden = true
|
miner_stdout.hidden = true
|
||||||
|
var miner_graphs = document.getElementById(data["IP"] + "-graphs")
|
||||||
|
miner_graphs.hidden = false
|
||||||
var hr_graph = Chart.getChart(data["IP"] + "-hr")
|
var hr_graph = Chart.getChart(data["IP"] + "-hr")
|
||||||
var temp_graph = Chart.getChart(data["IP"] + "-temp")
|
var temp_graph = Chart.getChart(data["IP"] + "-temp")
|
||||||
var fan_1_graph = Chart.getChart(data["IP"] + "-fan-1")
|
var fan_1_graph = Chart.getChart(data["IP"] + "-fan-1")
|
||||||
@@ -326,9 +329,11 @@ var ws = new WebSocket("ws://{{request.url.hostname}}:{% if request.url.port %}{
|
|||||||
var fan_2_data = [{label: "Fan Speed", data: [fan_2_rpm, 6000-fan_2_rpm], backgroundColor: ["rgba(103, 0, 221, 1)", secondary_col_2]}]
|
var fan_2_data = [{label: "Fan Speed", data: [fan_2_rpm, 6000-fan_2_rpm], backgroundColor: ["rgba(103, 0, 221, 1)", secondary_col_2]}]
|
||||||
fan_2_graph.data.datasets = fan_2_data;
|
fan_2_graph.data.datasets = fan_2_data;
|
||||||
fan_2_graph.update();
|
fan_2_graph.update();
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
var miner_graphs = document.getElementById(data["IP"] + "-graphs")
|
||||||
|
console.log(data["IP"] + "-graphs");
|
||||||
|
console.log(miner_graphs);
|
||||||
|
// miner_graphs.hidden = true
|
||||||
console.log(data)
|
console.log(data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user