From 482edabd2704005b1e0412a311b66f24c5bdfeb4 Mon Sep 17 00:00:00 2001 From: UpstreamData Date: Wed, 2 Mar 2022 11:11:34 -0700 Subject: [PATCH] improved chart functionality in the web monitor and added handlers for errors such as no response from the miner --- tools/web_monitor/app.py | 35 +++++++++++------- tools/web_monitor/templates/miner.html | 49 +++++++++++++++++++++----- 2 files changed, 64 insertions(+), 20 deletions(-) diff --git a/tools/web_monitor/app.py b/tools/web_monitor/app.py index f3f82a8b..5a0ee65b 100644 --- a/tools/web_monitor/app.py +++ b/tools/web_monitor/app.py @@ -43,18 +43,29 @@ async def miner_websocket(websocket: WebSocket, miner_ip): await websocket.accept() try: while True: - miner = await miner_factory.get_miner(str(miner_ip)) - miner_summary = await miner.api.summary() - print(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]['SUMMARY'][0].keys(): - hashrate = format(round(miner_summary['SUMMARY'][0]['GHS av']/1000, 2), ".2f") - else: - hashrate = 0 - data = {"hashrate": hashrate, "datetime": datetime.datetime.now().isoformat()} - await websocket.send_json(data) - await asyncio.sleep(5) + try: + miner = await asyncio.wait_for(miner_factory.get_miner(str(miner_ip)), 5) + miner_summary = await asyncio.wait_for(miner.api.summary(), 5) + 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") + else: + hashrate = 0 + data = {"hashrate": hashrate, + "datetime": datetime.datetime.now().isoformat()} + await websocket.send_json(data) + await asyncio.sleep(5) + except asyncio.exceptions.TimeoutError: + data = {"error": "The miner is not responding."} + await websocket.send_json(data) + except KeyError: + data = {"error": "The miner returned incorrect data."} + await websocket.send_json(data) except WebSocketDisconnect: print("Websocket disconnected.") pass diff --git a/tools/web_monitor/templates/miner.html b/tools/web_monitor/templates/miner.html index f90ec811..8c515f18 100644 --- a/tools/web_monitor/templates/miner.html +++ b/tools/web_monitor/templates/miner.html @@ -2,8 +2,25 @@ {% block content %} -

{{miner}}

+
+
+

{{miner}}

+
+
+ +
+
+ + + +