feat: allow disabling rig/device sensors
- via "rigs" and "devices" configuration options - both default to false
This commit is contained in:
parent
d5f9f56f98
commit
1f33d3e05d
@ -18,6 +18,8 @@ from .const import (
|
||||
CONF_API_SECRET,
|
||||
CONF_CURRENCY,
|
||||
CONF_ORGANIZATION_ID,
|
||||
CONF_RIGS_ENABLED,
|
||||
CONF_DEVICES_ENABLED,
|
||||
CURRENCY_USD,
|
||||
DOMAIN,
|
||||
STARTUP_MESSAGE,
|
||||
@ -38,6 +40,8 @@ CONFIG_SCHEMA = vol.Schema(
|
||||
vol.Required(CONF_API_KEY): cv.string,
|
||||
vol.Required(CONF_API_SECRET): cv.string,
|
||||
vol.Required(CONF_CURRENCY, default=CURRENCY_USD): cv.string,
|
||||
vol.Required(CONF_RIGS_ENABLED, default=False): cv.boolean,
|
||||
vol.Required(CONF_DEVICES_ENABLED, default=False): cv.boolean,
|
||||
}
|
||||
)
|
||||
},
|
||||
@ -52,15 +56,18 @@ async def async_setup(hass: HomeAssistant, config: Config):
|
||||
_LOGGER.debug(STARTUP_MESSAGE)
|
||||
|
||||
nicehash_config = config[DOMAIN]
|
||||
# Configuration
|
||||
organization_id = nicehash_config.get(CONF_ORGANIZATION_ID)
|
||||
api_key = nicehash_config.get(CONF_API_KEY)
|
||||
api_secret = nicehash_config.get(CONF_API_SECRET)
|
||||
# Options
|
||||
currency = nicehash_config.get(CONF_CURRENCY).upper()
|
||||
rigs_enabled = nicehash_config.get(CONF_RIGS_ENABLED)
|
||||
devices_enabled = nicehash_config.get(CONF_DEVICES_ENABLED)
|
||||
|
||||
client = NiceHashPrivateClient(organization_id, api_key, api_secret)
|
||||
|
||||
accounts_coordinator = NiceHashAccountsDataUpdateCoordinator(hass, client)
|
||||
rigs_coordinator = NiceHashMiningRigsDataUpdateCoordinator(hass, client)
|
||||
|
||||
await accounts_coordinator.async_refresh()
|
||||
|
||||
@ -68,16 +75,21 @@ async def async_setup(hass: HomeAssistant, config: Config):
|
||||
_LOGGER.error("Unable to get NiceHash accounts")
|
||||
raise PlatformNotReady
|
||||
|
||||
hass.data[DOMAIN]["organization_id"] = organization_id
|
||||
hass.data[DOMAIN]["client"] = client
|
||||
hass.data[DOMAIN]["currency"] = currency
|
||||
hass.data[DOMAIN]["accounts_coordinator"] = accounts_coordinator
|
||||
|
||||
if rigs_enabled or devices_enabled:
|
||||
rigs_coordinator = NiceHashMiningRigsDataUpdateCoordinator(hass, client)
|
||||
await rigs_coordinator.async_refresh()
|
||||
|
||||
if not rigs_coordinator.last_update_success:
|
||||
_LOGGER.error("Unable to get NiceHash mining rigs")
|
||||
raise PlatformNotReady
|
||||
|
||||
hass.data[DOMAIN]["organization_id"] = organization_id
|
||||
hass.data[DOMAIN]["client"] = client
|
||||
hass.data[DOMAIN]["currency"] = currency
|
||||
hass.data[DOMAIN]["accounts_coordinator"] = accounts_coordinator
|
||||
hass.data[DOMAIN]["rigs_enabled"] = rigs_enabled
|
||||
hass.data[DOMAIN]["devices_enabled"] = devices_enabled
|
||||
hass.data[DOMAIN]["rigs_coordinator"] = rigs_coordinator
|
||||
|
||||
await discovery.async_load_platform(hass, "sensor", DOMAIN, {}, config)
|
||||
|
@ -25,11 +25,12 @@ PLATFORMS = [SENSOR]
|
||||
|
||||
|
||||
# Configuration and options
|
||||
CONF_ENABLED = "enabled"
|
||||
CONF_API_KEY = "api_key"
|
||||
CONF_API_SECRET = "api_secret"
|
||||
CONF_ORGANIZATION_ID = "organization_id"
|
||||
CONF_CURRENCY = "currency"
|
||||
CONF_RIGS_ENABLED = "rigs"
|
||||
CONF_DEVICES_ENABLED = "devices"
|
||||
|
||||
|
||||
# Defaults
|
||||
|
@ -3,7 +3,6 @@ Sensor platform for NiceHash
|
||||
"""
|
||||
import logging
|
||||
|
||||
from homeassistant.components.sensor import PLATFORM_SCHEMA
|
||||
from homeassistant.config_entries import ConfigEntry
|
||||
from homeassistant.const import ATTR_ATTRIBUTION
|
||||
from homeassistant.core import Config, HomeAssistant
|
||||
@ -46,28 +45,56 @@ async def async_setup_platform(
|
||||
_LOGGER.debug("Creating new NiceHash sensor components")
|
||||
|
||||
data = hass.data[DOMAIN]
|
||||
# Configuration
|
||||
organization_id = data.get("organization_id")
|
||||
client = data.get("client")
|
||||
# Options
|
||||
currency = data.get("currency")
|
||||
accounts_coordinator = data.get("accounts_coordinator")
|
||||
rigs_coordinator = data.get("rigs_coordinator")
|
||||
rigs_enabled = data.get("rigs_enabled")
|
||||
devices_enabled = data.get("devices_enabled")
|
||||
|
||||
print(f"rigs: {rigs_enabled}")
|
||||
print(f"devices: {devices_enabled}")
|
||||
|
||||
# Add account balance sensors
|
||||
accounts_coordinator = data.get("accounts_coordinator")
|
||||
balance_sensors = create_balance_sensors(
|
||||
organization_id, currency, accounts_coordinator
|
||||
)
|
||||
async_add_entities(balance_sensors, True)
|
||||
|
||||
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")
|
||||
|
||||
# Add mining rig sensors if enabled
|
||||
if rigs_enabled:
|
||||
rig_sensors = create_rig_sensors(mining_rigs, rigs_coordinator)
|
||||
async_add_entities(rig_sensors, True)
|
||||
|
||||
# Add device sensors if enabled
|
||||
if devices_enabled:
|
||||
device_sensors = create_device_sensors(mining_rigs, rigs_coordinator)
|
||||
async_add_entities(device_sensors, True)
|
||||
|
||||
|
||||
def create_balance_sensors(organization_id, currency, coordinator):
|
||||
balance_sensors = [
|
||||
NiceHashBalanceSensor(
|
||||
accounts_coordinator,
|
||||
coordinator,
|
||||
organization_id,
|
||||
currency=CURRENCY_BTC,
|
||||
balance_type=BALANCE_TYPE_AVAILABLE,
|
||||
),
|
||||
NiceHashBalanceSensor(
|
||||
accounts_coordinator,
|
||||
coordinator,
|
||||
organization_id,
|
||||
currency=CURRENCY_BTC,
|
||||
balance_type=BALANCE_TYPE_PENDING,
|
||||
),
|
||||
NiceHashBalanceSensor(
|
||||
accounts_coordinator,
|
||||
coordinator,
|
||||
organization_id,
|
||||
currency=CURRENCY_BTC,
|
||||
balance_type=BALANCE_TYPE_TOTAL,
|
||||
@ -76,7 +103,7 @@ async def async_setup_platform(
|
||||
if currency == CURRENCY_USD or currency == CURRENCY_EUR:
|
||||
balance_sensors.append(
|
||||
NiceHashBalanceSensor(
|
||||
accounts_coordinator,
|
||||
coordinator,
|
||||
organization_id,
|
||||
currency=currency,
|
||||
balance_type=BALANCE_TYPE_AVAILABLE,
|
||||
@ -84,7 +111,7 @@ async def async_setup_platform(
|
||||
)
|
||||
balance_sensors.append(
|
||||
NiceHashBalanceSensor(
|
||||
accounts_coordinator,
|
||||
coordinator,
|
||||
organization_id,
|
||||
currency=currency,
|
||||
balance_type=BALANCE_TYPE_PENDING,
|
||||
@ -92,7 +119,7 @@ async def async_setup_platform(
|
||||
)
|
||||
balance_sensors.append(
|
||||
NiceHashBalanceSensor(
|
||||
accounts_coordinator,
|
||||
coordinator,
|
||||
organization_id,
|
||||
currency=currency,
|
||||
balance_type=BALANCE_TYPE_TOTAL,
|
||||
@ -101,49 +128,34 @@ async def async_setup_platform(
|
||||
else:
|
||||
_LOGGER.warn("Invalid currency: must be EUR or USD")
|
||||
|
||||
async_add_entities(balance_sensors, True)
|
||||
return balance_sensors
|
||||
|
||||
# Add mining rig sensors
|
||||
rig_data = await client.get_mining_rigs()
|
||||
mining_rigs = rig_data.get("miningRigs")
|
||||
|
||||
# Add status sensors
|
||||
async_add_entities(
|
||||
[NiceHashRigStatusSensor(rigs_coordinator, rig) for rig in mining_rigs], True,
|
||||
)
|
||||
# Add temperature sensors
|
||||
async_add_entities(
|
||||
[NiceHashRigTemperatureSensor(rigs_coordinator, rig) for rig in mining_rigs],
|
||||
True,
|
||||
)
|
||||
# Add profitability sensors
|
||||
async_add_entities(
|
||||
[NiceHashRigProfitabilitySensor(rigs_coordinator, rig) for rig in mining_rigs],
|
||||
True,
|
||||
)
|
||||
# Add device sensors
|
||||
def create_rig_sensors(mining_rigs, coordinator):
|
||||
rig_sensors = []
|
||||
for rig in mining_rigs:
|
||||
rig_sensors.append(NiceHashRigStatusSensor(coordinator, rig))
|
||||
rig_sensors.append(NiceHashRigTemperatureSensor(coordinator, rig))
|
||||
rig_sensors.append(NiceHashRigProfitabilitySensor(coordinator, rig))
|
||||
|
||||
return rig_sensors
|
||||
|
||||
|
||||
def create_device_sensors(mining_rigs, coordinator):
|
||||
device_sensors = []
|
||||
for rig in mining_rigs:
|
||||
devices = rig.get("devices")
|
||||
for i in range(len(devices)):
|
||||
device = devices[i]
|
||||
device_sensors.append(
|
||||
NiceHashDeviceAlgorithmSensor(rigs_coordinator, rig, device)
|
||||
NiceHashDeviceAlgorithmSensor(coordinator, rig, device)
|
||||
)
|
||||
device_sensors.append(NiceHashDeviceSpeedSensor(coordinator, rig, device))
|
||||
device_sensors.append(NiceHashDeviceStatusSensor(coordinator, rig, device))
|
||||
device_sensors.append(
|
||||
NiceHashDeviceSpeedSensor(rigs_coordinator, rig, device)
|
||||
)
|
||||
device_sensors.append(
|
||||
NiceHashDeviceStatusSensor(rigs_coordinator, rig, device)
|
||||
)
|
||||
device_sensors.append(
|
||||
NiceHashDeviceTemperatureSensor(rigs_coordinator, rig, device)
|
||||
)
|
||||
device_sensors.append(
|
||||
NiceHashDeviceLoadSensor(rigs_coordinator, rig, device)
|
||||
)
|
||||
device_sensors.append(
|
||||
NiceHashDeviceRPMSensor(rigs_coordinator, rig, device)
|
||||
NiceHashDeviceTemperatureSensor(coordinator, rig, device)
|
||||
)
|
||||
device_sensors.append(NiceHashDeviceLoadSensor(coordinator, rig, device))
|
||||
device_sensors.append(NiceHashDeviceRPMSensor(coordinator, rig, device))
|
||||
|
||||
async_add_entities(device_sensors, True)
|
||||
return device_sensors
|
||||
|
Loading…
Reference in New Issue
Block a user