diff --git a/homeassistant/components/landisgyr_heat_meter/sensor.py b/homeassistant/components/landisgyr_heat_meter/sensor.py index 947ab2b2a8c..9669648b4c5 100644 --- a/homeassistant/components/landisgyr_heat_meter/sensor.py +++ b/homeassistant/components/landisgyr_heat_meter/sensor.py @@ -61,7 +61,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL, - value_fn=lambda res: getattr(res, "heat_usage_mwh", None), + value_fn=lambda res: res.heat_usage_mwh, ), HeatMeterSensorEntityDescription( key="volume_usage_m3", @@ -70,7 +70,7 @@ HEAT_METER_SENSOR_TYPES = ( device_class=SensorDeviceClass.VOLUME, native_unit_of_measurement=UnitOfVolume.CUBIC_METERS, state_class=SensorStateClass.TOTAL, - value_fn=lambda res: getattr(res, "volume_usage_m3", None), + value_fn=lambda res: res.volume_usage_m3, ), HeatMeterSensorEntityDescription( key="heat_usage_gj", @@ -79,7 +79,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfEnergy.GIGA_JOULE, device_class=SensorDeviceClass.ENERGY, state_class=SensorStateClass.TOTAL, - value_fn=lambda res: getattr(res, "heat_usage_gj", None), + value_fn=lambda res: res.heat_usage_gj, ), HeatMeterSensorEntityDescription( key="heat_previous_year_mwh", @@ -88,7 +88,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfEnergy.MEGA_WATT_HOUR, device_class=SensorDeviceClass.ENERGY, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "heat_previous_year_mwh", None), + value_fn=lambda res: res.heat_previous_year_mwh, ), HeatMeterSensorEntityDescription( key="heat_previous_year_gj", @@ -97,7 +97,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfEnergy.GIGA_JOULE, device_class=SensorDeviceClass.ENERGY, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "heat_previous_year_gj", None), + value_fn=lambda res: res.heat_previous_year_gj, ), HeatMeterSensorEntityDescription( key="volume_previous_year_m3", @@ -106,28 +106,28 @@ HEAT_METER_SENSOR_TYPES = ( device_class=SensorDeviceClass.VOLUME, native_unit_of_measurement=UnitOfVolume.CUBIC_METERS, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "volume_previous_year_m3", None), + value_fn=lambda res: res.volume_previous_year_m3, ), HeatMeterSensorEntityDescription( key="ownership_number", name="Ownership number", icon="mdi:identifier", entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "ownership_number", None), + value_fn=lambda res: res.ownership_number, ), HeatMeterSensorEntityDescription( key="error_number", name="Error number", icon="mdi:home-alert", entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "error_number", None), + value_fn=lambda res: res.error_number, ), HeatMeterSensorEntityDescription( key="device_number", name="Device number", icon="mdi:identifier", entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "device_number", None), + value_fn=lambda res: res.device_number, ), HeatMeterSensorEntityDescription( key="measurement_period_minutes", @@ -135,7 +135,7 @@ HEAT_METER_SENSOR_TYPES = ( device_class=SensorDeviceClass.DURATION, native_unit_of_measurement=UnitOfTime.MINUTES, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "measurement_period_minutes", None), + value_fn=lambda res: res.measurement_period_minutes, ), HeatMeterSensorEntityDescription( key="power_max_kw", @@ -143,7 +143,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfPower.KILO_WATT, device_class=SensorDeviceClass.POWER, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "power_max_kw", None), + value_fn=lambda res: res.power_max_kw, ), HeatMeterSensorEntityDescription( key="power_max_previous_year_kw", @@ -151,7 +151,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfPower.KILO_WATT, device_class=SensorDeviceClass.POWER, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "power_max_previous_year_kw", None), + value_fn=lambda res: res.power_max_previous_year_kw, ), HeatMeterSensorEntityDescription( key="flowrate_max_m3ph", @@ -159,7 +159,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR, icon="mdi:water-outline", entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "flowrate_max_m3ph", None), + value_fn=lambda res: res.flowrate_max_m3ph, ), HeatMeterSensorEntityDescription( key="flowrate_max_previous_year_m3ph", @@ -167,7 +167,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR, icon="mdi:water-outline", entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "flowrate_max_previous_year_m3ph", None), + value_fn=lambda res: res.flowrate_max_previous_year_m3ph, ), HeatMeterSensorEntityDescription( key="return_temperature_max_c", @@ -175,7 +175,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "return_temperature_max_c", None), + value_fn=lambda res: res.return_temperature_max_c, ), HeatMeterSensorEntityDescription( key="return_temperature_max_previous_year_c", @@ -183,9 +183,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr( - res, "return_temperature_max_previous_year_c", None - ), + value_fn=lambda res: res.return_temperature_max_previous_year_c, ), HeatMeterSensorEntityDescription( key="flow_temperature_max_c", @@ -193,7 +191,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "flow_temperature_max_c", None), + value_fn=lambda res: res.flow_temperature_max_c, ), HeatMeterSensorEntityDescription( key="flow_temperature_max_previous_year_c", @@ -201,7 +199,7 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfTemperature.CELSIUS, device_class=SensorDeviceClass.TEMPERATURE, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "flow_temperature_max_previous_year_c", None), + value_fn=lambda res: res.flow_temperature_max_previous_year_c, ), HeatMeterSensorEntityDescription( key="operating_hours", @@ -209,7 +207,7 @@ HEAT_METER_SENSOR_TYPES = ( device_class=SensorDeviceClass.DURATION, native_unit_of_measurement=UnitOfTime.HOURS, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "operating_hours", None), + value_fn=lambda res: res.operating_hours, ), HeatMeterSensorEntityDescription( key="flow_hours", @@ -217,7 +215,7 @@ HEAT_METER_SENSOR_TYPES = ( device_class=SensorDeviceClass.DURATION, native_unit_of_measurement=UnitOfTime.HOURS, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "flow_hours", None), + value_fn=lambda res: res.flow_hours, ), HeatMeterSensorEntityDescription( key="fault_hours", @@ -225,7 +223,7 @@ HEAT_METER_SENSOR_TYPES = ( device_class=SensorDeviceClass.DURATION, native_unit_of_measurement=UnitOfTime.HOURS, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "fault_hours", None), + value_fn=lambda res: res.fault_hours, ), HeatMeterSensorEntityDescription( key="fault_hours_previous_year", @@ -233,21 +231,21 @@ HEAT_METER_SENSOR_TYPES = ( device_class=SensorDeviceClass.DURATION, native_unit_of_measurement=UnitOfTime.HOURS, entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "fault_hours_previous_year", None), + value_fn=lambda res: res.fault_hours_previous_year, ), HeatMeterSensorEntityDescription( key="yearly_set_day", name="Yearly set day", icon="mdi:clock-outline", entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "yearly_set_day", None), + value_fn=lambda res: res.yearly_set_day, ), HeatMeterSensorEntityDescription( key="monthly_set_day", name="Monthly set day", icon="mdi:clock-outline", entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "monthly_set_day", None), + value_fn=lambda res: res.monthly_set_day, ), HeatMeterSensorEntityDescription( key="meter_date_time", @@ -265,13 +263,13 @@ HEAT_METER_SENSOR_TYPES = ( native_unit_of_measurement=UnitOfVolumeFlowRate.CUBIC_METERS_PER_HOUR, icon="mdi:water-outline", entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "measuring_range_m3ph", None), + value_fn=lambda res: res.measuring_range_m3ph, ), HeatMeterSensorEntityDescription( key="settings_and_firmware", name="Settings and firmware", entity_category=EntityCategory.DIAGNOSTIC, - value_fn=lambda res: getattr(res, "settings_and_firmware", None), + value_fn=lambda res: res.settings_and_firmware, ), ) diff --git a/tests/components/landisgyr_heat_meter/snapshots/test_sensor.ambr b/tests/components/landisgyr_heat_meter/snapshots/test_sensor.ambr index d3ab9d5ade0..5d8b703cdcd 100644 --- a/tests/components/landisgyr_heat_meter/snapshots/test_sensor.ambr +++ b/tests/components/landisgyr_heat_meter/snapshots/test_sensor.ambr @@ -53,7 +53,7 @@ 'entity_id': 'sensor.heat_meter_volume_usage_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '450.0', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -64,7 +64,7 @@ 'entity_id': 'sensor.heat_meter_ownership_number', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '123a', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -75,7 +75,7 @@ 'entity_id': 'sensor.heat_meter_error_number', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '0', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -86,7 +86,7 @@ 'entity_id': 'sensor.heat_meter_device_number', 'last_changed': , 'last_updated': , - 'state': 'devicenr_789', + 'state': 'abc1', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -98,7 +98,7 @@ 'entity_id': 'sensor.heat_meter_measurement_period_minutes', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '60', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -110,7 +110,7 @@ 'entity_id': 'sensor.heat_meter_power_max', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '22.1', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -122,7 +122,7 @@ 'entity_id': 'sensor.heat_meter_power_max_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '22.4', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -134,7 +134,7 @@ 'entity_id': 'sensor.heat_meter_flowrate_max', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '0.744', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -146,7 +146,7 @@ 'entity_id': 'sensor.heat_meter_flowrate_max_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '0.743', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -158,7 +158,7 @@ 'entity_id': 'sensor.heat_meter_return_temperature_max', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '96.1', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -170,7 +170,7 @@ 'entity_id': 'sensor.heat_meter_return_temperature_max_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '96.2', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -182,7 +182,7 @@ 'entity_id': 'sensor.heat_meter_flow_temperature_max', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '98.5', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -194,7 +194,7 @@ 'entity_id': 'sensor.heat_meter_flow_temperature_max_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '98.4', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -206,7 +206,7 @@ 'entity_id': 'sensor.heat_meter_operating_hours', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '115575', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -218,7 +218,7 @@ 'entity_id': 'sensor.heat_meter_flow_hours', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '30242', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -230,7 +230,7 @@ 'entity_id': 'sensor.heat_meter_fault_hours', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '5', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -242,7 +242,7 @@ 'entity_id': 'sensor.heat_meter_fault_hours_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '5', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -253,7 +253,7 @@ 'entity_id': 'sensor.heat_meter_yearly_set_day', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '01-01', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -264,7 +264,7 @@ 'entity_id': 'sensor.heat_meter_monthly_set_day', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '01', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -288,7 +288,7 @@ 'entity_id': 'sensor.heat_meter_measuring_range', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '1.5', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -298,7 +298,7 @@ 'entity_id': 'sensor.heat_meter_settings_and_firmware', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '0 1 0 0000 CECV CECV 1 5.16 5.16 F 101008 040404 08 0', }), ]) # --- @@ -356,7 +356,7 @@ 'entity_id': 'sensor.heat_meter_volume_usage_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '450.0', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -367,7 +367,7 @@ 'entity_id': 'sensor.heat_meter_ownership_number', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '123a', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -378,7 +378,7 @@ 'entity_id': 'sensor.heat_meter_error_number', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '0', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -389,7 +389,7 @@ 'entity_id': 'sensor.heat_meter_device_number', 'last_changed': , 'last_updated': , - 'state': 'devicenr_789', + 'state': 'abc1', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -401,7 +401,7 @@ 'entity_id': 'sensor.heat_meter_measurement_period_minutes', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '60', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -413,7 +413,7 @@ 'entity_id': 'sensor.heat_meter_power_max', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '22.1', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -425,7 +425,7 @@ 'entity_id': 'sensor.heat_meter_power_max_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '22.4', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -437,7 +437,7 @@ 'entity_id': 'sensor.heat_meter_flowrate_max', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '0.744', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -449,7 +449,7 @@ 'entity_id': 'sensor.heat_meter_flowrate_max_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '0.743', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -461,7 +461,7 @@ 'entity_id': 'sensor.heat_meter_return_temperature_max', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '96.1', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -473,7 +473,7 @@ 'entity_id': 'sensor.heat_meter_return_temperature_max_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '96.2', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -485,7 +485,7 @@ 'entity_id': 'sensor.heat_meter_flow_temperature_max', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '98.5', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -497,7 +497,7 @@ 'entity_id': 'sensor.heat_meter_flow_temperature_max_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '98.4', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -509,7 +509,7 @@ 'entity_id': 'sensor.heat_meter_operating_hours', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '115575', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -521,7 +521,7 @@ 'entity_id': 'sensor.heat_meter_flow_hours', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '30242', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -533,7 +533,7 @@ 'entity_id': 'sensor.heat_meter_fault_hours', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '5', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -545,7 +545,7 @@ 'entity_id': 'sensor.heat_meter_fault_hours_previous_year', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '5', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -556,7 +556,7 @@ 'entity_id': 'sensor.heat_meter_yearly_set_day', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '01-01', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -567,7 +567,7 @@ 'entity_id': 'sensor.heat_meter_monthly_set_day', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '01', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -591,7 +591,7 @@ 'entity_id': 'sensor.heat_meter_measuring_range', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '1.5', }), StateSnapshot({ 'attributes': ReadOnlyDict({ @@ -601,7 +601,7 @@ 'entity_id': 'sensor.heat_meter_settings_and_firmware', 'last_changed': , 'last_updated': , - 'state': 'unknown', + 'state': '0 1 0 0000 CECV CECV 1 5.16 5.16 F 101008 040404 08 0', }), ]) # --- diff --git a/tests/components/landisgyr_heat_meter/test_sensor.py b/tests/components/landisgyr_heat_meter/test_sensor.py index 9f4ad241245..e28ebe695b3 100644 --- a/tests/components/landisgyr_heat_meter/test_sensor.py +++ b/tests/components/landisgyr_heat_meter/test_sensor.py @@ -1,11 +1,11 @@ """The tests for the Landis+Gyr Heat Meter sensor platform.""" -from dataclasses import dataclass import datetime from unittest.mock import patch import pytest import serial from syrupy import SnapshotAssertion +from ultraheat_api.response import HeatMeterResponse from homeassistant.components.homeassistant import DOMAIN as HA_DOMAIN from homeassistant.components.landisgyr_heat_meter.const import DOMAIN, POLLING_INTERVAL @@ -21,45 +21,76 @@ API_HEAT_METER_SERVICE = ( "homeassistant.components.landisgyr_heat_meter.ultraheat_api.HeatMeterService" ) +MOCK_RESPONSE_GJ = { + "model": "abc", + "heat_usage_gj": 123.0, + "heat_usage_mwh": None, + "volume_usage_m3": 456.0, + "ownership_number": "123a", + "volume_previous_year_m3": 450.0, + "heat_previous_year_gj": 111.0, + "heat_previous_year_mwh": None, + "error_number": "0", + "device_number": "abc1", + "measurement_period_minutes": 60, + "power_max_kw": 22.1, + "power_max_previous_year_kw": 22.4, + "flowrate_max_m3ph": 0.744, + "flow_temperature_max_c": 98.5, + "flowrate_max_previous_year_m3ph": 0.743, + "return_temperature_max_c": 96.1, + "flow_temperature_max_previous_year_c": 98.4, + "return_temperature_max_previous_year_c": 96.2, + "operating_hours": 115575, + "fault_hours": 5, + "fault_hours_previous_year": 5, + "yearly_set_day": "01-01", + "monthly_set_day": "01", + "meter_date_time": dt_util.as_utc(datetime.datetime(2022, 5, 19, 19, 41, 17)), + "measuring_range_m3ph": 1.5, + "settings_and_firmware": "0 1 0 0000 CECV CECV 1 5.16 5.16 F 101008 040404 08 0", + "flow_hours": 30242, + "raw_response": "6.8(0328.872*GJ)6.26(03329.68*m3)9.21(66153690)", +} -@dataclass -class MockHeatMeterResponse: - """Mock for HeatMeterResponse.""" - - heat_usage_gj: float | None - heat_usage_mwh: float | None - volume_usage_m3: float - heat_previous_year_gj: float | None - heat_previous_year_mwh: float | None - device_number: str - meter_date_time: datetime.datetime +MOCK_RESPONSE_MWH = { + "model": "abc", + "heat_usage_gj": None, + "heat_usage_mwh": 123.0, + "volume_usage_m3": 456.0, + "ownership_number": "123a", + "volume_previous_year_m3": 450.0, + "heat_previous_year_gj": None, + "heat_previous_year_mwh": 111.0, + "error_number": "0", + "device_number": "abc1", + "measurement_period_minutes": 60, + "power_max_kw": 22.1, + "power_max_previous_year_kw": 22.4, + "flowrate_max_m3ph": 0.744, + "flow_temperature_max_c": 98.5, + "flowrate_max_previous_year_m3ph": 0.743, + "return_temperature_max_c": 96.1, + "flow_temperature_max_previous_year_c": 98.4, + "return_temperature_max_previous_year_c": 96.2, + "operating_hours": 115575, + "fault_hours": 5, + "fault_hours_previous_year": 5, + "yearly_set_day": "01-01", + "monthly_set_day": "01", + "meter_date_time": dt_util.as_utc(datetime.datetime(2022, 5, 19, 19, 41, 17)), + "measuring_range_m3ph": 1.5, + "settings_and_firmware": "0 1 0 0000 CECV CECV 1 5.16 5.16 F 101008 040404 08 0", + "flow_hours": 30242, + "raw_response": "6.8(0328.872*MWh)6.26(03329.68*m3)9.21(66153690)", +} @pytest.mark.parametrize( "mock_heat_meter_response", [ - { - "heat_usage_gj": 123.0, - "heat_usage_mwh": None, - "volume_usage_m3": 456.0, - "heat_previous_year_gj": 111.0, - "heat_previous_year_mwh": None, - "device_number": "devicenr_789", - "meter_date_time": dt_util.as_utc( - datetime.datetime(2022, 5, 19, 19, 41, 17) - ), - }, - { - "heat_usage_gj": None, - "heat_usage_mwh": 123.0, - "volume_usage_m3": 456.0, - "heat_previous_year_gj": None, - "heat_previous_year_mwh": 111.0, - "device_number": "devicenr_789", - "meter_date_time": dt_util.as_utc( - datetime.datetime(2022, 5, 19, 19, 41, 17) - ), - }, + MOCK_RESPONSE_GJ, + MOCK_RESPONSE_MWH, ], ) @patch(API_HEAT_METER_SERVICE) @@ -79,7 +110,7 @@ async def test_create_sensors( mock_entry = MockConfigEntry(domain=DOMAIN, unique_id=DOMAIN, data=entry_data) mock_entry.add_to_hass(hass) - mock_heat_meter_response = MockHeatMeterResponse(**mock_heat_meter_response) + mock_heat_meter_response = HeatMeterResponse(**mock_heat_meter_response) mock_heat_meter().read.return_value = mock_heat_meter_response @@ -102,15 +133,7 @@ async def test_exception_on_polling(mock_heat_meter, hass: HomeAssistant) -> Non mock_entry.add_to_hass(hass) # First setup normally - mock_heat_meter_response = MockHeatMeterResponse( - heat_usage_gj=123.0, - heat_usage_mwh=None, - volume_usage_m3=456.0, - heat_previous_year_gj=111.0, - heat_previous_year_mwh=None, - device_number="devicenr_789", - meter_date_time=dt_util.as_utc(datetime.datetime(2022, 5, 19, 19, 41, 17)), - ) + mock_heat_meter_response = HeatMeterResponse(**MOCK_RESPONSE_GJ) mock_heat_meter().read.return_value = mock_heat_meter_response @@ -130,16 +153,9 @@ async def test_exception_on_polling(mock_heat_meter, hass: HomeAssistant) -> Non state = hass.states.get("sensor.heat_meter_heat_usage_gj") assert state.state == STATE_UNAVAILABLE - # Now 'enable' and see if next poll succeeds - mock_heat_meter_response = MockHeatMeterResponse( - heat_usage_gj=124.0, - heat_usage_mwh=None, - volume_usage_m3=457.0, - heat_previous_year_gj=112.0, - heat_previous_year_mwh=None, - device_number="devicenr_789", - meter_date_time=dt_util.as_utc(datetime.datetime(2022, 5, 19, 20, 41, 17)), - ) + # # Now 'enable' and see if next poll succeeds + mock_heat_meter_response = HeatMeterResponse(**MOCK_RESPONSE_GJ) + mock_heat_meter_response.heat_usage_gj += 1 mock_heat_meter().read.return_value = mock_heat_meter_response mock_heat_meter().read.side_effect = None