Add System Bridge display sensors (#57019)

* System Bridge - Add Display Sensors

* Omit default
This commit is contained in:
Aidan Timson 2021-10-10 00:57:55 +01:00 committed by GitHub
parent 8b013b823b
commit 9f34d010e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 60 additions and 3 deletions

View File

@ -84,6 +84,7 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
while ( while (
coordinator.bridge.battery is None coordinator.bridge.battery is None
or coordinator.bridge.cpu is None or coordinator.bridge.cpu is None
or coordinator.bridge.display is None
or coordinator.bridge.filesystem is None or coordinator.bridge.filesystem is None
or coordinator.bridge.graphics is None or coordinator.bridge.graphics is None
or coordinator.bridge.information is None or coordinator.bridge.information is None

View File

@ -65,6 +65,7 @@ class SystemBridgeDataUpdateCoordinator(DataUpdateCoordinator[Bridge]):
[ [
"battery", "battery",
"cpu", "cpu",
"display",
"filesystem", "filesystem",
"graphics", "graphics",
"memory", "memory",

View File

@ -3,7 +3,7 @@
"name": "System Bridge", "name": "System Bridge",
"config_flow": true, "config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/system_bridge", "documentation": "https://www.home-assistant.io/integrations/system_bridge",
"requirements": ["systembridge==2.1.0"], "requirements": ["systembridge==2.1.3"],
"codeowners": ["@timmo001"], "codeowners": ["@timmo001"],
"zeroconf": ["_system-bridge._udp.local."], "zeroconf": ["_system-bridge._udp.local."],
"after_dependencies": ["zeroconf"], "after_dependencies": ["zeroconf"],

View File

@ -23,6 +23,7 @@ from homeassistant.const import (
DEVICE_CLASS_VOLTAGE, DEVICE_CLASS_VOLTAGE,
ELECTRIC_POTENTIAL_VOLT, ELECTRIC_POTENTIAL_VOLT,
FREQUENCY_GIGAHERTZ, FREQUENCY_GIGAHERTZ,
FREQUENCY_HERTZ,
FREQUENCY_MEGAHERTZ, FREQUENCY_MEGAHERTZ,
PERCENTAGE, PERCENTAGE,
POWER_WATT, POWER_WATT,
@ -42,6 +43,8 @@ ATTR_SIZE: Final = "size"
ATTR_TYPE: Final = "type" ATTR_TYPE: Final = "type"
ATTR_USED: Final = "used" ATTR_USED: Final = "used"
PIXELS: Final = "px"
@dataclass @dataclass
class SystemBridgeSensorEntityDescription(SensorEntityDescription): class SystemBridgeSensorEntityDescription(SensorEntityDescription):
@ -84,6 +87,13 @@ BASE_SENSOR_TYPES: tuple[SystemBridgeSensorEntityDescription, ...] = (
native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT, native_unit_of_measurement=ELECTRIC_POTENTIAL_VOLT,
value=lambda bridge: bridge.cpu.cpu.voltage, value=lambda bridge: bridge.cpu.cpu.voltage,
), ),
SystemBridgeSensorEntityDescription(
key="displays_connected",
name="Displays Connected",
state_class=STATE_CLASS_MEASUREMENT,
icon="mdi:monitor",
value=lambda bridge: len(bridge.display.displays),
),
SystemBridgeSensorEntityDescription( SystemBridgeSensorEntityDescription(
key="kernel", key="kernel",
name="Kernel", name="Kernel",
@ -225,6 +235,51 @@ async def async_setup_entry(
for description in BATTERY_SENSOR_TYPES: for description in BATTERY_SENSOR_TYPES:
entities.append(SystemBridgeSensor(coordinator, description)) entities.append(SystemBridgeSensor(coordinator, description))
for index, _ in enumerate(coordinator.data.display.displays):
name = index + 1
entities = [
*entities,
SystemBridgeSensor(
coordinator,
SystemBridgeSensorEntityDescription(
key=f"display_{name}_resolution_x",
name=f"Display {name} Resolution X",
state_class=STATE_CLASS_MEASUREMENT,
native_unit_of_measurement=PIXELS,
icon="mdi:monitor",
value=lambda bridge, i=index: bridge.display.displays[
i
].resolutionX,
),
),
SystemBridgeSensor(
coordinator,
SystemBridgeSensorEntityDescription(
key=f"display_{name}_resolution_y",
name=f"Display {name} Resolution Y",
state_class=STATE_CLASS_MEASUREMENT,
native_unit_of_measurement=PIXELS,
icon="mdi:monitor",
value=lambda bridge, i=index: bridge.display.displays[
i
].resolutionY,
),
),
SystemBridgeSensor(
coordinator,
SystemBridgeSensorEntityDescription(
key=f"display_{name}_refresh_rate",
name=f"Display {name} Refresh Rate",
state_class=STATE_CLASS_MEASUREMENT,
native_unit_of_measurement=FREQUENCY_HERTZ,
icon="mdi:monitor",
value=lambda bridge, i=index: bridge.display.displays[
i
].currentRefreshRate,
),
),
]
for index, _ in enumerate(coordinator.data.graphics.controllers): for index, _ in enumerate(coordinator.data.graphics.controllers):
if coordinator.data.graphics.controllers[index].name is not None: if coordinator.data.graphics.controllers[index].name is not None:
# Remove vendor from name # Remove vendor from name

View File

@ -2266,7 +2266,7 @@ swisshydrodata==0.1.0
synology-srm==0.2.0 synology-srm==0.2.0
# homeassistant.components.system_bridge # homeassistant.components.system_bridge
systembridge==2.1.0 systembridge==2.1.3
# homeassistant.components.tahoma # homeassistant.components.tahoma
tahoma-api==0.0.16 tahoma-api==0.0.16

View File

@ -1303,7 +1303,7 @@ sunwatcher==0.2.1
surepy==0.7.2 surepy==0.7.2
# homeassistant.components.system_bridge # homeassistant.components.system_bridge
systembridge==2.1.0 systembridge==2.1.3
# homeassistant.components.tellduslive # homeassistant.components.tellduslive
tellduslive==0.10.11 tellduslive==0.10.11