reformatted all files to use the Black formatting style

This commit is contained in:
UpstreamData
2022-03-31 11:27:57 -06:00
parent e1383f2002
commit c57a523553
54 changed files with 1375 additions and 964 deletions

View File

@@ -11,19 +11,22 @@ router = APIRouter()
@router.route("/", methods=["GET", "POST"])
async def settings(request: Request):
return templates.TemplateResponse("settings.html", {
"request": request,
"cur_miners": get_current_miner_list(),
"settings": get_current_settings()
})
return templates.TemplateResponse(
"settings.html",
{
"request": request,
"cur_miners": get_current_miner_list(),
"settings": get_current_settings(),
},
)
@router.post("/update")
async def update_settings_page(request: Request):
data = await request.form()
graph_data_sleep_time = data.get('graph_data_sleep_time')
miner_data_timeout = data.get('miner_data_timeout')
miner_identify_timeout = data.get('miner_identify_timeout')
graph_data_sleep_time = data.get("graph_data_sleep_time")
miner_data_timeout = data.get("miner_data_timeout")
miner_identify_timeout = data.get("miner_identify_timeout")
new_settings = {
"graph_data_sleep_time": int(graph_data_sleep_time),
"miner_data_timeout": int(miner_data_timeout),

View File

@@ -4,7 +4,9 @@ import os
def get_current_settings():
try:
with open(os.path.join(os.getcwd(), "settings/web_settings.toml"), "r") as settings_file:
with open(
os.path.join(os.getcwd(), "settings/web_settings.toml"), "r"
) as settings_file:
settings = toml.loads(settings_file.read())
except:
settings = {
@@ -16,5 +18,7 @@ def get_current_settings():
def update_settings(settings):
with open(os.path.join(os.getcwd(), "settings/web_settings.toml"), "w") as settings_file:
with open(
os.path.join(os.getcwd(), "settings/web_settings.toml"), "w"
) as settings_file:
settings_file.write(toml.dumps(settings))

View File

@@ -12,8 +12,11 @@ from tools.web_monitor._settings import router as settings_router
app = FastAPI()
app.mount("/static", StaticFiles(
directory=os.path.join(os.path.dirname(__file__), "static")), name="static")
app.mount(
"/static",
StaticFiles(directory=os.path.join(os.path.dirname(__file__), "static")),
name="static",
)
app.include_router(dashboard_router, tags=["dashboard"])
app.include_router(miner_router, tags=["miner"], prefix="/miner")

View File

@@ -12,13 +12,12 @@ router.include_router(ws_router)
@router.get("/")
def index(request: Request):
return RedirectResponse(request.url_for('dashboard'))
return RedirectResponse(request.url_for("dashboard"))
@router.get("/dashboard")
def dashboard(request: Request):
print()
return templates.TemplateResponse("index.html", {
"request": request,
"cur_miners": get_current_miner_list()
})
return templates.TemplateResponse(
"index.html", {"request": request, "cur_miners": get_current_miner_list()}
)

View File

@@ -11,23 +11,21 @@ async def get_miner_data_dashboard(miner_ip):
miner_data_timeout = settings["miner_data_timeout"]
miner_ip = await asyncio.wait_for(
MinerFactory().get_miner(miner_ip),
miner_identify_timeout
MinerFactory().get_miner(miner_ip), miner_identify_timeout
)
miner_summary = await asyncio.wait_for(
miner_ip.api.summary(),
miner_data_timeout
miner_ip.api.summary(), miner_data_timeout
)
if miner_summary:
if 'MHS av' in miner_summary['SUMMARY'][0].keys():
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():
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")
round(miner_summary["SUMMARY"][0]["GHS av"] / 1000, 2), ".2f"
)
else:
hashrate = 0
else:
@@ -39,5 +37,7 @@ async def get_miner_data_dashboard(miner_ip):
return {"ip": miner_ip, "error": "The miner is not responding."}
except KeyError:
return {"ip": miner_ip,
"error": "The miner returned unusable/unsupported data."}
return {
"ip": miner_ip,
"error": "The miner returned unusable/unsupported data.",
}

View File

@@ -21,14 +21,18 @@ async def dashboard_websocket(websocket: WebSocket):
miners = get_current_miner_list()
all_miner_data = []
data_gen = asyncio.as_completed(
[get_miner_data_dashboard(miner_ip) for miner_ip in miners])
[get_miner_data_dashboard(miner_ip) for miner_ip in miners]
)
for all_data in data_gen:
data_point = await all_data
all_miner_data.append(data_point)
all_miner_data.sort(key=lambda x: x["ip"])
await websocket.send_json(
{"datetime": datetime.datetime.now().isoformat(),
"miners": all_miner_data})
{
"datetime": datetime.datetime.now().isoformat(),
"miners": all_miner_data,
}
)
await asyncio.sleep(graph_sleep_time)
except WebSocketDisconnect:
print("Websocket disconnected.")

