Added current pool username to get data

This commit is contained in:
UpstreamData
2021-10-19 15:17:42 -06:00
parent fdeb50ab76
commit f9cae8017c
2 changed files with 23 additions and 20 deletions

View File

@@ -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:
# get reader and writer streams try:
reader, writer = await asyncio.open_connection(str(self.ip), self.port) # get reader and writer streams
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}

View File

@@ -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__":