178 lines
7.9 KiB
Python
178 lines
7.9 KiB
Python
from miners.cgminer import CGMiner
|
|
import re
|
|
|
|
|
|
class CGMinerAvalon8(CGMiner):
|
|
def __init__(self, ip: str) -> None:
|
|
super().__init__(ip)
|
|
self.model = "Avalon 8"
|
|
self.api_type = "CGMiner"
|
|
self.pattern = re.compile(
|
|
r"Ver\[(?P<Ver>[-0-9A-Fa-f+]+)\]\s"
|
|
"DNA\[(?P<DNA>[0-9A-Fa-f]+)\]\s"
|
|
"Elapsed\[(?P<Elapsed>[-0-9]+)\]\s"
|
|
"MW\[(?P<MW>[-\s0-9]+)\]\s"
|
|
"LW\[(?P<LW>[-0-9]+)\]\s"
|
|
"MH\[(?P<MH>[-\s0-9]+)\]\s"
|
|
"HW\[(?P<HW>[-0-9]+)\]\s"
|
|
"Temp\[(?P<Temp>[0-9]+)\]\s"
|
|
"TMax\[(?P<TMax>[0-9]+)\]\s"
|
|
"Fan\[(?P<Fan>[0-9]+)\]\s"
|
|
"FanR\[(?P<FanR>[0-9]+)%\]\s"
|
|
"Vi\[(?P<Vi>[-\s0-9]+)\]\s"
|
|
"Vo\[(?P<Vo>[-\s0-9]+)\]\s"
|
|
"("
|
|
"PLL0\[(?P<PLL0>[-\s0-9]+)\]\s"
|
|
"PLL1\[(?P<PLL1>[-\s0-9]+)\]\s"
|
|
"PLL2\[(?P<PLL2>[-\s0-9]+)\]\s"
|
|
"PLL3\[(?P<PLL3>[-\s0-9]+)\]\s"
|
|
")?"
|
|
"GHSmm\[(?P<GHSmm>[-.0-9]+)\]\s"
|
|
"WU\[(?P<WU>[-.0-9]+)\]\s"
|
|
"Freq\[(?P<Freq>[.0-9]+)\]\s"
|
|
"PG\[(?P<PG>[0-9]+)\]\s"
|
|
"Led\[(?P<LED>0|1)\]\s"
|
|
"MW0\[(?P<MW0>[0-9\s]+)\]\s"
|
|
"MW1\[(?P<MW1>[0-9\s]+)\]\s"
|
|
"MW2\[(?P<MW2>[0-9\s]+)\]\s"
|
|
"MW3\[(?P<MW3>[0-9\s]+)\]\s"
|
|
"TA\[(?P<TA>[0-9]+)\]\s"
|
|
"ECHU\[(?P<ECHU>[0-9\s]+)\]\s"
|
|
"ECMM\[(?P<ECMM>[0-9]+)\]\s.*"
|
|
"FAC0\[(?P<FAC0>[-0-9]+)\]\s"
|
|
"OC\[(?P<OC>[0-9]+)\]\s"
|
|
"SF0\[(?P<SF0>[-\s0-9]+)\]\s"
|
|
"SF1\[(?P<SF1>[-\s0-9]+)\]\s"
|
|
"SF2\[(?P<SF2>[-\s0-9]+)\]\s"
|
|
"SF3\[(?P<SF3>[-\s0-9]+)\]\s"
|
|
"PMUV\[(?P<PMUV>[-\s\S*]+)\]\s"
|
|
"PVT_T0\[(?P<PVT_T0>[-0-9\s]+)\]\s"
|
|
"PVT_T1\[(?P<PVT_T1>[-0-9\s]+)\]\s"
|
|
"PVT_T2\[(?P<PVT_T2>[-0-9\s]+)\]\s"
|
|
"PVT_T3\[(?P<PVT_T3>[-0-9\s]+)\]\s"
|
|
"PVT_V0_0\[(?P<PVT_V0_0>[-0-9\s]+)\]\s"
|
|
"PVT_V0_1\[(?P<PVT_V0_1>[-0-9\s]+)\]\s"
|
|
"PVT_V0_2\[(?P<PVT_V0_2>[-0-9\s]+)\]\s"
|
|
"PVT_V0_3\[(?P<PVT_V0_3>[-0-9\s]+)\]\s"
|
|
"PVT_V0_4\[(?P<PVT_V0_4>[-0-9\s]+)\]\s"
|
|
"PVT_V0_5\[(?P<PVT_V0_5>[-0-9\s]+)\]\s"
|
|
"PVT_V0_6\[(?P<PVT_V0_6>[-0-9\s]+)\]\s"
|
|
"PVT_V0_7\[(?P<PVT_V0_7>[-0-9\s]+)\]\s"
|
|
"PVT_V0_8\[(?P<PVT_V0_8>[-0-9\s]+)\]\s"
|
|
"PVT_V0_9\[(?P<PVT_V0_9>[-0-9\s]+)\]\s"
|
|
"PVT_V0_10\[(?P<PVT_V0_10>[-0-9\s]+)\]\s"
|
|
"PVT_V0_11\[(?P<PVT_V0_11>[-0-9\s]+)\]\s"
|
|
"PVT_V0_12\[(?P<PVT_V0_12>[-0-9\s]+)\]\s"
|
|
"PVT_V0_13\[(?P<PVT_V0_13>[-0-9\s]+)\]\s"
|
|
"PVT_V0_14\[(?P<PVT_V0_14>[-0-9\s]+)\]\s"
|
|
"PVT_V0_15\[(?P<PVT_V0_15>[-0-9\s]+)\]\s"
|
|
"PVT_V0_16\[(?P<PVT_V0_16>[-0-9\s]+)\]\s"
|
|
"PVT_V0_17\[(?P<PVT_V0_17>[-0-9\s]+)\]\s"
|
|
"PVT_V0_18\[(?P<PVT_V0_18>[-0-9\s]+)\]\s"
|
|
"PVT_V0_19\[(?P<PVT_V0_19>[-0-9\s]+)\]\s"
|
|
"PVT_V0_20\[(?P<PVT_V0_20>[-0-9\s]+)\]\s"
|
|
"PVT_V0_21\[(?P<PVT_V0_21>[-0-9\s]+)\]\s"
|
|
"PVT_V0_22\[(?P<PVT_V0_22>[-0-9\s]+)\]\s"
|
|
"PVT_V0_23\[(?P<PVT_V0_23>[-0-9\s]+)\]\s"
|
|
"PVT_V0_24\[(?P<PVT_V0_24>[-0-9\s]+)\]\s"
|
|
"PVT_V0_25\[(?P<PVT_V0_25>[-0-9\s]+)\]\s"
|
|
"PVT_V1_0\[(?P<PVT_V1_0>[-0-9\s]+)\]\s"
|
|
"PVT_V1_1\[(?P<PVT_V1_1>[-0-9\s]+)\]\s"
|
|
"PVT_V1_2\[(?P<PVT_V1_2>[-0-9\s]+)\]\s"
|
|
"PVT_V1_3\[(?P<PVT_V1_3>[-0-9\s]+)\]\s"
|
|
"PVT_V1_4\[(?P<PVT_V1_4>[-0-9\s]+)\]\s"
|
|
"PVT_V1_5\[(?P<PVT_V1_5>[-0-9\s]+)\]\s"
|
|
"PVT_V1_6\[(?P<PVT_V1_6>[-0-9\s]+)\]\s"
|
|
"PVT_V1_7\[(?P<PVT_V1_7>[-0-9\s]+)\]\s"
|
|
"PVT_V1_8\[(?P<PVT_V1_8>[-0-9\s]+)\]\s"
|
|
"PVT_V1_9\[(?P<PVT_V1_9>[-0-9\s]+)\]\s"
|
|
"PVT_V1_10\[(?P<PVT_V1_10>[-0-9\s]+)\]\s"
|
|
"PVT_V1_11\[(?P<PVT_V1_11>[-0-9\s]+)\]\s"
|
|
"PVT_V1_12\[(?P<PVT_V1_12>[-0-9\s]+)\]\s"
|
|
"PVT_V1_13\[(?P<PVT_V1_13>[-0-9\s]+)\]\s"
|
|
"PVT_V1_14\[(?P<PVT_V1_14>[-0-9\s]+)\]\s"
|
|
"PVT_V1_15\[(?P<PVT_V1_15>[-0-9\s]+)\]\s"
|
|
"PVT_V1_16\[(?P<PVT_V1_16>[-0-9\s]+)\]\s"
|
|
"PVT_V1_17\[(?P<PVT_V1_17>[-0-9\s]+)\]\s"
|
|
"PVT_V1_18\[(?P<PVT_V1_18>[-0-9\s]+)\]\s"
|
|
"PVT_V1_19\[(?P<PVT_V1_19>[-0-9\s]+)\]\s"
|
|
"PVT_V1_20\[(?P<PVT_V1_20>[-0-9\s]+)\]\s"
|
|
"PVT_V1_21\[(?P<PVT_V1_21>[-0-9\s]+)\]\s"
|
|
"PVT_V1_22\[(?P<PVT_V1_22>[-0-9\s]+)\]\s"
|
|
"PVT_V1_23\[(?P<PVT_V1_23>[-0-9\s]+)\]\s"
|
|
"PVT_V1_24\[(?P<PVT_V1_24>[-0-9\s]+)\]\s"
|
|
"PVT_V1_25\[(?P<PVT_V1_25>[-0-9\s]+)\]\s"
|
|
"PVT_V2_0\[(?P<PVT_V2_0>[-0-9\s]+)\]\s"
|
|
"PVT_V2_1\[(?P<PVT_V2_1>[-0-9\s]+)\]\s"
|
|
"PVT_V2_2\[(?P<PVT_V2_2>[-0-9\s]+)\]\s"
|
|
"PVT_V2_3\[(?P<PVT_V2_3>[-0-9\s]+)\]\s"
|
|
"PVT_V2_4\[(?P<PVT_V2_4>[-0-9\s]+)\]\s"
|
|
"PVT_V2_5\[(?P<PVT_V2_5>[-0-9\s]+)\]\s"
|
|
"PVT_V2_6\[(?P<PVT_V2_6>[-0-9\s]+)\]\s"
|
|
"PVT_V2_7\[(?P<PVT_V2_7>[-0-9\s]+)\]\s"
|
|
"PVT_V2_8\[(?P<PVT_V2_8>[-0-9\s]+)\]\s"
|
|
"PVT_V2_9\[(?P<PVT_V2_9>[-0-9\s]+)\]\s"
|
|
"PVT_V2_10\[(?P<PVT_V2_10>[-0-9\s]+)\]\s"
|
|
"PVT_V2_11\[(?P<PVT_V2_11>[-0-9\s]+)\]\s"
|
|
"PVT_V2_12\[(?P<PVT_V2_12>[-0-9\s]+)\]\s"
|
|
"PVT_V2_13\[(?P<PVT_V2_13>[-0-9\s]+)\]\s"
|
|
"PVT_V2_14\[(?P<PVT_V2_14>[-0-9\s]+)\]\s"
|
|
"PVT_V2_15\[(?P<PVT_V2_15>[-0-9\s]+)\]\s"
|
|
"PVT_V2_16\[(?P<PVT_V2_16>[-0-9\s]+)\]\s"
|
|
"PVT_V2_17\[(?P<PVT_V2_17>[-0-9\s]+)\]\s"
|
|
"PVT_V2_18\[(?P<PVT_V2_18>[-0-9\s]+)\]\s"
|
|
"PVT_V2_19\[(?P<PVT_V2_19>[-0-9\s]+)\]\s"
|
|
"PVT_V2_20\[(?P<PVT_V2_20>[-0-9\s]+)\]\s"
|
|
"PVT_V2_21\[(?P<PVT_V2_21>[-0-9\s]+)\]\s"
|
|
"PVT_V2_22\[(?P<PVT_V2_22>[-0-9\s]+)\]\s"
|
|
"PVT_V2_23\[(?P<PVT_V2_23>[-0-9\s]+)\]\s"
|
|
"PVT_V2_24\[(?P<PVT_V2_24>[-0-9\s]+)\]\s"
|
|
"PVT_V2_25\[(?P<PVT_V2_25>[-0-9\s]+)\]\s"
|
|
"PVT_V3_0\[(?P<PVT_V3_0>[-0-9\s]+)\]\s"
|
|
"PVT_V3_1\[(?P<PVT_V3_1>[-0-9\s]+)\]\s"
|
|
"PVT_V3_2\[(?P<PVT_V3_2>[-0-9\s]+)\]\s"
|
|
"PVT_V3_3\[(?P<PVT_V3_3>[-0-9\s]+)\]\s"
|
|
"PVT_V3_4\[(?P<PVT_V3_4>[-0-9\s]+)\]\s"
|
|
"PVT_V3_5\[(?P<PVT_V3_5>[-0-9\s]+)\]\s"
|
|
"PVT_V3_6\[(?P<PVT_V3_6>[-0-9\s]+)\]\s"
|
|
"PVT_V3_7\[(?P<PVT_V3_7>[-0-9\s]+)\]\s"
|
|
"PVT_V3_8\[(?P<PVT_V3_8>[-0-9\s]+)\]\s"
|
|
"PVT_V3_9\[(?P<PVT_V3_9>[-0-9\s]+)\]\s"
|
|
"PVT_V3_10\[(?P<PVT_V3_10>[-0-9\s]+)\]\s"
|
|
"PVT_V3_11\[(?P<PVT_V3_11>[-0-9\s]+)\]\s"
|
|
"PVT_V3_12\[(?P<PVT_V3_12>[-0-9\s]+)\]\s"
|
|
"PVT_V3_13\[(?P<PVT_V3_13>[-0-9\s]+)\]\s"
|
|
"PVT_V3_14\[(?P<PVT_V3_14>[-0-9\s]+)\]\s"
|
|
"PVT_V3_15\[(?P<PVT_V3_15>[-0-9\s]+)\]\s"
|
|
"PVT_V3_16\[(?P<PVT_V3_16>[-0-9\s]+)\]\s"
|
|
"PVT_V3_17\[(?P<PVT_V3_17>[-0-9\s]+)\]\s"
|
|
"PVT_V3_18\[(?P<PVT_V3_18>[-0-9\s]+)\]\s"
|
|
"PVT_V3_19\[(?P<PVT_V3_19>[-0-9\s]+)\]\s"
|
|
"PVT_V3_20\[(?P<PVT_V3_20>[-0-9\s]+)\]\s"
|
|
"PVT_V3_21\[(?P<PVT_V3_21>[-0-9\s]+)\]\s"
|
|
"PVT_V3_22\[(?P<PVT_V3_22>[-0-9\s]+)\]\s"
|
|
"PVT_V3_23\[(?P<PVT_V3_23>[-0-9\s]+)\]\s"
|
|
"PVT_V3_24\[(?P<PVT_V3_24>[-0-9\s]+)\]\s"
|
|
"PVT_V3_25\[(?P<PVT_V3_25>[-0-9\s]+)\]\s"
|
|
"FM\[(?P<FM>[0-9]+)\]\s"
|
|
"CRC\[(?P<CRC>[0-9\s]+)\]",
|
|
re.X,
|
|
)
|
|
|
|
def __repr__(self) -> str:
|
|
return f"CGMinerAvalon8: {str(self.ip)}"
|
|
|
|
def parse_estats(self, estats):
|
|
for estat in estats:
|
|
for key in estat:
|
|
if key[:5] == "MM ID":
|
|
self._parse_estat(estat, key)
|
|
|
|
def _parse_estat(self, estat, key):
|
|
module = estat[key]
|
|
module_info = re.match(self.pattern, module)
|
|
if not module_info:
|
|
return None
|
|
module_info = module_info.groupdict()
|
|
print(module_info)
|