View File

@@ -16,8 +16,7 @@ def miner(_request: Request, _miner_ip):
@router.get("/{miner_ip}")
def get_miner(request: Request, miner_ip):
return templates.TemplateResponse("miner.html", {
"request": request,
"cur_miners": get_current_miner_list(),
"miner": miner_ip
})
return templates.TemplateResponse(
"miner.html",
{"request": request, "cur_miners": get_current_miner_list(), "miner": miner_ip},
)

View File

@@ -13,4 +13,4 @@ def get_miner(request: Request, miner_ip):
for miner_ip in miners:
file.write(miner_ip + "\n")
return RedirectResponse(request.url_for('dashboard'))
return RedirectResponse(request.url_for("dashboard"))

View File

@@ -22,13 +22,14 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
while True:
try:
cur_miner = await asyncio.wait_for(
MinerFactory().get_miner(str(miner_ip)),
miner_identify_timeout
MinerFactory().get_miner(str(miner_ip)), miner_identify_timeout
)
data = await asyncio.wait_for(
cur_miner.api.multicommand("summary", "fans", "stats", "devs", "temps"),
miner_data_timeout
cur_miner.api.multicommand(
"summary", "fans", "stats", "devs", "temps"
),
miner_data_timeout,
)
miner_model = await cur_miner.get_model()
@@ -42,7 +43,8 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
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]})
{"RPM": miner_summary["SUMMARY"][0][item]}
)
if "fans" in data.keys():
miner_fans = data["fans"][0]
@@ -50,30 +52,52 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
miner_temp_list = []
if "temps" in data.keys():
miner_temps = data["temps"][0]
for board in miner_temps['TEMPS']:
for board in miner_temps["TEMPS"]:
if board["Chip"] is not None and not board["Chip"] == 0.0:
miner_temp_list.append(board["Chip"])
if "devs" in data.keys() and not len(miner_temp_list) > 0:
if not data["devs"][0].get('DEVS') == []:
if "Chip Temp Avg" in data["devs"][0]['DEVS'][0].keys():
for board in data["devs"][0]['DEVS']:
if board['Chip Temp Avg'] is not None and not board['Chip Temp Avg'] == 0.0:
miner_temp_list.append(board['Chip Temp Avg'])
if not data["devs"][0].get("DEVS") == []:
if "Chip Temp Avg" in data["devs"][0]["DEVS"][0].keys():
for board in data["devs"][0]["DEVS"]:
if (
board["Chip Temp Avg"] is not None
and not board["Chip Temp Avg"] == 0.0
):
miner_temp_list.append(board["Chip Temp Avg"])
if "stats" in data.keys() and not len(miner_temp_list) > 0:
if not data["stats"][0]['STATS'] == []:
if not data["stats"][0]["STATS"] == []:
for temp in ["temp2", "temp1", "temp3"]:
if temp in data["stats"][0]['STATS'][1].keys():
if data["stats"][0]['STATS'][1][temp] is not None and not data["stats"][0]['STATS'][1][temp] == 0.0:
miner_temp_list.append(data["stats"][0]['STATS'][1][temp])
data["stats"][0]['STATS'][0].keys()
if any("MM ID" in string for string in
data["stats"][0]['STATS'][0].keys()):
if temp in data["stats"][0]["STATS"][1].keys():
if (
data["stats"][0]["STATS"][1][temp] is not None
and not data["stats"][0]["STATS"][1][temp] == 0.0
):
miner_temp_list.append(
data["stats"][0]["STATS"][1][temp]
)
data["stats"][0]["STATS"][0].keys()
if any(
"MM ID" in string
for string in data["stats"][0]["STATS"][0].keys()
):
temp_all = []
for key in [string for string in data["stats"][0]['STATS'][0].keys() if "MM ID" in string]:
for value in [string for string in data["stats"][0]['STATS'][0][key].split(" ") if "TMax" in string]:
temp_all.append(int(value.split("[")[1].replace("]", "")))
for key in [
string
for string in data["stats"][0]["STATS"][0].keys()
if "MM ID" in string
]:
for value in [
string
for string in data["stats"][0]["STATS"][0][key].split(
" "
)
if "TMax" in string
]:
temp_all.append(
int(value.split("[")[1].replace("]", ""))
)
miner_temp_list.append(round(sum(temp_all) / len(temp_all)))
if "stats" in data.keys() and not miner_fans:
@@ -82,19 +106,26 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
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]})
{"RPM": miner_stats["STATS"][1][item]}
)
if miner_summary:
if 'MHS av' in miner_summary['SUMMARY'][0].keys():
hashrate = float(format(
round(
miner_summary['SUMMARY'][0]['MHS av'] / 1000000,
2), ".2f"))
elif 'GHS av' in miner_summary['SUMMARY'][0].keys():
hashrate = float(format(
round(miner_summary['SUMMARY'][0]['GHS av'] / 1000,
2),
".2f"))
if "MHS av" in miner_summary["SUMMARY"][0].keys():
hashrate = float(
format(
round(
miner_summary["SUMMARY"][0]["MHS av"] / 1000000, 2
),
".2f",
)
)
elif "GHS av" in miner_summary["SUMMARY"][0].keys():
hashrate = float(
format(
round(miner_summary["SUMMARY"][0]["GHS av"] / 1000, 2),
".2f",
)
)
else:
hashrate = 0
else:
@@ -111,24 +142,25 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
if len(miner_temp_list) == 0:
miner_temps_list = [0]
data = {"hashrate": hashrate,
"fans": fan_speeds,
"temp": round(sum(miner_temp_list)/len(miner_temp_list), 2),
"datetime": datetime.datetime.now().isoformat(),
"model": miner_model}
data = {
"hashrate": hashrate,
"fans": fan_speeds,
"temp": round(sum(miner_temp_list) / len(miner_temp_list), 2),
"datetime": datetime.datetime.now().isoformat(),
"model": miner_model,
}
print(data)
await websocket.send_json(data)
await asyncio.sleep(settings["graph_data_sleep_time"])
except asyncio.exceptions.TimeoutError:
data = {"error": "The miner is not responding."}
await websocket.send_json(data)
await asyncio.sleep(.5)
await asyncio.sleep(0.5)
except KeyError as e:
print(e)
data = {
"error": "The miner returned unusable/unsupported data."}
data = {"error": "The miner returned unusable/unsupported data."}
await websocket.send_json(data)
await asyncio.sleep(.5)
await asyncio.sleep(0.5)
except WebSocketDisconnect:
print("Websocket disconnected.")
except websockets.exceptions.ConnectionClosedOK:

