fix some bugs and start adding bmminer get_data function
This commit is contained in:
@@ -44,6 +44,8 @@ class BMMiner(BaseMiner):
|
|||||||
|
|
||||||
:return: The hostname of the miner as a string or "?"
|
:return: The hostname of the miner as a string or "?"
|
||||||
"""
|
"""
|
||||||
|
if self.hostname:
|
||||||
|
return self.hostname
|
||||||
try:
|
try:
|
||||||
# open an ssh connection
|
# open an ssh connection
|
||||||
async with (await self._get_ssh_connection()) as conn:
|
async with (await self._get_ssh_connection()) as conn:
|
||||||
@@ -55,7 +57,8 @@ class BMMiner(BaseMiner):
|
|||||||
|
|
||||||
# return hostname data
|
# return hostname data
|
||||||
logging.debug(f"Found hostname for {self.ip}: {host}")
|
logging.debug(f"Found hostname for {self.ip}: {host}")
|
||||||
return host
|
self.hostname = host
|
||||||
|
return self.hostname
|
||||||
else:
|
else:
|
||||||
# return ? if we fail to get hostname with no ssh connection
|
# return ? if we fail to get hostname with no ssh connection
|
||||||
logging.warning(f"Failed to get hostname for miner: {self}")
|
logging.warning(f"Failed to get hostname for miner: {self}")
|
||||||
@@ -114,3 +117,23 @@ class BMMiner(BaseMiner):
|
|||||||
logging.debug(f"{self}: Sending reboot command.")
|
logging.debug(f"{self}: Sending reboot command.")
|
||||||
await self.send_ssh_command("reboot")
|
await self.send_ssh_command("reboot")
|
||||||
logging.debug(f"{self}: Reboot command completed.")
|
logging.debug(f"{self}: Reboot command completed.")
|
||||||
|
|
||||||
|
async def get_data(self):
|
||||||
|
data = {
|
||||||
|
"IP": str(self.ip),
|
||||||
|
"Model": "Unknown",
|
||||||
|
"Hostname": "Unknown",
|
||||||
|
"Hashrate": 0,
|
||||||
|
"Temperature": 0,
|
||||||
|
"Pool User": "Unknown",
|
||||||
|
"Wattage": 0,
|
||||||
|
"Split": 0,
|
||||||
|
"Pool 1": "Unknown",
|
||||||
|
"Pool 1 User": "Unknown",
|
||||||
|
"Pool 2": "",
|
||||||
|
"Pool 2 User": "",
|
||||||
|
}
|
||||||
|
data = await self.api.multicommand(
|
||||||
|
"summary", "devs", "temps", "tunerstatus", "pools", "stats"
|
||||||
|
)
|
||||||
|
print(data)
|
||||||
|
|||||||
@@ -313,7 +313,7 @@ class BOSMiner(BaseMiner):
|
|||||||
data["Pool 2 User"] = pool_2_user
|
data["Pool 2 User"] = pool_2_user
|
||||||
|
|
||||||
if quota:
|
if quota:
|
||||||
data["Quota"] = quota
|
data["Split"] = quota
|
||||||
|
|
||||||
if tunerstatus:
|
if tunerstatus:
|
||||||
tuner = tunerstatus.get("TUNERSTATUS")
|
tuner = tunerstatus.get("TUNERSTATUS")
|
||||||
|
|||||||
@@ -214,13 +214,11 @@ class MinerFactory:
|
|||||||
version = data["version"][0]
|
version = data["version"][0]
|
||||||
|
|
||||||
except APIError as e:
|
except APIError as e:
|
||||||
logging.warning(f"{ip}: API Command Error: {e}")
|
|
||||||
data = None
|
data = None
|
||||||
|
|
||||||
if not data:
|
if not data:
|
||||||
try:
|
try:
|
||||||
devdetails = await self._send_api_command(str(ip), "devdetails")
|
devdetails = await self._send_api_command(str(ip), "devdetails")
|
||||||
|
|
||||||
validation = await self._validate_command(devdetails)
|
validation = await self._validate_command(devdetails)
|
||||||
if not validation[0]:
|
if not validation[0]:
|
||||||
version = await self._send_api_command(str(ip), "version")
|
version = await self._send_api_command(str(ip), "version")
|
||||||
@@ -260,11 +258,14 @@ class MinerFactory:
|
|||||||
# if all that fails, check the Description to see if it is a whatsminer
|
# if all that fails, check the Description to see if it is a whatsminer
|
||||||
elif version.get("Description") and "whatsminer" in version.get("Description"):
|
elif version.get("Description") and "whatsminer" in version.get("Description"):
|
||||||
api = "BTMiner"
|
api = "BTMiner"
|
||||||
|
|
||||||
if version and not model:
|
if version and not model:
|
||||||
if "VERSION" in version.keys() and not version["DEVDETAILS"] == []:
|
if (
|
||||||
|
"VERSION" in version.keys()
|
||||||
|
and version.get("VERSION")
|
||||||
|
and not version.get("VERSION") == []
|
||||||
|
):
|
||||||
model = version["VERSION"][0]["Type"]
|
model = version["VERSION"][0]["Type"]
|
||||||
|
print("done")
|
||||||
return model, api
|
return model, api
|
||||||
|
|
||||||
async def _validate_command(self, data: dict) -> tuple:
|
async def _validate_command(self, data: dict) -> tuple:
|
||||||
|
|||||||
Reference in New Issue
Block a user