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:
parent
2a5ffa9a5b
commit
61d260e5fe
4 changed files with 49 additions and 7 deletions
|
@ -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."]
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue