feature: add support for S21+ hydro (#326)
This commit is contained in:
@@ -53,6 +53,19 @@
|
|||||||
show_root_heading: false
|
show_root_heading: false
|
||||||
heading_level: 0
|
heading_level: 0
|
||||||
|
|
||||||
|
## S21+ Hydro (Stock)
|
||||||
|
|
||||||
|
- [x] Shutdowns
|
||||||
|
- [x] Power Modes
|
||||||
|
- [ ] Setpoints
|
||||||
|
- [ ] Presets
|
||||||
|
|
||||||
|
::: pyasic.miners.antminer.bmminer.X21.S21.BMMinerS21PlusHydro
|
||||||
|
handler: python
|
||||||
|
options:
|
||||||
|
show_root_heading: false
|
||||||
|
heading_level: 0
|
||||||
|
|
||||||
## T21 (Stock)
|
## T21 (Stock)
|
||||||
|
|
||||||
- [x] Shutdowns
|
- [x] Shutdowns
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ details {
|
|||||||
<li><a href="../antminer/X21#s21-stock">S21 (Stock)</a></li>
|
<li><a href="../antminer/X21#s21-stock">S21 (Stock)</a></li>
|
||||||
<li><a href="../antminer/X21#s21-stock">S21 (Stock)</a></li>
|
<li><a href="../antminer/X21#s21-stock">S21 (Stock)</a></li>
|
||||||
<li><a href="../antminer/X21#s21_1-stock">S21+ (Stock)</a></li>
|
<li><a href="../antminer/X21#s21_1-stock">S21+ (Stock)</a></li>
|
||||||
|
<li><a href="../antminer/X21#s21_1-hydro-stock">S21+ Hydro (Stock)</a></li>
|
||||||
<li><a href="../antminer/X21#s21-pro-stock">S21 Pro (Stock)</a></li>
|
<li><a href="../antminer/X21#s21-pro-stock">S21 Pro (Stock)</a></li>
|
||||||
<li><a href="../antminer/X21#t21-stock">T21 (Stock)</a></li>
|
<li><a href="../antminer/X21#t21-stock">T21 (Stock)</a></li>
|
||||||
<li><a href="../antminer/X21#s21-hydro-stock">S21 Hydro (Stock)</a></li>
|
<li><a href="../antminer/X21#s21-hydro-stock">S21 Hydro (Stock)</a></li>
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ class HashBoard(BaseModel):
|
|||||||
Attributes:
|
Attributes:
|
||||||
slot: The slot of the board as an int.
|
slot: The slot of the board as an int.
|
||||||
hashrate: The hashrate of the board in TH/s as a float.
|
hashrate: The hashrate of the board in TH/s as a float.
|
||||||
|
inlet_temp: Inlet temperature for hydro asics as an int
|
||||||
|
outlet_temp: Outlet temperature for hydro asics as an int
|
||||||
temp: The temperature of the PCB as an int.
|
temp: The temperature of the PCB as an int.
|
||||||
chip_temp: The temperature of the chips as an int.
|
chip_temp: The temperature of the chips as an int.
|
||||||
chips: The chip count of the board as an int.
|
chips: The chip count of the board as an int.
|
||||||
@@ -41,6 +43,8 @@ class HashBoard(BaseModel):
|
|||||||
|
|
||||||
slot: int = 0
|
slot: int = 0
|
||||||
hashrate: AlgoHashRateType | None = None
|
hashrate: AlgoHashRateType | None = None
|
||||||
|
inlet_temp: float | None = None
|
||||||
|
outlet_temp: float | None = None
|
||||||
temp: float | None = None
|
temp: float | None = None
|
||||||
chip_temp: float | None = None
|
chip_temp: float | None = None
|
||||||
chips: int | None = None
|
chips: int | None = None
|
||||||
|
|||||||
@@ -59,6 +59,7 @@ class AntminerModels(MinerModelType):
|
|||||||
T19 = "T19"
|
T19 = "T19"
|
||||||
S21 = "S21"
|
S21 = "S21"
|
||||||
S21Plus = "S21+"
|
S21Plus = "S21+"
|
||||||
|
S21PlusHydro = "S21+ Hydro"
|
||||||
S21Pro = "S21 Pro"
|
S21Pro = "S21 Pro"
|
||||||
S21Hydro = "S21 Hydro"
|
S21Hydro = "S21 Hydro"
|
||||||
T21 = "T21"
|
T21 = "T21"
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
from pyasic.miners.backends import AntminerModern
|
from pyasic.miners.backends import AntminerModern
|
||||||
from pyasic.miners.device.models import S21, S21Hydro, S21Plus, S21Pro
|
from pyasic.miners.device.models import S21, S21Hydro, S21Plus, S21PlusHydro, S21Pro
|
||||||
|
|
||||||
|
|
||||||
class BMMinerS21(AntminerModern, S21):
|
class BMMinerS21(AntminerModern, S21):
|
||||||
@@ -26,6 +26,10 @@ class BMMinerS21Plus(AntminerModern, S21Plus):
|
|||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
class BMMinerS21PlusHydro(AntminerModern, S21PlusHydro):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
class BMMinerS21Pro(AntminerModern, S21Pro):
|
class BMMinerS21Pro(AntminerModern, S21Pro):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|||||||
@@ -13,5 +13,11 @@
|
|||||||
# See the License for the specific language governing permissions and -
|
# See the License for the specific language governing permissions and -
|
||||||
# limitations under the License. -
|
# limitations under the License. -
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
from .S21 import BMMinerS21, BMMinerS21Hydro, BMMinerS21Plus, BMMinerS21Pro
|
from .S21 import (
|
||||||
|
BMMinerS21,
|
||||||
|
BMMinerS21Hydro,
|
||||||
|
BMMinerS21Plus,
|
||||||
|
BMMinerS21PlusHydro,
|
||||||
|
BMMinerS21Pro,
|
||||||
|
)
|
||||||
from .T21 import BMMinerT21
|
from .T21 import BMMinerT21
|
||||||
|
|||||||
@@ -272,18 +272,47 @@ class AntminerModern(BMMiner):
|
|||||||
rate=board["rate_real"], unit=self.algo.unit.GH
|
rate=board["rate_real"], unit=self.algo.unit.GH
|
||||||
).into(self.algo.unit.default)
|
).into(self.algo.unit.default)
|
||||||
hashboards[board["index"]].chips = board["asic_num"]
|
hashboards[board["index"]].chips = board["asic_num"]
|
||||||
|
|
||||||
|
if "S21+ Hyd" in self.model:
|
||||||
|
hashboards[board["index"]].inlet_temp = board["temp_pcb"][0]
|
||||||
|
hashboards[board["index"]].outlet_temp = board["temp_pcb"][2]
|
||||||
|
hashboards[board["index"]].chip_temp = board["temp_pic"][0]
|
||||||
|
board_temp_data = list(
|
||||||
|
filter(
|
||||||
|
lambda x: not x == 0,
|
||||||
|
[
|
||||||
|
board["temp_pic"][1],
|
||||||
|
board["temp_pic"][2],
|
||||||
|
board["temp_pic"][3],
|
||||||
|
board["temp_pcb"][1],
|
||||||
|
board["temp_pcb"][3],
|
||||||
|
],
|
||||||
|
)
|
||||||
|
)
|
||||||
|
hashboards[board["index"]].temp = (
|
||||||
|
sum(board_temp_data) / len(board_temp_data)
|
||||||
|
if len(board_temp_data) > 0
|
||||||
|
else 0
|
||||||
|
)
|
||||||
|
|
||||||
|
else:
|
||||||
board_temp_data = list(
|
board_temp_data = list(
|
||||||
filter(lambda x: not x == 0, board["temp_pcb"])
|
filter(lambda x: not x == 0, board["temp_pcb"])
|
||||||
)
|
)
|
||||||
hashboards[board["index"]].temp = sum(board_temp_data) / len(
|
hashboards[board["index"]].temp = (
|
||||||
board_temp_data
|
sum(board_temp_data) / len(board_temp_data)
|
||||||
|
if len(board_temp_data) > 0
|
||||||
|
else 0
|
||||||
)
|
)
|
||||||
chip_temp_data = list(
|
chip_temp_data = list(
|
||||||
filter(lambda x: not x == 0, board["temp_chip"])
|
filter(lambda x: not x == 0, board["temp_chip"])
|
||||||
)
|
)
|
||||||
hashboards[board["index"]].chip_temp = sum(chip_temp_data) / len(
|
hashboards[board["index"]].chip_temp = (
|
||||||
chip_temp_data
|
sum(chip_temp_data) / len(chip_temp_data)
|
||||||
|
if len(chip_temp_data) > 0
|
||||||
|
else 0
|
||||||
)
|
)
|
||||||
|
|
||||||
hashboards[board["index"]].serial_number = board["sn"]
|
hashboards[board["index"]].serial_number = board["sn"]
|
||||||
hashboards[board["index"]].missing = False
|
hashboards[board["index"]].missing = False
|
||||||
except LookupError:
|
except LookupError:
|
||||||
|
|||||||
@@ -36,6 +36,15 @@ class S21Plus(AntMinerMake):
|
|||||||
algo = MinerAlgo.SHA256
|
algo = MinerAlgo.SHA256
|
||||||
|
|
||||||
|
|
||||||
|
class S21PlusHydro(AntMinerMake):
|
||||||
|
raw_model = MinerModel.ANTMINER.S21PlusHydro
|
||||||
|
|
||||||
|
expected_chips = 95
|
||||||
|
expected_fans = 0
|
||||||
|
expected_hashboards = 3
|
||||||
|
algo = MinerAlgo.SHA256
|
||||||
|
|
||||||
|
|
||||||
class S21Pro(AntMinerMake):
|
class S21Pro(AntMinerMake):
|
||||||
raw_model = MinerModel.ANTMINER.S21Pro
|
raw_model = MinerModel.ANTMINER.S21Pro
|
||||||
|
|
||||||
|
|||||||
@@ -14,5 +14,5 @@
|
|||||||
# limitations under the License. -
|
# limitations under the License. -
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
from .S21 import S21, S21Hydro, S21Plus, S21Pro
|
from .S21 import S21, S21Hydro, S21Plus, S21PlusHydro, S21Pro
|
||||||
from .T21 import T21
|
from .T21 import T21
|
||||||
|
|||||||
@@ -121,6 +121,7 @@ MINER_CLASSES = {
|
|||||||
"ANTMINER BHB68601": BMMinerS21, # ???
|
"ANTMINER BHB68601": BMMinerS21, # ???
|
||||||
"ANTMINER BHB68606": BMMinerS21, # ???
|
"ANTMINER BHB68606": BMMinerS21, # ???
|
||||||
"ANTMINER S21+": BMMinerS21Plus,
|
"ANTMINER S21+": BMMinerS21Plus,
|
||||||
|
"ANTMINER S21+ HYD.": BMMinerS21PlusHydro,
|
||||||
"ANTMINER S21 PRO": BMMinerS21Pro,
|
"ANTMINER S21 PRO": BMMinerS21Pro,
|
||||||
"ANTMINER T21": BMMinerT21,
|
"ANTMINER T21": BMMinerT21,
|
||||||
"ANTMINER S21 HYD.": BMMinerS21Hydro,
|
"ANTMINER S21 HYD.": BMMinerS21Hydro,
|
||||||
|
|||||||
Reference in New Issue
Block a user