added fan and hashrate data for S19s and Whatsminers

This commit is contained in:
UpstreamData
2022-03-02 15:38:29 -07:00
parent 0f324177cb
commit e974c77359

View File

@@ -47,21 +47,42 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
try: try:
cur_miner = await asyncio.wait_for(miner_factory.get_miner(str(miner_ip)), 5) cur_miner = await asyncio.wait_for(miner_factory.get_miner(str(miner_ip)), 5)
data = await asyncio.wait_for(cur_miner.api.multicommand("summary", "fans"), 5) data = await asyncio.wait_for(cur_miner.api.multicommand("summary", "fans", "stats"), 5)
miner_summary = data["summary"][0] miner_summary = None
miner_stats = None
miner_fans = None miner_fans = None
if "summary" in data.keys():
miner_summary = data["summary"][0]
elif "SUMMARY" in data.keys():
miner_summary = data
miner_fans = {"FANS": []}
for item in ["Fan Speed In", "Fan Speed Out"]:
if item in miner_summary["SUMMARY"][0].keys():
miner_fans["FANS"].append({"RPM": miner_summary["SUMMARY"][0][item]})
if "fans" in data.keys(): if "fans" in data.keys():
miner_fans = data["fans"][0] miner_fans = data["fans"][0]
if 'MHS av' in miner_summary['SUMMARY'][0].keys(): if "stats" in data.keys():
hashrate = format( miner_stats = data["stats"][0]
round(miner_summary['SUMMARY'][0]['MHS av'] / 1000000, miner_fans = {"FANS": []}
2), ".2f") for item in ["fan1", "fan2", "fan3", "fan4"]:
elif 'GHS av' in miner_summary['summary'][0]['SUMMARY'][0].keys(): if item in miner_stats["STATS"][1].keys():
hashrate = format( miner_fans["FANS"].append({"RPM": miner_stats["STATS"][1][item]})
round(miner_summary['SUMMARY'][0]['GHS av'] / 1000, 2),
".2f")
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: else:
hashrate = 0 hashrate = 0
@@ -71,6 +92,9 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
for fan in miner_fans["FANS"]: for fan in miner_fans["FANS"]:
fan_speeds.append(fan["RPM"]) fan_speeds.append(fan["RPM"])
while len(fan_speeds) < 5:
fan_speeds.append(0)
data = {"hashrate": hashrate, data = {"hashrate": hashrate,
"fans": fan_speeds, "fans": fan_speeds,
@@ -81,7 +105,8 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
data = {"error": "The miner is not responding."} data = {"error": "The miner is not responding."}
await websocket.send_json(data) await websocket.send_json(data)
await asyncio.sleep(.5) await asyncio.sleep(.5)
except KeyError: except KeyError as e:
print(e)
data = {"error": "The miner returned incorrect data."} data = {"error": "The miner returned incorrect data."}
await websocket.send_json(data) await websocket.send_json(data)
await asyncio.sleep(.5) await asyncio.sleep(.5)