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."""
|
"""Initialize the sensor."""
|
||||||
self.glances_data = glances_data
|
self.glances_data = glances_data
|
||||||
self._sensor_name_prefix = sensor_name_prefix
|
self._sensor_name_prefix = sensor_name_prefix
|
||||||
self._state = None
|
|
||||||
self.unsub_update: CALLBACK_TYPE | None = None
|
self.unsub_update: CALLBACK_TYPE | None = None
|
||||||
|
|
||||||
self.entity_description = description
|
self.entity_description = description
|
||||||
|
@ -346,11 +345,6 @@ class GlancesSensor(SensorEntity):
|
||||||
"""Could the device be accessed during the last update call."""
|
"""Could the device be accessed during the last update call."""
|
||||||
return self.glances_data.available
|
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:
|
async def async_added_to_hass(self) -> None:
|
||||||
"""Handle entity which will be added."""
|
"""Handle entity which will be added."""
|
||||||
self.unsub_update = async_dispatcher_connect(
|
self.unsub_update = async_dispatcher_connect(
|
||||||
|
@ -358,16 +352,16 @@ class GlancesSensor(SensorEntity):
|
||||||
)
|
)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def _schedule_immediate_update(self):
|
def _schedule_immediate_update(self) -> None:
|
||||||
self.async_schedule_update_ha_state(True)
|
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."""
|
"""Unsubscribe from update dispatcher."""
|
||||||
if self.unsub_update:
|
if self.unsub_update:
|
||||||
self.unsub_update()
|
self.unsub_update()
|
||||||
self.unsub_update = None
|
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."""
|
"""Get the latest data from REST API."""
|
||||||
if (value := self.glances_data.api.data) is None:
|
if (value := self.glances_data.api.data) is None:
|
||||||
return
|
return
|
||||||
|
@ -379,100 +373,100 @@ class GlancesSensor(SensorEntity):
|
||||||
break
|
break
|
||||||
if self.entity_description.key == "disk_free":
|
if self.entity_description.key == "disk_free":
|
||||||
try:
|
try:
|
||||||
self._state = round(disk["free"] / 1024**3, 1)
|
self._attr_native_value = round(disk["free"] / 1024**3, 1)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self._state = round(
|
self._attr_native_value = round(
|
||||||
(disk["size"] - disk["used"]) / 1024**3,
|
(disk["size"] - disk["used"]) / 1024**3,
|
||||||
1,
|
1,
|
||||||
)
|
)
|
||||||
elif self.entity_description.key == "disk_use":
|
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":
|
elif self.entity_description.key == "disk_use_percent":
|
||||||
self._state = disk["percent"]
|
self._attr_native_value = disk["percent"]
|
||||||
elif self.entity_description.key == "battery":
|
elif self.entity_description.key == "battery":
|
||||||
for sensor in value["sensors"]:
|
for sensor in value["sensors"]:
|
||||||
if (
|
if (
|
||||||
sensor["type"] == "battery"
|
sensor["type"] == "battery"
|
||||||
and sensor["label"] == self._sensor_name_prefix
|
and sensor["label"] == self._sensor_name_prefix
|
||||||
):
|
):
|
||||||
self._state = sensor["value"]
|
self._attr_native_value = sensor["value"]
|
||||||
elif self.entity_description.key == "fan_speed":
|
elif self.entity_description.key == "fan_speed":
|
||||||
for sensor in value["sensors"]:
|
for sensor in value["sensors"]:
|
||||||
if (
|
if (
|
||||||
sensor["type"] == "fan_speed"
|
sensor["type"] == "fan_speed"
|
||||||
and sensor["label"] == self._sensor_name_prefix
|
and sensor["label"] == self._sensor_name_prefix
|
||||||
):
|
):
|
||||||
self._state = sensor["value"]
|
self._attr_native_value = sensor["value"]
|
||||||
elif self.entity_description.key == "temperature_core":
|
elif self.entity_description.key == "temperature_core":
|
||||||
for sensor in value["sensors"]:
|
for sensor in value["sensors"]:
|
||||||
if (
|
if (
|
||||||
sensor["type"] == "temperature_core"
|
sensor["type"] == "temperature_core"
|
||||||
and sensor["label"] == self._sensor_name_prefix
|
and sensor["label"] == self._sensor_name_prefix
|
||||||
):
|
):
|
||||||
self._state = sensor["value"]
|
self._attr_native_value = sensor["value"]
|
||||||
elif self.entity_description.key == "temperature_hdd":
|
elif self.entity_description.key == "temperature_hdd":
|
||||||
for sensor in value["sensors"]:
|
for sensor in value["sensors"]:
|
||||||
if (
|
if (
|
||||||
sensor["type"] == "temperature_hdd"
|
sensor["type"] == "temperature_hdd"
|
||||||
and sensor["label"] == self._sensor_name_prefix
|
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":
|
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":
|
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":
|
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":
|
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":
|
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":
|
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":
|
elif self.entity_description.key == "processor_load":
|
||||||
# Windows systems don't provide load details
|
# Windows systems don't provide load details
|
||||||
try:
|
try:
|
||||||
self._state = value["load"]["min15"]
|
self._attr_native_value = value["load"]["min15"]
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self._state = value["cpu"]["total"]
|
self._attr_native_value = value["cpu"]["total"]
|
||||||
elif self.entity_description.key == "process_running":
|
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":
|
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":
|
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":
|
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":
|
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":
|
elif self.entity_description.key == "docker_active":
|
||||||
count = 0
|
count = 0
|
||||||
try:
|
try:
|
||||||
for container in value["docker"]["containers"]:
|
for container in value["docker"]["containers"]:
|
||||||
if container["Status"] == "running" or "Up" in container["Status"]:
|
if container["Status"] == "running" or "Up" in container["Status"]:
|
||||||
count += 1
|
count += 1
|
||||||
self._state = count
|
self._attr_native_value = count
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self._state = count
|
self._attr_native_value = count
|
||||||
elif self.entity_description.key == "docker_cpu_use":
|
elif self.entity_description.key == "docker_cpu_use":
|
||||||
cpu_use = 0.0
|
cpu_use = 0.0
|
||||||
try:
|
try:
|
||||||
for container in value["docker"]["containers"]:
|
for container in value["docker"]["containers"]:
|
||||||
if container["Status"] == "running" or "Up" in container["Status"]:
|
if container["Status"] == "running" or "Up" in container["Status"]:
|
||||||
cpu_use += container["cpu"]["total"]
|
cpu_use += container["cpu"]["total"]
|
||||||
self._state = round(cpu_use, 1)
|
self._attr_native_value = round(cpu_use, 1)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
self._state = STATE_UNAVAILABLE
|
self._attr_native_value = STATE_UNAVAILABLE
|
||||||
elif self.entity_description.key == "docker_memory_use":
|
elif self.entity_description.key == "docker_memory_use":
|
||||||
mem_use = 0.0
|
mem_use = 0.0
|
||||||
try:
|
try:
|
||||||
for container in value["docker"]["containers"]:
|
for container in value["docker"]["containers"]:
|
||||||
if container["Status"] == "running" or "Up" in container["Status"]:
|
if container["Status"] == "running" or "Up" in container["Status"]:
|
||||||
mem_use += container["memory"]["usage"]
|
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:
|
except KeyError:
|
||||||
self._state = STATE_UNAVAILABLE
|
self._attr_native_value = STATE_UNAVAILABLE
|
||||||
elif self.entity_description.type == "raid":
|
elif self.entity_description.type == "raid":
|
||||||
for raid_device, raid in value["raid"].items():
|
for raid_device, raid in value["raid"].items():
|
||||||
if raid_device == self._sensor_name_prefix:
|
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
Add a link
Reference in a new issue