tracks boards by left/center/right now in lieu of board numbers, and works with Hive T9s and BOS S9s and X17s
This commit is contained in:
@@ -15,7 +15,7 @@ class HiveonT9(BMMiner):
|
|||||||
board_stats = await self.api.stats()
|
board_stats = await self.api.stats()
|
||||||
stats = board_stats['STATS'][1]
|
stats = board_stats['STATS'][1]
|
||||||
boards = {}
|
boards = {}
|
||||||
board_chains = {6: [2, 9, 10], 7: [3, 11, 12], 8: [4, 13, 14]}
|
board_chains = {0: [2, 9, 10], 1: [3, 11, 12], 2: [4, 13, 14]}
|
||||||
for idx, board in enumerate(board_chains):
|
for idx, board in enumerate(board_chains):
|
||||||
boards[board] = []
|
boards[board] = []
|
||||||
for chain in board_chains[board]:
|
for chain in board_chains[board]:
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ class BOSMinerX17(BOSMiner):
|
|||||||
def __init__(self, ip: str) -> None:
|
def __init__(self, ip: str) -> None:
|
||||||
super().__init__(ip)
|
super().__init__(ip)
|
||||||
self.api_type = "BOSMiner"
|
self.api_type = "BOSMiner"
|
||||||
|
self.nominal_chips = 65
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f"BOSminerX17: {str(self.ip)}"
|
return f"BOSminerX17: {str(self.ip)}"
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ class BOSMiner(BaseMiner):
|
|||||||
self.config = None
|
self.config = None
|
||||||
self.uname = 'root'
|
self.uname = 'root'
|
||||||
self.pwd = 'admin'
|
self.pwd = 'admin'
|
||||||
|
self.nominal_chips = 63
|
||||||
|
|
||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f"BOSminer: {str(self.ip)}"
|
return f"BOSminer: {str(self.ip)}"
|
||||||
@@ -117,14 +118,15 @@ class BOSMiner(BaseMiner):
|
|||||||
return {6: [], 7: [], 8: []}
|
return {6: [], 7: [], 8: []}
|
||||||
devs = devdetails['DEVDETAILS']
|
devs = devdetails['DEVDETAILS']
|
||||||
boards = {}
|
boards = {}
|
||||||
|
offset = devs[0]["ID"]
|
||||||
for board in devs:
|
for board in devs:
|
||||||
boards[board["ID"]] = []
|
boards[board["ID"] - offset] = []
|
||||||
if not board['Chips'] == 63:
|
if not board['Chips'] == self.nominal_chips:
|
||||||
nominal = False
|
nominal = False
|
||||||
else:
|
else:
|
||||||
nominal = True
|
nominal = True
|
||||||
boards[board["ID"]].append({
|
boards[board["ID"] - offset].append({
|
||||||
"chain": board["ID"],
|
"chain": board["ID"] - offset,
|
||||||
"chip_count": board['Chips'],
|
"chip_count": board['Chips'],
|
||||||
"chip_status": "o" * board['Chips'],
|
"chip_status": "o" * board['Chips'],
|
||||||
"nominal": nominal
|
"nominal": nominal
|
||||||
|
|||||||
@@ -60,20 +60,20 @@ async def refresh_data(ip_list: list):
|
|||||||
data_point = await all_data
|
data_point = await all_data
|
||||||
if data_point["IP"] in ordered_all_ips:
|
if data_point["IP"] in ordered_all_ips:
|
||||||
ip_table_index = ordered_all_ips.index(data_point["IP"])
|
ip_table_index = ordered_all_ips.index(data_point["IP"])
|
||||||
board_6 = ""
|
board_left = ""
|
||||||
board_7 = ""
|
board_center = ""
|
||||||
board_8 = ""
|
board_right = ""
|
||||||
if data_point["data"]:
|
if data_point["data"]:
|
||||||
if 6 in data_point["data"].keys():
|
if 0 in data_point["data"].keys():
|
||||||
board_6 = " ".join([chain["chip_status"] for chain in data_point["data"][6]]).replace("o", "•")
|
board_left = " ".join([chain["chip_status"] for chain in data_point["data"][0]]).replace("o", "•")
|
||||||
else:
|
else:
|
||||||
row_colors.append((ip_table_index, "white", "red"))
|
row_colors.append((ip_table_index, "white", "red"))
|
||||||
if 7 in data_point["data"].keys():
|
if 1 in data_point["data"].keys():
|
||||||
board_7 = " ".join([chain["chip_status"] for chain in data_point["data"][7]]).replace("o", "•")
|
board_center = " ".join([chain["chip_status"] for chain in data_point["data"][1]]).replace("o", "•")
|
||||||
else:
|
else:
|
||||||
row_colors.append((ip_table_index, "white", "red"))
|
row_colors.append((ip_table_index, "white", "red"))
|
||||||
if 8 in data_point["data"].keys():
|
if 2 in data_point["data"].keys():
|
||||||
board_8 = " ".join([chain["chip_status"] for chain in data_point["data"][8]]).replace("o", "•")
|
board_right = " ".join([chain["chip_status"] for chain in data_point["data"][2]]).replace("o", "•")
|
||||||
else:
|
else:
|
||||||
row_colors.append((ip_table_index, "white", "red"))
|
row_colors.append((ip_table_index, "white", "red"))
|
||||||
if False in [chain["nominal"] for chain in [data_point["data"][key] for key in data_point["data"].keys()][0]]:
|
if False in [chain["nominal"] for chain in [data_point["data"][key] for key in data_point["data"].keys()][0]]:
|
||||||
@@ -84,12 +84,12 @@ async def refresh_data(ip_list: list):
|
|||||||
data = [
|
data = [
|
||||||
data_point["IP"],
|
data_point["IP"],
|
||||||
data_point["model"],
|
data_point["model"],
|
||||||
len(board_6),
|
len(board_left),
|
||||||
board_6,
|
board_left,
|
||||||
len(board_7),
|
len(board_center),
|
||||||
board_7,
|
board_center,
|
||||||
len(board_8),
|
len(board_right),
|
||||||
board_8
|
board_right
|
||||||
]
|
]
|
||||||
ip_table_data[ip_table_index] = data
|
ip_table_data[ip_table_index] = data
|
||||||
window["ip_table"].update(ip_table_data, row_colors=row_colors)
|
window["ip_table"].update(ip_table_data, row_colors=row_colors)
|
||||||
@@ -138,20 +138,20 @@ async def scan_and_get_data(network):
|
|||||||
data_point = await all_data
|
data_point = await all_data
|
||||||
if data_point["IP"] in ordered_all_ips:
|
if data_point["IP"] in ordered_all_ips:
|
||||||
ip_table_index = ordered_all_ips.index(data_point["IP"])
|
ip_table_index = ordered_all_ips.index(data_point["IP"])
|
||||||
board_6 = ""
|
board_left = ""
|
||||||
board_7 = ""
|
board_center = ""
|
||||||
board_8 = ""
|
board_right = ""
|
||||||
if data_point["data"]:
|
if data_point["data"]:
|
||||||
if 6 in data_point["data"].keys():
|
if 0 in data_point["data"].keys():
|
||||||
board_6 = " ".join([chain["chip_status"] for chain in data_point["data"][6]]).replace("o", "•")
|
board_left = " ".join([chain["chip_status"] for chain in data_point["data"][0]]).replace("o", "•")
|
||||||
else:
|
else:
|
||||||
row_colors.append((ip_table_index, "white", "red"))
|
row_colors.append((ip_table_index, "white", "red"))
|
||||||
if 7 in data_point["data"].keys():
|
if 1 in data_point["data"].keys():
|
||||||
board_7 = " ".join([chain["chip_status"] for chain in data_point["data"][7]]).replace("o", "•")
|
board_center = " ".join([chain["chip_status"] for chain in data_point["data"][1]]).replace("o", "•")
|
||||||
else:
|
else:
|
||||||
row_colors.append((ip_table_index, "white", "red"))
|
row_colors.append((ip_table_index, "white", "red"))
|
||||||
if 8 in data_point["data"].keys():
|
if 2 in data_point["data"].keys():
|
||||||
board_8 = " ".join([chain["chip_status"] for chain in data_point["data"][8]]).replace("o", "•")
|
board_right = " ".join([chain["chip_status"] for chain in data_point["data"][2]]).replace("o", "•")
|
||||||
else:
|
else:
|
||||||
row_colors.append((ip_table_index, "white", "red"))
|
row_colors.append((ip_table_index, "white", "red"))
|
||||||
if False in [chain["nominal"] for chain in [data_point["data"][key] for key in data_point["data"].keys()][0]]:
|
if False in [chain["nominal"] for chain in [data_point["data"][key] for key in data_point["data"].keys()][0]]:
|
||||||
@@ -162,12 +162,12 @@ async def scan_and_get_data(network):
|
|||||||
data = [
|
data = [
|
||||||
data_point["IP"],
|
data_point["IP"],
|
||||||
data_point["model"],
|
data_point["model"],
|
||||||
len(board_6),
|
len(board_left),
|
||||||
board_6,
|
board_left,
|
||||||
len(board_7),
|
len(board_center),
|
||||||
board_7,
|
board_center,
|
||||||
len(board_8),
|
len(board_right),
|
||||||
board_8
|
board_right
|
||||||
]
|
]
|
||||||
ip_table_data[ip_table_index] = data
|
ip_table_data[ip_table_index] = data
|
||||||
window["ip_table"].update(ip_table_data, row_colors=row_colors)
|
window["ip_table"].update(ip_table_data, row_colors=row_colors)
|
||||||
|
|||||||
@@ -29,7 +29,16 @@ layout = [
|
|||||||
[sg.Table(
|
[sg.Table(
|
||||||
values=[],
|
values=[],
|
||||||
font=("Arial", 9),
|
font=("Arial", 9),
|
||||||
headings=["IP", "Model", "6 Count", "Board 6 Chips", "7 Count", "Board 7 Chips", "8 Count", "Board 8 Chips"],
|
headings=[
|
||||||
|
"IP",
|
||||||
|
"Model",
|
||||||
|
"L Count",
|
||||||
|
"Left Board Chips",
|
||||||
|
"C Count",
|
||||||
|
"Center Board Chips",
|
||||||
|
"R Count",
|
||||||
|
"Right Board Chips"
|
||||||
|
],
|
||||||
auto_size_columns=False,
|
auto_size_columns=False,
|
||||||
max_col_width=15,
|
max_col_width=15,
|
||||||
justification="center",
|
justification="center",
|
||||||
|
|||||||
Reference in New Issue
Block a user