feat: add VolcMiner D1 (#263)
This commit is contained in:
@@ -28,6 +28,7 @@ class MinerMake(str, Enum):
|
||||
BITAXE = "BitAxe"
|
||||
ICERIVER = "IceRiver"
|
||||
HAMMER = "Hammer"
|
||||
VOLCMINER = "VolcMiner"
|
||||
BRAIINS = "Braiins"
|
||||
|
||||
def __str__(self):
|
||||
|
||||
@@ -381,6 +381,13 @@ class HammerModels(MinerModelType):
|
||||
return self.value
|
||||
|
||||
|
||||
class VolcMinerModels(MinerModelType):
|
||||
D1 = "D1"
|
||||
|
||||
def __str__(self):
|
||||
return self.value
|
||||
|
||||
|
||||
class BraiinsModels(MinerModelType):
|
||||
BMM100 = "BMM100"
|
||||
BMM101 = "BMM101"
|
||||
@@ -397,4 +404,5 @@ class MinerModel:
|
||||
BITAXE = BitAxeModels
|
||||
ICERIVER = IceRiverModels
|
||||
HAMMER = HammerModels
|
||||
VOLCMINER = VolcMinerModels
|
||||
BRAIINS = BraiinsModels
|
||||
|
||||
@@ -58,5 +58,9 @@ class HammerMake(BaseMiner):
|
||||
make = MinerMake.HAMMER
|
||||
|
||||
|
||||
class VolcMinerMake(BaseMiner):
|
||||
make = MinerMake.VOLCMINER
|
||||
|
||||
|
||||
class BraiinsMake(BaseMiner):
|
||||
make = MinerMake.BRAIINS
|
||||
|
||||
@@ -23,4 +23,5 @@ from .goldshell import *
|
||||
from .hammer import *
|
||||
from .iceriver import *
|
||||
from .innosilicon import *
|
||||
from .volcminer import *
|
||||
from .whatsminer import *
|
||||
|
||||
27
pyasic/miners/device/models/volcminer/DX/D1.py
Normal file
27
pyasic/miners/device/models/volcminer/DX/D1.py
Normal file
@@ -0,0 +1,27 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
# Copyright 2024 Upstream Data Inc -
|
||||
# -
|
||||
# Licensed under the Apache License, Version 2.0 (the "License"); -
|
||||
# you may not use this file except in compliance with the License. -
|
||||
# You may obtain a copy of the License at -
|
||||
# -
|
||||
# http://www.apache.org/licenses/LICENSE-2.0 -
|
||||
# -
|
||||
# Unless required by applicable law or agreed to in writing, software -
|
||||
# distributed under the License is distributed on an "AS IS" BASIS, -
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -
|
||||
# See the License for the specific language governing permissions and -
|
||||
# limitations under the License. -
|
||||
# ------------------------------------------------------------------------------
|
||||
from pyasic.device.algorithm import MinerAlgo
|
||||
from pyasic.device.models import MinerModel
|
||||
from pyasic.miners.device.makes import VolcMinerMake
|
||||
|
||||
|
||||
class D1(VolcMinerMake):
|
||||
raw_model = MinerModel.VOLCMINER.D1
|
||||
|
||||
expected_chips = 105
|
||||
expected_hashboards = 3
|
||||
expected_fans = 4
|
||||
algo = MinerAlgo.SCRYPT
|
||||
1
pyasic/miners/device/models/volcminer/DX/__init__.py
Normal file
1
pyasic/miners/device/models/volcminer/DX/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .D1 import D1
|
||||
1
pyasic/miners/device/models/volcminer/__init__.py
Normal file
1
pyasic/miners/device/models/volcminer/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .DX import *
|
||||
@@ -41,6 +41,7 @@ from pyasic.miners.goldshell import *
|
||||
from pyasic.miners.hammer import *
|
||||
from pyasic.miners.iceriver import *
|
||||
from pyasic.miners.innosilicon import *
|
||||
from pyasic.miners.volcminer import *
|
||||
from pyasic.miners.whatsminer import *
|
||||
|
||||
|
||||
@@ -60,6 +61,7 @@ class MinerTypes(enum.Enum):
|
||||
BITAXE = 12
|
||||
ICERIVER = 13
|
||||
HAMMER = 14
|
||||
VOLCMINER = 15
|
||||
|
||||
|
||||
MINER_CLASSES = {
|
||||
@@ -494,6 +496,10 @@ MINER_CLASSES = {
|
||||
None: type("HammerUnknown", (BlackMiner, HammerMake), {}),
|
||||
"HAMMER D10": HammerD10,
|
||||
},
|
||||
MinerTypes.VOLCMINER: {
|
||||
None: type("VolcMinerUnknown", (BlackMiner, VolcMinerMake), {}),
|
||||
"VOLCMINER D1": VolcMinerD1,
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -573,6 +579,7 @@ class MinerFactory:
|
||||
MinerTypes.BITAXE: self.get_miner_model_bitaxe,
|
||||
MinerTypes.ICERIVER: self.get_miner_model_iceriver,
|
||||
MinerTypes.HAMMER: self.get_miner_model_hammer,
|
||||
MinerTypes.VOLCMINER: self.get_miner_model_volcminer,
|
||||
}
|
||||
fn = miner_model_fns.get(miner_type)
|
||||
|
||||
@@ -620,6 +627,12 @@ class MinerFactory:
|
||||
res = await self.send_web_command(ip, "/kaonsu/v1/brief", auth=auth)
|
||||
if res is not None:
|
||||
mtype = MinerTypes.MARATHON
|
||||
if mtype == MinerTypes.HAMMER:
|
||||
res = await self.get_miner_model_hammer(ip)
|
||||
if "HAMMER" in res.upper():
|
||||
mtype = MinerTypes.HAMMER
|
||||
else:
|
||||
mtype = MinerTypes.VOLCMINER
|
||||
return mtype
|
||||
|
||||
@staticmethod
|
||||
@@ -1171,6 +1184,21 @@ class MinerFactory:
|
||||
except (TypeError, LookupError):
|
||||
pass
|
||||
|
||||
async def get_miner_model_volcminer(self, ip: str) -> str | None:
|
||||
auth = httpx.DigestAuth(
|
||||
"root", settings.get("default_volcminer_web_password", "root")
|
||||
)
|
||||
web_json_data = await self.send_web_command(
|
||||
ip, "/cgi-bin/get_system_info.cgi", auth=auth
|
||||
)
|
||||
|
||||
try:
|
||||
miner_model = web_json_data["minertype"]
|
||||
|
||||
return miner_model
|
||||
except (TypeError, LookupError):
|
||||
pass
|
||||
|
||||
|
||||
miner_factory = MinerFactory()
|
||||
|
||||
|
||||
1
pyasic/miners/volcminer/__init__.py
Normal file
1
pyasic/miners/volcminer/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .blackminer import *
|
||||
6
pyasic/miners/volcminer/blackminer/DX/D1.py
Normal file
6
pyasic/miners/volcminer/blackminer/DX/D1.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from pyasic.miners.backends import BlackMiner
|
||||
from pyasic.miners.device.models import D1
|
||||
|
||||
|
||||
class VolcMinerD1(BlackMiner, D1):
|
||||
sticker_hashrate = 15150
|
||||
1
pyasic/miners/volcminer/blackminer/DX/__init__.py
Normal file
1
pyasic/miners/volcminer/blackminer/DX/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .D1 import VolcMinerD1
|
||||
1
pyasic/miners/volcminer/blackminer/__init__.py
Normal file
1
pyasic/miners/volcminer/blackminer/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
from .DX import *
|
||||
@@ -31,7 +31,8 @@ _settings = { # defaults
|
||||
"default_whatsminer_rpc_password": "admin",
|
||||
"default_innosilicon_web_password": "admin",
|
||||
"default_antminer_web_password": "root",
|
||||
"default_hammer_web_password": "root",
|
||||
"default_hammer_web_password": "ltc@dog",
|
||||
"default_volcminer_web_password": "ltc@dog",
|
||||
"default_bosminer_web_password": "root",
|
||||
"default_vnish_web_password": "admin",
|
||||
"default_goldshell_web_password": "123456789",
|
||||
|
||||
Reference in New Issue
Block a user