Initial commit: Gridseed WebGUI implementation
This commit is contained in:
70
cgminer_api.py
Normal file
70
cgminer_api.py
Normal file
@@ -0,0 +1,70 @@
|
||||
import socket
|
||||
import json
|
||||
|
||||
class CgminerAPI:
|
||||
def __init__(self, host='127.0.0.1', port=4028):
|
||||
self.host = host
|
||||
self.port = port
|
||||
|
||||
def _send_command(self, command, parameter=None):
|
||||
try:
|
||||
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||
s.settimeout(2)
|
||||
s.connect((self.host, self.port))
|
||||
|
||||
payload = {"command": command}
|
||||
if parameter:
|
||||
payload["parameter"] = parameter
|
||||
|
||||
s.send(json.dumps(payload).encode('utf-8'))
|
||||
|
||||
response = ""
|
||||
while True:
|
||||
data = s.recv(4096)
|
||||
if not data:
|
||||
break
|
||||
response += data.decode('utf-8').replace('\x00', '')
|
||||
|
||||
s.close()
|
||||
|
||||
if response:
|
||||
return json.loads(response)
|
||||
return None
|
||||
except Exception as e:
|
||||
print(f"Error communicating with cgminer: {e}")
|
||||
return None
|
||||
|
||||
def summary(self):
|
||||
"""Get summary stats (hashrate, hw errors, etc)"""
|
||||
return self._send_command("summary")
|
||||
|
||||
def pools(self):
|
||||
"""Get pool stats"""
|
||||
return self._send_command("pools")
|
||||
|
||||
def devs(self):
|
||||
"""Get device stats (temperatures, individual chips)"""
|
||||
return self._send_command("devs")
|
||||
|
||||
def stats(self):
|
||||
"""Get general stats"""
|
||||
return self._send_command("stats")
|
||||
|
||||
def add_pool(self, url, user, password):
|
||||
"""Add a new pool"""
|
||||
# Command format for addpool might vary, usually it's command=addpool, parameter=url,user,pass
|
||||
# But cgminer api often expects just parameter string comma separated
|
||||
param = f"{url},{user},{password}"
|
||||
return self._send_command("addpool", param)
|
||||
|
||||
def remove_pool(self, pool_id):
|
||||
return self._send_command("removepool", str(pool_id))
|
||||
|
||||
def switch_pool(self, pool_id):
|
||||
return self._send_command("switchpool", str(pool_id))
|
||||
|
||||
def restart(self):
|
||||
return self._send_command("restart")
|
||||
|
||||
def quit(self):
|
||||
return self._send_command("quit")
|
||||
Reference in New Issue
Block a user