Use _attr_native_value in glances sensor (#77494)

This commit is contained in:
epenet 2022-08-29 17:58:36 +02:00 committed by GitHub
parent d4ae81d2bb
commit af9910d143
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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]