From 5f355c833bc7d45f7bbf302e2c212311d2a73ead Mon Sep 17 00:00:00 2001 From: UpstreamData Date: Wed, 2 Mar 2022 15:38:29 -0700 Subject: [PATCH] added fan and hashrate data for S19s and Whatsminers --- tools/web_monitor/app.py | 47 ++++++++++++++++++++++++++++++---------- 1 file changed, 36 insertions(+), 11 deletions(-) diff --git a/tools/web_monitor/app.py b/tools/web_monitor/app.py index 51700976..11dfb1a9 100644 --- a/tools/web_monitor/app.py +++ b/tools/web_monitor/app.py @@ -47,21 +47,42 @@ async def miner_websocket(websocket: WebSocket, miner_ip): try: 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 + 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(): miner_fans = data["fans"][0] - 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]['SUMMARY'][0].keys(): - hashrate = format( - round(miner_summary['SUMMARY'][0]['GHS av'] / 1000, 2), - ".2f") + if "stats" in data.keys(): + miner_stats = data["stats"][0] + miner_fans = {"FANS": []} + for item in ["fan1", "fan2", "fan3", "fan4"]: + if item in miner_stats["STATS"][1].keys(): + miner_fans["FANS"].append({"RPM": miner_stats["STATS"][1][item]}) + + + 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 @@ -71,6 +92,9 @@ async def miner_websocket(websocket: WebSocket, miner_ip): for fan in miner_fans["FANS"]: fan_speeds.append(fan["RPM"]) + while len(fan_speeds) < 5: + fan_speeds.append(0) + data = {"hashrate": hashrate, "fans": fan_speeds, @@ -81,7 +105,8 @@ async def miner_websocket(websocket: WebSocket, miner_ip): data = {"error": "The miner is not responding."} await websocket.send_json(data) await asyncio.sleep(.5) - except KeyError: + except KeyError as e: + print(e) data = {"error": "The miner returned incorrect data."} await websocket.send_json(data) await asyncio.sleep(.5)