Use _attr_native_value in glances sensor (#77494)
This commit is contained in:
parent
d4ae81d2bb
commit
af9910d143
1 changed files with 31 additions and 37 deletions
|
@ -329,7 +329,6 @@ class GlancesSensor(SensorEntity):
|
|||
"""Initialize the sensor."""
|
||||
self.glances_data = glances_data
|
||||
self._sensor_name_prefix = sensor_name_prefix
|
||||
self._state = None
|
||||
self.unsub_update: CALLBACK_TYPE | None = None
|
||||
|
||||
self.entity_description = description
|
||||
|
@ -346,11 +345,6 @@ class GlancesSensor(SensorEntity):
|
|||
"""Could the device be accessed during the last update call."""
|
||||
return self.glances_data.available
|
||||
|
||||
@property
|
||||
def native_value(self):
|
||||
"""Return the state of the resources."""
|
||||
return self._state
|
||||
|
||||
async def async_added_to_hass(self) -> None:
|
||||
"""Handle entity which will be added."""
|
||||
self.unsub_update = async_dispatcher_connect(
|
||||
|
@ -358,16 +352,16 @@ class GlancesSensor(SensorEntity):
|
|||
)
|
||||
|
||||
@callback
|
||||
def _schedule_immediate_update(self):
|
||||
def _schedule_immediate_update(self) -> None:
|
||||
self.async_schedule_update_ha_state(True)
|
||||
|
||||
async def will_remove_from_hass(self):
|
||||
async def will_remove_from_hass(self) -> None:
|
||||
"""Unsubscribe from update dispatcher."""
|
||||
if self.unsub_update:
|
||||
self.unsub_update()
|
||||
self.unsub_update = None
|
||||
|
||||
async def async_update(self): # noqa: C901
|
||||
async def async_update(self) -> None: # noqa: C901
|
||||
"""Get the latest data from REST API."""
|
||||
if (value := self.glances_data.api.data) is None:
|
||||
return
|
||||
|
@ -379,100 +373,100 @@ class GlancesSensor(SensorEntity):
|
|||
break
|
||||
if self.entity_description.key == "disk_free":
|
||||
try:
|
||||
self._state = round(disk["free"] / 1024**3, 1)
|
||||
self._attr_native_value = round(disk["free"] / 1024**3, 1)
|
||||
except KeyError:
|
||||
self._state = round(
|
||||
self._attr_native_value = round(
|
||||
(disk["size"] - disk["used"]) / 1024**3,
|
||||
1,
|
||||
)
|
||||
elif self.entity_description.key == "disk_use":
|
||||
self._state = round(disk["used"] / 1024**3, 1)
|
||||
self._attr_native_value = round(disk["used"] / 1024**3, 1)
|
||||
elif self.entity_description.key == "disk_use_percent":
|
||||
self._state = disk["percent"]
|
||||
self._attr_native_value = disk["percent"]
|
||||
elif self.entity_description.key == "battery":
|
||||
for sensor in value["sensors"]:
|
||||
if (
|
||||
sensor["type"] == "battery"
|
||||
and sensor["label"] == self._sensor_name_prefix
|
||||
):
|
||||
self._state = sensor["value"]
|
||||
self._attr_native_value = sensor["value"]
|
||||
elif self.entity_description.key == "fan_speed":
|
||||
for sensor in value["sensors"]:
|
||||
if (
|
||||
sensor["type"] == "fan_speed"
|
||||
and sensor["label"] == self._sensor_name_prefix
|
||||
):
|
||||
self._state = sensor["value"]
|
||||
self._attr_native_value = sensor["value"]
|
||||
elif self.entity_description.key == "temperature_core":
|
||||
for sensor in value["sensors"]:
|
||||
if (
|
||||
sensor["type"] == "temperature_core"
|
||||
and sensor["label"] == self._sensor_name_prefix
|
||||
):
|
||||
self._state = sensor["value"]
|
||||
self._attr_native_value = sensor["value"]
|
||||
elif self.entity_description.key == "temperature_hdd":
|
||||
for sensor in value["sensors"]:
|
||||
if (
|
||||
sensor["type"] == "temperature_hdd"
|
||||
and sensor["label"] == self._sensor_name_prefix
|
||||
):
|
||||
self._state = sensor["value"]
|
||||
self._attr_native_value = sensor["value"]
|
||||
elif self.entity_description.key == "memory_use_percent":
|
||||
self._state = value["mem"]["percent"]
|
||||
self._attr_native_value = value["mem"]["percent"]
|
||||
elif self.entity_description.key == "memory_use":
|
||||
self._state = round(value["mem"]["used"] / 1024**2, 1)
|
||||
self._attr_native_value = round(value["mem"]["used"] / 1024**2, 1)
|
||||
elif self.entity_description.key == "memory_free":
|
||||
self._state = round(value["mem"]["free"] / 1024**2, 1)
|
||||
self._attr_native_value = round(value["mem"]["free"] / 1024**2, 1)
|
||||
elif self.entity_description.key == "swap_use_percent":
|
||||
self._state = value["memswap"]["percent"]
|
||||
self._attr_native_value = value["memswap"]["percent"]
|
||||
elif self.entity_description.key == "swap_use":
|
||||
self._state = round(value["memswap"]["used"] / 1024**3, 1)
|
||||
self._attr_native_value = round(value["memswap"]["used"] / 1024**3, 1)
|
||||
elif self.entity_description.key == "swap_free":
|
||||
self._state = round(value["memswap"]["free"] / 1024**3, 1)
|
||||
self._attr_native_value = round(value["memswap"]["free"] / 1024**3, 1)
|
||||
elif self.entity_description.key == "processor_load":
|
||||
# Windows systems don't provide load details
|
||||
try:
|
||||
self._state = value["load"]["min15"]
|
||||
self._attr_native_value = value["load"]["min15"]
|
||||
except KeyError:
|
||||
self._state = value["cpu"]["total"]
|
||||
self._attr_native_value = value["cpu"]["total"]
|
||||
elif self.entity_description.key == "process_running":
|
||||
self._state = value["processcount"]["running"]
|
||||
self._attr_native_value = value["processcount"]["running"]
|
||||
elif self.entity_description.key == "process_total":
|
||||
self._state = value["processcount"]["total"]
|
||||
self._attr_native_value = value["processcount"]["total"]
|
||||
elif self.entity_description.key == "process_thread":
|
||||
self._state = value["processcount"]["thread"]
|
||||
self._attr_native_value = value["processcount"]["thread"]
|
||||
elif self.entity_description.key == "process_sleeping":
|
||||
self._state = value["processcount"]["sleeping"]
|
||||
self._attr_native_value = value["processcount"]["sleeping"]
|
||||
elif self.entity_description.key == "cpu_use_percent":
|
||||
self._state = value["quicklook"]["cpu"]
|
||||
self._attr_native_value = value["quicklook"]["cpu"]
|
||||
elif self.entity_description.key == "docker_active":
|
||||
count = 0
|
||||
try:
|
||||
for container in value["docker"]["containers"]:
|
||||
if container["Status"] == "running" or "Up" in container["Status"]:
|
||||
count += 1
|
||||
self._state = count
|
||||
self._attr_native_value = count
|
||||
except KeyError:
|
||||
self._state = count
|
||||
self._attr_native_value = count
|
||||
elif self.entity_description.key == "docker_cpu_use":
|
||||
cpu_use = 0.0
|
||||
try:
|
||||
for container in value["docker"]["containers"]:
|
||||
if container["Status"] == "running" or "Up" in container["Status"]:
|
||||
cpu_use += container["cpu"]["total"]
|
||||
self._state = round(cpu_use, 1)
|
||||
self._attr_native_value = round(cpu_use, 1)
|
||||
except KeyError:
|
||||
self._state = STATE_UNAVAILABLE
|
||||
self._attr_native_value = STATE_UNAVAILABLE
|
||||
elif self.entity_description.key == "docker_memory_use":
|
||||
mem_use = 0.0
|
||||
try:
|
||||
for container in value["docker"]["containers"]:
|
||||
if container["Status"] == "running" or "Up" in container["Status"]:
|
||||
mem_use += container["memory"]["usage"]
|
||||
self._state = round(mem_use / 1024**2, 1)
|
||||
self._attr_native_value = round(mem_use / 1024**2, 1)
|
||||
except KeyError:
|
||||
self._state = STATE_UNAVAILABLE
|
||||
self._attr_native_value = STATE_UNAVAILABLE
|
||||
elif self.entity_description.type == "raid":
|
||||
for raid_device, raid in value["raid"].items():
|
||||
if raid_device == self._sensor_name_prefix:
|
||||
self._state = raid[self.entity_description.key]
|
||||
self._attr_native_value = raid[self.entity_description.key]
|
||||
|
|
Loading…
Add table
Reference in a new issue