diff --git a/homeassistant/components/system_bridge/manifest.json b/homeassistant/components/system_bridge/manifest.json index 7462966ae39..c0f89c16339 100644 --- a/homeassistant/components/system_bridge/manifest.json +++ b/homeassistant/components/system_bridge/manifest.json @@ -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."] } diff --git a/homeassistant/components/system_bridge/sensor.py b/homeassistant/components/system_bridge/sensor.py index ede94863af4..9290ebeacd5 100644 --- a/homeassistant/components/system_bridge/sensor.py +++ b/homeassistant/components/system_bridge/sensor.py @@ -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) diff --git a/requirements_all.txt b/requirements_all.txt index a86202c8bad..ddf6bcdd98f 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -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 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index 4e27cb04102..7372d3f459c 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -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