finish adding support for a bunch of new avalonminers

This commit is contained in:
UpstreamData
2022-06-09 14:38:51 -06:00
parent 078579d8e1
commit f7309decdb
7 changed files with 78 additions and 22 deletions

View File

@@ -33,7 +33,7 @@ class CGMiner(BaseMiner):
return self.model return self.model
return None return None
async def get_hostname(self) -> str: async def get_hostname(self) -> str or None:
if self.hostname: if self.hostname:
return self.hostname return self.hostname
try: try:
@@ -44,9 +44,9 @@ class CGMiner(BaseMiner):
self.hostname = host self.hostname = host
return self.hostname return self.hostname
else: else:
return "?" return None
except Exception: except Exception:
return "?" return None
async def send_ssh_command(self, cmd): async def send_ssh_command(self, cmd):
result = None result = None

View File

@@ -1,10 +1,10 @@
from miners import BaseMiner from miners import BaseMiner
class Avalon821(BaseMiner): class Avalon921(BaseMiner):
def __init__(self, ip: str): def __init__(self, ip: str):
super().__init__() super().__init__()
self.ip = ip self.ip = ip
self.model = "Avalon 821" self.model = "Avalon 921"
self.chip_count = 26 # This miner has 4 boards totaling 104 self.chip_count = 26 # This miner has 4 boards totaling 104
self.fan_count = 1 # also only 1 fan self.fan_count = 1 # also only 1 fan

View File

@@ -0,0 +1 @@
from .A921 import Avalon921

View File

@@ -1,2 +1,4 @@
from .A7X import *
from .A8X import * from .A8X import *
from .A9X import *
from .A10X import * from .A10X import *

View File

@@ -196,7 +196,7 @@ class CGMinerAvalon841(CGMiner, Avalon841):
mac = await self.get_mac() mac = await self.get_mac()
if mac: if mac:
data.mac = mac data.mac = mac
if hostname and not hostname == "?": if hostname:
data.hostname = hostname data.hostname = hostname
elif mac: elif mac:
data.hostname = f"Avalon{mac.replace(':', '')[-6:]}" data.hostname = f"Avalon{mac.replace(':', '')[-6:]}"

View File

@@ -1,2 +1,4 @@
from .A7X import *
from .A8X import * from .A8X import *
from .A9X import *
from .A10X import * from .A10X import *

View File

@@ -176,6 +176,46 @@ MINER_CLASSES = {
"Default": BTMinerM32S, "Default": BTMinerM32S,
"BTMiner": BTMinerM32S, "BTMiner": BTMinerM32S,
}, },
"AvalonMiner 721": {
"Default": CGMinerAvalon721,
"CGMiner": CGMinerAvalon721,
},
"AvalonMiner 741": {
"Default": CGMinerAvalon741,
"CGMiner": CGMinerAvalon741,
},
"AvalonMiner 761": {
"Default": CGMinerAvalon761,
"CGMiner": CGMinerAvalon761,
},
"AvalonMiner 821": {
"Default": CGMinerAvalon821,
"CGMiner": CGMinerAvalon821,
},
"AvalonMiner 841": {
"Default": CGMinerAvalon841,
"CGMiner": CGMinerAvalon841,
},
"AvalonMiner 851": {
"Default": CGMinerAvalon851,
"CGMiner": CGMinerAvalon851,
},
"AvalonMiner 921": {
"Default": CGMinerAvalon921,
"CGMiner": CGMinerAvalon921,
},
"AvalonMiner 1026": {
"Default": CGMinerAvalon1026,
"CGMiner": CGMinerAvalon1026,
},
"AvalonMiner 1047": {
"Default": CGMinerAvalon1047,
"CGMiner": CGMinerAvalon1047,
},
"AvalonMiner 1066": {
"Default": CGMinerAvalon1066,
"CGMiner": CGMinerAvalon1066,
},
} }
@@ -256,22 +296,21 @@ class MinerFactory(metaclass=Singleton):
if not api: if not api:
api = "Default" api = "Default"
# Avalonminers if model not in MINER_CLASSES.keys():
if "avalon" in model: if "avalon" in model:
if model == "avalon10": print(model)
miner = CGMinerAvalon1066(str(ip)) if model == "avalon10":
else: miner = CGMinerAvalon1066(str(ip))
miner = CGMinerAvalon821(str(ip)) else:
else: miner = CGMinerAvalon821(str(ip))
if model not in MINER_CLASSES.keys(): miner = UnknownMiner(str(ip))
miner = UnknownMiner(str(ip)) return miner
return miner if api not in MINER_CLASSES[model].keys():
if api not in MINER_CLASSES[model].keys(): api = "Default"
api = "Default" if ver in MINER_CLASSES[model].keys():
if ver in MINER_CLASSES[model].keys(): miner = MINER_CLASSES[model][ver](str(ip))
miner = MINER_CLASSES[model][ver](str(ip)) return miner
return miner miner = MINER_CLASSES[model][api](str(ip))
miner = MINER_CLASSES[model][api](str(ip))
# if we cant find a model, check if we found the API # if we cant find a model, check if we found the API
else: else:
@@ -407,6 +446,18 @@ class MinerFactory(metaclass=Singleton):
): ):
api = "BTMiner" api = "BTMiner"
# check for avalonminers
if version["VERSION"][0].get("PROD"):
_data = version["VERSION"][0]["PROD"].split("-")
model = _data[0]
if len(data) > 1:
ver = _data[1]
elif version["VERSION"][0].get("MODEL"):
_data = version["VERSION"][0]["MODEL"].split("-")
model = f"AvalonMiner {_data[0]}"
if len(data) > 1:
ver = _data[1]
# if we have no model from devdetails but have version, try to get it from there # if we have no model from devdetails but have version, try to get it from there
if version and not model: if version and not model:
# make sure version isn't blank # make sure version isn't blank