fix(sensor): fix device sensors not updating
This commit is contained in:
parent
b100a15b9d
commit
ea5816ea20
@ -42,14 +42,6 @@ class DeviceSensor(Entity):
|
||||
self._rig_name = rig_data.get("name")
|
||||
self._device_name = device_data.get("name")
|
||||
self._device_id = device_data.get("id")
|
||||
self._status = DEVICE_STATUS_UNKNOWN
|
||||
self._load = 0
|
||||
self._rpm = 0
|
||||
self._algorithm = None
|
||||
self._speed = 0
|
||||
self._speed_title = "Unknown"
|
||||
self._speed_unit = "MH"
|
||||
self._temperature = 0
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
@ -76,20 +68,6 @@ class DeviceSensor(Entity):
|
||||
"""Sensor unit of measurement"""
|
||||
return None
|
||||
|
||||
@property
|
||||
def device_state_attributes(self):
|
||||
"""Sensor device state attributes"""
|
||||
return {
|
||||
ATTR_ATTRIBUTION: NICEHASH_ATTRIBUTION,
|
||||
"status": self._status,
|
||||
"algorithm": self._algorithm,
|
||||
"speed": self._speed,
|
||||
"speed_unit": f"{self._speed_unit}/s",
|
||||
"temperature": self._temperature,
|
||||
"load": f"{self._load}%",
|
||||
"rpm": self._rpm,
|
||||
}
|
||||
|
||||
async def async_added_to_hass(self):
|
||||
"""Connect to dispatcher listening for entity data notifications"""
|
||||
self.async_on_remove(
|
||||
@ -99,34 +77,14 @@ class DeviceSensor(Entity):
|
||||
async def async_update(self):
|
||||
"""Update entity"""
|
||||
await self.coordinator.async_request_refresh()
|
||||
|
||||
def _get_device(self):
|
||||
try:
|
||||
mining_rigs = self.coordinator.data.get("miningRigs")
|
||||
rig = MiningRig(mining_rigs.get(self._rig_id))
|
||||
device = rig.devices.get(self._device_id)
|
||||
self._status = device.status
|
||||
self._load = device.load
|
||||
self._rpm = device.rpm
|
||||
self._temperature = device.temperature
|
||||
algorithms = device.speeds
|
||||
if len(algorithms) > 0:
|
||||
algorithm = algorithms[0]
|
||||
self._algorithm = algorithm.get("title")
|
||||
self._speed = float(algorithm.get("speed"))
|
||||
self._speed_title = algorithm.get("title")
|
||||
self._speed_unit = algorithm.get("displaySuffix")
|
||||
else:
|
||||
self._speed_title = "Unknown"
|
||||
self._speed_unit = "MH"
|
||||
self._algorithm = None
|
||||
return rig.devices.get(self._device_id)
|
||||
except Exception as e:
|
||||
_LOGGER.error(f"Unable to get mining device ({self._device_id})\n{e}")
|
||||
self._status = DEVICE_STATUS_UNKNOWN
|
||||
self._load = 0
|
||||
self._rpm = 0
|
||||
self._speed = 0
|
||||
self._speed_title = "Unknown"
|
||||
self._speed_unit = "MH"
|
||||
self._algorithm = None
|
||||
|
||||
|
||||
class DeviceStatusSensor(DeviceSensor):
|
||||
@ -134,6 +92,8 @@ class DeviceStatusSensor(DeviceSensor):
|
||||
Displays status of a mining rig device
|
||||
"""
|
||||
|
||||
_status = "Unknown"
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Sensor name"""
|
||||
@ -147,6 +107,12 @@ class DeviceStatusSensor(DeviceSensor):
|
||||
@property
|
||||
def state(self):
|
||||
"""Sensor state"""
|
||||
device = self._get_device()
|
||||
if device:
|
||||
self._status = device.status
|
||||
else:
|
||||
self._status = "Unknown"
|
||||
|
||||
return self._status
|
||||
|
||||
@property
|
||||
@ -154,12 +120,25 @@ class DeviceStatusSensor(DeviceSensor):
|
||||
"""Sensor icon"""
|
||||
return ICON_PULSE
|
||||
|
||||
@property
|
||||
def device_state_attributes(self):
|
||||
"""Sensor device state attributes"""
|
||||
return {
|
||||
ATTR_ATTRIBUTION: NICEHASH_ATTRIBUTION,
|
||||
"status": self._status,
|
||||
"rig": self._rig_name,
|
||||
}
|
||||
|
||||
|
||||
class DeviceSpeedSensor(DeviceSensor):
|
||||
"""
|
||||
Displays speed of a mining rig device
|
||||
"""
|
||||
|
||||
_algorithm = None
|
||||
_speed = 0.00
|
||||
_speed_unit = "MH"
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Sensor name"""
|
||||
@ -173,6 +152,17 @@ class DeviceSpeedSensor(DeviceSensor):
|
||||
@property
|
||||
def state(self):
|
||||
"""Sensor state"""
|
||||
device = self._get_device()
|
||||
if device and len(device.speeds) > 0:
|
||||
algorithm = device.speeds[0]
|
||||
self._algorithm = algorithm.get("title")
|
||||
self._speed = algorithm.get("speed")
|
||||
self._speed_unit = algorithm.get("displaySuffix")
|
||||
else:
|
||||
self._algorithm = "Unknown"
|
||||
self._speed = 0.00
|
||||
self._speed_unit = "MH"
|
||||
|
||||
return self._speed
|
||||
|
||||
@property
|
||||
@ -185,12 +175,27 @@ class DeviceSpeedSensor(DeviceSensor):
|
||||
"""Sensor unit of measurement"""
|
||||
return f"{self._speed_unit}/s"
|
||||
|
||||
@property
|
||||
def device_state_attributes(self):
|
||||
"""Sensor device state attributes"""
|
||||
return {
|
||||
ATTR_ATTRIBUTION: NICEHASH_ATTRIBUTION,
|
||||
"algorithm": self._algorithm,
|
||||
"speed": self._speed,
|
||||
"speed_unit": self._speed_unit,
|
||||
"rig": self._rig_name,
|
||||
}
|
||||
|
||||
|
||||
class DeviceAlgorithmSensor(DeviceSensor):
|
||||
"""
|
||||
Displays algorithm of a mining rig device
|
||||
"""
|
||||
|
||||
_algorithm = None
|
||||
_speed = 0.00
|
||||
_speed_unit = "MH"
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Sensor name"""
|
||||
@ -204,6 +209,17 @@ class DeviceAlgorithmSensor(DeviceSensor):
|
||||
@property
|
||||
def state(self):
|
||||
"""Sensor state"""
|
||||
device = self._get_device()
|
||||
if device and len(device.speeds) > 0:
|
||||
algorithm = device.speeds[0]
|
||||
self._algorithm = algorithm.get("title")
|
||||
self._speed = algorithm.get("speed")
|
||||
self._speed_unit = algorithm.get("displaySuffix")
|
||||
else:
|
||||
self._algorithm = "Unknown"
|
||||
self._speed = 0.00
|
||||
self._speed_unit = "MH"
|
||||
|
||||
return self._algorithm
|
||||
|
||||
@property
|
||||
@ -211,12 +227,25 @@ class DeviceAlgorithmSensor(DeviceSensor):
|
||||
"""Sensor icon"""
|
||||
return ICON_PICKAXE
|
||||
|
||||
@property
|
||||
def device_state_attributes(self):
|
||||
"""Sensor device state attributes"""
|
||||
return {
|
||||
ATTR_ATTRIBUTION: NICEHASH_ATTRIBUTION,
|
||||
"algorithm": self._algorithm,
|
||||
"speed": self._speed,
|
||||
"speed_unit": self._speed_unit,
|
||||
"rig": self._rig_name,
|
||||
}
|
||||
|
||||
|
||||
class DeviceTemperatureSensor(DeviceSensor):
|
||||
"""
|
||||
Displays temperature of a mining rig device
|
||||
"""
|
||||
|
||||
_temperature = 0
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Sensor name"""
|
||||
@ -230,6 +259,12 @@ class DeviceTemperatureSensor(DeviceSensor):
|
||||
@property
|
||||
def state(self):
|
||||
"""Sensor state"""
|
||||
device = self._get_device()
|
||||
if device:
|
||||
self._temperature = device.temperature
|
||||
else:
|
||||
self._temperature = 0
|
||||
|
||||
return self._temperature
|
||||
|
||||
@property
|
||||
@ -243,12 +278,23 @@ class DeviceTemperatureSensor(DeviceSensor):
|
||||
# Not Celsius because then HA might convert to Fahrenheit
|
||||
return "C"
|
||||
|
||||
@property
|
||||
def device_state_attributes(self):
|
||||
"""Sensor device state attributes"""
|
||||
return {
|
||||
ATTR_ATTRIBUTION: NICEHASH_ATTRIBUTION,
|
||||
"temperature": self._temperature,
|
||||
"rig": self._rig_name,
|
||||
}
|
||||
|
||||
|
||||
class DeviceLoadSensor(DeviceSensor):
|
||||
"""
|
||||
Displays load of a mining rig device
|
||||
"""
|
||||
|
||||
_load = 0
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
"""Sensor name"""
|
||||
@ -262,6 +308,12 @@ class DeviceLoadSensor(DeviceSensor):
|
||||
@property
|
||||
def state(self):
|
||||
"""Sensor state"""
|
||||
device = self._get_device()
|
||||
if device:
|
||||
self._load = device.load
|
||||
else:
|
||||
self._load = 0
|
||||
|
||||
return self._load
|
||||
|
||||
@property
|
||||
@ -274,6 +326,15 @@ class DeviceLoadSensor(DeviceSensor):
|
||||
"""Sensor unit of measurement"""
|
||||
return "%"
|
||||
|
||||
@property
|
||||
def device_state_attributes(self):
|
||||
"""Sensor device state attributes"""
|
||||
return {
|
||||
ATTR_ATTRIBUTION: NICEHASH_ATTRIBUTION,
|
||||
"load": self._load,
|
||||
"rig": self._rig_name,
|
||||
}
|
||||
|
||||
|
||||
class DeviceRPMSensor(DeviceSensor):
|
||||
"""
|
||||
@ -293,6 +354,12 @@ class DeviceRPMSensor(DeviceSensor):
|
||||
@property
|
||||
def state(self):
|
||||
"""Sensor state"""
|
||||
device = self._get_device()
|
||||
if device:
|
||||
self._rpm = device.rpm
|
||||
else:
|
||||
self._rpm = 0
|
||||
|
||||
return self._rpm
|
||||
|
||||
@property
|
||||
@ -305,3 +372,12 @@ class DeviceRPMSensor(DeviceSensor):
|
||||
"""Sensor unit of measurement"""
|
||||
return "RPM"
|
||||
|
||||
@property
|
||||
def device_state_attributes(self):
|
||||
"""Sensor device state attributes"""
|
||||
return {
|
||||
ATTR_ATTRIBUTION: NICEHASH_ATTRIBUTION,
|
||||
"rpm": self._rpm,
|
||||
"rig": self._rig_name,
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user