improved chart functionality in the web monitor and added handlers for errors such as no response from the miner
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user