add temperature graph to miner page

This commit is contained in:
UpstreamData
2022-03-21 10:02:11 -06:00
parent e267073f76
commit 02581e917d
2 changed files with 40 additions and 1 deletions

View File

@@ -27,7 +27,7 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
)
data = await asyncio.wait_for(
cur_miner.api.multicommand("summary", "fans", "stats"),
cur_miner.api.multicommand("summary", "fans", "stats", "devs", "temps"),
miner_data_timeout
)
miner_model = await cur_miner.get_model()
@@ -47,6 +47,35 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
if "fans" in data.keys():
miner_fans = data["fans"][0]
miner_temp_list = []
if "temps" in data.keys():
miner_temps = data["temps"][0]
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 "stats" in data.keys() and not len(miner_temp_list) > 0:
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()):
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("]", "")))
miner_temp_list.append(round(sum(temp_all) / len(temp_all)))
if "stats" in data.keys() and not miner_fans:
miner_stats = data["stats"][0]
miner_fans = {"FANS": []}
@@ -79,10 +108,15 @@ async def miner_websocket(websocket: WebSocket, miner_ip):
while len(fan_speeds) < 4:
fan_speeds.append(0)
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}
print(data)
await websocket.send_json(data)
await asyncio.sleep(settings["graph_data_sleep_time"])
except asyncio.exceptions.TimeoutError:

View File

@@ -112,8 +112,12 @@ ws.onmessage = function(event) {
datetime = luxon.DateTime.fromISO(new_data["datetime"]).toLocal();
if (minerDataChart.data.labels.length > 50) minerDataChart.data.labels.shift();
if (minerDataChart.data.datasets[0].data.length > 50) minerDataChart.data.datasets[0].data.shift();
if (minerTempChart.data.labels.length > 50) minerTempChart.data.labels.shift();
if (minerTempChart.data.datasets[0].data.length > 50) minerTempChart.data.datasets[0].data.shift();
minerDataChart.data.labels.push(datetime.toLocaleString(luxon.DateTime.TIME_WITH_SECONDS));
minerDataChart.data.datasets[0].data.push(new_data["hashrate"].toFixed(2));
minerTempChart.data.labels.push(datetime.toLocaleString(luxon.DateTime.TIME_WITH_SECONDS));
minerTempChart.data.datasets[0].data.push(new_data["temp"].toFixed(2));
fan1Chart.data.datasets[0].data = [new_data["fans"][0], 6000-new_data["fans"][0]]
fan2Chart.data.datasets[0].data = [new_data["fans"][1], 6000-new_data["fans"][1]]
fan3Chart.data.datasets[0].data = [new_data["fans"][2], 6000-new_data["fans"][2]]
@@ -127,6 +131,7 @@ ws.onmessage = function(event) {
fan3Chart.update();
fan4Chart.update();
minerDataChart.update();
minerTempChart.update();
var miner_hr = document.getElementById("minerHashrate")
miner_hr.innerHTML = new_data["hashrate"].toFixed(2) + " TH/s"
var miner_model = document.getElementById("minerModel")