View File

@@ -11,10 +11,9 @@ router.include_router(ws_router)
@router.get("/")
def scan(request: Request):
return templates.TemplateResponse("scan.html", {
"request": request,
"cur_miners": get_current_miner_list()
})
return templates.TemplateResponse(
"scan.html", {"request": request, "cur_miners": get_current_miner_list()}
)
@router.post("/add_miners")

View File

@@ -25,12 +25,14 @@ async def do_websocket_scan(websocket: WebSocket, network_ip: str):
all_miners = []
async for found_miner in get_miner_generator:
all_miners.append(
{"ip": found_miner.ip, "model": await found_miner.get_model()})
{"ip": found_miner.ip, "model": await found_miner.get_model()}
)
all_miners.sort(key=lambda x: x["ip"])
send_miners = []
for miner_ip in all_miners:
send_miners.append(
{"ip": str(miner_ip["ip"]), "model": miner_ip["model"]})
{"ip": str(miner_ip["ip"]), "model": miner_ip["model"]}
)
await websocket.send_json(send_miners)
await websocket.send_text("Done")
except asyncio.CancelledError:

View File

@@ -26,8 +26,7 @@ async def websocket_scan(websocket: WebSocket):
cur_task = None
await websocket.send_text("Cancelled")
else:
cur_task = asyncio.create_task(
do_websocket_scan(websocket, ws_data))
cur_task = asyncio.create_task(do_websocket_scan(websocket, ws_data))
if cur_task and cur_task.done():
cur_task = None
except WebSocketDisconnect:

View File

@@ -3,4 +3,5 @@ from fastapi.templating import Jinja2Templates
templates = Jinja2Templates(
directory=os.path.join(os.path.dirname(__file__), "templates"))
directory=os.path.join(os.path.dirname(__file__), "templates")
)