Skip to main content

Revive Hardware Restarter API Library

Project description

# pyrevive
## Revive Hardware Restarter API Library
This Python package is meant for interfacing with the Revive Hardware Restarter HTTP API. Revive is a hardware restarter and monitor for cryptocurrency mining rigs.

You can find out more and buy one [here](https://revolutionrigs.com/revive)

If you find this library helpful, donations are greatly appreciated:

* Ethereum: 0x7472a4812200fc320793a946f027d559e63b164d
* Ethereum Classic: 0x20282a304c20399b6534cef6196a99978cb89588
* Bitcoin: 1LvnfMGfz8xTaZgi25DiRFaJoFvpAPncT5
* Bitcoin Cash: 1Ec3CPq3WPsWT7fQaDGgTYkVPNtMZ3CVaA
* Litecoin: LSZBbS7EsKnjXQ1FKxYuAmR5quzEazXfm1
* Electroneum: etnk3yDpybAEBqz3nq63qmev4thRi9eFH64CVKzZc2w3A7vehpZkGvd97uSWxtmtAwjTnfKEp9Rup3md7nZyu9Q49VzZQKhxWN


### Installing using PIP
```
pip install pyrevive
```

### Installing from source
```
git clone https://github.com/RevolutionRigs/pyrevive.git
cd pyrevive/
pip install .
````

If you do not want to install using pip you may install using setup.py
```
git clone https://github.com/RevolutionRigs/pyrevive.git
cd pyrevive/
python setup.py install
```

### Importing
```
import pyrevive
```

### Connecting
The connect() method takes two arguments: host[:port], authorizationKey
The authorization key can be found on the bottom of your Revive.

```
revive = pyrevive.connect("192.168.1.254", "authorizationKey")
````

### Power
Perform power on, off, reset functions on a Revive port (aka rig)

#### Power on rig 1
```
revive.power.on(1)
````

#### Power off rig 1
```
revive.power.off(1)
````

#### Power cycle rig 1
All cycle/reset/restart methods are aliases of one another and do the same thing

```
revive.power.cycle(1)
revive.power.reset(1)
revive.power.restart(1)
````

#### Power on rigs 1-16
```
for rig in range(1, 17):
revive.power.on(rig)
```

### Device
Device specific actions and authorization

#### Device Authorization check
```
revive.device.auth()
```

#### Get Device ID
```
revive.device.id()
```

#### Device Hello message (currently returns device ID)
```
revive.device.hello()
```

### Rig
Rig specific methods: get() and update()

#### Rig.Get
The revive.rig.get() method takes an integer (1-16) as the rig/port number or no argument to get information on all port numbers. Returns a JSON string with the values. The API is currently broken on Revive and only port 1 is returned, regardless of which port you specify.

```
# Get information about all ports/rigs
res = revive.rig.get()
print(res)

# Get information about port/rig 1
res = revive.rig.get(1)
print(res)
```

#### Rig.Update
Updates the rig (aka port) with the specified information. It takes a Python dict as an argument. Possible fields are:

* port (int, 1-16, required) - physical port which will be updated. We don't have rig id, instead we use this port number
* name (char) - name of the rig
* ip (IP address) - IP address of the rig, used when mode is set to watchdog
* mode (char, manual|watchdog|api)
* maintenance (boolean) - not used for now

```
payload = { "port": 3, "name": "RRMS40U", "ip": "192.168.100.101", "mode": "manual", "maintenance": False }
res = revive.rig.update(payload)
print(res)
```

### Config
Retrieves and sets network and watchdog information on the Revive.

#### Config.Network
The revive.config.network object sets the following read-write variables:

* revive.config.network.mode
* revive.config.network.ip
* revive.config.network.netmask
* revive.config.network.gateway
* revive.config.network.primaryDNS
* revive.config.network.secondaryDNS

##### Viewing
You can view the current settings in two ways. Using a helper method show():

```
revive.config.network.show()
```

Or each individual setting:

```
print(revive.config.network.mode)
print(revive.config.network.ip)
print(revive.config.network.netmask)
print(revive.config.network.gateway)
print(revive.config.network.primaryDNS)
print(revive.config.network.secondaryDNS)
```

There is also a dictionary on the network object 'settings' that you can view the settings as well:
```
print(revive.config.network.settings)
```

##### Updating
The individual settings are read-write and can be changed and then saved back to the Revive using the save() method:

```
revive.config.network.show()

revive.config.network.ip = "10.1.1.254"
revive.config.network.netmask = "255.255.255.0"
revive.config.network.gateway = "10.1.1.1"
revive.config.network.primaryDNS = "8.8.8.8"
revive.config.network.secondaryDNS = "8.8.4.4"

res = revive.config.network.save()
print(res)

revive.config.network.show()
```

### Config.Watchdog
The Revive watchdog feature has 3 settings you can modify. The revive.config.watchdog object has three read-write variables:

* revive.config.watchdog.settings
* revive.config.watchdog.pingInterval
* revive.config.watchdog.firstResetAfter
* revive.config.watchdog.anotherResetEvery

##### Viewing
You can view the current settings in two ways. Using a helper method show():

```
revive.config.watchdog.show()
```

Or you can view the settings individually:

```
print(revive.config.watchdog.settings)
print(revive.config.watchdog.pingInterval)
print(revive.config.watchdog.firstResetAfter)
print(revive.config.watchdog.anotherResetEvery)
```

There is also a dictionary on the watchdog object 'settings' that you can view the settings as well:
```
print(revive.config.watchdog.settings)
```

##### Updating
The individual settings are read-write and can be changed and then saved back to the Revive using the save() method:

```
revive.config.watchdog.show()

revive.config.watchdog.pingInterval = "5"
revive.config.watchdog.firstResetAfter = "90"
revive.config.watchdog.anotherResetEvery = "120"

res = revive.config.watchdog.save()
print(res)

revive.config.watchdog.show()
```

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyrevive-0.0.1.tar.gz (6.2 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page