Added current pool username to get data
This commit is contained in:
@@ -30,8 +30,12 @@ class BaseMinerAPI:
|
|||||||
return await self.send_command(command)
|
return await self.send_command(command)
|
||||||
|
|
||||||
async def send_command(self, command: str, parameters: str = None) -> dict:
|
async def send_command(self, command: str, parameters: str = None) -> dict:
|
||||||
|
try:
|
||||||
# get reader and writer streams
|
# get reader and writer streams
|
||||||
reader, writer = await asyncio.open_connection(str(self.ip), self.port)
|
reader, writer = await asyncio.open_connection(str(self.ip), self.port)
|
||||||
|
except OSError as e:
|
||||||
|
if e.winerror == "121":
|
||||||
|
print("Semaphore Timeout has Expired.")
|
||||||
|
|
||||||
# create the command
|
# create the command
|
||||||
cmd = {"command": command}
|
cmd = {"command": command}
|
||||||
|
|||||||
@@ -13,12 +13,12 @@ from miners.miner_factory import MinerFactory
|
|||||||
from network import MinerNetwork
|
from network import MinerNetwork
|
||||||
|
|
||||||
layout = [
|
layout = [
|
||||||
[sg.Text('Network IP: '), sg.InputText(key='miner_network', do_not_clear=True, size=(70, 1)),
|
[sg.Text('Network IP: '), sg.InputText(key='miner_network', do_not_clear=True, size=(90, 1)),
|
||||||
sg.Button('Scan', key='scan'),
|
sg.Button('Scan', key='scan'),
|
||||||
sg.Text("", key="status")],
|
sg.Text("", key="status")],
|
||||||
[sg.Text('IP List File: '), sg.Input(key="file_iplist", do_not_clear=True, size=(70, 1)), sg.FileBrowse(),
|
[sg.Text('IP List File: '), sg.Input(key="file_iplist", do_not_clear=True, size=(90, 1)), sg.FileBrowse(),
|
||||||
sg.Button('Import', key="import_iplist")],
|
sg.Button('Import', key="import_iplist")],
|
||||||
[sg.Text('Config File: '), sg.Input(key="file_config", do_not_clear=True, size=(70, 1)), sg.FileBrowse(),
|
[sg.Text('Config File: '), sg.Input(key="file_config", do_not_clear=True, size=(90, 1)), sg.FileBrowse(),
|
||||||
sg.Button('Import', key="import_file_config"), sg.Button('Export', key="export_file_config")],
|
sg.Button('Import', key="import_file_config"), sg.Button('Export', key="export_file_config")],
|
||||||
[
|
[
|
||||||
sg.Column([
|
sg.Column([
|
||||||
@@ -27,8 +27,8 @@ layout = [
|
|||||||
[sg.Listbox([], size=(20, 32), key="ip_list", select_mode='extended')]
|
[sg.Listbox([], size=(20, 32), key="ip_list", select_mode='extended')]
|
||||||
]),
|
]),
|
||||||
sg.Column([
|
sg.Column([
|
||||||
[sg.Text("Hashrates: ", pad=(0, 0)), sg.Button('GET', key="get_hashrates")],
|
[sg.Text("Data: ", pad=(0, 0)), sg.Button('GET', key="get_data")],
|
||||||
[sg.Listbox([], size=(25, 32), key="hr_list")]
|
[sg.Listbox([], size=(50, 32), key="hr_list")]
|
||||||
]),
|
]),
|
||||||
sg.Column([
|
sg.Column([
|
||||||
[sg.Text("Config"), sg.Button("IMPORT", key="import_config"), sg.Button("CONFIG", key="send_config"),
|
[sg.Text("Config"), sg.Button("IMPORT", key="import_config"), sg.Button("CONFIG", key="send_config"),
|
||||||
@@ -38,7 +38,7 @@ layout = [
|
|||||||
],
|
],
|
||||||
]
|
]
|
||||||
|
|
||||||
window = sg.Window('Test', layout)
|
window = sg.Window('Upstream Config Util', layout)
|
||||||
miner_factory = MinerFactory()
|
miner_factory = MinerFactory()
|
||||||
|
|
||||||
|
|
||||||
@@ -105,10 +105,8 @@ async def import_iplist(file_location):
|
|||||||
|
|
||||||
async def send_config(ips: list, config):
|
async def send_config(ips: list, config):
|
||||||
await update_ui_with_data("status", "Configuring")
|
await update_ui_with_data("status", "Configuring")
|
||||||
config = toml.loads(config)
|
|
||||||
config['format']['generator'] = 'upstream_config_util'
|
config['format']['generator'] = 'upstream_config_util'
|
||||||
config['format']['timestamp'] = int(time.time())
|
config['format']['timestamp'] = int(time.time())
|
||||||
config = toml.dumps(config)
|
|
||||||
tasks = []
|
tasks = []
|
||||||
for ip in ips:
|
for ip in ips:
|
||||||
tasks.append(miner_factory.get_miner(ip))
|
tasks.append(miner_factory.get_miner(ip))
|
||||||
@@ -142,23 +140,24 @@ async def export_config_file(file_location, config):
|
|||||||
await update_ui_with_data("status", "")
|
await update_ui_with_data("status", "")
|
||||||
|
|
||||||
|
|
||||||
async def get_hashrates(ip_list: list):
|
async def get_data(ip_list: list):
|
||||||
await update_ui_with_data("status", "Getting HR")
|
await update_ui_with_data("status", "Getting Data")
|
||||||
ips = [ipaddress.ip_address(ip) for ip in ip_list]
|
ips = [ipaddress.ip_address(ip) for ip in ip_list]
|
||||||
ips.sort()
|
ips.sort()
|
||||||
data = await asyncio.gather(*[get_formatted_hashrate(miner) for miner in ips])
|
data = await asyncio.gather(*[get_formatted_data(miner) for miner in ips])
|
||||||
window["hr_list"].update(disabled=False)
|
window["hr_list"].update(disabled=False)
|
||||||
window["hr_list"].update([item['IP'] + " | " + str(item['TH/s']) + " TH/s" for item in data])
|
window["hr_list"].update([item['IP'] + " | " + str(item['TH/s']) + " TH/s | " + item['user'] for item in data])
|
||||||
window["hr_list"].update(disabled=True)
|
window["hr_list"].update(disabled=True)
|
||||||
|
|
||||||
await update_ui_with_data("status", "")
|
await update_ui_with_data("status", "")
|
||||||
|
|
||||||
|
|
||||||
async def get_formatted_hashrate(ip: ipaddress.ip_address):
|
async def get_formatted_data(ip: ipaddress.ip_address):
|
||||||
miner = await miner_factory.get_miner(ip)
|
miner = await miner_factory.get_miner(ip)
|
||||||
data = await miner.api.summary()
|
data = await miner.api.multicommand("summary", "pools")
|
||||||
mh5s = round(data['SUMMARY'][0]['MHS 5s'] / 1000000, 2)
|
mh5s = round(data['summary'][0]['SUMMARY'][0]['MHS 5s'] / 1000000, 2)
|
||||||
return {'TH/s': mh5s, 'IP': str(miner.ip)}
|
user = data['pools'][0]['POOLS'][0]['User']
|
||||||
|
return {'TH/s': mh5s, 'IP': str(miner.ip), 'user': user}
|
||||||
|
|
||||||
|
|
||||||
async def generate_config():
|
async def generate_config():
|
||||||
@@ -228,8 +227,8 @@ async def ui():
|
|||||||
asyncio.create_task(import_config_file(value['file_config']))
|
asyncio.create_task(import_config_file(value['file_config']))
|
||||||
if event == "export_file_config":
|
if event == "export_file_config":
|
||||||
asyncio.create_task(export_config_file(value['file_config'], value["config"]))
|
asyncio.create_task(export_config_file(value['file_config'], value["config"]))
|
||||||
if event == "get_hashrates":
|
if event == "get_data":
|
||||||
asyncio.create_task(get_hashrates(value['ip_list']))
|
asyncio.create_task(get_data(value['ip_list']))
|
||||||
if event == "generate_config":
|
if event == "generate_config":
|
||||||
asyncio.create_task(generate_config())
|
asyncio.create_task(generate_config())
|
||||||
if event == "__TIMEOUT__":
|
if event == "__TIMEOUT__":
|
||||||
|
|||||||
Reference in New Issue
Block a user