Add SPF sensor for heat pumps in ViCare integration (#136233)

Co-authored-by: Dave T <17680170+davet2001@users.noreply.github.com>
This commit is contained in:
Christopher Fenner 2025-01-28 16:34:08 +01:00 committed by GitHub
parent 5695582387
commit 01f63cfefd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 177 additions and 0 deletions

View File

@ -862,6 +862,27 @@ GLOBAL_SENSORS: tuple[ViCareSensorEntityDescription, ...] = (
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.TOTAL_INCREASING,
),
ViCareSensorEntityDescription(
key="spf_total",
translation_key="spf_total",
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
value_getter=lambda api: api.getSeasonalPerformanceFactorTotal(),
),
ViCareSensorEntityDescription(
key="spf_dhw",
translation_key="spf_dhw",
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
value_getter=lambda api: api.getSeasonalPerformanceFactorDHW(),
),
ViCareSensorEntityDescription(
key="spf_heating",
translation_key="spf_heating",
state_class=SensorStateClass.MEASUREMENT,
entity_category=EntityCategory.DIAGNOSTIC,
value_getter=lambda api: api.getSeasonalPerformanceFactorHeating(),
),
)
CIRCUIT_SENSORS: tuple[ViCareSensorEntityDescription, ...] = (

View File

@ -466,6 +466,15 @@
},
"heating_rod_hours": {
"name": "Heating rod hours"
},
"spf_total": {
"name": "Seasonal performance factor"
},
"spf_dhw": {
"name": "Seasonal performance factor - domestic hot water"
},
"spf_heating": {
"name": "Seasonal performance factor - heating"
}
},
"water_heater": {

View File

@ -2110,6 +2110,153 @@
'state': '35.3',
})
# ---
# name: test_all_entities[type:heatpump-vicare/Vitocal250A.json][sensor.model0_seasonal_performance_factor-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.model0_seasonal_performance_factor',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Seasonal performance factor',
'platform': 'vicare',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'spf_total',
'unique_id': 'gateway0_deviceSerialVitocal250A-spf_total',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[type:heatpump-vicare/Vitocal250A.json][sensor.model0_seasonal_performance_factor-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'model0 Seasonal performance factor',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'context': <ANY>,
'entity_id': 'sensor.model0_seasonal_performance_factor',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '3.9',
})
# ---
# name: test_all_entities[type:heatpump-vicare/Vitocal250A.json][sensor.model0_seasonal_performance_factor_domestic_hot_water-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.model0_seasonal_performance_factor_domestic_hot_water',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Seasonal performance factor - domestic hot water',
'platform': 'vicare',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'spf_dhw',
'unique_id': 'gateway0_deviceSerialVitocal250A-spf_dhw',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[type:heatpump-vicare/Vitocal250A.json][sensor.model0_seasonal_performance_factor_domestic_hot_water-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'model0 Seasonal performance factor - domestic hot water',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'context': <ANY>,
'entity_id': 'sensor.model0_seasonal_performance_factor_domestic_hot_water',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '4.1',
})
# ---
# name: test_all_entities[type:heatpump-vicare/Vitocal250A.json][sensor.model0_seasonal_performance_factor_heating-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.model0_seasonal_performance_factor_heating',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': None,
'original_icon': None,
'original_name': 'Seasonal performance factor - heating',
'platform': 'vicare',
'previous_unique_id': None,
'supported_features': 0,
'translation_key': 'spf_heating',
'unique_id': 'gateway0_deviceSerialVitocal250A-spf_heating',
'unit_of_measurement': None,
})
# ---
# name: test_all_entities[type:heatpump-vicare/Vitocal250A.json][sensor.model0_seasonal_performance_factor_heating-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'friendly_name': 'model0 Seasonal performance factor - heating',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'context': <ANY>,
'entity_id': 'sensor.model0_seasonal_performance_factor_heating',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '3.2',
})
# ---
# name: test_all_entities[type:heatpump-vicare/Vitocal250A.json][sensor.model0_secondary_circuit_supply_temperature-entry]
EntityRegistryEntrySnapshot({
'aliases': set({