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

View File

@@ -1,10 +1,10 @@
from miners import BaseMiner
class Avalon821(BaseMiner):
class Avalon921(BaseMiner):
def __init__(self, ip: str):
super().__init__()
self.ip = ip
self.model = "Avalon 821"
self.model = "Avalon 921"
self.chip_count = 26 # This miner has 4 boards totaling 104
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 .A9X import *
from .A10X import *

View File

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

View File

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

View File

@@ -176,6 +176,46 @@ MINER_CLASSES = {
"Default": 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,14 +296,13 @@ class MinerFactory(metaclass=Singleton):
if not api:
api = "Default"
# Avalonminers
if model not in MINER_CLASSES.keys():
if "avalon" in model:
print(model)
if model == "avalon10":
miner = CGMinerAvalon1066(str(ip))
else:
miner = CGMinerAvalon821(str(ip))
else:
if model not in MINER_CLASSES.keys():
miner = UnknownMiner(str(ip))
return miner
if api not in MINER_CLASSES[model].keys():
@@ -407,6 +446,18 @@ class MinerFactory(metaclass=Singleton):
):
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 version and not model:
# make sure version isn't blank