Compare commits

...

4 Commits

Author SHA1 Message Date
UpstreamData
2734caa9da added (BOS) tag to braiins miners scanned 2022-01-07 15:33:40 -07:00
UpstreamData
d9ecdfc9d7 fixe a bug with older versions of braiins sometimes being buggy with versioning 2022-01-07 15:25:11 -07:00
UpstreamData
fa88bea376 switched over to GH/s av and MH/s av for hashrate 2022-01-06 14:44:26 -08:00
UpstreamData
25803b856d fixed an issue with getting model causing an error because of whatsminers 2022-01-07 13:45:23 -07:00
4 changed files with 24 additions and 17 deletions

View File

@@ -3,7 +3,7 @@ import ipaddress
import time import time
import warnings import warnings
from API import APIError, APIWarning from API import APIError
from cfg_util.func.parse_data import safe_parse_api_data from cfg_util.func.parse_data import safe_parse_api_data
from cfg_util.func.ui import update_ui_with_data, update_prog_bar, set_progress_bar_len from cfg_util.func.ui import update_ui_with_data, update_prog_bar, set_progress_bar_len
from cfg_util.layout import window from cfg_util.layout import window
@@ -129,7 +129,7 @@ async def get_data(ip_list: list):
progress_bar_len += 1 progress_bar_len += 1
asyncio.create_task(update_prog_bar(progress_bar_len)) asyncio.create_task(update_prog_bar(progress_bar_len))
hashrate_list = [float(item[3].replace(" TH/s", "")) for item in window["ip_table"].Values if not item[3] == ''] hashrate_list = [float(item[3].replace(" TH/s", "")) if not item[3] == '' else 0 for item in window["ip_table"].Values]
total_hr = round(sum(hashrate_list), 2) total_hr = round(sum(hashrate_list), 2)
window["hr_total"].update(f"{total_hr} TH/s") window["hr_total"].update(f"{total_hr} TH/s")
@@ -200,11 +200,11 @@ async def get_formatted_data(ip: ipaddress.ip_address):
if "Temperature" in miner_data['summary'][0]['SUMMARY'][0].keys(): if "Temperature" in miner_data['summary'][0]['SUMMARY'][0].keys():
if not round(miner_data['summary'][0]['SUMMARY'][0]["Temperature"]) == 0: if not round(miner_data['summary'][0]['SUMMARY'][0]["Temperature"]) == 0:
temps = miner_data['summary'][0]['SUMMARY'][0]["Temperature"] temps = miner_data['summary'][0]['SUMMARY'][0]["Temperature"]
if 'MHS 5s' in miner_data['summary'][0]['SUMMARY'][0].keys(): if 'MHS av' in miner_data['summary'][0]['SUMMARY'][0].keys():
th5s = round(await safe_parse_api_data(miner_data, 'summary', 0, 'SUMMARY', 0, 'MHS 5s') / 1000000, 2) th5s = round(await safe_parse_api_data(miner_data, 'summary', 0, 'SUMMARY', 0, 'MHS av') / 1000000, 2)
elif 'GHS 5s' in miner_data['summary'][0]['SUMMARY'][0].keys(): elif 'GHS av' in miner_data['summary'][0]['SUMMARY'][0].keys():
if not miner_data['summary'][0]['SUMMARY'][0]['GHS 5s'] == "": if not miner_data['summary'][0]['SUMMARY'][0]['GHS av'] == "":
th5s = round(float(await safe_parse_api_data(miner_data, 'summary', 0, 'SUMMARY', 0, 'GHS 5s')) / 1000, th5s = round(float(await safe_parse_api_data(miner_data, 'summary', 0, 'SUMMARY', 0, 'GHS av')) / 1000,
2) 2)
else: else:
th5s = 0 th5s = 0

View File

@@ -89,11 +89,11 @@ class BOSminer(BaseMiner):
async def get_model(self): async def get_model(self):
if self.model: if self.model:
return self.model return self.model + " (BOS)"
version_data = await self.api.devdetails() version_data = await self.api.devdetails()
if version_data: if version_data:
self.model = version_data["DEVDETAILS"][0]["Model"].replace("Antminer ", "") self.model = version_data["DEVDETAILS"][0]["Model"].replace("Antminer ", "")
return self.model return self.model + " (BOS)"
return None return None
async def send_config(self, yaml_config) -> None: async def send_config(self, yaml_config) -> None:

View File

@@ -66,7 +66,7 @@ class MinerFactory:
break break
if model: if model:
if "Antminer" in model: if "Antminer" in model:
if model == "Antminer S9": if "Antminer S9" in model:
if "BOSMiner" in api: if "BOSMiner" in api:
miner = BOSMinerS9(str(ip)) miner = BOSMinerS9(str(ip))
elif "CGMiner" in api: elif "CGMiner" in api:
@@ -107,14 +107,21 @@ class MinerFactory:
try: try:
data = await self._send_api_command(str(ip), "devdetails") data = await self._send_api_command(str(ip), "devdetails")
if data.get("STATUS"): if data.get("STATUS"):
if data["STATUS"][0].get("STATUS") not in ["I", "S"]: if not isinstance(data["STATUS"], str):
if data["STATUS"][0].get("STATUS") not in ["I", "S"]:
try:
data = await self._send_api_command(str(ip), "version")
model = data["VERSION"][0]["Type"]
except:
print(f"Get Model Exception: {ip}")
else:
model = data["DEVDETAILS"][0]["Model"]
else:
try: try:
data = await self._send_api_command(str(ip), "version") data = await self._send_api_command(str(ip), "version")
model = data["VERSION"][0]["Type"] model = data["VERSION"][0]["Type"]
except: except:
print(f"Get Model Exception: {ip}") print(f"Get Model Exception: {ip}")
else:
model = data["DEVDETAILS"][0]["Model"]
if model: if model:
return model return model
except OSError as e: except OSError as e:
@@ -190,11 +197,11 @@ class MinerFactory:
data = await self._send_api_command(str(ip), "version") data = await self._send_api_command(str(ip), "version")
if data.get("STATUS") and not data.get("STATUS") == "E": if data.get("STATUS") and not data.get("STATUS") == "E":
if data["STATUS"][0].get("STATUS") in ["I", "S"]: if data["STATUS"][0].get("STATUS") in ["I", "S"]:
if "BMMiner" in data["VERSION"][0].keys(): if any("BMMiner" in string for string in data["VERSION"][0].keys()):
api = "BMMiner" api = "BMMiner"
elif "CGMiner" in data["VERSION"][0].keys(): elif any("CGMiner" in string for string in data["VERSION"][0].keys()):
api = "CGMiner" api = "CGMiner"
elif "BOSminer" in data["VERSION"][0].keys() or "BOSminer+" in data["VERSION"][0].keys(): elif any("BOSminer" in string for string in data["VERSION"][0].keys()):
api = "BOSMiner" api = "BOSMiner"
elif data.get("Description") and "whatsminer" in data.get("Description"): elif data.get("Description") and "whatsminer" in data.get("Description"):
api = "BTMiner" api = "BTMiner"

View File

@@ -10,7 +10,7 @@ class UnknownMiner(BaseMiner):
def __repr__(self) -> str: def __repr__(self) -> str:
return f"Unknown: {str(self.ip)}" return f"Unknown: {str(self.ip)}"
def get_model(self): async def get_model(self):
return "Unknown" return "Unknown"
async def send_config(self, _): async def send_config(self, _):