Remove getattr for Landis+Gyr Heat Meter (#90637)
* Remove getattr and update tests * Apply suggestion for test from PR review * Make constants capitalized
This commit is contained in:
parent
e748f0c623
commit
03caf63ec2
3 changed files with 138 additions and 124 deletions
|
@ -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,
|
||||
),
|
||||
)
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
'entity_id': 'sensor.heat_meter_volume_usage_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '450.0',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -64,7 +64,7 @@
|
|||
'entity_id': 'sensor.heat_meter_ownership_number',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '123a',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -75,7 +75,7 @@
|
|||
'entity_id': 'sensor.heat_meter_error_number',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '0',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -86,7 +86,7 @@
|
|||
'entity_id': 'sensor.heat_meter_device_number',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'devicenr_789',
|
||||
'state': 'abc1',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -98,7 +98,7 @@
|
|||
'entity_id': 'sensor.heat_meter_measurement_period_minutes',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '60',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -110,7 +110,7 @@
|
|||
'entity_id': 'sensor.heat_meter_power_max',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '22.1',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -122,7 +122,7 @@
|
|||
'entity_id': 'sensor.heat_meter_power_max_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '22.4',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -134,7 +134,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flowrate_max',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '0.744',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -146,7 +146,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flowrate_max_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '0.743',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -158,7 +158,7 @@
|
|||
'entity_id': 'sensor.heat_meter_return_temperature_max',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '96.1',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -170,7 +170,7 @@
|
|||
'entity_id': 'sensor.heat_meter_return_temperature_max_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '96.2',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -182,7 +182,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flow_temperature_max',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '98.5',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -194,7 +194,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flow_temperature_max_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '98.4',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -206,7 +206,7 @@
|
|||
'entity_id': 'sensor.heat_meter_operating_hours',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '115575',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -218,7 +218,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flow_hours',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '30242',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -230,7 +230,7 @@
|
|||
'entity_id': 'sensor.heat_meter_fault_hours',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '5',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -242,7 +242,7 @@
|
|||
'entity_id': 'sensor.heat_meter_fault_hours_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '5',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -253,7 +253,7 @@
|
|||
'entity_id': 'sensor.heat_meter_yearly_set_day',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '01-01',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -264,7 +264,7 @@
|
|||
'entity_id': 'sensor.heat_meter_monthly_set_day',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '01',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -288,7 +288,7 @@
|
|||
'entity_id': 'sensor.heat_meter_measuring_range',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '1.5',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -298,7 +298,7 @@
|
|||
'entity_id': 'sensor.heat_meter_settings_and_firmware',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'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': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '450.0',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -367,7 +367,7 @@
|
|||
'entity_id': 'sensor.heat_meter_ownership_number',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '123a',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -378,7 +378,7 @@
|
|||
'entity_id': 'sensor.heat_meter_error_number',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '0',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -389,7 +389,7 @@
|
|||
'entity_id': 'sensor.heat_meter_device_number',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'devicenr_789',
|
||||
'state': 'abc1',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -401,7 +401,7 @@
|
|||
'entity_id': 'sensor.heat_meter_measurement_period_minutes',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '60',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -413,7 +413,7 @@
|
|||
'entity_id': 'sensor.heat_meter_power_max',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '22.1',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -425,7 +425,7 @@
|
|||
'entity_id': 'sensor.heat_meter_power_max_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '22.4',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -437,7 +437,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flowrate_max',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '0.744',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -449,7 +449,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flowrate_max_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '0.743',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -461,7 +461,7 @@
|
|||
'entity_id': 'sensor.heat_meter_return_temperature_max',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '96.1',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -473,7 +473,7 @@
|
|||
'entity_id': 'sensor.heat_meter_return_temperature_max_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '96.2',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -485,7 +485,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flow_temperature_max',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '98.5',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -497,7 +497,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flow_temperature_max_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '98.4',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -509,7 +509,7 @@
|
|||
'entity_id': 'sensor.heat_meter_operating_hours',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '115575',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -521,7 +521,7 @@
|
|||
'entity_id': 'sensor.heat_meter_flow_hours',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '30242',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -533,7 +533,7 @@
|
|||
'entity_id': 'sensor.heat_meter_fault_hours',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '5',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -545,7 +545,7 @@
|
|||
'entity_id': 'sensor.heat_meter_fault_hours_previous_year',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '5',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -556,7 +556,7 @@
|
|||
'entity_id': 'sensor.heat_meter_yearly_set_day',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '01-01',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -567,7 +567,7 @@
|
|||
'entity_id': 'sensor.heat_meter_monthly_set_day',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '01',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -591,7 +591,7 @@
|
|||
'entity_id': 'sensor.heat_meter_measuring_range',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '1.5',
|
||||
}),
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
|
@ -601,7 +601,7 @@
|
|||
'entity_id': 'sensor.heat_meter_settings_and_firmware',
|
||||
'last_changed': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'unknown',
|
||||
'state': '0 1 0 0000 CECV CECV 1 5.16 5.16 F 101008 040404 08 0',
|
||||
}),
|
||||
])
|
||||
# ---
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue