update README.md

This commit is contained in:
UpstreamData
2022-05-13 11:35:37 -06:00
parent 038aae95ac
commit 6d5a288120

104
README.md
View File

@@ -102,57 +102,6 @@ async def get_miner_hashrate(ip: str):
print(data) print(data)
if __name__ == '__main__':
asyncio.new_event_loop().run_until_complete(
get_miner_hashrate(str("192.168.1.69")))
```
<br>
Or generate a miner directly without the factory:
```python
import asyncio
from miners._backends.bosminer import BOSMiner
from tools.cfg_util_old.func.parse_data import safe_parse_api_data
async def get_miner_hashrate(ip: str):
# Create a BOSminer miner object
miner = BOSMiner(ip)
# Get the API data
summary = await miner.api.summary()
# safe_parse_api_data parses the data from a miner API
# It will raise an APIError (from API import APIError) if there is a problem
data = await safe_parse_api_data(summary, 'SUMMARY', 0, 'MHS 5s')
print(data)
if __name__ == '__main__':
asyncio.new_event_loop().run_until_complete(
get_miner_hashrate(str("192.168.1.69")))
```
<br>
Or finally, just get the API directly:
```python
import asyncio
from API.bosminer import BOSMinerAPI
from tools.cfg_util_old.func.parse_data import safe_parse_api_data
async def get_miner_hashrate(ip: str):
# Create a BOSminerAPI object
# Port can be declared manually, if not it defaults to 4028
api = BOSMinerAPI(ip, port=4028)
# Get the API data
summary = await api.summary()
# safe_parse_api_data parses the data from a miner API
# It will raise an APIError (from API import APIError) if there is a problem
data = await safe_parse_api_data(summary, 'SUMMARY', 0, 'MHS 5s')
print(data)
if __name__ == '__main__': if __name__ == '__main__':
asyncio.new_event_loop().run_until_complete( asyncio.new_event_loop().run_until_complete(
get_miner_hashrate(str("192.168.1.69"))) get_miner_hashrate(str("192.168.1.69")))
@@ -162,13 +111,40 @@ if __name__ == '__main__':
Now that you know that, lets move on to some common API functions that you might want to use. Now that you know that, lets move on to some common API functions that you might want to use.
### Common commands: ### Common commands:
* Get the data used by the config utility:
```python
import asyncio
import ipaddress
from miners.miner_factory import MinerFactory
async def get_miner_pool_data(ip: str):
# Instantiate a Miner Factory to generate miners from their IP
miner_factory = MinerFactory()
# Make the string IP into an IP address
miner_ip = ipaddress.ip_address(ip)
# Wait for the factory to return the miner
miner = await miner_factory.get_miner(miner_ip)
# Get the data
data = await miner.get_data()
print(data)
if __name__ == '__main__':
asyncio.new_event_loop().run_until_complete(
get_miner_pool_data(str("192.168.1.69")))
```
* Getting pool data: * Getting pool data:
```python ```python
import asyncio import asyncio
import ipaddress import ipaddress
from miners.miner_factory import MinerFactory from miners.miner_factory import MinerFactory
from tools.cfg_util_old.func.parse_data import safe_parse_api_data
async def get_miner_pool_data(ip: str): async def get_miner_pool_data(ip: str):
@@ -182,7 +158,7 @@ async def get_miner_pool_data(ip: str):
pools = await miner.api.pools() pools = await miner.api.pools()
# safe_parse_api_data parses the data from a miner API # safe_parse_api_data parses the data from a miner API
# It will raise an APIError (from API import APIError) if there is a problem # It will raise an APIError (from API import APIError) if there is a problem
data = await safe_parse_api_data(pools, 'POOLS') data = pools["POOLS"]
# parse further from here to get all the pool info you want. # parse further from here to get all the pool info you want.
# each pool is on a different index eg: # each pool is on a different index eg:
# data[0] is pool 1 # data[0] is pool 1
@@ -208,7 +184,6 @@ A pretty good example of really trying to make this robust is in ```cfg_util.fun
import asyncio import asyncio
import ipaddress import ipaddress
from miners.miner_factory import MinerFactory from miners.miner_factory import MinerFactory
from tools.cfg_util_old.func.parse_data import safe_parse_api_data
async def get_miner_temperature_data(ip: str): async def get_miner_temperature_data(ip: str):
@@ -220,9 +195,8 @@ async def get_miner_temperature_data(ip: str):
miner = await miner_factory.get_miner(miner_ip) miner = await miner_factory.get_miner(miner_ip)
# Get the API data # Get the API data
summary = await miner.api.summary() summary = await miner.api.summary()
# safe_parse_api_data parses the data from a miner API
# It will raise an APIError (from API import APIError) if there is a problem data = summary['SUMMARY'][0]["Temperature"]
data = await safe_parse_api_data(summary, 'SUMMARY', 0, "Temperature")
print(data) print(data)
@@ -239,10 +213,10 @@ How about data on the power usage of the miner? This one only works for Whatsmi
import asyncio import asyncio
import ipaddress import ipaddress
from miners.miner_factory import MinerFactory from miners.miner_factory import MinerFactory
from tools.cfg_util_old.func.parse_data import safe_parse_api_data
async def get_miner_power_data(ip: str): async def get_miner_power_data(ip: str):
data = None
# Instantiate a Miner Factory to generate miners from their IP # Instantiate a Miner Factory to generate miners from their IP
miner_factory = MinerFactory() miner_factory = MinerFactory()
# Make the string IP into an IP address # Make the string IP into an IP address
@@ -254,16 +228,16 @@ async def get_miner_power_data(ip: str):
# send the command # send the command
tunerstatus = await miner.api.tunerstatus() tunerstatus = await miner.api.tunerstatus()
# parse the return # parse the return
data = await safe_parse_api_data(tunerstatus, 'TUNERSTATUS', 0, data = tunerstatus['TUNERSTATUS'][0]["PowerLimit"]
"PowerLimit")
else: else:
# send the command # send the command
# whatsminers have the power info in summary # whatsminers have the power info in summary
summary = await miner.api.summary() summary = await miner.api.summary()
# parse the return # parse the return
data = await safe_parse_api_data(summary, 'SUMMARY', 0, "Power") data = summary['SUMMARY'][0]["Power"]
print(data) if data:
print(data)
if __name__ == '__main__': if __name__ == '__main__':
@@ -293,12 +267,10 @@ async def get_miner_hashrate_and_pool(ip: str):
# Get the API data # Get the API data
api_data = await miner.api.multicommand("pools", "summary") api_data = await miner.api.multicommand("pools", "summary")
if "pools" in api_data.keys(): if "pools" in api_data.keys():
user = await safe_parse_api_data(api_data, "pools", 0, "POOLS", 0, user = api_data["pools"][0]["POOLS"][0]["User"]
"User")
print(user) print(user)
if "summary" in api_data.keys(): if "summary" in api_data.keys():
hashrate = await safe_parse_api_data(api_data, "summary", 0, "SUMMARY", hashrate = api_data["summary"][0]["SUMMARY"][0]["MHS av"]
0, "MHS av")
print(hashrate) print(hashrate)