From 7c6a9b6a8fa6b19f96738504353a9dc22ecce5dc Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Tue, 9 Jul 2024 17:20:05 +0000 Subject: [PATCH 01/17] feat: add sensors --- homeassistant/components/madvr/__init__.py | 2 +- homeassistant/components/madvr/icons.json | 77 +++++++ homeassistant/components/madvr/sensor.py | 239 ++++++++++++++++++++ homeassistant/components/madvr/strings.json | 77 +++++++ 4 files changed, 394 insertions(+), 1 deletion(-) create mode 100644 homeassistant/components/madvr/sensor.py diff --git a/homeassistant/components/madvr/__init__.py b/homeassistant/components/madvr/__init__.py index b73c1f0dece482..a6ad3b2d1fde66 100644 --- a/homeassistant/components/madvr/__init__.py +++ b/homeassistant/components/madvr/__init__.py @@ -12,7 +12,7 @@ from .coordinator import MadVRCoordinator -PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.REMOTE] +PLATFORMS: list[Platform] = [Platform.BINARY_SENSOR, Platform.REMOTE, Platform.SENSOR] type MadVRConfigEntry = ConfigEntry[MadVRCoordinator] diff --git a/homeassistant/components/madvr/icons.json b/homeassistant/components/madvr/icons.json index 42645787767307..97355c3c656e6a 100644 --- a/homeassistant/components/madvr/icons.json +++ b/homeassistant/components/madvr/icons.json @@ -25,6 +25,83 @@ "off": "mdi:signal-off" } } + }, + "sensor": { + "mac_address": { + "default": "mdi:ethernet" + }, + "temp_gpu": { + "default": "mdi:thermometer" + }, + "temp_hdmi": { + "default": "mdi:thermometer" + }, + "temp_cpu": { + "default": "mdi:thermometer" + }, + "temp_mainboard": { + "default": "mdi:thermometer" + }, + "incoming_res": { + "default": "mdi:television" + }, + "incoming_frame_rate": { + "default": "mdi:television" + }, + "incoming_color_space": { + "default": "mdi:television" + }, + "incoming_bit_depth": { + "default": "mdi:television" + }, + "incoming_colorimetry": { + "default": "mdi:television" + }, + "incoming_black_levels": { + "default": "mdi:television" + }, + "incoming_aspect_ratio": { + "default": "mdi:aspect-ratio" + }, + "outgoing_res": { + "default": "mdi:television" + }, + "outgoing_frame_rate": { + "default": "mdi:television" + }, + "outgoing_color_space": { + "default": "mdi:television" + }, + "outgoing_bit_depth": { + "default": "mdi:television" + }, + "outgoing_colorimetry": { + "default": "mdi:television" + }, + "outgoing_black_levels": { + "default": "mdi:television" + }, + "aspect_res": { + "default": "mdi:aspect-ratio" + }, + "aspect_dec": { + "default": "mdi:aspect-ratio" + }, + "aspect_int": { + "default": "mdi:aspect-ratio" + }, + "aspect_name": { + "default": "mdi:aspect-ratio" + }, + "masking_res": { + "default": "mdi:television" + }, + "masking_dec": { + "default": "mdi:television" + }, + "masking_int": { + "default": "mdi:television" + } } } } diff --git a/homeassistant/components/madvr/sensor.py b/homeassistant/components/madvr/sensor.py new file mode 100644 index 00000000000000..6964e3079b86c8 --- /dev/null +++ b/homeassistant/components/madvr/sensor.py @@ -0,0 +1,239 @@ +"""Sensor entities for the madVR integration.""" + +from __future__ import annotations + +from collections.abc import Callable +from dataclasses import dataclass + +from homeassistant.components.sensor import ( + SensorDeviceClass, + SensorEntity, + SensorEntityDescription, + SensorStateClass, +) +from homeassistant.const import EntityCategory, UnitOfTemperature +from homeassistant.core import HomeAssistant +from homeassistant.helpers.entity_platform import AddEntitiesCallback + +from . import MadVRConfigEntry +from .coordinator import MadVRCoordinator +from .entity import MadVREntity + + +def is_valid_temperature(value: float | None) -> bool: + """Check if the temperature value is valid.""" + return value is not None and value > 0 + + +def get_temperature(coordinator: MadVRCoordinator, key: str) -> float | None: + """Get temperature value if valid, otherwise return None.""" + temp = coordinator.data.get(key) + return float(str(temp)) if is_valid_temperature(temp) else None + + +@dataclass(frozen=True, kw_only=True) +class MadvrSensorEntityDescription(SensorEntityDescription): + """Describe madVR sensor entity.""" + + value_fn: Callable[[MadVRCoordinator], float | str | None] + + +SENSORS: tuple[MadvrSensorEntityDescription, ...] = ( + MadvrSensorEntityDescription( + key="mac_address", + name="MAC Address", + entity_category=EntityCategory.DIAGNOSTIC, + value_fn=lambda coordinator: coordinator.data.get("mac_address"), + translation_key="mac_address", + ), + MadvrSensorEntityDescription( + key="temp_gpu", + name="GPU Temperature", + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + value_fn=lambda coordinator: get_temperature(coordinator, "temp_gpu"), + translation_key="temp_gpu", + ), + MadvrSensorEntityDescription( + key="temp_hdmi", + name="HDMI Temperature", + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + value_fn=lambda coordinator: get_temperature(coordinator, "temp_hdmi"), + translation_key="temp_hdmi", + ), + MadvrSensorEntityDescription( + key="temp_cpu", + name="CPU Temperature", + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + value_fn=lambda coordinator: get_temperature(coordinator, "temp_cpu"), + translation_key="temp_cpu", + ), + MadvrSensorEntityDescription( + key="temp_mainboard", + name="Mainboard Temperature", + device_class=SensorDeviceClass.TEMPERATURE, + state_class=SensorStateClass.MEASUREMENT, + native_unit_of_measurement=UnitOfTemperature.CELSIUS, + value_fn=lambda coordinator: get_temperature(coordinator, "temp_mainboard"), + translation_key="temp_mainboard", + ), + MadvrSensorEntityDescription( + key="incoming_res", + name="Incoming Resolution", + value_fn=lambda coordinator: coordinator.data.get("incoming_res"), + translation_key="incoming_res", + ), + MadvrSensorEntityDescription( + key="incoming_frame_rate", + name="Incoming Frame Rate", + value_fn=lambda coordinator: coordinator.data.get("incoming_frame_rate"), + translation_key="incoming_frame_rate", + ), + MadvrSensorEntityDescription( + key="incoming_color_space", + name="Incoming Color Space", + value_fn=lambda coordinator: coordinator.data.get("incoming_color_space"), + translation_key="incoming_color_space", + ), + MadvrSensorEntityDescription( + key="incoming_bit_depth", + name="Incoming Bit Depth", + value_fn=lambda coordinator: coordinator.data.get("incoming_bit_depth"), + translation_key="incoming_bit_depth", + ), + MadvrSensorEntityDescription( + key="incoming_colorimetry", + name="Incoming Colorimetry", + value_fn=lambda coordinator: coordinator.data.get("incoming_colorimetry"), + translation_key="incoming_colorimetry", + ), + MadvrSensorEntityDescription( + key="incoming_black_levels", + name="Incoming Black Levels", + value_fn=lambda coordinator: coordinator.data.get("incoming_black_levels"), + translation_key="incoming_black_levels", + ), + MadvrSensorEntityDescription( + key="incoming_aspect_ratio", + name="Incoming Aspect Ratio", + value_fn=lambda coordinator: coordinator.data.get("incoming_aspect_ratio"), + translation_key="incoming_aspect_ratio", + ), + MadvrSensorEntityDescription( + key="outgoing_res", + name="Outgoing Resolution", + value_fn=lambda coordinator: coordinator.data.get("outgoing_res"), + translation_key="outgoing_res", + ), + MadvrSensorEntityDescription( + key="outgoing_frame_rate", + name="Outgoing Frame Rate", + value_fn=lambda coordinator: coordinator.data.get("outgoing_frame_rate"), + translation_key="outgoing_frame_rate", + ), + MadvrSensorEntityDescription( + key="outgoing_color_space", + name="Outgoing Color Space", + value_fn=lambda coordinator: coordinator.data.get("outgoing_color_space"), + translation_key="outgoing_color_space", + ), + MadvrSensorEntityDescription( + key="outgoing_bit_depth", + name="Outgoing Bit Depth", + value_fn=lambda coordinator: coordinator.data.get("outgoing_bit_depth"), + translation_key="outgoing_bit_depth", + ), + MadvrSensorEntityDescription( + key="outgoing_colorimetry", + name="Outgoing Colorimetry", + value_fn=lambda coordinator: coordinator.data.get("outgoing_colorimetry"), + translation_key="outgoing_colorimetry", + ), + MadvrSensorEntityDescription( + key="outgoing_black_levels", + name="Outgoing Black Levels", + value_fn=lambda coordinator: coordinator.data.get("outgoing_black_levels"), + translation_key="outgoing_black_levels", + ), + MadvrSensorEntityDescription( + key="aspect_res", + name="Aspect Ratio Resolution", + value_fn=lambda coordinator: coordinator.data.get("aspect_res"), + translation_key="aspect_res", + ), + MadvrSensorEntityDescription( + key="aspect_dec", + name="Aspect Ratio Decimal", + value_fn=lambda coordinator: coordinator.data.get("aspect_dec"), + translation_key="aspect_dec", + ), + MadvrSensorEntityDescription( + key="aspect_int", + name="Aspect Ratio Integer", + value_fn=lambda coordinator: coordinator.data.get("aspect_int"), + translation_key="aspect_int", + ), + MadvrSensorEntityDescription( + key="aspect_name", + name="Aspect Ratio Name", + value_fn=lambda coordinator: coordinator.data.get("aspect_name"), + translation_key="aspect_name", + ), + MadvrSensorEntityDescription( + key="masking_res", + name="Masking Resolution", + value_fn=lambda coordinator: coordinator.data.get("masking_res"), + translation_key="masking_res", + ), + MadvrSensorEntityDescription( + key="masking_dec", + name="Masking Decimal", + value_fn=lambda coordinator: coordinator.data.get("masking_dec"), + translation_key="masking_dec", + ), + MadvrSensorEntityDescription( + key="masking_int", + name="Masking Integer", + value_fn=lambda coordinator: coordinator.data.get("masking_int"), + translation_key="masking_int", + ), +) + + +async def async_setup_entry( + hass: HomeAssistant, + entry: MadVRConfigEntry, + async_add_entities: AddEntitiesCallback, +) -> None: + """Set up the sensor entities.""" + coordinator = entry.runtime_data + async_add_entities(MadvrSensor(coordinator, description) for description in SENSORS) + + +class MadvrSensor(MadVREntity, SensorEntity): + """Base class for madVR sensors.""" + + def __init__( + self, + coordinator: MadVRCoordinator, + description: MadvrSensorEntityDescription, + ) -> None: + """Initialize the sensor.""" + super().__init__(coordinator) + self.entity_description: MadvrSensorEntityDescription = description + self._attr_unique_id = f"{coordinator.mac}_{description.key}" + + @property + def native_value(self) -> float | str | None: + """Return the state of the sensor.""" + return self.entity_description.value_fn(self.coordinator) + + @property + def available(self) -> bool: + """Return True if entity is available.""" + return self.native_value is not None diff --git a/homeassistant/components/madvr/strings.json b/homeassistant/components/madvr/strings.json index c8b9851e780301..ccf9dd35ba1372 100644 --- a/homeassistant/components/madvr/strings.json +++ b/homeassistant/components/madvr/strings.json @@ -36,6 +36,83 @@ "signal_state": { "name": "Signal state" } + }, + "sensor": { + "mac_address": { + "name": "Mac address" + }, + "temp_gpu": { + "name": "Gpu temperature" + }, + "temp_hdmi": { + "name": "Hdmi temperature" + }, + "temp_cpu": { + "name": "Cpu temperature" + }, + "temp_mainboard": { + "name": "Mainboard temperature" + }, + "incoming_res": { + "name": "Incoming resolution" + }, + "incoming_frame_rate": { + "name": "Incoming frame rate" + }, + "incoming_color_space": { + "name": "Incoming color space" + }, + "incoming_bit_depth": { + "name": "Incoming bit depth" + }, + "incoming_colorimetry": { + "name": "Incoming colorimetry" + }, + "incoming_black_levels": { + "name": "Incoming black levels" + }, + "incoming_aspect_ratio": { + "name": "Incoming aspect ratio" + }, + "outgoing_res": { + "name": "Outgoing resolution" + }, + "outgoing_frame_rate": { + "name": "Outgoing frame rate" + }, + "outgoing_color_space": { + "name": "Outgoing color space" + }, + "outgoing_bit_depth": { + "name": "Outgoing bit depth" + }, + "outgoing_colorimetry": { + "name": "Outgoing colorimetry" + }, + "outgoing_black_levels": { + "name": "Outgoing black levels" + }, + "aspect_res": { + "name": "Aspect ratio resolution" + }, + "aspect_dec": { + "name": "Aspect ratio decimal" + }, + "aspect_int": { + "name": "Aspect ratio integer" + }, + "aspect_name": { + "name": "Aspect ratio name" + }, + "masking_res": { + "name": "Masking resolution" + }, + "masking_dec": { + "name": "Masking decimal" + }, + "masking_int": { + "name": "Masking integer" + } } } } From 9f5ae516ecda25d552d891739270b01d77bec3d8 Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Tue, 9 Jul 2024 17:36:25 +0000 Subject: [PATCH 02/17] feat: add tests for sensors --- .../madvr/snapshots/test_sensors.ambr | 1171 +++++++++++++++++ tests/components/madvr/test_sensors.py | 264 ++++ 2 files changed, 1435 insertions(+) create mode 100644 tests/components/madvr/snapshots/test_sensors.ambr create mode 100644 tests/components/madvr/test_sensors.py diff --git a/tests/components/madvr/snapshots/test_sensors.ambr b/tests/components/madvr/snapshots/test_sensors.ambr new file mode 100644 index 00000000000000..9c974f3d0ec583 --- /dev/null +++ b/tests/components/madvr/snapshots/test_sensors.ambr @@ -0,0 +1,1171 @@ +# serializer version: 1 +# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_decimal-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_ratio_decimal', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect ratio decimal', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_dec', + 'unique_id': '00:11:22:33:44:55_aspect_dec', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_decimal-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect ratio decimal', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_ratio_decimal', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_integer-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_ratio_integer', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect ratio integer', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_int', + 'unique_id': '00:11:22:33:44:55_aspect_int', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_integer-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect ratio integer', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_ratio_integer', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_name-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_ratio_name', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect ratio name', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_name', + 'unique_id': '00:11:22:33:44:55_aspect_name', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_name-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect ratio name', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_ratio_name', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_resolution-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_ratio_resolution', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect ratio resolution', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_res', + 'unique_id': '00:11:22:33:44:55_aspect_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_resolution-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect ratio resolution', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_ratio_resolution', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_cpu_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_cpu_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Cpu temperature', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_cpu', + 'unique_id': '00:11:22:33:44:55_temp_cpu', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_cpu_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Cpu temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_cpu_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_gpu_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_gpu_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Gpu temperature', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_gpu', + 'unique_id': '00:11:22:33:44:55_temp_gpu', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_gpu_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Gpu temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_gpu_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_hdmi_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_hdmi_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Hdmi temperature', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_hdmi', + 'unique_id': '00:11:22:33:44:55_temp_hdmi', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_hdmi_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Hdmi temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_hdmi_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_aspect_ratio-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_aspect_ratio', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming aspect ratio', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_aspect_ratio', + 'unique_id': '00:11:22:33:44:55_incoming_aspect_ratio', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_aspect_ratio-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming aspect ratio', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_aspect_ratio', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_bit_depth-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_bit_depth', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming bit depth', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_bit_depth', + 'unique_id': '00:11:22:33:44:55_incoming_bit_depth', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_bit_depth-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming bit depth', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_bit_depth', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_black_levels-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_black_levels', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming black levels', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_black_levels', + 'unique_id': '00:11:22:33:44:55_incoming_black_levels', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_black_levels-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming black levels', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_black_levels', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_color_space-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_color_space', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming color space', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_color_space', + 'unique_id': '00:11:22:33:44:55_incoming_color_space', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_color_space-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming color space', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_color_space', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_colorimetry-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_colorimetry', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming colorimetry', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_colorimetry', + 'unique_id': '00:11:22:33:44:55_incoming_colorimetry', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_colorimetry-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming colorimetry', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_colorimetry', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_frame_rate-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_frame_rate', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming frame rate', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_frame_rate', + 'unique_id': '00:11:22:33:44:55_incoming_frame_rate', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_frame_rate-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming frame rate', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_frame_rate', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_resolution-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_resolution', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming resolution', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_res', + 'unique_id': '00:11:22:33:44:55_incoming_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_incoming_resolution-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming resolution', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_resolution', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_mac_address-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': , + 'entity_id': 'sensor.madvr_envy_mac_address', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Mac address', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'mac_address', + 'unique_id': '00:11:22:33:44:55_mac_address', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_mac_address-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Mac address', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_mac_address', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_mainboard_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_mainboard_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Mainboard temperature', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_mainboard', + 'unique_id': '00:11:22:33:44:55_temp_mainboard', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_mainboard_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Mainboard temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_mainboard_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_masking_decimal-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_masking_decimal', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Masking decimal', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'masking_dec', + 'unique_id': '00:11:22:33:44:55_masking_dec', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_masking_decimal-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking decimal', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_decimal', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_masking_integer-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_masking_integer', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Masking integer', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'masking_int', + 'unique_id': '00:11:22:33:44:55_masking_int', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_masking_integer-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking integer', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_integer', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_masking_resolution-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_masking_resolution', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Masking resolution', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'masking_res', + 'unique_id': '00:11:22:33:44:55_masking_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_masking_resolution-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking resolution', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_resolution', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_bit_depth-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_bit_depth', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Outgoing bit depth', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_bit_depth', + 'unique_id': '00:11:22:33:44:55_outgoing_bit_depth', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_bit_depth-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing bit depth', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_bit_depth', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_black_levels-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_black_levels', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Outgoing black levels', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_black_levels', + 'unique_id': '00:11:22:33:44:55_outgoing_black_levels', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_black_levels-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing black levels', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_black_levels', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_color_space-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_color_space', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Outgoing color space', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_color_space', + 'unique_id': '00:11:22:33:44:55_outgoing_color_space', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_color_space-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing color space', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_color_space', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_colorimetry-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_colorimetry', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Outgoing colorimetry', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_colorimetry', + 'unique_id': '00:11:22:33:44:55_outgoing_colorimetry', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_colorimetry-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing colorimetry', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_colorimetry', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_frame_rate-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_frame_rate', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Outgoing frame rate', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_frame_rate', + 'unique_id': '00:11:22:33:44:55_outgoing_frame_rate', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_frame_rate-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing frame rate', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_frame_rate', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_resolution-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_resolution', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Outgoing resolution', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_res', + 'unique_id': '00:11:22:33:44:55_outgoing_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup[sensor.madvr_envy_outgoing_resolution-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing resolution', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_resolution', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'unavailable', + }) +# --- diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py new file mode 100644 index 00000000000000..531d5ee1b1d6e6 --- /dev/null +++ b/tests/components/madvr/test_sensors.py @@ -0,0 +1,264 @@ +"""Tests for the MadVR sensor entities.""" + +from __future__ import annotations + +from unittest.mock import AsyncMock, patch + +import pytest +from syrupy import SnapshotAssertion + +from homeassistant.const import Platform, UnitOfTemperature +from homeassistant.core import HomeAssistant +import homeassistant.helpers.entity_registry as er + +from . import setup_integration +from .conftest import get_update_callback + +from tests.common import MockConfigEntry, snapshot_platform + + +async def test_sensor_setup( + hass: HomeAssistant, + snapshot: SnapshotAssertion, + mock_config_entry: MockConfigEntry, + entity_registry: er.EntityRegistry, +) -> None: + """Test setup of the sensor entities.""" + with patch("homeassistant.components.madvr.PLATFORMS", [Platform.SENSOR]): + await setup_integration(hass, mock_config_entry) + await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id) + + +@pytest.mark.parametrize( + ("entity_id", "payload", "expected_state", "expected_attributes"), + [ + ( + "sensor.madvr_envy_mac_address", + {"mac_address": "00:11:22:33:44:55"}, + "00:11:22:33:44:55", + {}, + ), + ( + "sensor.madvr_envy_gpu_temperature", + {"temp_gpu": 45.5}, + "45.5", + { + "device_class": "temperature", + "state_class": "measurement", + "unit_of_measurement": UnitOfTemperature.CELSIUS, + }, + ), + ( + "sensor.madvr_envy_hdmi_temperature", + {"temp_hdmi": 40.0}, + "40.0", + { + "device_class": "temperature", + "state_class": "measurement", + "unit_of_measurement": UnitOfTemperature.CELSIUS, + }, + ), + ( + "sensor.madvr_envy_cpu_temperature", + {"temp_cpu": 50.2}, + "50.2", + { + "device_class": "temperature", + "state_class": "measurement", + "unit_of_measurement": UnitOfTemperature.CELSIUS, + }, + ), + ( + "sensor.madvr_envy_mainboard_temperature", + {"temp_mainboard": 35.8}, + "35.8", + { + "device_class": "temperature", + "state_class": "measurement", + "unit_of_measurement": UnitOfTemperature.CELSIUS, + }, + ), + ( + "sensor.madvr_envy_incoming_resolution", + {"incoming_res": "3840x2160"}, + "3840x2160", + {}, + ), + ( + "sensor.madvr_envy_incoming_frame_rate", + {"incoming_frame_rate": "60Hz"}, + "60Hz", + {}, + ), + ( + "sensor.madvr_envy_incoming_color_space", + {"incoming_color_space": "BT.2020"}, + "BT.2020", + {}, + ), + ( + "sensor.madvr_envy_incoming_bit_depth", + {"incoming_bit_depth": "10-bit"}, + "10-bit", + {}, + ), + ( + "sensor.madvr_envy_incoming_colorimetry", + {"incoming_colorimetry": "BT.2020"}, + "BT.2020", + {}, + ), + ( + "sensor.madvr_envy_incoming_black_levels", + {"incoming_black_levels": "Full"}, + "Full", + {}, + ), + ( + "sensor.madvr_envy_incoming_aspect_ratio", + {"incoming_aspect_ratio": "16:9"}, + "16:9", + {}, + ), + ( + "sensor.madvr_envy_outgoing_resolution", + {"outgoing_res": "3840x2160"}, + "3840x2160", + {}, + ), + ( + "sensor.madvr_envy_outgoing_frame_rate", + {"outgoing_frame_rate": "60Hz"}, + "60Hz", + {}, + ), + ( + "sensor.madvr_envy_outgoing_color_space", + {"outgoing_color_space": "BT.2020"}, + "BT.2020", + {}, + ), + ( + "sensor.madvr_envy_outgoing_bit_depth", + {"outgoing_bit_depth": "10-bit"}, + "10-bit", + {}, + ), + ( + "sensor.madvr_envy_outgoing_colorimetry", + {"outgoing_colorimetry": "BT.2020"}, + "BT.2020", + {}, + ), + ( + "sensor.madvr_envy_outgoing_black_levels", + {"outgoing_black_levels": "Full"}, + "Full", + {}, + ), + ( + "sensor.madvr_envy_aspect_ratio_resolution", + {"aspect_res": "3840x2160"}, + "3840x2160", + {}, + ), + ( + "sensor.madvr_envy_aspect_ratio_decimal", + {"aspect_dec": "1.78"}, + "1.78", + {}, + ), + ( + "sensor.madvr_envy_aspect_ratio_integer", + {"aspect_int": "16:9"}, + "16:9", + {}, + ), + ( + "sensor.madvr_envy_aspect_ratio_name", + {"aspect_name": "16:9"}, + "16:9", + {}, + ), + ( + "sensor.madvr_envy_masking_resolution", + {"masking_res": "3840x2160"}, + "3840x2160", + {}, + ), + ( + "sensor.madvr_envy_masking_decimal", + {"masking_dec": "1.78"}, + "1.78", + {}, + ), + ( + "sensor.madvr_envy_masking_integer", + {"masking_int": "16:9"}, + "16:9", + {}, + ), + ], +) +async def test_sensors( + hass: HomeAssistant, + mock_madvr_client: AsyncMock, + mock_config_entry: MockConfigEntry, + entity_id: str, + payload: dict, + expected_state: str, + expected_attributes: dict, +) -> None: + """Test the sensor entities.""" + await setup_integration(hass, mock_config_entry) + update_callback = get_update_callback(mock_madvr_client) + + # Test sensor state and attributes + update_callback(payload) + await hass.async_block_till_done() + + state = hass.states.get(entity_id) + assert state.state == expected_state + for attr, value in expected_attributes.items(): + assert state.attributes.get(attr) == value + + +async def test_temperature_sensor_invalid_value( + hass: HomeAssistant, + mock_madvr_client: AsyncMock, + mock_config_entry: MockConfigEntry, +) -> None: + """Test temperature sensor with invalid value.""" + await setup_integration(hass, mock_config_entry) + update_callback = get_update_callback(mock_madvr_client) + + # Test invalid temperature value + update_callback({"temp_gpu": -1}) # Invalid temperature + await hass.async_block_till_done() + + state = hass.states.get("sensor.madvr_envy_gpu_temperature") + assert state.state == "unavailable" + + +async def test_sensor_availability( + hass: HomeAssistant, + mock_madvr_client: AsyncMock, + mock_config_entry: MockConfigEntry, +) -> None: + """Test sensor availability.""" + await setup_integration(hass, mock_config_entry) + update_callback = get_update_callback(mock_madvr_client) + + # Test sensor becomes unavailable + update_callback({"incoming_res": None}) + await hass.async_block_till_done() + + state = hass.states.get("sensor.madvr_envy_incoming_resolution") + assert state.state == "unavailable" + + # Test sensor becomes available again + update_callback({"incoming_res": "1920x1080"}) + await hass.async_block_till_done() + + state = hass.states.get("sensor.madvr_envy_incoming_resolution") + assert state.state == "1920x1080" From 48e9f0dc814d90894fabe446786ab1f642846a9e Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Tue, 9 Jul 2024 17:37:45 +0000 Subject: [PATCH 03/17] feat: add options flow --- homeassistant/components/madvr/config_flow.py | 146 +++++++++++++----- homeassistant/components/madvr/strings.json | 20 +++ 2 files changed, 126 insertions(+), 40 deletions(-) diff --git a/homeassistant/components/madvr/config_flow.py b/homeassistant/components/madvr/config_flow.py index cf43e03a68b0a2..846c6978514a2c 100644 --- a/homeassistant/components/madvr/config_flow.py +++ b/homeassistant/components/madvr/config_flow.py @@ -8,14 +8,17 @@ from madvr.madvr import HeartBeatError, Madvr import voluptuous as vol -from homeassistant.config_entries import ConfigFlow, ConfigFlowResult +from homeassistant.config_entries import ConfigFlow, ConfigFlowResult, OptionsFlow from homeassistant.const import CONF_HOST, CONF_PORT +from homeassistant.core import HomeAssistant, callback +from . import MadVRConfigEntry from .const import DEFAULT_NAME, DEFAULT_PORT, DOMAIN from .errors import CannotConnect _LOGGER = logging.getLogger(__name__) + STEP_USER_DATA_SCHEMA = vol.Schema( { vol.Required( @@ -31,6 +34,48 @@ RETRY_INTERVAL = 1 +async def test_connection(hass: HomeAssistant, host: str, port: int) -> str: + """Test if we can connect to the device and grab the mac.""" + madvr_client = Madvr(host=host, port=port, loop=hass.loop) + _LOGGER.debug("Testing connection to madVR at %s:%s", host, port) + # try to connect + try: + await asyncio.wait_for(madvr_client.open_connection(), timeout=15) + # connection can raise HeartBeatError if the device is not available or connection does not work + except (TimeoutError, aiohttp.ClientError, OSError, HeartBeatError) as err: + _LOGGER.error("Error connecting to madVR: %s", err) + raise CannotConnect from err + + # check if we are connected + if not madvr_client.connected: + raise CannotConnect("Connection failed") + + # background tasks needed to capture realtime info + await madvr_client.async_add_tasks() + + # wait for client to capture device info + retry_time = 15 + while not madvr_client.mac_address and retry_time > 0: + await asyncio.sleep(RETRY_INTERVAL) + retry_time -= 1 + + mac_address = madvr_client.mac_address + if mac_address: + _LOGGER.debug("Connected to madVR with MAC: %s", mac_address) + # close this connection because this client object will not be reused + await close_test_connection(madvr_client) + _LOGGER.debug("Connection test successful") + return mac_address + + +async def close_test_connection(madvr_client: Madvr) -> None: + """Close the test connection.""" + _LOGGER.debug("Closing test connection") + madvr_client.stop() + await madvr_client.async_cancel_tasks() + await madvr_client.close_connection() + + class MadVRConfigFlow(ConfigFlow, domain=DOMAIN): """Handle a config flow for the integration.""" @@ -48,7 +93,7 @@ async def async_step_user( try: # ensure we can connect and get the mac address from device - mac = await self._test_connection(host, port) + mac = await test_connection(self.hass, host, port) except CannotConnect: _LOGGER.error("CannotConnect error caught") errors["base"] = "cannot_connect" @@ -76,41 +121,62 @@ async def async_step_user( errors=errors, ) - async def _test_connection(self, host: str, port: int) -> str: - """Test if we can connect to the device and grab the mac.""" - madvr_client = Madvr(host=host, port=port, loop=self.hass.loop) - _LOGGER.debug("Testing connection to madVR at %s:%s", host, port) - # try to connect - try: - await asyncio.wait_for(madvr_client.open_connection(), timeout=15) - # connection can raise HeartBeatError if the device is not available or connection does not work - except (TimeoutError, aiohttp.ClientError, OSError, HeartBeatError) as err: - _LOGGER.error("Error connecting to madVR: %s", err) - raise CannotConnect from err - - # check if we are connected - if not madvr_client.connected: - raise CannotConnect("Connection failed") - - # background tasks needed to capture realtime info - await madvr_client.async_add_tasks() - - # wait for client to capture device info - retry_time = 15 - while not madvr_client.mac_address and retry_time > 0: - await asyncio.sleep(RETRY_INTERVAL) - retry_time -= 1 - - mac_address = madvr_client.mac_address - if mac_address: - _LOGGER.debug("Connected to madVR with MAC: %s", mac_address) - # close this connection because this client object will not be reused - await self._close_test_connection(madvr_client) - _LOGGER.debug("Connection test successful") - return mac_address - - async def _close_test_connection(self, madvr_client: Madvr) -> None: - """Close the test connection.""" - madvr_client.stop() - await madvr_client.async_cancel_tasks() - await madvr_client.close_connection() + @staticmethod + @callback + def async_get_options_flow(config_entry: MadVRConfigEntry) -> OptionsFlow: + """Get the options flow for this handler.""" + return MadVROptionsFlowHandler(config_entry) + + +class MadVROptionsFlowHandler(OptionsFlow): + """Handle an options flow for the integration.""" + + def __init__(self, config_entry: MadVRConfigEntry) -> None: + """Initialize the options flow.""" + self.config_entry = config_entry + + async def async_step_init( + self, user_input: dict[str, Any] | None = None + ) -> ConfigFlowResult: + """Manage the options.""" + return await self.async_step_user() + + async def async_step_user( + self, user_input: dict[str, Any] | None = None + ) -> ConfigFlowResult: + """Handle the options step.""" + errors: dict[str, str] = {} + if user_input is not None: + new_data = {**self.config_entry.data, **user_input} + # there could be a situation where user changes the IP to "add" a new device so we need to update mac too + try: + # ensure we can connect and get the mac address from device + mac = await test_connection( + self.hass, user_input[CONF_HOST], user_input[CONF_PORT] + ) + except CannotConnect: + _LOGGER.error("CannotConnect error caught") + errors["base"] = "cannot_connect" + else: + if not mac: + errors["base"] = "no_mac" + if not errors: + self.hass.config_entries.async_update_entry( + self.config_entry, data=new_data + ) + # reload the entity if changed + await self.hass.config_entries.async_reload(self.config_entry.entry_id) + return self.async_create_entry(title=DEFAULT_NAME, data=user_input) + + # if error or initial load, show the form + options = self.config_entry.data + data_schema = vol.Schema( + { + vol.Required(CONF_HOST, default=options.get(CONF_HOST, "")): str, + vol.Required(CONF_PORT, default=options.get(CONF_PORT, 44077)): int, + } + ) + + return self.async_show_form( + step_id="user", data_schema=data_schema, errors=errors + ) diff --git a/homeassistant/components/madvr/strings.json b/homeassistant/components/madvr/strings.json index ccf9dd35ba1372..480a30ccdc0f1e 100644 --- a/homeassistant/components/madvr/strings.json +++ b/homeassistant/components/madvr/strings.json @@ -22,6 +22,26 @@ "no_mac": "A MAC address was not found. It required to identify the device. Please ensure your device is connectable." } }, + "options": { + "step": { + "user": { + "title": "Update madVR Envy settings", + "description": "Your device needs to be turned in order to update the integation settings. ", + "data": { + "host": "[%key:common::config_flow::data::host%]", + "port": "[%key:common::config_flow::data::port%]" + }, + "data_description": { + "host": "The hostname or IP address of your madVR Envy device.", + "port": "The port your madVR Envy is listening on. In 99% of cases, leave this as the default." + } + } + }, + "error": { + "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", + "no_mac": "A MAC address was not found. It required to identify the device. Please ensure your device is connectable." + } + }, "entity": { "binary_sensor": { "hdr_flag": { From 166e33fcbf972c35eae01c15ca202367ea97ce51 Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Tue, 9 Jul 2024 18:30:31 +0000 Subject: [PATCH 04/17] feat: add tests for options flow --- tests/components/madvr/test_config_flow.py | 89 ++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/tests/components/madvr/test_config_flow.py b/tests/components/madvr/test_config_flow.py index b3edbf25fb1355..1593eb0254a60d 100644 --- a/tests/components/madvr/test_config_flow.py +++ b/tests/components/madvr/test_config_flow.py @@ -126,3 +126,92 @@ async def test_duplicate( ) assert result["type"] is FlowResultType.ABORT assert result["reason"] == "already_configured" + + +async def test_options_flow( + hass: HomeAssistant, + mock_madvr_client: AsyncMock, + mock_config_entry: MockConfigEntry, +) -> None: + """Test options flow.""" + mock_config_entry.add_to_hass(hass) + + result = await hass.config_entries.options.async_init(mock_config_entry.entry_id) + + assert result["type"] == FlowResultType.FORM + assert result["step_id"] == "user" + + result = await hass.config_entries.options.async_configure( + result["flow_id"], + user_input={ + CONF_HOST: "192.168.1.100", + CONF_PORT: 44078, + }, + ) + + assert result["type"] == FlowResultType.CREATE_ENTRY + assert result["data"] == { + CONF_HOST: "192.168.1.100", + CONF_PORT: 44078, + } + mock_madvr_client.open_connection.assert_called_once() + assert mock_madvr_client.async_add_tasks.call_count == 2 + mock_madvr_client.async_cancel_tasks.assert_called_once() + + +async def test_options_flow_errors( + hass: HomeAssistant, + mock_madvr_client: AsyncMock, + mock_config_entry: MockConfigEntry, +) -> None: + """Test options flow errors.""" + mock_config_entry.add_to_hass(hass) + + result = await hass.config_entries.options.async_init(mock_config_entry.entry_id) + + assert result["type"] == FlowResultType.FORM + assert result["step_id"] == "user" + + mock_madvr_client.open_connection.side_effect = TimeoutError + + result = await hass.config_entries.options.async_configure( + result["flow_id"], + user_input={ + CONF_HOST: "192.168.1.100", + CONF_PORT: 44078, + }, + ) + + assert result["type"] == FlowResultType.FORM + assert result["errors"] == {"base": "cannot_connect"} + + mock_madvr_client.open_connection.side_effect = None + mock_madvr_client.connected = True + mock_madvr_client.mac_address = None + + result = await hass.config_entries.options.async_configure( + result["flow_id"], + user_input={ + CONF_HOST: "192.168.1.100", + CONF_PORT: 44078, + }, + ) + + assert result["type"] == FlowResultType.FORM + assert result["errors"] == {"base": "no_mac"} + + mock_madvr_client.mac_address = MOCK_MAC + + result = await hass.config_entries.options.async_configure( + result["flow_id"], + user_input={ + CONF_HOST: "192.168.1.100", + CONF_PORT: 44078, + }, + ) + + assert result["type"] == FlowResultType.CREATE_ENTRY + assert result["data"] == { + CONF_HOST: "192.168.1.100", + CONF_PORT: 44078, + } From f2733b8b15278e2283fe411fd10ba771ec90ae9e Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Tue, 9 Jul 2024 18:41:30 +0000 Subject: [PATCH 05/17] fix: remove options flow --- homeassistant/components/madvr/config_flow.py | 65 +------------- homeassistant/components/madvr/strings.json | 20 ----- tests/components/madvr/test_config_flow.py | 89 ------------------- 3 files changed, 2 insertions(+), 172 deletions(-) diff --git a/homeassistant/components/madvr/config_flow.py b/homeassistant/components/madvr/config_flow.py index 846c6978514a2c..bf16b74d6169e5 100644 --- a/homeassistant/components/madvr/config_flow.py +++ b/homeassistant/components/madvr/config_flow.py @@ -8,11 +8,10 @@ from madvr.madvr import HeartBeatError, Madvr import voluptuous as vol -from homeassistant.config_entries import ConfigFlow, ConfigFlowResult, OptionsFlow +from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.const import CONF_HOST, CONF_PORT -from homeassistant.core import HomeAssistant, callback +from homeassistant.core import HomeAssistant -from . import MadVRConfigEntry from .const import DEFAULT_NAME, DEFAULT_PORT, DOMAIN from .errors import CannotConnect @@ -120,63 +119,3 @@ async def async_step_user( ), errors=errors, ) - - @staticmethod - @callback - def async_get_options_flow(config_entry: MadVRConfigEntry) -> OptionsFlow: - """Get the options flow for this handler.""" - return MadVROptionsFlowHandler(config_entry) - - -class MadVROptionsFlowHandler(OptionsFlow): - """Handle an options flow for the integration.""" - - def __init__(self, config_entry: MadVRConfigEntry) -> None: - """Initialize the options flow.""" - self.config_entry = config_entry - - async def async_step_init( - self, user_input: dict[str, Any] | None = None - ) -> ConfigFlowResult: - """Manage the options.""" - return await self.async_step_user() - - async def async_step_user( - self, user_input: dict[str, Any] | None = None - ) -> ConfigFlowResult: - """Handle the options step.""" - errors: dict[str, str] = {} - if user_input is not None: - new_data = {**self.config_entry.data, **user_input} - # there could be a situation where user changes the IP to "add" a new device so we need to update mac too - try: - # ensure we can connect and get the mac address from device - mac = await test_connection( - self.hass, user_input[CONF_HOST], user_input[CONF_PORT] - ) - except CannotConnect: - _LOGGER.error("CannotConnect error caught") - errors["base"] = "cannot_connect" - else: - if not mac: - errors["base"] = "no_mac" - if not errors: - self.hass.config_entries.async_update_entry( - self.config_entry, data=new_data - ) - # reload the entity if changed - await self.hass.config_entries.async_reload(self.config_entry.entry_id) - return self.async_create_entry(title=DEFAULT_NAME, data=user_input) - - # if error or initial load, show the form - options = self.config_entry.data - data_schema = vol.Schema( - { - vol.Required(CONF_HOST, default=options.get(CONF_HOST, "")): str, - vol.Required(CONF_PORT, default=options.get(CONF_PORT, 44077)): int, - } - ) - - return self.async_show_form( - step_id="user", data_schema=data_schema, errors=errors - ) diff --git a/homeassistant/components/madvr/strings.json b/homeassistant/components/madvr/strings.json index 480a30ccdc0f1e..ccf9dd35ba1372 100644 --- a/homeassistant/components/madvr/strings.json +++ b/homeassistant/components/madvr/strings.json @@ -22,26 +22,6 @@ "no_mac": "A MAC address was not found. It required to identify the device. Please ensure your device is connectable." } }, - "options": { - "step": { - "user": { - "title": "Update madVR Envy settings", - "description": "Your device needs to be turned in order to update the integation settings. ", - "data": { - "host": "[%key:common::config_flow::data::host%]", - "port": "[%key:common::config_flow::data::port%]" - }, - "data_description": { - "host": "The hostname or IP address of your madVR Envy device.", - "port": "The port your madVR Envy is listening on. In 99% of cases, leave this as the default." - } - } - }, - "error": { - "cannot_connect": "[%key:common::config_flow::error::cannot_connect%]", - "no_mac": "A MAC address was not found. It required to identify the device. Please ensure your device is connectable." - } - }, "entity": { "binary_sensor": { "hdr_flag": { diff --git a/tests/components/madvr/test_config_flow.py b/tests/components/madvr/test_config_flow.py index 1593eb0254a60d..b3edbf25fb1355 100644 --- a/tests/components/madvr/test_config_flow.py +++ b/tests/components/madvr/test_config_flow.py @@ -126,92 +126,3 @@ async def test_duplicate( ) assert result["type"] is FlowResultType.ABORT assert result["reason"] == "already_configured" - - -async def test_options_flow( - hass: HomeAssistant, - mock_madvr_client: AsyncMock, - mock_config_entry: MockConfigEntry, -) -> None: - """Test options flow.""" - mock_config_entry.add_to_hass(hass) - - result = await hass.config_entries.options.async_init(mock_config_entry.entry_id) - - assert result["type"] == FlowResultType.FORM - assert result["step_id"] == "user" - - result = await hass.config_entries.options.async_configure( - result["flow_id"], - user_input={ - CONF_HOST: "192.168.1.100", - CONF_PORT: 44078, - }, - ) - - assert result["type"] == FlowResultType.CREATE_ENTRY - assert result["data"] == { - CONF_HOST: "192.168.1.100", - CONF_PORT: 44078, - } - mock_madvr_client.open_connection.assert_called_once() - assert mock_madvr_client.async_add_tasks.call_count == 2 - mock_madvr_client.async_cancel_tasks.assert_called_once() - - -async def test_options_flow_errors( - hass: HomeAssistant, - mock_madvr_client: AsyncMock, - mock_config_entry: MockConfigEntry, -) -> None: - """Test options flow errors.""" - mock_config_entry.add_to_hass(hass) - - result = await hass.config_entries.options.async_init(mock_config_entry.entry_id) - - assert result["type"] == FlowResultType.FORM - assert result["step_id"] == "user" - - mock_madvr_client.open_connection.side_effect = TimeoutError - - result = await hass.config_entries.options.async_configure( - result["flow_id"], - user_input={ - CONF_HOST: "192.168.1.100", - CONF_PORT: 44078, - }, - ) - - assert result["type"] == FlowResultType.FORM - assert result["errors"] == {"base": "cannot_connect"} - - mock_madvr_client.open_connection.side_effect = None - mock_madvr_client.connected = True - mock_madvr_client.mac_address = None - - result = await hass.config_entries.options.async_configure( - result["flow_id"], - user_input={ - CONF_HOST: "192.168.1.100", - CONF_PORT: 44078, - }, - ) - - assert result["type"] == FlowResultType.FORM - assert result["errors"] == {"base": "no_mac"} - - mock_madvr_client.mac_address = MOCK_MAC - - result = await hass.config_entries.options.async_configure( - result["flow_id"], - user_input={ - CONF_HOST: "192.168.1.100", - CONF_PORT: 44078, - }, - ) - - assert result["type"] == FlowResultType.CREATE_ENTRY - assert result["data"] == { - CONF_HOST: "192.168.1.100", - CONF_PORT: 44078, - } From 3f855603de2a8f9578f48401c908243e71b46445 Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Tue, 9 Jul 2024 19:21:02 +0000 Subject: [PATCH 06/17] fix: remove names and mac sensor, add incoming signal type --- homeassistant/components/madvr/icons.json | 6 +++ homeassistant/components/madvr/manifest.json | 2 +- homeassistant/components/madvr/sensor.py | 48 +++++--------------- homeassistant/components/madvr/strings.json | 6 +++ requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/madvr/test_sensors.py | 24 ++++++---- 7 files changed, 41 insertions(+), 49 deletions(-) diff --git a/homeassistant/components/madvr/icons.json b/homeassistant/components/madvr/icons.json index 97355c3c656e6a..2f9f7217f5be53 100644 --- a/homeassistant/components/madvr/icons.json +++ b/homeassistant/components/madvr/icons.json @@ -84,6 +84,12 @@ "aspect_res": { "default": "mdi:aspect-ratio" }, + "incoming_signal_type": { + "default": "mdi:video-image" + }, + "outgoing_signal_type": { + "default": "mdi:video-image" + }, "aspect_dec": { "default": "mdi:aspect-ratio" }, diff --git a/homeassistant/components/madvr/manifest.json b/homeassistant/components/madvr/manifest.json index 9aa2c5a9b5dc7a..ec670b1361a628 100644 --- a/homeassistant/components/madvr/manifest.json +++ b/homeassistant/components/madvr/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/madvr", "integration_type": "device", "iot_class": "local_push", - "requirements": ["py-madvr2==1.6.27"] + "requirements": ["py-madvr2==1.6.28"] } diff --git a/homeassistant/components/madvr/sensor.py b/homeassistant/components/madvr/sensor.py index 6964e3079b86c8..c660d4029a3eaf 100644 --- a/homeassistant/components/madvr/sensor.py +++ b/homeassistant/components/madvr/sensor.py @@ -11,7 +11,7 @@ SensorEntityDescription, SensorStateClass, ) -from homeassistant.const import EntityCategory, UnitOfTemperature +from homeassistant.const import UnitOfTemperature from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback @@ -39,16 +39,8 @@ class MadvrSensorEntityDescription(SensorEntityDescription): SENSORS: tuple[MadvrSensorEntityDescription, ...] = ( - MadvrSensorEntityDescription( - key="mac_address", - name="MAC Address", - entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda coordinator: coordinator.data.get("mac_address"), - translation_key="mac_address", - ), MadvrSensorEntityDescription( key="temp_gpu", - name="GPU Temperature", device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, @@ -57,7 +49,6 @@ class MadvrSensorEntityDescription(SensorEntityDescription): ), MadvrSensorEntityDescription( key="temp_hdmi", - name="HDMI Temperature", device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, @@ -66,7 +57,6 @@ class MadvrSensorEntityDescription(SensorEntityDescription): ), MadvrSensorEntityDescription( key="temp_cpu", - name="CPU Temperature", device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, @@ -75,7 +65,6 @@ class MadvrSensorEntityDescription(SensorEntityDescription): ), MadvrSensorEntityDescription( key="temp_mainboard", - name="Mainboard Temperature", device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, @@ -84,121 +73,111 @@ class MadvrSensorEntityDescription(SensorEntityDescription): ), MadvrSensorEntityDescription( key="incoming_res", - name="Incoming Resolution", value_fn=lambda coordinator: coordinator.data.get("incoming_res"), translation_key="incoming_res", ), + MadvrSensorEntityDescription( + key="incoming_signal_type", + value_fn=lambda coordinator: coordinator.data.get("incoming_signal_type"), + translation_key="incoming_signal_type", + ), MadvrSensorEntityDescription( key="incoming_frame_rate", - name="Incoming Frame Rate", value_fn=lambda coordinator: coordinator.data.get("incoming_frame_rate"), translation_key="incoming_frame_rate", ), MadvrSensorEntityDescription( key="incoming_color_space", - name="Incoming Color Space", value_fn=lambda coordinator: coordinator.data.get("incoming_color_space"), translation_key="incoming_color_space", ), MadvrSensorEntityDescription( key="incoming_bit_depth", - name="Incoming Bit Depth", value_fn=lambda coordinator: coordinator.data.get("incoming_bit_depth"), translation_key="incoming_bit_depth", ), MadvrSensorEntityDescription( key="incoming_colorimetry", - name="Incoming Colorimetry", value_fn=lambda coordinator: coordinator.data.get("incoming_colorimetry"), translation_key="incoming_colorimetry", ), MadvrSensorEntityDescription( key="incoming_black_levels", - name="Incoming Black Levels", value_fn=lambda coordinator: coordinator.data.get("incoming_black_levels"), translation_key="incoming_black_levels", ), MadvrSensorEntityDescription( key="incoming_aspect_ratio", - name="Incoming Aspect Ratio", value_fn=lambda coordinator: coordinator.data.get("incoming_aspect_ratio"), translation_key="incoming_aspect_ratio", ), MadvrSensorEntityDescription( key="outgoing_res", - name="Outgoing Resolution", value_fn=lambda coordinator: coordinator.data.get("outgoing_res"), translation_key="outgoing_res", ), + MadvrSensorEntityDescription( + key="outgoing_signal_type", + value_fn=lambda coordinator: coordinator.data.get("outgoing_signal_type"), + translation_key="outgoing_signal_type", + ), MadvrSensorEntityDescription( key="outgoing_frame_rate", - name="Outgoing Frame Rate", value_fn=lambda coordinator: coordinator.data.get("outgoing_frame_rate"), translation_key="outgoing_frame_rate", ), MadvrSensorEntityDescription( key="outgoing_color_space", - name="Outgoing Color Space", value_fn=lambda coordinator: coordinator.data.get("outgoing_color_space"), translation_key="outgoing_color_space", ), MadvrSensorEntityDescription( key="outgoing_bit_depth", - name="Outgoing Bit Depth", value_fn=lambda coordinator: coordinator.data.get("outgoing_bit_depth"), translation_key="outgoing_bit_depth", ), MadvrSensorEntityDescription( key="outgoing_colorimetry", - name="Outgoing Colorimetry", value_fn=lambda coordinator: coordinator.data.get("outgoing_colorimetry"), translation_key="outgoing_colorimetry", ), MadvrSensorEntityDescription( key="outgoing_black_levels", - name="Outgoing Black Levels", value_fn=lambda coordinator: coordinator.data.get("outgoing_black_levels"), translation_key="outgoing_black_levels", ), MadvrSensorEntityDescription( key="aspect_res", - name="Aspect Ratio Resolution", value_fn=lambda coordinator: coordinator.data.get("aspect_res"), translation_key="aspect_res", ), MadvrSensorEntityDescription( key="aspect_dec", - name="Aspect Ratio Decimal", value_fn=lambda coordinator: coordinator.data.get("aspect_dec"), translation_key="aspect_dec", ), MadvrSensorEntityDescription( key="aspect_int", - name="Aspect Ratio Integer", value_fn=lambda coordinator: coordinator.data.get("aspect_int"), translation_key="aspect_int", ), MadvrSensorEntityDescription( key="aspect_name", - name="Aspect Ratio Name", value_fn=lambda coordinator: coordinator.data.get("aspect_name"), translation_key="aspect_name", ), MadvrSensorEntityDescription( key="masking_res", - name="Masking Resolution", value_fn=lambda coordinator: coordinator.data.get("masking_res"), translation_key="masking_res", ), MadvrSensorEntityDescription( key="masking_dec", - name="Masking Decimal", value_fn=lambda coordinator: coordinator.data.get("masking_dec"), translation_key="masking_dec", ), MadvrSensorEntityDescription( key="masking_int", - name="Masking Integer", value_fn=lambda coordinator: coordinator.data.get("masking_int"), translation_key="masking_int", ), @@ -232,8 +211,3 @@ def __init__( def native_value(self) -> float | str | None: """Return the state of the sensor.""" return self.entity_description.value_fn(self.coordinator) - - @property - def available(self) -> bool: - """Return True if entity is available.""" - return self.native_value is not None diff --git a/homeassistant/components/madvr/strings.json b/homeassistant/components/madvr/strings.json index ccf9dd35ba1372..c558ede46f7c85 100644 --- a/homeassistant/components/madvr/strings.json +++ b/homeassistant/components/madvr/strings.json @@ -56,6 +56,9 @@ "incoming_res": { "name": "Incoming resolution" }, + "incoming_signal_type": { + "name": "Incoming signal type" + }, "incoming_frame_rate": { "name": "Incoming frame rate" }, @@ -77,6 +80,9 @@ "outgoing_res": { "name": "Outgoing resolution" }, + "outgoing_signal_type": { + "name": "Outgoing signal type" + }, "outgoing_frame_rate": { "name": "Outgoing frame rate" }, diff --git a/requirements_all.txt b/requirements_all.txt index 4f9f5cd4e3b823..656027cf573fb7 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1635,7 +1635,7 @@ py-dormakaba-dkey==1.0.5 py-improv-ble-client==1.0.3 # homeassistant.components.madvr -py-madvr2==1.6.27 +py-madvr2==1.6.28 # homeassistant.components.melissa py-melissa-climate==2.1.4 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index e50b07c22ff235..d9824746187529 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1309,7 +1309,7 @@ py-dormakaba-dkey==1.0.5 py-improv-ble-client==1.0.3 # homeassistant.components.madvr -py-madvr2==1.6.27 +py-madvr2==1.6.28 # homeassistant.components.melissa py-melissa-climate==2.1.4 diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py index 531d5ee1b1d6e6..e7a7f86914b853 100644 --- a/tests/components/madvr/test_sensors.py +++ b/tests/components/madvr/test_sensors.py @@ -32,12 +32,6 @@ async def test_sensor_setup( @pytest.mark.parametrize( ("entity_id", "payload", "expected_state", "expected_attributes"), [ - ( - "sensor.madvr_envy_mac_address", - {"mac_address": "00:11:22:33:44:55"}, - "00:11:22:33:44:55", - {}, - ), ( "sensor.madvr_envy_gpu_temperature", {"temp_gpu": 45.5}, @@ -90,6 +84,18 @@ async def test_sensor_setup( "60Hz", {}, ), + ( + "sensor.madvr_envy_outgoing_signal_type", + {"outgoing_signal_type": "2D"}, + "2D", + {}, + ), + ( + "sensor.madvr_envy_incoming_signal_type", + {"incoming_signal_type": "3D"}, + "3D", + {}, + ), ( "sensor.madvr_envy_incoming_color_space", {"incoming_color_space": "BT.2020"}, @@ -237,7 +243,7 @@ async def test_temperature_sensor_invalid_value( await hass.async_block_till_done() state = hass.states.get("sensor.madvr_envy_gpu_temperature") - assert state.state == "unavailable" + assert state.state == "unknown" async def test_sensor_availability( @@ -249,12 +255,12 @@ async def test_sensor_availability( await setup_integration(hass, mock_config_entry) update_callback = get_update_callback(mock_madvr_client) - # Test sensor becomes unavailable + # Test sensor becomes unknown update_callback({"incoming_res": None}) await hass.async_block_till_done() state = hass.states.get("sensor.madvr_envy_incoming_resolution") - assert state.state == "unavailable" + assert state.state == "unknown" # Test sensor becomes available again update_callback({"incoming_res": "1920x1080"}) From d06b92dfafe9d1eb355fc19ff033e9c0cc909e5d Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Tue, 9 Jul 2024 20:10:48 +0000 Subject: [PATCH 07/17] feat: add enum types to supported sensors --- homeassistant/components/madvr/sensor.py | 24 ++++++ homeassistant/components/madvr/strings.json | 29 +++---- tests/components/madvr/test_sensors.py | 92 ++++++++++----------- 3 files changed, 83 insertions(+), 62 deletions(-) diff --git a/homeassistant/components/madvr/sensor.py b/homeassistant/components/madvr/sensor.py index c660d4029a3eaf..fe5bf7783f11f1 100644 --- a/homeassistant/components/madvr/sensor.py +++ b/homeassistant/components/madvr/sensor.py @@ -80,6 +80,8 @@ class MadvrSensorEntityDescription(SensorEntityDescription): key="incoming_signal_type", value_fn=lambda coordinator: coordinator.data.get("incoming_signal_type"), translation_key="incoming_signal_type", + device_class=SensorDeviceClass.ENUM, + options=["2D", "3D"], ), MadvrSensorEntityDescription( key="incoming_frame_rate", @@ -90,26 +92,36 @@ class MadvrSensorEntityDescription(SensorEntityDescription): key="incoming_color_space", value_fn=lambda coordinator: coordinator.data.get("incoming_color_space"), translation_key="incoming_color_space", + device_class=SensorDeviceClass.ENUM, + options=["RGB", "444", "422", "420"], ), MadvrSensorEntityDescription( key="incoming_bit_depth", value_fn=lambda coordinator: coordinator.data.get("incoming_bit_depth"), translation_key="incoming_bit_depth", + device_class=SensorDeviceClass.ENUM, + options=["8bit", "10bit", "12bit"], ), MadvrSensorEntityDescription( key="incoming_colorimetry", value_fn=lambda coordinator: coordinator.data.get("incoming_colorimetry"), translation_key="incoming_colorimetry", + device_class=SensorDeviceClass.ENUM, + options=["SDR", "HDR10", "HLG 601", "PAL", "709", "DCI", "2020"], ), MadvrSensorEntityDescription( key="incoming_black_levels", value_fn=lambda coordinator: coordinator.data.get("incoming_black_levels"), translation_key="incoming_black_levels", + device_class=SensorDeviceClass.ENUM, + options=["TV", "PC"], ), MadvrSensorEntityDescription( key="incoming_aspect_ratio", value_fn=lambda coordinator: coordinator.data.get("incoming_aspect_ratio"), translation_key="incoming_aspect_ratio", + device_class=SensorDeviceClass.ENUM, + options=["16:9", "4:3"], ), MadvrSensorEntityDescription( key="outgoing_res", @@ -120,6 +132,8 @@ class MadvrSensorEntityDescription(SensorEntityDescription): key="outgoing_signal_type", value_fn=lambda coordinator: coordinator.data.get("outgoing_signal_type"), translation_key="outgoing_signal_type", + device_class=SensorDeviceClass.ENUM, + options=["2D", "3D"], ), MadvrSensorEntityDescription( key="outgoing_frame_rate", @@ -130,22 +144,31 @@ class MadvrSensorEntityDescription(SensorEntityDescription): key="outgoing_color_space", value_fn=lambda coordinator: coordinator.data.get("outgoing_color_space"), translation_key="outgoing_color_space", + device_class=SensorDeviceClass.ENUM, + options=["RGB", "444", "422", "420"], ), MadvrSensorEntityDescription( key="outgoing_bit_depth", value_fn=lambda coordinator: coordinator.data.get("outgoing_bit_depth"), translation_key="outgoing_bit_depth", + device_class=SensorDeviceClass.ENUM, + options=["8bit", "10bit", "12bit"], ), MadvrSensorEntityDescription( key="outgoing_colorimetry", value_fn=lambda coordinator: coordinator.data.get("outgoing_colorimetry"), translation_key="outgoing_colorimetry", + device_class=SensorDeviceClass.ENUM, + options=["SDR", "HDR10", "HLG 601", "PAL", "709", "DCI", "2020"], ), MadvrSensorEntityDescription( key="outgoing_black_levels", value_fn=lambda coordinator: coordinator.data.get("outgoing_black_levels"), translation_key="outgoing_black_levels", + device_class=SensorDeviceClass.ENUM, + options=["TV", "PC"], ), + # aspect ratio as a resolution MadvrSensorEntityDescription( key="aspect_res", value_fn=lambda coordinator: coordinator.data.get("aspect_res"), @@ -166,6 +189,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): value_fn=lambda coordinator: coordinator.data.get("aspect_name"), translation_key="aspect_name", ), + # masking as a resolution MadvrSensorEntityDescription( key="masking_res", value_fn=lambda coordinator: coordinator.data.get("masking_res"), diff --git a/homeassistant/components/madvr/strings.json b/homeassistant/components/madvr/strings.json index c558ede46f7c85..69b93895d55bf9 100644 --- a/homeassistant/components/madvr/strings.json +++ b/homeassistant/components/madvr/strings.json @@ -38,23 +38,20 @@ } }, "sensor": { - "mac_address": { - "name": "Mac address" - }, "temp_gpu": { - "name": "Gpu temperature" + "name": "Temp gpu" }, "temp_hdmi": { - "name": "Hdmi temperature" + "name": "Temp hdmi" }, "temp_cpu": { - "name": "Cpu temperature" + "name": "Temp cpu" }, "temp_mainboard": { - "name": "Mainboard temperature" + "name": "Temp mainboard" }, "incoming_res": { - "name": "Incoming resolution" + "name": "Incoming res" }, "incoming_signal_type": { "name": "Incoming signal type" @@ -78,7 +75,7 @@ "name": "Incoming aspect ratio" }, "outgoing_res": { - "name": "Outgoing resolution" + "name": "Outgoing res" }, "outgoing_signal_type": { "name": "Outgoing signal type" @@ -99,25 +96,25 @@ "name": "Outgoing black levels" }, "aspect_res": { - "name": "Aspect ratio resolution" + "name": "Aspect res" }, "aspect_dec": { - "name": "Aspect ratio decimal" + "name": "Aspect dec" }, "aspect_int": { - "name": "Aspect ratio integer" + "name": "Aspect int" }, "aspect_name": { - "name": "Aspect ratio name" + "name": "Aspect name" }, "masking_res": { - "name": "Masking resolution" + "name": "Masking res" }, "masking_dec": { - "name": "Masking decimal" + "name": "Masking dec" }, "masking_int": { - "name": "Masking integer" + "name": "Masking int" } } } diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py index e7a7f86914b853..b97c4793529c00 100644 --- a/tests/components/madvr/test_sensors.py +++ b/tests/components/madvr/test_sensors.py @@ -33,7 +33,7 @@ async def test_sensor_setup( ("entity_id", "payload", "expected_state", "expected_attributes"), [ ( - "sensor.madvr_envy_gpu_temperature", + "sensor.madvr_envy_temp_gpu", {"temp_gpu": 45.5}, "45.5", { @@ -43,7 +43,7 @@ async def test_sensor_setup( }, ), ( - "sensor.madvr_envy_hdmi_temperature", + "sensor.madvr_envy_temp_hdmi", {"temp_hdmi": 40.0}, "40.0", { @@ -53,7 +53,7 @@ async def test_sensor_setup( }, ), ( - "sensor.madvr_envy_cpu_temperature", + "sensor.madvr_envy_temp_cpu", {"temp_cpu": 50.2}, "50.2", { @@ -63,7 +63,7 @@ async def test_sensor_setup( }, ), ( - "sensor.madvr_envy_mainboard_temperature", + "sensor.madvr_envy_temp_mainboard", {"temp_mainboard": 35.8}, "35.8", { @@ -73,15 +73,15 @@ async def test_sensor_setup( }, ), ( - "sensor.madvr_envy_incoming_resolution", + "sensor.madvr_envy_incoming_res", {"incoming_res": "3840x2160"}, "3840x2160", {}, ), ( "sensor.madvr_envy_incoming_frame_rate", - {"incoming_frame_rate": "60Hz"}, - "60Hz", + {"incoming_frame_rate": "60p"}, + "60p", {}, ), ( @@ -98,26 +98,26 @@ async def test_sensor_setup( ), ( "sensor.madvr_envy_incoming_color_space", - {"incoming_color_space": "BT.2020"}, - "BT.2020", + {"incoming_color_space": "RGB"}, + "RGB", {}, ), ( "sensor.madvr_envy_incoming_bit_depth", - {"incoming_bit_depth": "10-bit"}, - "10-bit", + {"incoming_bit_depth": "10bit"}, + "10bit", {}, ), ( "sensor.madvr_envy_incoming_colorimetry", - {"incoming_colorimetry": "BT.2020"}, - "BT.2020", + {"incoming_colorimetry": "2020"}, + "2020", {}, ), ( "sensor.madvr_envy_incoming_black_levels", - {"incoming_black_levels": "Full"}, - "Full", + {"incoming_black_levels": "PC"}, + "PC", {}, ), ( @@ -127,81 +127,81 @@ async def test_sensor_setup( {}, ), ( - "sensor.madvr_envy_outgoing_resolution", + "sensor.madvr_envy_outgoing_res", {"outgoing_res": "3840x2160"}, "3840x2160", {}, ), ( "sensor.madvr_envy_outgoing_frame_rate", - {"outgoing_frame_rate": "60Hz"}, - "60Hz", + {"outgoing_frame_rate": "60p"}, + "60p", {}, ), ( "sensor.madvr_envy_outgoing_color_space", - {"outgoing_color_space": "BT.2020"}, - "BT.2020", + {"outgoing_color_space": "RGB"}, + "RGB", {}, ), ( "sensor.madvr_envy_outgoing_bit_depth", - {"outgoing_bit_depth": "10-bit"}, - "10-bit", + {"outgoing_bit_depth": "10bit"}, + "10bit", {}, ), ( "sensor.madvr_envy_outgoing_colorimetry", - {"outgoing_colorimetry": "BT.2020"}, - "BT.2020", + {"outgoing_colorimetry": "2020"}, + "2020", {}, ), ( "sensor.madvr_envy_outgoing_black_levels", - {"outgoing_black_levels": "Full"}, - "Full", + {"outgoing_black_levels": "PC"}, + "PC", {}, ), ( - "sensor.madvr_envy_aspect_ratio_resolution", - {"aspect_res": "3840x2160"}, - "3840x2160", + "sensor.madvr_envy_aspect_res", + {"aspect_res": "3840:2160"}, + "3840:2160", {}, ), ( - "sensor.madvr_envy_aspect_ratio_decimal", + "sensor.madvr_envy_aspect_dec", {"aspect_dec": "1.78"}, "1.78", {}, ), ( - "sensor.madvr_envy_aspect_ratio_integer", - {"aspect_int": "16:9"}, - "16:9", + "sensor.madvr_envy_aspect_int", + {"aspect_int": "178"}, + "178", {}, ), ( - "sensor.madvr_envy_aspect_ratio_name", - {"aspect_name": "16:9"}, - "16:9", + "sensor.madvr_envy_aspect_name", + {"aspect_name": "Widescreen"}, + "Widescreen", {}, ), ( - "sensor.madvr_envy_masking_resolution", - {"masking_res": "3840x2160"}, - "3840x2160", + "sensor.madvr_envy_masking_res", + {"masking_res": "3840:2160"}, + "3840:2160", {}, ), ( - "sensor.madvr_envy_masking_decimal", + "sensor.madvr_envy_masking_dec", {"masking_dec": "1.78"}, "1.78", {}, ), ( - "sensor.madvr_envy_masking_integer", - {"masking_int": "16:9"}, - "16:9", + "sensor.madvr_envy_masking_int", + {"masking_int": "178"}, + "178", {}, ), ], @@ -242,7 +242,7 @@ async def test_temperature_sensor_invalid_value( update_callback({"temp_gpu": -1}) # Invalid temperature await hass.async_block_till_done() - state = hass.states.get("sensor.madvr_envy_gpu_temperature") + state = hass.states.get("sensor.madvr_envy_temp_gpu") assert state.state == "unknown" @@ -259,12 +259,12 @@ async def test_sensor_availability( update_callback({"incoming_res": None}) await hass.async_block_till_done() - state = hass.states.get("sensor.madvr_envy_incoming_resolution") + state = hass.states.get("sensor.madvr_envy_incoming_res") assert state.state == "unknown" # Test sensor becomes available again update_callback({"incoming_res": "1920x1080"}) await hass.async_block_till_done() - state = hass.states.get("sensor.madvr_envy_incoming_resolution") + state = hass.states.get("sensor.madvr_envy_incoming_res") assert state.state == "1920x1080" From 1ce4be6f8ac522373895bd2d5fa7fa68afb8d7ce Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Tue, 9 Jul 2024 20:14:39 +0000 Subject: [PATCH 08/17] fix: consolidate tests into snapshot --- .../madvr/snapshots/test_sensors.ambr | 373 ++++++++++++++++++ tests/components/madvr/test_sensors.py | 280 +++---------- 2 files changed, 421 insertions(+), 232 deletions(-) diff --git a/tests/components/madvr/snapshots/test_sensors.ambr b/tests/components/madvr/snapshots/test_sensors.ambr index 9c974f3d0ec583..a3fe047673a4a8 100644 --- a/tests/components/madvr/snapshots/test_sensors.ambr +++ b/tests/components/madvr/snapshots/test_sensors.ambr @@ -1169,3 +1169,376 @@ 'state': 'unavailable', }) # --- +# name: test_sensor_setup_and_states + dict({ + 'sensor.madvr_envy_aspect_dec': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect dec', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_dec', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '1.78', + }), + 'sensor.madvr_envy_aspect_int': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect int', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_int', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '178', + }), + 'sensor.madvr_envy_aspect_name': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect name', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_name', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'Widescreen', + }), + 'sensor.madvr_envy_aspect_res': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect res', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_res', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840:2160', + }), + 'sensor.madvr_envy_incoming_aspect_ratio': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming aspect ratio', + 'options': list([ + '16:9', + '4:3', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_aspect_ratio', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '16:9', + }), + 'sensor.madvr_envy_incoming_bit_depth': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming bit depth', + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_bit_depth', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '10bit', + }), + 'sensor.madvr_envy_incoming_black_levels': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming black levels', + 'options': list([ + 'TV', + 'PC', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_black_levels', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'PC', + }), + 'sensor.madvr_envy_incoming_color_space': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming color space', + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_color_space', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'RGB', + }), + 'sensor.madvr_envy_incoming_colorimetry': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming colorimetry', + 'options': list([ + 'SDR', + 'HDR10', + 'HLG 601', + 'PAL', + '709', + 'DCI', + '2020', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_colorimetry', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '2020', + }), + 'sensor.madvr_envy_incoming_frame_rate': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming frame rate', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_frame_rate', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '60p', + }), + 'sensor.madvr_envy_incoming_res': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming res', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_res', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840x2160', + }), + 'sensor.madvr_envy_incoming_signal_type': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming signal type', + 'options': list([ + '2D', + '3D', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_signal_type', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3D', + }), + 'sensor.madvr_envy_masking_dec': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking dec', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_dec', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '1.78', + }), + 'sensor.madvr_envy_masking_int': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking int', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_int', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '178', + }), + 'sensor.madvr_envy_masking_res': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking res', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_res', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840:2160', + }), + 'sensor.madvr_envy_outgoing_bit_depth': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing bit depth', + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_bit_depth', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '10bit', + }), + 'sensor.madvr_envy_outgoing_black_levels': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing black levels', + 'options': list([ + 'TV', + 'PC', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_black_levels', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'PC', + }), + 'sensor.madvr_envy_outgoing_color_space': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing color space', + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_color_space', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'RGB', + }), + 'sensor.madvr_envy_outgoing_colorimetry': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing colorimetry', + 'options': list([ + 'SDR', + 'HDR10', + 'HLG 601', + 'PAL', + '709', + 'DCI', + '2020', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_colorimetry', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '2020', + }), + 'sensor.madvr_envy_outgoing_frame_rate': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing frame rate', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_frame_rate', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '60p', + }), + 'sensor.madvr_envy_outgoing_res': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing res', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_res', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840x2160', + }), + 'sensor.madvr_envy_outgoing_signal_type': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing signal type', + 'options': list([ + '2D', + '3D', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_signal_type', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '2D', + }), + 'sensor.madvr_envy_temp_cpu': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Temp cpu', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_temp_cpu', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '50.2', + }), + 'sensor.madvr_envy_temp_gpu': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Temp gpu', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_temp_gpu', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '45.5', + }), + 'sensor.madvr_envy_temp_hdmi': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Temp hdmi', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_temp_hdmi', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '40.0', + }), + 'sensor.madvr_envy_temp_mainboard': StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Temp mainboard', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_temp_mainboard', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '35.8', + }), + }) +# --- diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py index b97c4793529c00..71b7cd57db24df 100644 --- a/tests/components/madvr/test_sensors.py +++ b/tests/components/madvr/test_sensors.py @@ -4,267 +4,83 @@ from unittest.mock import AsyncMock, patch -import pytest from syrupy import SnapshotAssertion -from homeassistant.const import Platform, UnitOfTemperature +from homeassistant.const import Platform from homeassistant.core import HomeAssistant import homeassistant.helpers.entity_registry as er from . import setup_integration from .conftest import get_update_callback -from tests.common import MockConfigEntry, snapshot_platform +from tests.common import MockConfigEntry -async def test_sensor_setup( +async def test_sensor_setup_and_states( hass: HomeAssistant, snapshot: SnapshotAssertion, mock_config_entry: MockConfigEntry, entity_registry: er.EntityRegistry, + mock_madvr_client: AsyncMock, ) -> None: - """Test setup of the sensor entities.""" + """Test setup of the sensor entities and their states.""" with patch("homeassistant.components.madvr.PLATFORMS", [Platform.SENSOR]): await setup_integration(hass, mock_config_entry) - await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id) - -@pytest.mark.parametrize( - ("entity_id", "payload", "expected_state", "expected_attributes"), - [ - ( - "sensor.madvr_envy_temp_gpu", - {"temp_gpu": 45.5}, - "45.5", - { - "device_class": "temperature", - "state_class": "measurement", - "unit_of_measurement": UnitOfTemperature.CELSIUS, - }, - ), - ( - "sensor.madvr_envy_temp_hdmi", - {"temp_hdmi": 40.0}, - "40.0", - { - "device_class": "temperature", - "state_class": "measurement", - "unit_of_measurement": UnitOfTemperature.CELSIUS, - }, - ), - ( - "sensor.madvr_envy_temp_cpu", - {"temp_cpu": 50.2}, - "50.2", - { - "device_class": "temperature", - "state_class": "measurement", - "unit_of_measurement": UnitOfTemperature.CELSIUS, - }, - ), - ( - "sensor.madvr_envy_temp_mainboard", - {"temp_mainboard": 35.8}, - "35.8", - { - "device_class": "temperature", - "state_class": "measurement", - "unit_of_measurement": UnitOfTemperature.CELSIUS, - }, - ), - ( - "sensor.madvr_envy_incoming_res", - {"incoming_res": "3840x2160"}, - "3840x2160", - {}, - ), - ( - "sensor.madvr_envy_incoming_frame_rate", - {"incoming_frame_rate": "60p"}, - "60p", - {}, - ), - ( - "sensor.madvr_envy_outgoing_signal_type", - {"outgoing_signal_type": "2D"}, - "2D", - {}, - ), - ( - "sensor.madvr_envy_incoming_signal_type", - {"incoming_signal_type": "3D"}, - "3D", - {}, - ), - ( - "sensor.madvr_envy_incoming_color_space", - {"incoming_color_space": "RGB"}, - "RGB", - {}, - ), - ( - "sensor.madvr_envy_incoming_bit_depth", - {"incoming_bit_depth": "10bit"}, - "10bit", - {}, - ), - ( - "sensor.madvr_envy_incoming_colorimetry", - {"incoming_colorimetry": "2020"}, - "2020", - {}, - ), - ( - "sensor.madvr_envy_incoming_black_levels", - {"incoming_black_levels": "PC"}, - "PC", - {}, - ), - ( - "sensor.madvr_envy_incoming_aspect_ratio", - {"incoming_aspect_ratio": "16:9"}, - "16:9", - {}, - ), - ( - "sensor.madvr_envy_outgoing_res", - {"outgoing_res": "3840x2160"}, - "3840x2160", - {}, - ), - ( - "sensor.madvr_envy_outgoing_frame_rate", - {"outgoing_frame_rate": "60p"}, - "60p", - {}, - ), - ( - "sensor.madvr_envy_outgoing_color_space", - {"outgoing_color_space": "RGB"}, - "RGB", - {}, - ), - ( - "sensor.madvr_envy_outgoing_bit_depth", - {"outgoing_bit_depth": "10bit"}, - "10bit", - {}, - ), - ( - "sensor.madvr_envy_outgoing_colorimetry", - {"outgoing_colorimetry": "2020"}, - "2020", - {}, - ), - ( - "sensor.madvr_envy_outgoing_black_levels", - {"outgoing_black_levels": "PC"}, - "PC", - {}, - ), - ( - "sensor.madvr_envy_aspect_res", - {"aspect_res": "3840:2160"}, - "3840:2160", - {}, - ), - ( - "sensor.madvr_envy_aspect_dec", - {"aspect_dec": "1.78"}, - "1.78", - {}, - ), - ( - "sensor.madvr_envy_aspect_int", - {"aspect_int": "178"}, - "178", - {}, - ), - ( - "sensor.madvr_envy_aspect_name", - {"aspect_name": "Widescreen"}, - "Widescreen", - {}, - ), - ( - "sensor.madvr_envy_masking_res", - {"masking_res": "3840:2160"}, - "3840:2160", - {}, - ), - ( - "sensor.madvr_envy_masking_dec", - {"masking_dec": "1.78"}, - "1.78", - {}, - ), - ( - "sensor.madvr_envy_masking_int", - {"masking_int": "178"}, - "178", - {}, - ), - ], -) -async def test_sensors( - hass: HomeAssistant, - mock_madvr_client: AsyncMock, - mock_config_entry: MockConfigEntry, - entity_id: str, - payload: dict, - expected_state: str, - expected_attributes: dict, -) -> None: - """Test the sensor entities.""" - await setup_integration(hass, mock_config_entry) update_callback = get_update_callback(mock_madvr_client) - # Test sensor state and attributes - update_callback(payload) + # Create a big data update with all sensor values + update_data = { + "temp_gpu": 45.5, + "temp_hdmi": 40.0, + "temp_cpu": 50.2, + "temp_mainboard": 35.8, + "incoming_res": "3840x2160", + "incoming_frame_rate": "60p", + "outgoing_signal_type": "2D", + "incoming_signal_type": "3D", + "incoming_color_space": "RGB", + "incoming_bit_depth": "10bit", + "incoming_colorimetry": "2020", + "incoming_black_levels": "PC", + "incoming_aspect_ratio": "16:9", + "outgoing_res": "3840x2160", + "outgoing_frame_rate": "60p", + "outgoing_color_space": "RGB", + "outgoing_bit_depth": "10bit", + "outgoing_colorimetry": "2020", + "outgoing_black_levels": "PC", + "aspect_res": "3840:2160", + "aspect_dec": "1.78", + "aspect_int": "178", + "aspect_name": "Widescreen", + "masking_res": "3840:2160", + "masking_dec": "1.78", + "masking_int": "178", + } + + # Update all sensors at once + update_callback(update_data) await hass.async_block_till_done() - state = hass.states.get(entity_id) - assert state.state == expected_state - for attr, value in expected_attributes.items(): - assert state.attributes.get(attr) == value - - -async def test_temperature_sensor_invalid_value( - hass: HomeAssistant, - mock_madvr_client: AsyncMock, - mock_config_entry: MockConfigEntry, -) -> None: - """Test temperature sensor with invalid value.""" - await setup_integration(hass, mock_config_entry) - update_callback = get_update_callback(mock_madvr_client) + # Snapshot all entity states + assert snapshot == { + entity_id: hass.states.get(entity_id) + for entity_id in hass.states.async_entity_ids("sensor") + if entity_id.startswith("sensor.madvr_envy_") + } # Test invalid temperature value - update_callback({"temp_gpu": -1}) # Invalid temperature + update_callback({"temp_gpu": -1}) await hass.async_block_till_done() + assert hass.states.get("sensor.madvr_envy_temp_gpu").state == "unknown" - state = hass.states.get("sensor.madvr_envy_temp_gpu") - assert state.state == "unknown" - - -async def test_sensor_availability( - hass: HomeAssistant, - mock_madvr_client: AsyncMock, - mock_config_entry: MockConfigEntry, -) -> None: - """Test sensor availability.""" - await setup_integration(hass, mock_config_entry) - update_callback = get_update_callback(mock_madvr_client) - - # Test sensor becomes unknown + # Test sensor unavailability update_callback({"incoming_res": None}) await hass.async_block_till_done() - - state = hass.states.get("sensor.madvr_envy_incoming_res") - assert state.state == "unknown" + assert hass.states.get("sensor.madvr_envy_incoming_res").state == "unknown" # Test sensor becomes available again update_callback({"incoming_res": "1920x1080"}) await hass.async_block_till_done() - - state = hass.states.get("sensor.madvr_envy_incoming_res") - assert state.state == "1920x1080" + assert hass.states.get("sensor.madvr_envy_incoming_res").state == "1920x1080" From b32b8f0ecdd93cddd7787f1d277c2282f93acd20 Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Tue, 9 Jul 2024 20:32:05 +0000 Subject: [PATCH 09/17] fix: use consts --- homeassistant/components/madvr/const.py | 28 ++++ homeassistant/components/madvr/sensor.py | 186 +++++++++++++---------- 2 files changed, 134 insertions(+), 80 deletions(-) diff --git a/homeassistant/components/madvr/const.py b/homeassistant/components/madvr/const.py index f0adeb9b6a5f26..3ac80725478687 100644 --- a/homeassistant/components/madvr/const.py +++ b/homeassistant/components/madvr/const.py @@ -4,3 +4,31 @@ DEFAULT_NAME = "envy" DEFAULT_PORT = 44077 + +# Sensor keys +TEMP_GPU = "temp_gpu" +TEMP_HDMI = "temp_hdmi" +TEMP_CPU = "temp_cpu" +TEMP_MAINBOARD = "temp_mainboard" +INCOMING_RES = "incoming_res" +INCOMING_SIGNAL_TYPE = "incoming_signal_type" +INCOMING_FRAME_RATE = "incoming_frame_rate" +INCOMING_COLOR_SPACE = "incoming_color_space" +INCOMING_BIT_DEPTH = "incoming_bit_depth" +INCOMING_COLORIMETRY = "incoming_colorimetry" +INCOMING_BLACK_LEVELS = "incoming_black_levels" +INCOMING_ASPECT_RATIO = "incoming_aspect_ratio" +OUTGOING_RES = "outgoing_res" +OUTGOING_SIGNAL_TYPE = "outgoing_signal_type" +OUTGOING_FRAME_RATE = "outgoing_frame_rate" +OUTGOING_COLOR_SPACE = "outgoing_color_space" +OUTGOING_BIT_DEPTH = "outgoing_bit_depth" +OUTGOING_COLORIMETRY = "outgoing_colorimetry" +OUTGOING_BLACK_LEVELS = "outgoing_black_levels" +ASPECT_RES = "aspect_res" +ASPECT_DEC = "aspect_dec" +ASPECT_INT = "aspect_int" +ASPECT_NAME = "aspect_name" +MASKING_RES = "masking_res" +MASKING_DEC = "masking_dec" +MASKING_INT = "masking_int" diff --git a/homeassistant/components/madvr/sensor.py b/homeassistant/components/madvr/sensor.py index fe5bf7783f11f1..4003335e89f7fb 100644 --- a/homeassistant/components/madvr/sensor.py +++ b/homeassistant/components/madvr/sensor.py @@ -16,6 +16,34 @@ from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import MadVRConfigEntry +from .const import ( + ASPECT_DEC, + ASPECT_INT, + ASPECT_NAME, + ASPECT_RES, + INCOMING_ASPECT_RATIO, + INCOMING_BIT_DEPTH, + INCOMING_BLACK_LEVELS, + INCOMING_COLOR_SPACE, + INCOMING_COLORIMETRY, + INCOMING_FRAME_RATE, + INCOMING_RES, + INCOMING_SIGNAL_TYPE, + MASKING_DEC, + MASKING_INT, + MASKING_RES, + OUTGOING_BIT_DEPTH, + OUTGOING_BLACK_LEVELS, + OUTGOING_COLOR_SPACE, + OUTGOING_COLORIMETRY, + OUTGOING_FRAME_RATE, + OUTGOING_RES, + OUTGOING_SIGNAL_TYPE, + TEMP_CPU, + TEMP_GPU, + TEMP_HDMI, + TEMP_MAINBOARD, +) from .coordinator import MadVRCoordinator from .entity import MadVREntity @@ -40,170 +68,168 @@ class MadvrSensorEntityDescription(SensorEntityDescription): SENSORS: tuple[MadvrSensorEntityDescription, ...] = ( MadvrSensorEntityDescription( - key="temp_gpu", + key=TEMP_GPU, device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, - value_fn=lambda coordinator: get_temperature(coordinator, "temp_gpu"), - translation_key="temp_gpu", + value_fn=lambda coordinator: get_temperature(coordinator, TEMP_GPU), + translation_key=TEMP_GPU, ), MadvrSensorEntityDescription( - key="temp_hdmi", + key=TEMP_HDMI, device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, - value_fn=lambda coordinator: get_temperature(coordinator, "temp_hdmi"), - translation_key="temp_hdmi", + value_fn=lambda coordinator: get_temperature(coordinator, TEMP_HDMI), + translation_key=TEMP_HDMI, ), MadvrSensorEntityDescription( - key="temp_cpu", + key=TEMP_CPU, device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, - value_fn=lambda coordinator: get_temperature(coordinator, "temp_cpu"), - translation_key="temp_cpu", + value_fn=lambda coordinator: get_temperature(coordinator, TEMP_CPU), + translation_key=TEMP_CPU, ), MadvrSensorEntityDescription( - key="temp_mainboard", + key=TEMP_MAINBOARD, device_class=SensorDeviceClass.TEMPERATURE, state_class=SensorStateClass.MEASUREMENT, native_unit_of_measurement=UnitOfTemperature.CELSIUS, - value_fn=lambda coordinator: get_temperature(coordinator, "temp_mainboard"), - translation_key="temp_mainboard", + value_fn=lambda coordinator: get_temperature(coordinator, TEMP_MAINBOARD), + translation_key=TEMP_MAINBOARD, ), MadvrSensorEntityDescription( - key="incoming_res", - value_fn=lambda coordinator: coordinator.data.get("incoming_res"), - translation_key="incoming_res", + key=INCOMING_RES, + value_fn=lambda coordinator: coordinator.data.get(INCOMING_RES), + translation_key=INCOMING_RES, ), MadvrSensorEntityDescription( - key="incoming_signal_type", - value_fn=lambda coordinator: coordinator.data.get("incoming_signal_type"), - translation_key="incoming_signal_type", + key=INCOMING_SIGNAL_TYPE, + value_fn=lambda coordinator: coordinator.data.get(INCOMING_SIGNAL_TYPE), + translation_key=INCOMING_SIGNAL_TYPE, device_class=SensorDeviceClass.ENUM, options=["2D", "3D"], ), MadvrSensorEntityDescription( - key="incoming_frame_rate", - value_fn=lambda coordinator: coordinator.data.get("incoming_frame_rate"), - translation_key="incoming_frame_rate", + key=INCOMING_FRAME_RATE, + value_fn=lambda coordinator: coordinator.data.get(INCOMING_FRAME_RATE), + translation_key=INCOMING_FRAME_RATE, ), MadvrSensorEntityDescription( - key="incoming_color_space", - value_fn=lambda coordinator: coordinator.data.get("incoming_color_space"), - translation_key="incoming_color_space", + key=INCOMING_COLOR_SPACE, + value_fn=lambda coordinator: coordinator.data.get(INCOMING_COLOR_SPACE), + translation_key=INCOMING_COLOR_SPACE, device_class=SensorDeviceClass.ENUM, options=["RGB", "444", "422", "420"], ), MadvrSensorEntityDescription( - key="incoming_bit_depth", - value_fn=lambda coordinator: coordinator.data.get("incoming_bit_depth"), - translation_key="incoming_bit_depth", + key=INCOMING_BIT_DEPTH, + value_fn=lambda coordinator: coordinator.data.get(INCOMING_BIT_DEPTH), + translation_key=INCOMING_BIT_DEPTH, device_class=SensorDeviceClass.ENUM, options=["8bit", "10bit", "12bit"], ), MadvrSensorEntityDescription( - key="incoming_colorimetry", - value_fn=lambda coordinator: coordinator.data.get("incoming_colorimetry"), - translation_key="incoming_colorimetry", + key=INCOMING_COLORIMETRY, + value_fn=lambda coordinator: coordinator.data.get(INCOMING_COLORIMETRY), + translation_key=INCOMING_COLORIMETRY, device_class=SensorDeviceClass.ENUM, options=["SDR", "HDR10", "HLG 601", "PAL", "709", "DCI", "2020"], ), MadvrSensorEntityDescription( - key="incoming_black_levels", - value_fn=lambda coordinator: coordinator.data.get("incoming_black_levels"), - translation_key="incoming_black_levels", + key=INCOMING_BLACK_LEVELS, + value_fn=lambda coordinator: coordinator.data.get(INCOMING_BLACK_LEVELS), + translation_key=INCOMING_BLACK_LEVELS, device_class=SensorDeviceClass.ENUM, options=["TV", "PC"], ), MadvrSensorEntityDescription( - key="incoming_aspect_ratio", - value_fn=lambda coordinator: coordinator.data.get("incoming_aspect_ratio"), - translation_key="incoming_aspect_ratio", + key=INCOMING_ASPECT_RATIO, + value_fn=lambda coordinator: coordinator.data.get(INCOMING_ASPECT_RATIO), + translation_key=INCOMING_ASPECT_RATIO, device_class=SensorDeviceClass.ENUM, options=["16:9", "4:3"], ), MadvrSensorEntityDescription( - key="outgoing_res", - value_fn=lambda coordinator: coordinator.data.get("outgoing_res"), - translation_key="outgoing_res", + key=OUTGOING_RES, + value_fn=lambda coordinator: coordinator.data.get(OUTGOING_RES), + translation_key=OUTGOING_RES, ), MadvrSensorEntityDescription( - key="outgoing_signal_type", - value_fn=lambda coordinator: coordinator.data.get("outgoing_signal_type"), - translation_key="outgoing_signal_type", + key=OUTGOING_SIGNAL_TYPE, + value_fn=lambda coordinator: coordinator.data.get(OUTGOING_SIGNAL_TYPE), + translation_key=OUTGOING_SIGNAL_TYPE, device_class=SensorDeviceClass.ENUM, options=["2D", "3D"], ), MadvrSensorEntityDescription( - key="outgoing_frame_rate", - value_fn=lambda coordinator: coordinator.data.get("outgoing_frame_rate"), - translation_key="outgoing_frame_rate", + key=OUTGOING_FRAME_RATE, + value_fn=lambda coordinator: coordinator.data.get(OUTGOING_FRAME_RATE), + translation_key=OUTGOING_FRAME_RATE, ), MadvrSensorEntityDescription( - key="outgoing_color_space", - value_fn=lambda coordinator: coordinator.data.get("outgoing_color_space"), - translation_key="outgoing_color_space", + key=OUTGOING_COLOR_SPACE, + value_fn=lambda coordinator: coordinator.data.get(OUTGOING_COLOR_SPACE), + translation_key=OUTGOING_COLOR_SPACE, device_class=SensorDeviceClass.ENUM, options=["RGB", "444", "422", "420"], ), MadvrSensorEntityDescription( - key="outgoing_bit_depth", - value_fn=lambda coordinator: coordinator.data.get("outgoing_bit_depth"), - translation_key="outgoing_bit_depth", + key=OUTGOING_BIT_DEPTH, + value_fn=lambda coordinator: coordinator.data.get(OUTGOING_BIT_DEPTH), + translation_key=OUTGOING_BIT_DEPTH, device_class=SensorDeviceClass.ENUM, options=["8bit", "10bit", "12bit"], ), MadvrSensorEntityDescription( - key="outgoing_colorimetry", - value_fn=lambda coordinator: coordinator.data.get("outgoing_colorimetry"), - translation_key="outgoing_colorimetry", + key=OUTGOING_COLORIMETRY, + value_fn=lambda coordinator: coordinator.data.get(OUTGOING_COLORIMETRY), + translation_key=OUTGOING_COLORIMETRY, device_class=SensorDeviceClass.ENUM, options=["SDR", "HDR10", "HLG 601", "PAL", "709", "DCI", "2020"], ), MadvrSensorEntityDescription( - key="outgoing_black_levels", - value_fn=lambda coordinator: coordinator.data.get("outgoing_black_levels"), - translation_key="outgoing_black_levels", + key=OUTGOING_BLACK_LEVELS, + value_fn=lambda coordinator: coordinator.data.get(OUTGOING_BLACK_LEVELS), + translation_key=OUTGOING_BLACK_LEVELS, device_class=SensorDeviceClass.ENUM, options=["TV", "PC"], ), - # aspect ratio as a resolution MadvrSensorEntityDescription( - key="aspect_res", - value_fn=lambda coordinator: coordinator.data.get("aspect_res"), - translation_key="aspect_res", + key=ASPECT_RES, + value_fn=lambda coordinator: coordinator.data.get(ASPECT_RES), + translation_key=ASPECT_RES, ), MadvrSensorEntityDescription( - key="aspect_dec", - value_fn=lambda coordinator: coordinator.data.get("aspect_dec"), - translation_key="aspect_dec", + key=ASPECT_DEC, + value_fn=lambda coordinator: coordinator.data.get(ASPECT_DEC), + translation_key=ASPECT_DEC, ), MadvrSensorEntityDescription( - key="aspect_int", - value_fn=lambda coordinator: coordinator.data.get("aspect_int"), - translation_key="aspect_int", + key=ASPECT_INT, + value_fn=lambda coordinator: coordinator.data.get(ASPECT_INT), + translation_key=ASPECT_INT, ), MadvrSensorEntityDescription( - key="aspect_name", - value_fn=lambda coordinator: coordinator.data.get("aspect_name"), - translation_key="aspect_name", + key=ASPECT_NAME, + value_fn=lambda coordinator: coordinator.data.get(ASPECT_NAME), + translation_key=ASPECT_NAME, ), - # masking as a resolution MadvrSensorEntityDescription( - key="masking_res", - value_fn=lambda coordinator: coordinator.data.get("masking_res"), - translation_key="masking_res", + key=MASKING_RES, + value_fn=lambda coordinator: coordinator.data.get(MASKING_RES), + translation_key=MASKING_RES, ), MadvrSensorEntityDescription( - key="masking_dec", - value_fn=lambda coordinator: coordinator.data.get("masking_dec"), - translation_key="masking_dec", + key=MASKING_DEC, + value_fn=lambda coordinator: coordinator.data.get(MASKING_DEC), + translation_key=MASKING_DEC, ), MadvrSensorEntityDescription( - key="masking_int", - value_fn=lambda coordinator: coordinator.data.get("masking_int"), - translation_key="masking_int", + key=MASKING_INT, + value_fn=lambda coordinator: coordinator.data.get(MASKING_INT), + translation_key=MASKING_INT, ), ) From b1ea0ff44cd17d75fe2d5b084c88dd141d28b8af Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Thu, 11 Jul 2024 02:32:00 +0000 Subject: [PATCH 10/17] fix: update names and use snapshot platform --- homeassistant/components/madvr/strings.json | 8 +- .../madvr/snapshots/test_sensors.ambr | 1358 +++++++++++++++++ tests/components/madvr/test_sensors.py | 8 +- 3 files changed, 1364 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/madvr/strings.json b/homeassistant/components/madvr/strings.json index 69b93895d55bf9..f87fe832b09bea 100644 --- a/homeassistant/components/madvr/strings.json +++ b/homeassistant/components/madvr/strings.json @@ -39,16 +39,16 @@ }, "sensor": { "temp_gpu": { - "name": "Temp gpu" + "name": "GPU temperature" }, "temp_hdmi": { - "name": "Temp hdmi" + "name": "HDMI temperature" }, "temp_cpu": { - "name": "Temp cpu" + "name": "CPU temperature" }, "temp_mainboard": { - "name": "Temp mainboard" + "name": "Mainboard temperature" }, "incoming_res": { "name": "Incoming res" diff --git a/tests/components/madvr/snapshots/test_sensors.ambr b/tests/components/madvr/snapshots/test_sensors.ambr index a3fe047673a4a8..9b729354a229ea 100644 --- a/tests/components/madvr/snapshots/test_sensors.ambr +++ b/tests/components/madvr/snapshots/test_sensors.ambr @@ -1542,3 +1542,1361 @@ }), }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_dec-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_dec', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect dec', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_dec', + 'unique_id': '00:11:22:33:44:55_aspect_dec', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_dec-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect dec', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_dec', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '1.78', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_int-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_int', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect int', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_int', + 'unique_id': '00:11:22:33:44:55_aspect_int', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_int-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect int', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_int', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '178', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_name-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_name', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect name', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_name', + 'unique_id': '00:11:22:33:44:55_aspect_name', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_name-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect name', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_name', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'Widescreen', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_res-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_res', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect res', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_res', + 'unique_id': '00:11:22:33:44:55_aspect_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_res-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect res', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_res', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840:2160', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_aspect_ratio-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + '16:9', + '4:3', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_aspect_ratio', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Incoming aspect ratio', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_aspect_ratio', + 'unique_id': '00:11:22:33:44:55_incoming_aspect_ratio', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_aspect_ratio-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming aspect ratio', + 'options': list([ + '16:9', + '4:3', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_aspect_ratio', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '16:9', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_bit_depth-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_bit_depth', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Incoming bit depth', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_bit_depth', + 'unique_id': '00:11:22:33:44:55_incoming_bit_depth', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_bit_depth-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming bit depth', + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_bit_depth', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '10bit', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_black_levels-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + 'TV', + 'PC', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_black_levels', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Incoming black levels', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_black_levels', + 'unique_id': '00:11:22:33:44:55_incoming_black_levels', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_black_levels-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming black levels', + 'options': list([ + 'TV', + 'PC', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_black_levels', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'PC', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_color_space-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_color_space', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Incoming color space', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_color_space', + 'unique_id': '00:11:22:33:44:55_incoming_color_space', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_color_space-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming color space', + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_color_space', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'RGB', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_colorimetry-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + 'SDR', + 'HDR10', + 'HLG 601', + 'PAL', + '709', + 'DCI', + '2020', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_colorimetry', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Incoming colorimetry', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_colorimetry', + 'unique_id': '00:11:22:33:44:55_incoming_colorimetry', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_colorimetry-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming colorimetry', + 'options': list([ + 'SDR', + 'HDR10', + 'HLG 601', + 'PAL', + '709', + 'DCI', + '2020', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_colorimetry', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '2020', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_frame_rate-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_frame_rate', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming frame rate', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_frame_rate', + 'unique_id': '00:11:22:33:44:55_incoming_frame_rate', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_frame_rate-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming frame rate', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_frame_rate', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '60p', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_res-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_res', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming res', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_res', + 'unique_id': '00:11:22:33:44:55_incoming_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_res-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming res', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_res', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840x2160', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_signal_type-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + '2D', + '3D', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_signal_type', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Incoming signal type', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_signal_type', + 'unique_id': '00:11:22:33:44:55_incoming_signal_type', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_signal_type-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming signal type', + 'options': list([ + '2D', + '3D', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_signal_type', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3D', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_dec-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_masking_dec', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Masking dec', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'masking_dec', + 'unique_id': '00:11:22:33:44:55_masking_dec', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_dec-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking dec', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_dec', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '1.78', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_int-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_masking_int', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Masking int', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'masking_int', + 'unique_id': '00:11:22:33:44:55_masking_int', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_int-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking int', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_int', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '178', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_res-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_masking_res', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Masking res', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'masking_res', + 'unique_id': '00:11:22:33:44:55_masking_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_res-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking res', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_res', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840:2160', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_bit_depth-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_bit_depth', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Outgoing bit depth', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_bit_depth', + 'unique_id': '00:11:22:33:44:55_outgoing_bit_depth', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_bit_depth-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing bit depth', + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_bit_depth', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '10bit', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_black_levels-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + 'TV', + 'PC', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_black_levels', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Outgoing black levels', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_black_levels', + 'unique_id': '00:11:22:33:44:55_outgoing_black_levels', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_black_levels-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing black levels', + 'options': list([ + 'TV', + 'PC', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_black_levels', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'PC', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_color_space-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_color_space', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Outgoing color space', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_color_space', + 'unique_id': '00:11:22:33:44:55_outgoing_color_space', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_color_space-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing color space', + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_color_space', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': 'RGB', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_colorimetry-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + 'SDR', + 'HDR10', + 'HLG 601', + 'PAL', + '709', + 'DCI', + '2020', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_colorimetry', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Outgoing colorimetry', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_colorimetry', + 'unique_id': '00:11:22:33:44:55_outgoing_colorimetry', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_colorimetry-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing colorimetry', + 'options': list([ + 'SDR', + 'HDR10', + 'HLG 601', + 'PAL', + '709', + 'DCI', + '2020', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_colorimetry', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '2020', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_frame_rate-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_frame_rate', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Outgoing frame rate', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_frame_rate', + 'unique_id': '00:11:22:33:44:55_outgoing_frame_rate', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_frame_rate-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing frame rate', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_frame_rate', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '60p', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_res-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_res', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Outgoing res', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_res', + 'unique_id': '00:11:22:33:44:55_outgoing_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_res-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing res', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_res', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840x2160', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_signal_type-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'options': list([ + '2D', + '3D', + ]), + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_signal_type', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Outgoing signal type', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_signal_type', + 'unique_id': '00:11:22:33:44:55_outgoing_signal_type', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_signal_type-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Outgoing signal type', + 'options': list([ + '2D', + '3D', + ]), + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_signal_type', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '2D', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_cpu-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_temp_cpu', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Temp cpu', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_cpu', + 'unique_id': '00:11:22:33:44:55_temp_cpu', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_cpu-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Temp cpu', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_temp_cpu', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '50.2', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_gpu-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_temp_gpu', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Temp gpu', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_gpu', + 'unique_id': '00:11:22:33:44:55_temp_gpu', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_gpu-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Temp gpu', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_temp_gpu', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '45.5', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_hdmi-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_temp_hdmi', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Temp hdmi', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_hdmi', + 'unique_id': '00:11:22:33:44:55_temp_hdmi', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_hdmi-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Temp hdmi', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_temp_hdmi', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '40.0', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_mainboard-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_temp_mainboard', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Temp mainboard', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_mainboard', + 'unique_id': '00:11:22:33:44:55_temp_mainboard', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_mainboard-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Temp mainboard', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_temp_mainboard', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '35.8', + }) +# --- diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py index 71b7cd57db24df..d1c2ef4a65b209 100644 --- a/tests/components/madvr/test_sensors.py +++ b/tests/components/madvr/test_sensors.py @@ -13,7 +13,7 @@ from . import setup_integration from .conftest import get_update_callback -from tests.common import MockConfigEntry +from tests.common import MockConfigEntry, snapshot_platform async def test_sensor_setup_and_states( @@ -64,11 +64,7 @@ async def test_sensor_setup_and_states( await hass.async_block_till_done() # Snapshot all entity states - assert snapshot == { - entity_id: hass.states.get(entity_id) - for entity_id in hass.states.async_entity_ids("sensor") - if entity_id.startswith("sensor.madvr_envy_") - } + await snapshot_platform(hass, entity_registry, snapshot, mock_config_entry.entry_id) # Test invalid temperature value update_callback({"temp_gpu": -1}) From 03a68c9ae1666e4bd201fe8082fb61cbea97d5ba Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Thu, 11 Jul 2024 02:38:55 +0000 Subject: [PATCH 11/17] fix: fix test name for new translations --- .../madvr/snapshots/test_sensors.ambr | 204 ++++++++++++++++++ tests/components/madvr/test_sensors.py | 2 +- 2 files changed, 205 insertions(+), 1 deletion(-) diff --git a/tests/components/madvr/snapshots/test_sensors.ambr b/tests/components/madvr/snapshots/test_sensors.ambr index 9b729354a229ea..369c76c451d020 100644 --- a/tests/components/madvr/snapshots/test_sensors.ambr +++ b/tests/components/madvr/snapshots/test_sensors.ambr @@ -1726,6 +1726,159 @@ 'state': '3840:2160', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_cpu_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_cpu_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'CPU temperature', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_cpu', + 'unique_id': '00:11:22:33:44:55_temp_cpu', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_cpu_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy CPU temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_cpu_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '50.2', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_gpu_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_gpu_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'GPU temperature', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_gpu', + 'unique_id': '00:11:22:33:44:55_temp_gpu', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_gpu_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy GPU temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_gpu_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '45.5', + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_hdmi_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_hdmi_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'HDMI temperature', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_hdmi', + 'unique_id': '00:11:22:33:44:55_temp_hdmi', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_hdmi_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy HDMI temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_hdmi_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '40.0', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_aspect_ratio-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -2170,6 +2323,57 @@ 'state': '3D', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_mainboard_temperature-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': dict({ + 'state_class': , + }), + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_mainboard_temperature', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': , + 'original_icon': None, + 'original_name': 'Mainboard temperature', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'temp_mainboard', + 'unique_id': '00:11:22:33:44:55_temp_mainboard', + 'unit_of_measurement': , + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_mainboard_temperature-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'device_class': 'temperature', + 'friendly_name': 'madVR Envy Mainboard temperature', + 'state_class': , + 'unit_of_measurement': , + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_mainboard_temperature', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '35.8', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_masking_dec-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py index d1c2ef4a65b209..dd3ed52d781fcf 100644 --- a/tests/components/madvr/test_sensors.py +++ b/tests/components/madvr/test_sensors.py @@ -69,7 +69,7 @@ async def test_sensor_setup_and_states( # Test invalid temperature value update_callback({"temp_gpu": -1}) await hass.async_block_till_done() - assert hass.states.get("sensor.madvr_envy_temp_gpu").state == "unknown" + assert hass.states.get("sensor.madvr_envy_gpu_temperature").state == "unknown" # Test sensor unavailability update_callback({"incoming_res": None}) From af6984df028f4a42be0fa7ca54f2507ad4347ecd Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Thu, 11 Jul 2024 02:39:54 +0000 Subject: [PATCH 12/17] fix: comment --- tests/components/madvr/test_sensors.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py index dd3ed52d781fcf..331d317a4976dc 100644 --- a/tests/components/madvr/test_sensors.py +++ b/tests/components/madvr/test_sensors.py @@ -71,12 +71,12 @@ async def test_sensor_setup_and_states( await hass.async_block_till_done() assert hass.states.get("sensor.madvr_envy_gpu_temperature").state == "unknown" - # Test sensor unavailability + # Test sensor unknown update_callback({"incoming_res": None}) await hass.async_block_till_done() assert hass.states.get("sensor.madvr_envy_incoming_res").state == "unknown" - # Test sensor becomes available again + # Test sensor becomes known again update_callback({"incoming_res": "1920x1080"}) await hass.async_block_till_done() assert hass.states.get("sensor.madvr_envy_incoming_res").state == "1920x1080" From 7b85ea680a0656c4d3393d24ceaa61d03f5ff1e7 Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Thu, 11 Jul 2024 02:46:32 +0000 Subject: [PATCH 13/17] fix: improve sensor names --- homeassistant/components/madvr/strings.json | 16 +- .../madvr/snapshots/test_sensors.ambr | 368 ++++++++++++++++++ tests/components/madvr/test_sensors.py | 4 +- 3 files changed, 378 insertions(+), 10 deletions(-) diff --git a/homeassistant/components/madvr/strings.json b/homeassistant/components/madvr/strings.json index f87fe832b09bea..3e8e786f775ca6 100644 --- a/homeassistant/components/madvr/strings.json +++ b/homeassistant/components/madvr/strings.json @@ -51,7 +51,7 @@ "name": "Mainboard temperature" }, "incoming_res": { - "name": "Incoming res" + "name": "Incoming resolution" }, "incoming_signal_type": { "name": "Incoming signal type" @@ -75,7 +75,7 @@ "name": "Incoming aspect ratio" }, "outgoing_res": { - "name": "Outgoing res" + "name": "Outgoing resolution" }, "outgoing_signal_type": { "name": "Outgoing signal type" @@ -96,25 +96,25 @@ "name": "Outgoing black levels" }, "aspect_res": { - "name": "Aspect res" + "name": "Aspect resolution" }, "aspect_dec": { - "name": "Aspect dec" + "name": "Aspect decimal" }, "aspect_int": { - "name": "Aspect int" + "name": "Aspect integer" }, "aspect_name": { "name": "Aspect name" }, "masking_res": { - "name": "Masking res" + "name": "Masking resolution" }, "masking_dec": { - "name": "Masking dec" + "name": "Masking decimal" }, "masking_int": { - "name": "Masking int" + "name": "Masking integer" } } } diff --git a/tests/components/madvr/snapshots/test_sensors.ambr b/tests/components/madvr/snapshots/test_sensors.ambr index 369c76c451d020..2c09f648baaed7 100644 --- a/tests/components/madvr/snapshots/test_sensors.ambr +++ b/tests/components/madvr/snapshots/test_sensors.ambr @@ -1588,6 +1588,52 @@ 'state': '1.78', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_decimal-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_decimal', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect decimal', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_dec', + 'unique_id': '00:11:22:33:44:55_aspect_dec', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_decimal-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect decimal', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_decimal', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '1.78', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_int-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -1634,6 +1680,52 @@ 'state': '178', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_integer-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_integer', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect integer', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_int', + 'unique_id': '00:11:22:33:44:55_aspect_int', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_integer-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect integer', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_integer', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '178', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_name-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -1726,6 +1818,52 @@ 'state': '3840:2160', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_resolution-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_aspect_resolution', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Aspect resolution', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'aspect_res', + 'unique_id': '00:11:22:33:44:55_aspect_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_resolution-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Aspect resolution', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_aspect_resolution', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840:2160', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_cpu_temperature-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -2267,6 +2405,52 @@ 'state': '3840x2160', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_resolution-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_resolution', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Incoming resolution', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'incoming_res', + 'unique_id': '00:11:22:33:44:55_incoming_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_resolution-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Incoming resolution', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_incoming_resolution', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840x2160', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_signal_type-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -2420,6 +2604,52 @@ 'state': '1.78', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_decimal-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_masking_decimal', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Masking decimal', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'masking_dec', + 'unique_id': '00:11:22:33:44:55_masking_dec', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_decimal-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking decimal', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_decimal', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '1.78', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_masking_int-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -2466,6 +2696,52 @@ 'state': '178', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_integer-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_masking_integer', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Masking integer', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'masking_int', + 'unique_id': '00:11:22:33:44:55_masking_int', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_integer-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking integer', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_integer', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '178', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_masking_res-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -2512,6 +2788,52 @@ 'state': '3840:2160', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_resolution-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_masking_resolution', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Masking resolution', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'masking_res', + 'unique_id': '00:11:22:33:44:55_masking_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_resolution-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Masking resolution', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_masking_resolution', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840:2160', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_bit_depth-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -2844,6 +3166,52 @@ 'state': '3840x2160', }) # --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_resolution-entry] + EntityRegistryEntrySnapshot({ + 'aliases': set({ + }), + 'area_id': None, + 'capabilities': None, + 'config_entry_id': , + 'device_class': None, + 'device_id': , + 'disabled_by': None, + 'domain': 'sensor', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_outgoing_resolution', + 'has_entity_name': True, + 'hidden_by': None, + 'icon': None, + 'id': , + 'labels': set({ + }), + 'name': None, + 'options': dict({ + }), + 'original_device_class': None, + 'original_icon': None, + 'original_name': 'Outgoing resolution', + 'platform': 'madvr', + 'previous_unique_id': None, + 'supported_features': 0, + 'translation_key': 'outgoing_res', + 'unique_id': '00:11:22:33:44:55_outgoing_res', + 'unit_of_measurement': None, + }) +# --- +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_resolution-state] + StateSnapshot({ + 'attributes': ReadOnlyDict({ + 'friendly_name': 'madVR Envy Outgoing resolution', + }), + 'context': , + 'entity_id': 'sensor.madvr_envy_outgoing_resolution', + 'last_changed': , + 'last_reported': , + 'last_updated': , + 'state': '3840x2160', + }) +# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_signal_type-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py index 331d317a4976dc..17a60a3151e3a4 100644 --- a/tests/components/madvr/test_sensors.py +++ b/tests/components/madvr/test_sensors.py @@ -74,9 +74,9 @@ async def test_sensor_setup_and_states( # Test sensor unknown update_callback({"incoming_res": None}) await hass.async_block_till_done() - assert hass.states.get("sensor.madvr_envy_incoming_res").state == "unknown" + assert hass.states.get("sensor.madvr_envy_incoming_resolution").state == "unknown" # Test sensor becomes known again update_callback({"incoming_res": "1920x1080"}) await hass.async_block_till_done() - assert hass.states.get("sensor.madvr_envy_incoming_res").state == "1920x1080" + assert hass.states.get("sensor.madvr_envy_incoming_resolution").state == "1920x1080" From c9926103bd5045fef8f86c1bafa64f6857de1d00 Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Sat, 20 Jul 2024 20:05:56 +0000 Subject: [PATCH 14/17] fix: address comments --- homeassistant/components/madvr/manifest.json | 2 +- homeassistant/components/madvr/sensor.py | 11 ++++++++--- requirements_all.txt | 2 +- requirements_test_all.txt | 2 +- tests/components/madvr/test_sensors.py | 13 ++++++++++--- 5 files changed, 21 insertions(+), 9 deletions(-) diff --git a/homeassistant/components/madvr/manifest.json b/homeassistant/components/madvr/manifest.json index ec670b1361a628..9aa2c5a9b5dc7a 100644 --- a/homeassistant/components/madvr/manifest.json +++ b/homeassistant/components/madvr/manifest.json @@ -6,5 +6,5 @@ "documentation": "https://www.home-assistant.io/integrations/madvr", "integration_type": "device", "iot_class": "local_push", - "requirements": ["py-madvr2==1.6.28"] + "requirements": ["py-madvr2==1.6.27"] } diff --git a/homeassistant/components/madvr/sensor.py b/homeassistant/components/madvr/sensor.py index 4003335e89f7fb..ef6295b197738e 100644 --- a/homeassistant/components/madvr/sensor.py +++ b/homeassistant/components/madvr/sensor.py @@ -14,6 +14,7 @@ from homeassistant.const import UnitOfTemperature from homeassistant.core import HomeAssistant from homeassistant.helpers.entity_platform import AddEntitiesCallback +from homeassistant.helpers.typing import StateType from . import MadVRConfigEntry from .const import ( @@ -55,15 +56,19 @@ def is_valid_temperature(value: float | None) -> bool: def get_temperature(coordinator: MadVRCoordinator, key: str) -> float | None: """Get temperature value if valid, otherwise return None.""" - temp = coordinator.data.get(key) - return float(str(temp)) if is_valid_temperature(temp) else None + try: + temp = float(coordinator.data.get(key, 0)) + except ValueError: + return None + else: + return temp if is_valid_temperature(temp) else None @dataclass(frozen=True, kw_only=True) class MadvrSensorEntityDescription(SensorEntityDescription): """Describe madVR sensor entity.""" - value_fn: Callable[[MadVRCoordinator], float | str | None] + value_fn: Callable[[MadVRCoordinator], StateType] SENSORS: tuple[MadvrSensorEntityDescription, ...] = ( diff --git a/requirements_all.txt b/requirements_all.txt index 656027cf573fb7..4f9f5cd4e3b823 100644 --- a/requirements_all.txt +++ b/requirements_all.txt @@ -1635,7 +1635,7 @@ py-dormakaba-dkey==1.0.5 py-improv-ble-client==1.0.3 # homeassistant.components.madvr -py-madvr2==1.6.28 +py-madvr2==1.6.27 # homeassistant.components.melissa py-melissa-climate==2.1.4 diff --git a/requirements_test_all.txt b/requirements_test_all.txt index d9824746187529..e50b07c22ff235 100644 --- a/requirements_test_all.txt +++ b/requirements_test_all.txt @@ -1309,7 +1309,7 @@ py-dormakaba-dkey==1.0.5 py-improv-ble-client==1.0.3 # homeassistant.components.madvr -py-madvr2==1.6.28 +py-madvr2==1.6.27 # homeassistant.components.melissa py-melissa-climate==2.1.4 diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py index 17a60a3151e3a4..0cd82f9189ddd1 100644 --- a/tests/components/madvr/test_sensors.py +++ b/tests/components/madvr/test_sensors.py @@ -6,7 +6,7 @@ from syrupy import SnapshotAssertion -from homeassistant.const import Platform +from homeassistant.const import STATE_UNKNOWN, Platform from homeassistant.core import HomeAssistant import homeassistant.helpers.entity_registry as er @@ -69,14 +69,21 @@ async def test_sensor_setup_and_states( # Test invalid temperature value update_callback({"temp_gpu": -1}) await hass.async_block_till_done() - assert hass.states.get("sensor.madvr_envy_gpu_temperature").state == "unknown" + assert hass.states.get("sensor.madvr_envy_gpu_temperature").state == STATE_UNKNOWN # Test sensor unknown update_callback({"incoming_res": None}) await hass.async_block_till_done() - assert hass.states.get("sensor.madvr_envy_incoming_resolution").state == "unknown" + assert ( + hass.states.get("sensor.madvr_envy_incoming_resolution").state == STATE_UNKNOWN + ) # Test sensor becomes known again update_callback({"incoming_res": "1920x1080"}) await hass.async_block_till_done() assert hass.states.get("sensor.madvr_envy_incoming_resolution").state == "1920x1080" + + # Test temperature sensor + update_callback({"temp_gpu": 41.2}) + await hass.async_block_till_done() + assert hass.states.get("sensor.madvr_envy_gpu_temperature").state == "41.2" From 9fae4a33b9ef34366d0c1dab23a1d5966ec09e90 Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Sat, 20 Jul 2024 20:37:35 +0000 Subject: [PATCH 15/17] feat: disable uncommon sensors by default --- homeassistant/components/madvr/sensor.py | 12 ++++++++++++ tests/components/madvr/test_sensors.py | 2 ++ 2 files changed, 14 insertions(+) diff --git a/homeassistant/components/madvr/sensor.py b/homeassistant/components/madvr/sensor.py index ef6295b197738e..d0f5556cc5dffa 100644 --- a/homeassistant/components/madvr/sensor.py +++ b/homeassistant/components/madvr/sensor.py @@ -79,6 +79,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): native_unit_of_measurement=UnitOfTemperature.CELSIUS, value_fn=lambda coordinator: get_temperature(coordinator, TEMP_GPU), translation_key=TEMP_GPU, + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=TEMP_HDMI, @@ -87,6 +88,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): native_unit_of_measurement=UnitOfTemperature.CELSIUS, value_fn=lambda coordinator: get_temperature(coordinator, TEMP_HDMI), translation_key=TEMP_HDMI, + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=TEMP_CPU, @@ -95,6 +97,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): native_unit_of_measurement=UnitOfTemperature.CELSIUS, value_fn=lambda coordinator: get_temperature(coordinator, TEMP_CPU), translation_key=TEMP_CPU, + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=TEMP_MAINBOARD, @@ -103,6 +106,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): native_unit_of_measurement=UnitOfTemperature.CELSIUS, value_fn=lambda coordinator: get_temperature(coordinator, TEMP_MAINBOARD), translation_key=TEMP_MAINBOARD, + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=INCOMING_RES, @@ -115,6 +119,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): translation_key=INCOMING_SIGNAL_TYPE, device_class=SensorDeviceClass.ENUM, options=["2D", "3D"], + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=INCOMING_FRAME_RATE, @@ -155,6 +160,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): translation_key=INCOMING_ASPECT_RATIO, device_class=SensorDeviceClass.ENUM, options=["16:9", "4:3"], + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=OUTGOING_RES, @@ -167,6 +173,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): translation_key=OUTGOING_SIGNAL_TYPE, device_class=SensorDeviceClass.ENUM, options=["2D", "3D"], + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=OUTGOING_FRAME_RATE, @@ -205,6 +212,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): key=ASPECT_RES, value_fn=lambda coordinator: coordinator.data.get(ASPECT_RES), translation_key=ASPECT_RES, + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=ASPECT_DEC, @@ -215,16 +223,19 @@ class MadvrSensorEntityDescription(SensorEntityDescription): key=ASPECT_INT, value_fn=lambda coordinator: coordinator.data.get(ASPECT_INT), translation_key=ASPECT_INT, + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=ASPECT_NAME, value_fn=lambda coordinator: coordinator.data.get(ASPECT_NAME), translation_key=ASPECT_NAME, + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=MASKING_RES, value_fn=lambda coordinator: coordinator.data.get(MASKING_RES), translation_key=MASKING_RES, + entity_registry_enabled_default=False, ), MadvrSensorEntityDescription( key=MASKING_DEC, @@ -235,6 +246,7 @@ class MadvrSensorEntityDescription(SensorEntityDescription): key=MASKING_INT, value_fn=lambda coordinator: coordinator.data.get(MASKING_INT), translation_key=MASKING_INT, + entity_registry_enabled_default=False, ), ) diff --git a/tests/components/madvr/test_sensors.py b/tests/components/madvr/test_sensors.py index 0cd82f9189ddd1..5a918dcd433df6 100644 --- a/tests/components/madvr/test_sensors.py +++ b/tests/components/madvr/test_sensors.py @@ -4,6 +4,7 @@ from unittest.mock import AsyncMock, patch +import pytest from syrupy import SnapshotAssertion from homeassistant.const import STATE_UNKNOWN, Platform @@ -16,6 +17,7 @@ from tests.common import MockConfigEntry, snapshot_platform +@pytest.mark.usefixtures("entity_registry_enabled_by_default") async def test_sensor_setup_and_states( hass: HomeAssistant, snapshot: SnapshotAssertion, From 09362ffddc70216064a465d02b642c03728fad2b Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Sat, 20 Jul 2024 22:51:26 +0000 Subject: [PATCH 16/17] fix: update sensors --- .../madvr/snapshots/test_binary_sensors.ambr | 188 -- .../madvr/snapshots/test_sensors.ambr | 2589 ++--------------- 2 files changed, 237 insertions(+), 2540 deletions(-) diff --git a/tests/components/madvr/snapshots/test_binary_sensors.ambr b/tests/components/madvr/snapshots/test_binary_sensors.ambr index 87069542eb1aaa..7fd54a7c24045b 100644 --- a/tests/components/madvr/snapshots/test_binary_sensors.ambr +++ b/tests/components/madvr/snapshots/test_binary_sensors.ambr @@ -45,194 +45,6 @@ 'state': 'off', }) # --- -# name: test_binary_sensor_setup[binary_sensor.madvr_envy_madvr_hdr_flag-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'binary_sensor', - 'entity_category': None, - 'entity_id': 'binary_sensor.madvr_envy_madvr_hdr_flag', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': 'mdi:hdr-off', - 'original_name': 'madvr HDR Flag', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': None, - 'unique_id': '00:11:22:33:44:55_hdr_flag', - 'unit_of_measurement': None, - }) -# --- -# name: test_binary_sensor_setup[binary_sensor.madvr_envy_madvr_hdr_flag-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy madvr HDR Flag', - 'icon': 'mdi:hdr-off', - }), - 'context': , - 'entity_id': 'binary_sensor.madvr_envy_madvr_hdr_flag', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'off', - }) -# --- -# name: test_binary_sensor_setup[binary_sensor.madvr_envy_madvr_outgoing_hdr_flag-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'binary_sensor', - 'entity_category': None, - 'entity_id': 'binary_sensor.madvr_envy_madvr_outgoing_hdr_flag', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': 'mdi:hdr-off', - 'original_name': 'madvr Outgoing HDR Flag', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': None, - 'unique_id': '00:11:22:33:44:55_outgoing_hdr_flag', - 'unit_of_measurement': None, - }) -# --- -# name: test_binary_sensor_setup[binary_sensor.madvr_envy_madvr_outgoing_hdr_flag-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy madvr Outgoing HDR Flag', - 'icon': 'mdi:hdr-off', - }), - 'context': , - 'entity_id': 'binary_sensor.madvr_envy_madvr_outgoing_hdr_flag', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'off', - }) -# --- -# name: test_binary_sensor_setup[binary_sensor.madvr_envy_madvr_power_state-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'binary_sensor', - 'entity_category': None, - 'entity_id': 'binary_sensor.madvr_envy_madvr_power_state', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': 'mdi:power-off', - 'original_name': 'madvr Power State', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': None, - 'unique_id': '00:11:22:33:44:55_power_state', - 'unit_of_measurement': None, - }) -# --- -# name: test_binary_sensor_setup[binary_sensor.madvr_envy_madvr_power_state-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy madvr Power State', - 'icon': 'mdi:power-off', - }), - 'context': , - 'entity_id': 'binary_sensor.madvr_envy_madvr_power_state', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'off', - }) -# --- -# name: test_binary_sensor_setup[binary_sensor.madvr_envy_madvr_signal_state-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'binary_sensor', - 'entity_category': None, - 'entity_id': 'binary_sensor.madvr_envy_madvr_signal_state', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': 'mdi:signal-off', - 'original_name': 'madvr Signal State', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': None, - 'unique_id': '00:11:22:33:44:55_signal_state', - 'unit_of_measurement': None, - }) -# --- -# name: test_binary_sensor_setup[binary_sensor.madvr_envy_madvr_signal_state-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy madvr Signal State', - 'icon': 'mdi:signal-off', - }), - 'context': , - 'entity_id': 'binary_sensor.madvr_envy_madvr_signal_state', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'off', - }) -# --- # name: test_binary_sensor_setup[binary_sensor.madvr_envy_outgoing_hdr_flag-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ diff --git a/tests/components/madvr/snapshots/test_sensors.ambr b/tests/components/madvr/snapshots/test_sensors.ambr index 2c09f648baaed7..7b0dd254f77e0f 100644 --- a/tests/components/madvr/snapshots/test_sensors.ambr +++ b/tests/components/madvr/snapshots/test_sensors.ambr @@ -1,5 +1,5 @@ # serializer version: 1 -# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_decimal-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_decimal-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -11,7 +11,7 @@ 'disabled_by': None, 'domain': 'sensor', 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_ratio_decimal', + 'entity_id': 'sensor.madvr_envy_aspect_decimal', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -23,7 +23,7 @@ }), 'original_device_class': None, 'original_icon': None, - 'original_name': 'Aspect ratio decimal', + 'original_name': 'Aspect decimal', 'platform': 'madvr', 'previous_unique_id': None, 'supported_features': 0, @@ -32,20 +32,20 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_decimal-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_decimal-state] StateSnapshot({ 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect ratio decimal', + 'friendly_name': 'madVR Envy Aspect decimal', }), 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_ratio_decimal', + 'entity_id': 'sensor.madvr_envy_aspect_decimal', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '1.78', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_integer-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_integer-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -57,7 +57,7 @@ 'disabled_by': None, 'domain': 'sensor', 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_ratio_integer', + 'entity_id': 'sensor.madvr_envy_aspect_integer', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -69,7 +69,7 @@ }), 'original_device_class': None, 'original_icon': None, - 'original_name': 'Aspect ratio integer', + 'original_name': 'Aspect integer', 'platform': 'madvr', 'previous_unique_id': None, 'supported_features': 0, @@ -78,20 +78,20 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_integer-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_integer-state] StateSnapshot({ 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect ratio integer', + 'friendly_name': 'madVR Envy Aspect integer', }), 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_ratio_integer', + 'entity_id': 'sensor.madvr_envy_aspect_integer', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '178', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_name-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_name-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -103,7 +103,7 @@ 'disabled_by': None, 'domain': 'sensor', 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_ratio_name', + 'entity_id': 'sensor.madvr_envy_aspect_name', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -115,7 +115,7 @@ }), 'original_device_class': None, 'original_icon': None, - 'original_name': 'Aspect ratio name', + 'original_name': 'Aspect name', 'platform': 'madvr', 'previous_unique_id': None, 'supported_features': 0, @@ -124,20 +124,20 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_name-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_name-state] StateSnapshot({ 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect ratio name', + 'friendly_name': 'madVR Envy Aspect name', }), 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_ratio_name', + 'entity_id': 'sensor.madvr_envy_aspect_name', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': 'Widescreen', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_resolution-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_resolution-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -149,7 +149,7 @@ 'disabled_by': None, 'domain': 'sensor', 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_ratio_resolution', + 'entity_id': 'sensor.madvr_envy_aspect_resolution', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -161,7 +161,7 @@ }), 'original_device_class': None, 'original_icon': None, - 'original_name': 'Aspect ratio resolution', + 'original_name': 'Aspect resolution', 'platform': 'madvr', 'previous_unique_id': None, 'supported_features': 0, @@ -170,20 +170,20 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_aspect_ratio_resolution-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_resolution-state] StateSnapshot({ 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect ratio resolution', + 'friendly_name': 'madVR Envy Aspect resolution', }), 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_ratio_resolution', + 'entity_id': 'sensor.madvr_envy_aspect_resolution', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '3840:2160', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_cpu_temperature-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_cpu_temperature-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -209,7 +209,7 @@ }), 'original_device_class': , 'original_icon': None, - 'original_name': 'Cpu temperature', + 'original_name': 'CPU temperature', 'platform': 'madvr', 'previous_unique_id': None, 'supported_features': 0, @@ -218,11 +218,11 @@ 'unit_of_measurement': , }) # --- -# name: test_sensor_setup[sensor.madvr_envy_cpu_temperature-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_cpu_temperature-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Cpu temperature', + 'friendly_name': 'madVR Envy CPU temperature', 'state_class': , 'unit_of_measurement': , }), @@ -231,10 +231,10 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '50.2', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_gpu_temperature-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_gpu_temperature-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -260,7 +260,7 @@ }), 'original_device_class': , 'original_icon': None, - 'original_name': 'Gpu temperature', + 'original_name': 'GPU temperature', 'platform': 'madvr', 'previous_unique_id': None, 'supported_features': 0, @@ -269,11 +269,11 @@ 'unit_of_measurement': , }) # --- -# name: test_sensor_setup[sensor.madvr_envy_gpu_temperature-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_gpu_temperature-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Gpu temperature', + 'friendly_name': 'madVR Envy GPU temperature', 'state_class': , 'unit_of_measurement': , }), @@ -282,10 +282,10 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '45.5', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_hdmi_temperature-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_hdmi_temperature-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -311,7 +311,7 @@ }), 'original_device_class': , 'original_icon': None, - 'original_name': 'Hdmi temperature', + 'original_name': 'HDMI temperature', 'platform': 'madvr', 'previous_unique_id': None, 'supported_features': 0, @@ -320,11 +320,11 @@ 'unit_of_measurement': , }) # --- -# name: test_sensor_setup[sensor.madvr_envy_hdmi_temperature-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_hdmi_temperature-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Hdmi temperature', + 'friendly_name': 'madVR Envy HDMI temperature', 'state_class': , 'unit_of_measurement': , }), @@ -333,15 +333,20 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '40.0', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_aspect_ratio-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_aspect_ratio-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + 'options': list([ + '16:9', + '4:3', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , @@ -358,7 +363,7 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, 'original_name': 'Incoming aspect ratio', 'platform': 'madvr', @@ -369,25 +374,36 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_aspect_ratio-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_aspect_ratio-state] StateSnapshot({ 'attributes': ReadOnlyDict({ + 'device_class': 'enum', 'friendly_name': 'madVR Envy Incoming aspect ratio', + 'options': list([ + '16:9', + '4:3', + ]), }), 'context': , 'entity_id': 'sensor.madvr_envy_incoming_aspect_ratio', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '16:9', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_bit_depth-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_bit_depth-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , @@ -404,7 +420,7 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, 'original_name': 'Incoming bit depth', 'platform': 'madvr', @@ -415,25 +431,36 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_bit_depth-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_bit_depth-state] StateSnapshot({ 'attributes': ReadOnlyDict({ + 'device_class': 'enum', 'friendly_name': 'madVR Envy Incoming bit depth', + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), }), 'context': , 'entity_id': 'sensor.madvr_envy_incoming_bit_depth', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '10bit', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_black_levels-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_black_levels-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + 'options': list([ + 'TV', + 'PC', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , @@ -450,7 +477,7 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, 'original_name': 'Incoming black levels', 'platform': 'madvr', @@ -461,25 +488,37 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_black_levels-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_black_levels-state] StateSnapshot({ 'attributes': ReadOnlyDict({ + 'device_class': 'enum', 'friendly_name': 'madVR Envy Incoming black levels', + 'options': list([ + 'TV', + 'PC', + ]), }), 'context': , 'entity_id': 'sensor.madvr_envy_incoming_black_levels', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': 'PC', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_color_space-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_color_space-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , @@ -496,7 +535,7 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, 'original_name': 'Incoming color space', 'platform': 'madvr', @@ -507,25 +546,42 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_color_space-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_color_space-state] StateSnapshot({ 'attributes': ReadOnlyDict({ + 'device_class': 'enum', 'friendly_name': 'madVR Envy Incoming color space', + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), }), 'context': , 'entity_id': 'sensor.madvr_envy_incoming_color_space', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': 'RGB', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_colorimetry-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_colorimetry-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + 'options': list([ + 'SDR', + 'HDR10', + 'HLG 601', + 'PAL', + '709', + 'DCI', + '2020', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , @@ -542,7 +598,7 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, 'original_name': 'Incoming colorimetry', 'platform': 'madvr', @@ -553,20 +609,30 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_colorimetry-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_colorimetry-state] StateSnapshot({ 'attributes': ReadOnlyDict({ + 'device_class': 'enum', 'friendly_name': 'madVR Envy Incoming colorimetry', + 'options': list([ + 'SDR', + 'HDR10', + 'HLG 601', + 'PAL', + '709', + 'DCI', + '2020', + ]), }), 'context': , 'entity_id': 'sensor.madvr_envy_incoming_colorimetry', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '2020', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_frame_rate-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_frame_rate-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -599,7 +665,7 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_frame_rate-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_frame_rate-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'madVR Envy Incoming frame rate', @@ -609,10 +675,10 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '60p', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_resolution-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_resolution-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -645,7 +711,7 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_incoming_resolution-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_resolution-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'madVR Envy Incoming resolution', @@ -655,22 +721,27 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '3840x2160', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_mac_address-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_signal_type-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + 'options': list([ + '2D', + '3D', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , 'disabled_by': None, 'domain': 'sensor', - 'entity_category': , - 'entity_id': 'sensor.madvr_envy_mac_address', + 'entity_category': None, + 'entity_id': 'sensor.madvr_envy_incoming_signal_type', 'has_entity_name': True, 'hidden_by': None, 'icon': None, @@ -680,31 +751,36 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, - 'original_name': 'Mac address', + 'original_name': 'Incoming signal type', 'platform': 'madvr', 'previous_unique_id': None, 'supported_features': 0, - 'translation_key': 'mac_address', - 'unique_id': '00:11:22:33:44:55_mac_address', + 'translation_key': 'incoming_signal_type', + 'unique_id': '00:11:22:33:44:55_incoming_signal_type', 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_mac_address-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_signal_type-state] StateSnapshot({ 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Mac address', + 'device_class': 'enum', + 'friendly_name': 'madVR Envy Incoming signal type', + 'options': list([ + '2D', + '3D', + ]), }), 'context': , - 'entity_id': 'sensor.madvr_envy_mac_address', + 'entity_id': 'sensor.madvr_envy_incoming_signal_type', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '3D', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_mainboard_temperature-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_mainboard_temperature-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -739,7 +815,7 @@ 'unit_of_measurement': , }) # --- -# name: test_sensor_setup[sensor.madvr_envy_mainboard_temperature-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_mainboard_temperature-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'device_class': 'temperature', @@ -752,10 +828,10 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '35.8', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_masking_decimal-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_decimal-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -788,7 +864,7 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_masking_decimal-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_decimal-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'madVR Envy Masking decimal', @@ -798,10 +874,10 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '1.78', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_masking_integer-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_integer-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -834,7 +910,7 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_masking_integer-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_integer-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'madVR Envy Masking integer', @@ -844,10 +920,10 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '178', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_masking_resolution-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_resolution-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), @@ -880,7 +956,7 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_masking_resolution-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_resolution-state] StateSnapshot({ 'attributes': ReadOnlyDict({ 'friendly_name': 'madVR Envy Masking resolution', @@ -890,15 +966,21 @@ 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '3840:2160', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_bit_depth-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_bit_depth-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , @@ -915,7 +997,7 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, 'original_name': 'Outgoing bit depth', 'platform': 'madvr', @@ -926,25 +1008,36 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_bit_depth-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_bit_depth-state] StateSnapshot({ 'attributes': ReadOnlyDict({ + 'device_class': 'enum', 'friendly_name': 'madVR Envy Outgoing bit depth', + 'options': list([ + '8bit', + '10bit', + '12bit', + ]), }), 'context': , 'entity_id': 'sensor.madvr_envy_outgoing_bit_depth', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': '10bit', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_black_levels-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_black_levels-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + 'options': list([ + 'TV', + 'PC', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , @@ -961,7 +1054,7 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, 'original_name': 'Outgoing black levels', 'platform': 'madvr', @@ -972,25 +1065,37 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_black_levels-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_black_levels-state] StateSnapshot({ 'attributes': ReadOnlyDict({ + 'device_class': 'enum', 'friendly_name': 'madVR Envy Outgoing black levels', + 'options': list([ + 'TV', + 'PC', + ]), }), 'context': , 'entity_id': 'sensor.madvr_envy_outgoing_black_levels', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': 'PC', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_color_space-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_color_space-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, + 'capabilities': dict({ + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , @@ -1007,7 +1112,7 @@ 'name': None, 'options': dict({ }), - 'original_device_class': None, + 'original_device_class': , 'original_icon': None, 'original_name': 'Outgoing color space', 'platform': 'madvr', @@ -1018,2012 +1123,42 @@ 'unit_of_measurement': None, }) # --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_color_space-state] +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_color_space-state] StateSnapshot({ 'attributes': ReadOnlyDict({ + 'device_class': 'enum', 'friendly_name': 'madVR Envy Outgoing color space', + 'options': list([ + 'RGB', + '444', + '422', + '420', + ]), }), 'context': , 'entity_id': 'sensor.madvr_envy_outgoing_color_space', 'last_changed': , 'last_reported': , 'last_updated': , - 'state': 'unavailable', + 'state': 'RGB', }) # --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_colorimetry-entry] +# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_colorimetry-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ }), 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_outgoing_colorimetry', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Outgoing colorimetry', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'outgoing_colorimetry', - 'unique_id': '00:11:22:33:44:55_outgoing_colorimetry', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_colorimetry-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Outgoing colorimetry', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_colorimetry', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'unavailable', - }) -# --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_frame_rate-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_outgoing_frame_rate', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Outgoing frame rate', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'outgoing_frame_rate', - 'unique_id': '00:11:22:33:44:55_outgoing_frame_rate', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_frame_rate-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Outgoing frame rate', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_frame_rate', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'unavailable', - }) -# --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_resolution-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_outgoing_resolution', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Outgoing resolution', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'outgoing_res', - 'unique_id': '00:11:22:33:44:55_outgoing_res', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup[sensor.madvr_envy_outgoing_resolution-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Outgoing resolution', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_resolution', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'unavailable', - }) -# --- -# name: test_sensor_setup_and_states - dict({ - 'sensor.madvr_envy_aspect_dec': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect dec', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_dec', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '1.78', - }), - 'sensor.madvr_envy_aspect_int': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect int', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_int', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '178', - }), - 'sensor.madvr_envy_aspect_name': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect name', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_name', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'Widescreen', - }), - 'sensor.madvr_envy_aspect_res': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect res', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_res', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840:2160', - }), - 'sensor.madvr_envy_incoming_aspect_ratio': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming aspect ratio', - 'options': list([ - '16:9', - '4:3', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_aspect_ratio', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '16:9', - }), - 'sensor.madvr_envy_incoming_bit_depth': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming bit depth', - 'options': list([ - '8bit', - '10bit', - '12bit', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_bit_depth', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '10bit', - }), - 'sensor.madvr_envy_incoming_black_levels': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming black levels', - 'options': list([ - 'TV', - 'PC', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_black_levels', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'PC', - }), - 'sensor.madvr_envy_incoming_color_space': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming color space', - 'options': list([ - 'RGB', - '444', - '422', - '420', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_color_space', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'RGB', - }), - 'sensor.madvr_envy_incoming_colorimetry': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming colorimetry', - 'options': list([ - 'SDR', - 'HDR10', - 'HLG 601', - 'PAL', - '709', - 'DCI', - '2020', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_colorimetry', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '2020', - }), - 'sensor.madvr_envy_incoming_frame_rate': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Incoming frame rate', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_frame_rate', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '60p', - }), - 'sensor.madvr_envy_incoming_res': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Incoming res', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_res', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840x2160', - }), - 'sensor.madvr_envy_incoming_signal_type': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming signal type', - 'options': list([ - '2D', - '3D', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_signal_type', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3D', - }), - 'sensor.madvr_envy_masking_dec': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Masking dec', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_masking_dec', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '1.78', - }), - 'sensor.madvr_envy_masking_int': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Masking int', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_masking_int', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '178', - }), - 'sensor.madvr_envy_masking_res': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Masking res', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_masking_res', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840:2160', - }), - 'sensor.madvr_envy_outgoing_bit_depth': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Outgoing bit depth', - 'options': list([ - '8bit', - '10bit', - '12bit', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_bit_depth', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '10bit', - }), - 'sensor.madvr_envy_outgoing_black_levels': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Outgoing black levels', - 'options': list([ - 'TV', - 'PC', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_black_levels', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'PC', - }), - 'sensor.madvr_envy_outgoing_color_space': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Outgoing color space', - 'options': list([ - 'RGB', - '444', - '422', - '420', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_color_space', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'RGB', - }), - 'sensor.madvr_envy_outgoing_colorimetry': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Outgoing colorimetry', - 'options': list([ - 'SDR', - 'HDR10', - 'HLG 601', - 'PAL', - '709', - 'DCI', - '2020', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_colorimetry', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '2020', - }), - 'sensor.madvr_envy_outgoing_frame_rate': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Outgoing frame rate', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_frame_rate', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '60p', - }), - 'sensor.madvr_envy_outgoing_res': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Outgoing res', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_res', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840x2160', - }), - 'sensor.madvr_envy_outgoing_signal_type': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Outgoing signal type', - 'options': list([ - '2D', - '3D', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_signal_type', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '2D', - }), - 'sensor.madvr_envy_temp_cpu': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Temp cpu', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_temp_cpu', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '50.2', - }), - 'sensor.madvr_envy_temp_gpu': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Temp gpu', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_temp_gpu', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '45.5', - }), - 'sensor.madvr_envy_temp_hdmi': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Temp hdmi', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_temp_hdmi', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '40.0', - }), - 'sensor.madvr_envy_temp_mainboard': StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Temp mainboard', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_temp_mainboard', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '35.8', - }), - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_dec-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_dec', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Aspect dec', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'aspect_dec', - 'unique_id': '00:11:22:33:44:55_aspect_dec', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_dec-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect dec', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_dec', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '1.78', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_decimal-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_decimal', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Aspect decimal', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'aspect_dec', - 'unique_id': '00:11:22:33:44:55_aspect_dec', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_decimal-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect decimal', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_decimal', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '1.78', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_int-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_int', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Aspect int', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'aspect_int', - 'unique_id': '00:11:22:33:44:55_aspect_int', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_int-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect int', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_int', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '178', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_integer-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_integer', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Aspect integer', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'aspect_int', - 'unique_id': '00:11:22:33:44:55_aspect_int', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_integer-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect integer', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_integer', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '178', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_name-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_name', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Aspect name', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'aspect_name', - 'unique_id': '00:11:22:33:44:55_aspect_name', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_name-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect name', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_name', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'Widescreen', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_res-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_res', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Aspect res', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'aspect_res', - 'unique_id': '00:11:22:33:44:55_aspect_res', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_res-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect res', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_res', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840:2160', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_resolution-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_aspect_resolution', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Aspect resolution', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'aspect_res', - 'unique_id': '00:11:22:33:44:55_aspect_res', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_aspect_resolution-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Aspect resolution', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_aspect_resolution', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840:2160', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_cpu_temperature-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_cpu_temperature', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'CPU temperature', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'temp_cpu', - 'unique_id': '00:11:22:33:44:55_temp_cpu', - 'unit_of_measurement': , - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_cpu_temperature-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy CPU temperature', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_cpu_temperature', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '50.2', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_gpu_temperature-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_gpu_temperature', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'GPU temperature', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'temp_gpu', - 'unique_id': '00:11:22:33:44:55_temp_gpu', - 'unit_of_measurement': , - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_gpu_temperature-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy GPU temperature', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_gpu_temperature', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '45.5', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_hdmi_temperature-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_hdmi_temperature', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'HDMI temperature', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'temp_hdmi', - 'unique_id': '00:11:22:33:44:55_temp_hdmi', - 'unit_of_measurement': , - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_hdmi_temperature-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy HDMI temperature', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_hdmi_temperature', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '40.0', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_aspect_ratio-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - '16:9', - '4:3', - ]), - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_incoming_aspect_ratio', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Incoming aspect ratio', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'incoming_aspect_ratio', - 'unique_id': '00:11:22:33:44:55_incoming_aspect_ratio', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_aspect_ratio-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming aspect ratio', - 'options': list([ - '16:9', - '4:3', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_aspect_ratio', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '16:9', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_bit_depth-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - '8bit', - '10bit', - '12bit', - ]), - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_incoming_bit_depth', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Incoming bit depth', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'incoming_bit_depth', - 'unique_id': '00:11:22:33:44:55_incoming_bit_depth', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_bit_depth-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming bit depth', - 'options': list([ - '8bit', - '10bit', - '12bit', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_bit_depth', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '10bit', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_black_levels-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - 'TV', - 'PC', - ]), - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_incoming_black_levels', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Incoming black levels', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'incoming_black_levels', - 'unique_id': '00:11:22:33:44:55_incoming_black_levels', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_black_levels-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming black levels', - 'options': list([ - 'TV', - 'PC', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_black_levels', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'PC', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_color_space-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - 'RGB', - '444', - '422', - '420', - ]), - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_incoming_color_space', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Incoming color space', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'incoming_color_space', - 'unique_id': '00:11:22:33:44:55_incoming_color_space', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_color_space-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming color space', - 'options': list([ - 'RGB', - '444', - '422', - '420', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_color_space', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'RGB', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_colorimetry-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - 'SDR', - 'HDR10', - 'HLG 601', - 'PAL', - '709', - 'DCI', - '2020', - ]), - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_incoming_colorimetry', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Incoming colorimetry', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'incoming_colorimetry', - 'unique_id': '00:11:22:33:44:55_incoming_colorimetry', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_colorimetry-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming colorimetry', - 'options': list([ - 'SDR', - 'HDR10', - 'HLG 601', - 'PAL', - '709', - 'DCI', - '2020', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_colorimetry', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '2020', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_frame_rate-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_incoming_frame_rate', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Incoming frame rate', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'incoming_frame_rate', - 'unique_id': '00:11:22:33:44:55_incoming_frame_rate', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_frame_rate-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Incoming frame rate', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_frame_rate', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '60p', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_res-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_incoming_res', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Incoming res', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'incoming_res', - 'unique_id': '00:11:22:33:44:55_incoming_res', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_res-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Incoming res', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_res', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840x2160', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_resolution-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_incoming_resolution', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Incoming resolution', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'incoming_res', - 'unique_id': '00:11:22:33:44:55_incoming_res', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_resolution-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Incoming resolution', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_resolution', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840x2160', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_signal_type-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - '2D', - '3D', - ]), - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_incoming_signal_type', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Incoming signal type', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'incoming_signal_type', - 'unique_id': '00:11:22:33:44:55_incoming_signal_type', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_incoming_signal_type-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Incoming signal type', - 'options': list([ - '2D', - '3D', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_incoming_signal_type', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3D', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_mainboard_temperature-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_mainboard_temperature', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Mainboard temperature', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'temp_mainboard', - 'unique_id': '00:11:22:33:44:55_temp_mainboard', - 'unit_of_measurement': , - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_mainboard_temperature-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Mainboard temperature', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_mainboard_temperature', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '35.8', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_dec-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_masking_dec', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Masking dec', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'masking_dec', - 'unique_id': '00:11:22:33:44:55_masking_dec', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_dec-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Masking dec', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_masking_dec', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '1.78', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_decimal-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_masking_decimal', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Masking decimal', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'masking_dec', - 'unique_id': '00:11:22:33:44:55_masking_dec', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_decimal-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Masking decimal', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_masking_decimal', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '1.78', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_int-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_masking_int', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Masking int', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'masking_int', - 'unique_id': '00:11:22:33:44:55_masking_int', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_int-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Masking int', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_masking_int', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '178', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_integer-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_masking_integer', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Masking integer', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'masking_int', - 'unique_id': '00:11:22:33:44:55_masking_int', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_integer-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Masking integer', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_masking_integer', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '178', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_res-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_masking_res', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Masking res', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'masking_res', - 'unique_id': '00:11:22:33:44:55_masking_res', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_res-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Masking res', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_masking_res', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840:2160', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_resolution-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_masking_resolution', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Masking resolution', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'masking_res', - 'unique_id': '00:11:22:33:44:55_masking_res', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_masking_resolution-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Masking resolution', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_masking_resolution', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840:2160', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_bit_depth-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - '8bit', - '10bit', - '12bit', - ]), - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_outgoing_bit_depth', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Outgoing bit depth', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'outgoing_bit_depth', - 'unique_id': '00:11:22:33:44:55_outgoing_bit_depth', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_bit_depth-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Outgoing bit depth', - 'options': list([ - '8bit', - '10bit', - '12bit', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_bit_depth', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '10bit', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_black_levels-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - 'TV', - 'PC', - ]), - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_outgoing_black_levels', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Outgoing black levels', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'outgoing_black_levels', - 'unique_id': '00:11:22:33:44:55_outgoing_black_levels', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_black_levels-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Outgoing black levels', - 'options': list([ - 'TV', - 'PC', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_black_levels', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'PC', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_color_space-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - 'RGB', - '444', - '422', - '420', - ]), - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_outgoing_color_space', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Outgoing color space', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'outgoing_color_space', - 'unique_id': '00:11:22:33:44:55_outgoing_color_space', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_color_space-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'enum', - 'friendly_name': 'madVR Envy Outgoing color space', - 'options': list([ - 'RGB', - '444', - '422', - '420', - ]), - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_color_space', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': 'RGB', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_colorimetry-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'options': list([ - 'SDR', - 'HDR10', - 'HLG 601', - 'PAL', - '709', - 'DCI', - '2020', - ]), - }), + 'capabilities': dict({ + 'options': list([ + 'SDR', + 'HDR10', + 'HLG 601', + 'PAL', + '709', + 'DCI', + '2020', + ]), + }), 'config_entry_id': , 'device_class': None, 'device_id': , @@ -3120,52 +1255,6 @@ 'state': '60p', }) # --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_res-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': None, - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_outgoing_res', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': None, - 'original_icon': None, - 'original_name': 'Outgoing res', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'outgoing_res', - 'unique_id': '00:11:22:33:44:55_outgoing_res', - 'unit_of_measurement': None, - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_res-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'friendly_name': 'madVR Envy Outgoing res', - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_outgoing_res', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '3840x2160', - }) -# --- # name: test_sensor_setup_and_states[sensor.madvr_envy_outgoing_resolution-entry] EntityRegistryEntrySnapshot({ 'aliases': set({ @@ -3268,207 +1357,3 @@ 'state': '2D', }) # --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_cpu-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_temp_cpu', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Temp cpu', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'temp_cpu', - 'unique_id': '00:11:22:33:44:55_temp_cpu', - 'unit_of_measurement': , - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_cpu-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Temp cpu', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_temp_cpu', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '50.2', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_gpu-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_temp_gpu', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Temp gpu', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'temp_gpu', - 'unique_id': '00:11:22:33:44:55_temp_gpu', - 'unit_of_measurement': , - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_gpu-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Temp gpu', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_temp_gpu', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '45.5', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_hdmi-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_temp_hdmi', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Temp hdmi', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'temp_hdmi', - 'unique_id': '00:11:22:33:44:55_temp_hdmi', - 'unit_of_measurement': , - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_hdmi-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Temp hdmi', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_temp_hdmi', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '40.0', - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_mainboard-entry] - EntityRegistryEntrySnapshot({ - 'aliases': set({ - }), - 'area_id': None, - 'capabilities': dict({ - 'state_class': , - }), - 'config_entry_id': , - 'device_class': None, - 'device_id': , - 'disabled_by': None, - 'domain': 'sensor', - 'entity_category': None, - 'entity_id': 'sensor.madvr_envy_temp_mainboard', - 'has_entity_name': True, - 'hidden_by': None, - 'icon': None, - 'id': , - 'labels': set({ - }), - 'name': None, - 'options': dict({ - }), - 'original_device_class': , - 'original_icon': None, - 'original_name': 'Temp mainboard', - 'platform': 'madvr', - 'previous_unique_id': None, - 'supported_features': 0, - 'translation_key': 'temp_mainboard', - 'unique_id': '00:11:22:33:44:55_temp_mainboard', - 'unit_of_measurement': , - }) -# --- -# name: test_sensor_setup_and_states[sensor.madvr_envy_temp_mainboard-state] - StateSnapshot({ - 'attributes': ReadOnlyDict({ - 'device_class': 'temperature', - 'friendly_name': 'madVR Envy Temp mainboard', - 'state_class': , - 'unit_of_measurement': , - }), - 'context': , - 'entity_id': 'sensor.madvr_envy_temp_mainboard', - 'last_changed': , - 'last_reported': , - 'last_updated': , - 'state': '35.8', - }) -# --- From 66fc43dadfd9ed0852b98efd4af23971ae7760a7 Mon Sep 17 00:00:00 2001 From: iloveicedgreentea <31193909+iloveicedgreentea@users.noreply.github.com> Date: Sat, 20 Jul 2024 22:54:12 +0000 Subject: [PATCH 17/17] fix: revert config_flow change --- homeassistant/components/madvr/config_flow.py | 85 +++++++++---------- 1 file changed, 40 insertions(+), 45 deletions(-) diff --git a/homeassistant/components/madvr/config_flow.py b/homeassistant/components/madvr/config_flow.py index bf16b74d6169e5..cf43e03a68b0a2 100644 --- a/homeassistant/components/madvr/config_flow.py +++ b/homeassistant/components/madvr/config_flow.py @@ -10,14 +10,12 @@ from homeassistant.config_entries import ConfigFlow, ConfigFlowResult from homeassistant.const import CONF_HOST, CONF_PORT -from homeassistant.core import HomeAssistant from .const import DEFAULT_NAME, DEFAULT_PORT, DOMAIN from .errors import CannotConnect _LOGGER = logging.getLogger(__name__) - STEP_USER_DATA_SCHEMA = vol.Schema( { vol.Required( @@ -33,48 +31,6 @@ RETRY_INTERVAL = 1 -async def test_connection(hass: HomeAssistant, host: str, port: int) -> str: - """Test if we can connect to the device and grab the mac.""" - madvr_client = Madvr(host=host, port=port, loop=hass.loop) - _LOGGER.debug("Testing connection to madVR at %s:%s", host, port) - # try to connect - try: - await asyncio.wait_for(madvr_client.open_connection(), timeout=15) - # connection can raise HeartBeatError if the device is not available or connection does not work - except (TimeoutError, aiohttp.ClientError, OSError, HeartBeatError) as err: - _LOGGER.error("Error connecting to madVR: %s", err) - raise CannotConnect from err - - # check if we are connected - if not madvr_client.connected: - raise CannotConnect("Connection failed") - - # background tasks needed to capture realtime info - await madvr_client.async_add_tasks() - - # wait for client to capture device info - retry_time = 15 - while not madvr_client.mac_address and retry_time > 0: - await asyncio.sleep(RETRY_INTERVAL) - retry_time -= 1 - - mac_address = madvr_client.mac_address - if mac_address: - _LOGGER.debug("Connected to madVR with MAC: %s", mac_address) - # close this connection because this client object will not be reused - await close_test_connection(madvr_client) - _LOGGER.debug("Connection test successful") - return mac_address - - -async def close_test_connection(madvr_client: Madvr) -> None: - """Close the test connection.""" - _LOGGER.debug("Closing test connection") - madvr_client.stop() - await madvr_client.async_cancel_tasks() - await madvr_client.close_connection() - - class MadVRConfigFlow(ConfigFlow, domain=DOMAIN): """Handle a config flow for the integration.""" @@ -92,7 +48,7 @@ async def async_step_user( try: # ensure we can connect and get the mac address from device - mac = await test_connection(self.hass, host, port) + mac = await self._test_connection(host, port) except CannotConnect: _LOGGER.error("CannotConnect error caught") errors["base"] = "cannot_connect" @@ -119,3 +75,42 @@ async def async_step_user( ), errors=errors, ) + + async def _test_connection(self, host: str, port: int) -> str: + """Test if we can connect to the device and grab the mac.""" + madvr_client = Madvr(host=host, port=port, loop=self.hass.loop) + _LOGGER.debug("Testing connection to madVR at %s:%s", host, port) + # try to connect + try: + await asyncio.wait_for(madvr_client.open_connection(), timeout=15) + # connection can raise HeartBeatError if the device is not available or connection does not work + except (TimeoutError, aiohttp.ClientError, OSError, HeartBeatError) as err: + _LOGGER.error("Error connecting to madVR: %s", err) + raise CannotConnect from err + + # check if we are connected + if not madvr_client.connected: + raise CannotConnect("Connection failed") + + # background tasks needed to capture realtime info + await madvr_client.async_add_tasks() + + # wait for client to capture device info + retry_time = 15 + while not madvr_client.mac_address and retry_time > 0: + await asyncio.sleep(RETRY_INTERVAL) + retry_time -= 1 + + mac_address = madvr_client.mac_address + if mac_address: + _LOGGER.debug("Connected to madVR with MAC: %s", mac_address) + # close this connection because this client object will not be reused + await self._close_test_connection(madvr_client) + _LOGGER.debug("Connection test successful") + return mac_address + + async def _close_test_connection(self, madvr_client: Madvr) -> None: + """Close the test connection.""" + madvr_client.stop() + await madvr_client.async_cancel_tasks() + await madvr_client.close_connection()