Added switches for each device which allow for enabling/disabling mining.
very basic, needs testing. * To do: Set switch to reflect the current state on init. (Currently defaults to off after HA reboot.) * Occasionally the custom component fails to load on HA start. Usually fixed by restarting HA. * When switches are toggled occasionally a false error is reported. This could be due to async call. The desired behavior still occurs though.
This commit is contained in:
parent
bbe51fef8d
commit
0e94842c9d
@ -118,6 +118,8 @@ async def async_setup(hass: HomeAssistant, config: Config):
|
||||
|
||||
hass.data[DOMAIN]["rigs_coordinator"] = rigs_coordinator
|
||||
|
||||
await discovery.async_load_platform(hass, "switch", DOMAIN, {}, config)
|
||||
await discovery.async_load_platform(hass, "sensor", DOMAIN, {}, config)
|
||||
|
||||
|
||||
return True
|
||||
|
@ -157,6 +157,13 @@ class NiceHashPrivateClient:
|
||||
query = f"size={size}"
|
||||
return await self.request("GET", "/main/api/v2/mining/rigs/payouts", query)
|
||||
|
||||
async def toggle_device(self, device_id, action, rig_id):
|
||||
query = ""
|
||||
body = {"deviceId":device_id,
|
||||
"action":action,
|
||||
"rigId":rig_id}
|
||||
return await self.request("POST", "/main/api/v2/mining/rigs/status2", query, body)
|
||||
|
||||
async def request(self, method, path, query="", body=None):
|
||||
xtime = self.get_epoch_ms_from_now()
|
||||
xnonce = str(uuid.uuid4())
|
||||
|
82
custom_components/nicehash/switch.py
Normal file
82
custom_components/nicehash/switch.py
Normal file
@ -0,0 +1,82 @@
|
||||
"""
|
||||
Sensor platform for NiceHash
|
||||
"""
|
||||
import logging
|
||||
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_ATTRIBUTION
|
||||
from homeassistant.core import Config, HomeAssistant
|
||||
|
||||
from .const import (
|
||||
BALANCE_TYPE_AVAILABLE,
|
||||
BALANCE_TYPE_PENDING,
|
||||
BALANCE_TYPE_TOTAL,
|
||||
CURRENCY_BTC,
|
||||
CURRENCY_EUR,
|
||||
CURRENCY_USD,
|
||||
DOMAIN,
|
||||
DEVICE_LOAD,
|
||||
DEVICE_RPM,
|
||||
DEVICE_SPEED_RATE,
|
||||
DEVICE_SPEED_ALGORITHM,
|
||||
)
|
||||
from .nicehash import (
|
||||
MiningRig,
|
||||
MiningRigDevice,
|
||||
NiceHashPrivateClient,
|
||||
NiceHashPublicClient,
|
||||
)
|
||||
from .control_switches import (
|
||||
GPUSwitch
|
||||
)
|
||||
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
|
||||
async def async_setup_platform(
|
||||
hass: HomeAssistant, config: Config, async_add_entities, discovery_info=None
|
||||
):
|
||||
"""Setup NiceHash sensor platform"""
|
||||
_LOGGER.debug("Creating new NiceHash switch components")
|
||||
|
||||
data = hass.data[DOMAIN]
|
||||
# Configuration
|
||||
organization_id = data.get("organization_id")
|
||||
client = data.get("client")
|
||||
# Options
|
||||
currency = data.get("currency")
|
||||
balances_enabled = data.get("balances_enabled")
|
||||
payouts_enabled = data.get("payouts_enabled")
|
||||
rigs_enabled = data.get("rigs_enabled")
|
||||
devices_enabled = data.get("devices_enabled")
|
||||
|
||||
|
||||
# Mining rig and device sensors
|
||||
if rigs_enabled or devices_enabled:
|
||||
rigs_coordinator = data.get("rigs_coordinator")
|
||||
rig_data = await client.get_mining_rigs()
|
||||
mining_rigs = rig_data.get("miningRigs")
|
||||
_LOGGER.debug(f"Found {len(mining_rigs)} rigs")
|
||||
|
||||
if devices_enabled:
|
||||
_LOGGER.debug("Device sensors enabled")
|
||||
device_switches = create_device_switches(mining_rigs, rigs_coordinator,client)
|
||||
async_add_entities(device_switches, True)
|
||||
|
||||
|
||||
|
||||
def create_device_switches(mining_rigs, coordinator, client):
|
||||
device_switches = []
|
||||
for rig_data in mining_rigs:
|
||||
rig = MiningRig(rig_data)
|
||||
devices = rig.devices.values()
|
||||
_LOGGER.debug(
|
||||
f"Found {len(devices)} device switches(s) for {rig.name} ({rig.id})"
|
||||
)
|
||||
for device in devices:
|
||||
_LOGGER.debug(f"Creating {device.name} ({device.id}) switches")
|
||||
device_switches.append(GPUSwitch(coordinator, rig, device, client))
|
||||
|
||||
return device_switches
|
||||
|
Loading…
Reference in New Issue
Block a user