slightly improved getting data from bmminer X9, X17, and X19 with an improvement to finding offset

This commit is contained in:
UpstreamData
2022-05-27 11:47:44 -06:00
parent ad4b710cb7
commit 69820dd9d2

View File

@@ -130,8 +130,8 @@ class BMMiner(BaseMiner):
async def get_data(self) -> MinerData: async def get_data(self) -> MinerData:
data = MinerData(ip=str(self.ip), ideal_chips=self.nominal_chips * 3) data = MinerData(ip=str(self.ip), ideal_chips=self.nominal_chips * 3)
board_offset = 1 board_offset = -1
fan_offset = 1 fan_offset = -1
model = await self.get_model() model = await self.get_model()
hostname = await self.get_hostname() hostname = await self.get_hostname()
@@ -167,12 +167,14 @@ class BMMiner(BaseMiner):
boards = stats.get("STATS") boards = stats.get("STATS")
if boards: if boards:
if len(boards) > 0: if len(boards) > 0:
for board_num in range(16): for board_num in range(1, 16, 5):
if ( for _b_num in range(5):
not boards[1].get(f"chain_acn{board_num+1}") == 0 b = stats[1].get(f"fan{board_num + _b_num}")
and board_offset == 1
): if b and not b == 0 and board_offset == -1:
board_offset = board_num + 1 board_offset = board_num
if board_offset == -1:
board_offset = 1
data.left_chips = boards[1].get(f"chain_acn{board_offset}") data.left_chips = boards[1].get(f"chain_acn{board_offset}")
data.center_chips = boards[1].get(f"chain_acn{board_offset+1}") data.center_chips = boards[1].get(f"chain_acn{board_offset+1}")
@@ -182,9 +184,13 @@ class BMMiner(BaseMiner):
temp = stats.get("STATS") temp = stats.get("STATS")
if temp: if temp:
if len(temp) > 1: if len(temp) > 1:
for fan_num in range(8): for fan_num in range(1, 8, 4):
if not temp[1].get(f"fan{fan_num+1}") == 0 and fan_offset == 1: for _f_num in range(4):
fan_offset = fan_num + 1 f = temp[1].get(f"fan{fan_num + _f_num}")
if f and not f == 0 and fan_offset == -1:
fan_offset = fan_num
if fan_offset == -1:
fan_offset = 1
for fan in range(self.fan_count): for fan in range(self.fan_count):
setattr( setattr(
data, f"fan_{fan + 1}", temp[1].get(f"fan{fan_offset+fan}") data, f"fan_{fan + 1}", temp[1].get(f"fan{fan_offset+fan}")