Add CPU Power to System Bridge (#80781)

* Add CPU Power to System Bridge

* Rename

* Update homeassistant/components/system_bridge/sensor.py

Co-authored-by: Aarni Koskela <akx@iki.fi>

* Fix unit

* Add suggested_display_precision=2

---------

Co-authored-by: Aarni Koskela <akx@iki.fi>
This commit is contained in:
Aidan Timson 2023-06-15 02:47:50 +01:00 committed by GitHub
parent 2a5ffa9a5b
commit 61d260e5fe
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 49 additions and 7 deletions

View file

@ -10,6 +10,6 @@
"iot_class": "local_push",
"loggers": ["systembridgeconnector"],
"quality_scale": "silver",
"requirements": ["systembridgeconnector==3.4.8"],
"requirements": ["systembridgeconnector==3.4.9"],
"zeroconf": ["_system-bridge._tcp.local."]
}

View file

@ -60,6 +60,23 @@ def battery_time_remaining(data: SystemBridgeCoordinatorData) -> datetime | None
return None
def cpu_power_package(data: SystemBridgeCoordinatorData) -> float | None:
"""Return the CPU package power."""
if data.cpu.power_package is not None:
return data.cpu.power_package
return None
def cpu_power_per_cpu(
data: SystemBridgeCoordinatorData,
cpu: int,
) -> float | None:
"""Return CPU power per CPU."""
if (value := getattr(data.cpu, f"power_per_cpu_{cpu}", None)) is not None:
return value
return None
def cpu_speed(data: SystemBridgeCoordinatorData) -> float | None:
"""Return the CPU speed."""
if data.cpu.frequency_current is not None:
@ -133,6 +150,15 @@ BASE_SENSOR_TYPES: tuple[SystemBridgeSensorEntityDescription, ...] = (
data.system.boot_time, tz=timezone.utc
),
),
SystemBridgeSensorEntityDescription(
key="cpu_power_package",
name="CPU Package Power",
native_unit_of_measurement=UnitOfPower.WATT,
state_class=SensorStateClass.MEASUREMENT,
suggested_display_precision=2,
icon="mdi:chip",
value=cpu_power_package,
),
SystemBridgeSensorEntityDescription(
key="cpu_speed",
name="CPU speed",
@ -502,8 +528,7 @@ async def async_setup_entry(
]
for index in range(coordinator.data.cpu.count):
entities = [
*entities,
entities.append(
SystemBridgeSensor(
coordinator,
SystemBridgeSensorEntityDescription(
@ -516,8 +541,25 @@ async def async_setup_entry(
value=lambda data, k=index: getattr(data.cpu, f"usage_{k}", None),
),
entry.data[CONF_PORT],
),
]
)
)
if hasattr(coordinator.data.cpu, f"power_per_cpu_{index}"):
entities.append(
SystemBridgeSensor(
coordinator,
SystemBridgeSensorEntityDescription(
key=f"cpu_power_core_{index}",
name=f"CPU Core {index} Power",
entity_registry_enabled_default=False,
native_unit_of_measurement=UnitOfPower.WATT,
state_class=SensorStateClass.MEASUREMENT,
suggested_display_precision=2,
icon="mdi:chip",
value=lambda data, k=index: cpu_power_per_cpu(data, k),
),
entry.data[CONF_PORT],
)
)
async_add_entities(entities)

View file

@ -2478,7 +2478,7 @@ swisshydrodata==0.1.0
synology-srm==0.2.0
# homeassistant.components.system_bridge
systembridgeconnector==3.4.8
systembridgeconnector==3.4.9
# homeassistant.components.tailscale
tailscale==0.2.0

View file

@ -1808,7 +1808,7 @@ sunwatcher==0.2.1
surepy==0.8.0
# homeassistant.components.system_bridge
systembridgeconnector==3.4.8
systembridgeconnector==3.4.9
# homeassistant.components.tailscale
tailscale==0.2.0