started adding the board utility

This commit is contained in:
UpstreamData
2022-01-24 16:29:21 -07:00
parent 465d0e6f1c
commit ae911ec775
16 changed files with 531 additions and 48 deletions

View File

@@ -10,36 +10,32 @@ class HiveonT9(BMMiner):
def __repr__(self) -> str:
return f"HiveonT9: {str(self.ip)}"
async def get_board_info(self) -> list:
async def get_board_info(self) -> dict:
"""Gets data on each board and chain in the miner."""
board_stats = await self.api.stats()
stats = board_stats['STATS'][1]
boards = []
boards = {}
board_chains = {6: [2, 9, 10], 7: [3, 11, 12], 8: [4, 13, 14]}
for idx, board in enumerate(board_chains):
boards.append({"board": board, "chains": []})
boards[board] = []
for chain in board_chains[board]:
count = stats[f"chain_acn{chain}"]
chips = stats[f"chain_acs{chain}"].replace(" ", "")
boards[idx]["chains"].append({
boards[board].append({
"chain": chain,
"chip_count": count,
"chip_status": chips
})
return boards
async def get_bad_boards(self) -> list:
async def get_bad_boards(self) -> dict:
"""Checks for and provides list of non working boards."""
boards = await self.get_board_info()
bad_boards = []
idx = 0
for board in boards:
bad_boards.append({"board": board["board"], "chains": []})
for chain in board["chains"]:
bad_boards = {}
for board in boards.keys():
for chain in boards[board]:
if not chain["chip_count"] == 18 or "x" in chain["chip_status"]:
bad_boards[idx]["chains"].append(chain)
if not bad_boards[idx]["chains"]:
del bad_boards[idx]
idx -= 1
idx += 1
return bad_boards
if board not in bad_boards.keys():
bad_boards[board] = []
bad_boards[board].append(chain)
return bad_boards

View File

@@ -80,3 +80,7 @@ class BMMiner(BaseMiner):
async def get_config(self) -> None:
return None
async def get_board_info(self):
return None

View File

@@ -109,36 +109,33 @@ class BOSMiner(BaseMiner):
await file.write(toml_conf)
await conn.run("/etc/init.d/bosminer restart")
async def get_board_info(self) -> list:
async def get_board_info(self) -> dict:
"""Gets data on each board and chain in the miner."""
devdetails = await self.api.devdetails()
devs = devdetails['DEVDETAILS']
boards = []
for idx, board in enumerate(devs):
boards.append({"board": board["ID"], "chains": []})
boards[idx]["chains"].append({
boards = {}
for board in devs:
boards[board["ID"]] = []
boards[board["ID"]].append({
"chain": board["ID"],
"chip_count": board['Chips'],
"chip_status": "o" * board['Chips']
})
return boards
async def get_bad_boards(self) -> list:
async def get_bad_boards(self) -> dict:
"""Checks for and provides list of non working boards."""
boards = await self.get_board_info()
bad_boards = []
idx = 0
for board in boards:
bad_boards.append({"board": board["board"], "chains": []})
for chain in board["chains"]:
bad_boards = {}
for board in boards.keys():
for chain in boards[board]:
if not chain["chip_count"] == 63:
bad_boards[idx]["chains"].append(chain)
if not bad_boards[idx]["chains"]:
del bad_boards[idx]
idx -= 1
idx += 1
if board not in bad_boards.keys():
bad_boards[board] = []
bad_boards[board].append(chain)
return bad_boards
async def check_good_boards(self) -> str:
"""Checks for and provides list for working boards."""
devs = await self.api.devdetails()

View File

@@ -40,3 +40,6 @@ class BTMiner(BaseMiner):
async def get_config(self) -> None:
return None
async def get_board_info(self):
return None

View File

@@ -136,3 +136,6 @@ class CGMiner(BaseMiner):
self._result_handler(result)
self.config = result.stdout
print(str(self.config))
async def get_board_info(self):
return None

View File

@@ -18,3 +18,6 @@ class UnknownMiner(BaseMiner):
async def get_hostname(self):
return "Unknown"
async def get_board_info(self):
return None