44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import asyncio
|
|
|
|
from tools.web_monitor.miner_factory import miner_factory
|
|
from tools.web_monitor._settings.func import get_current_settings
|
|
|
|
|
|
async def get_miner_data_dashboard(miner_ip):
|
|
try:
|
|
settings = get_current_settings()
|
|
miner_identify_timeout = settings["miner_identify_timeout"]
|
|
miner_data_timeout = settings["miner_data_timeout"]
|
|
|
|
miner_ip = await asyncio.wait_for(
|
|
miner_factory.get_miner(miner_ip),
|
|
miner_identify_timeout
|
|
)
|
|
|
|
miner_summary = await asyncio.wait_for(
|
|
miner_ip.api.summary(),
|
|
miner_data_timeout
|
|
)
|
|
if miner_summary:
|
|
if 'MHS av' in miner_summary['SUMMARY'][0].keys():
|
|
hashrate = format(
|
|
round(miner_summary['SUMMARY'][0]['MHS av'] / 1000000,
|
|
2), ".2f")
|
|
elif 'GHS av' in miner_summary['SUMMARY'][0].keys():
|
|
hashrate = format(
|
|
round(miner_summary['SUMMARY'][0]['GHS av'] / 1000, 2),
|
|
".2f")
|
|
else:
|
|
hashrate = 0
|
|
else:
|
|
hashrate = 0
|
|
|
|
return {"ip": str(miner_ip.ip), "hashrate": hashrate}
|
|
|
|
except asyncio.exceptions.TimeoutError:
|
|
return {"ip": miner_ip, "error": "The miner is not responding."}
|
|
|
|
except KeyError:
|
|
return {"ip": miner_ip,
|
|
"error": "The miner returned unusable/unsupported data."}
|