Matter battery storage (#147235)

* BatCapacity

* BatCapacity

* PowerSourceBatTimeRemaining

* BatChargeState

* Update strings.json

Co-authored-by: Norbert Rittel <norbert@rittel.de>

* Review fixes

* Remove uneeded BatCapacity

* Update strings.json

* Update strings.json

Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>

* Update snapshots

* Update strings.json

* Update snapshot

---------

Co-authored-by: Norbert Rittel <norbert@rittel.de>
Co-authored-by: Joost Lekkerkerker <joostlek@outlook.com>
This commit is contained in:
Ludovic BOUÉ 2025-06-23 16:04:40 +02:00 committed by GitHub
parent d38c880c45
commit 9ae3129f16
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 816 additions and 0 deletions

View File

@ -81,9 +81,18 @@
"valve_position": { "valve_position": {
"default": "mdi:valve" "default": "mdi:valve"
}, },
"battery_charge_state": {
"default": "mdi:battery-charging"
},
"battery_replacement_description": { "battery_replacement_description": {
"default": "mdi:battery-sync-outline" "default": "mdi:battery-sync-outline"
}, },
"battery_time_remaining": {
"default": "mdi:battery-clock-outline"
},
"battery_time_to_full_charge": {
"default": "mdi:battery-clock"
},
"evse_state": { "evse_state": {
"default": "mdi:ev-station" "default": "mdi:ev-station"
}, },

View File

@ -38,6 +38,7 @@ from homeassistant.const import (
UnitOfPower, UnitOfPower,
UnitOfPressure, UnitOfPressure,
UnitOfTemperature, UnitOfTemperature,
UnitOfTime,
UnitOfVolume, UnitOfVolume,
UnitOfVolumeFlowRate, UnitOfVolumeFlowRate,
) )
@ -84,6 +85,14 @@ BOOST_STATE_MAP = {
clusters.WaterHeaterManagement.Enums.BoostStateEnum.kUnknownEnumValue: None, clusters.WaterHeaterManagement.Enums.BoostStateEnum.kUnknownEnumValue: None,
} }
CHARGE_STATE_MAP = {
clusters.PowerSource.Enums.BatChargeStateEnum.kUnknown: None,
clusters.PowerSource.Enums.BatChargeStateEnum.kIsNotCharging: "not_charging",
clusters.PowerSource.Enums.BatChargeStateEnum.kIsCharging: "charging",
clusters.PowerSource.Enums.BatChargeStateEnum.kIsAtFullCharge: "full_charge",
clusters.PowerSource.Enums.BatChargeStateEnum.kUnknownEnumValue: None,
}
ESA_STATE_MAP = { ESA_STATE_MAP = {
clusters.DeviceEnergyManagement.Enums.ESAStateEnum.kOffline: "offline", clusters.DeviceEnergyManagement.Enums.ESAStateEnum.kOffline: "offline",
clusters.DeviceEnergyManagement.Enums.ESAStateEnum.kOnline: "online", clusters.DeviceEnergyManagement.Enums.ESAStateEnum.kOnline: "online",
@ -355,6 +364,47 @@ DISCOVERY_SCHEMAS = [
entity_class=MatterSensor, entity_class=MatterSensor,
required_attributes=(clusters.PowerSource.Attributes.BatVoltage,), required_attributes=(clusters.PowerSource.Attributes.BatVoltage,),
), ),
MatterDiscoverySchema(
platform=Platform.SENSOR,
entity_description=MatterSensorEntityDescription(
key="PowerSourceBatTimeRemaining",
translation_key="battery_time_remaining",
native_unit_of_measurement=UnitOfTime.SECONDS,
suggested_unit_of_measurement=UnitOfTime.MINUTES,
device_class=SensorDeviceClass.DURATION,
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
),
entity_class=MatterSensor,
required_attributes=(clusters.PowerSource.Attributes.BatTimeRemaining,),
),
MatterDiscoverySchema(
platform=Platform.SENSOR,
entity_description=MatterSensorEntityDescription(
key="PowerSourceBatChargeState",
translation_key="battery_charge_state",
device_class=SensorDeviceClass.ENUM,
entity_category=EntityCategory.DIAGNOSTIC,
options=[state for state in CHARGE_STATE_MAP.values() if state is not None],
measurement_to_ha=CHARGE_STATE_MAP.get,
),
entity_class=MatterSensor,
required_attributes=(clusters.PowerSource.Attributes.BatChargeState,),
),
MatterDiscoverySchema(
platform=Platform.SENSOR,
entity_description=MatterSensorEntityDescription(
key="PowerSourceBatTimeToFullCharge",
translation_key="battery_time_to_full_charge",
native_unit_of_measurement=UnitOfTime.SECONDS,
suggested_unit_of_measurement=UnitOfTime.MINUTES,
device_class=SensorDeviceClass.DURATION,
entity_category=EntityCategory.DIAGNOSTIC,
state_class=SensorStateClass.MEASUREMENT,
),
entity_class=MatterSensor,
required_attributes=(clusters.PowerSource.Attributes.BatTimeToFullCharge,),
),
MatterDiscoverySchema( MatterDiscoverySchema(
platform=Platform.SENSOR, platform=Platform.SENSOR,
entity_description=MatterSensorEntityDescription( entity_description=MatterSensorEntityDescription(

View File

@ -330,6 +330,20 @@
"battery_replacement_description": { "battery_replacement_description": {
"name": "Battery type" "name": "Battery type"
}, },
"battery_charge_state": {
"name": "Battery charge state",
"state": {
"charging": "[%key:common::state::charging%]",
"full_charge": "Full charge",
"not_charging": "Not charging"
}
},
"battery_time_remaining": {
"name": "Time remaining"
},
"battery_time_to_full_charge": {
"name": "Time to full charge"
},
"battery_voltage": { "battery_voltage": {
"name": "Battery voltage" "name": "Battery voltage"
}, },

View File

@ -76,6 +76,7 @@ async def integration_fixture(
params=[ params=[
"air_purifier", "air_purifier",
"air_quality_sensor", "air_quality_sensor",
"battery_storage",
"color_temperature_light", "color_temperature_light",
"cooktop", "cooktop",
"dimmable_light", "dimmable_light",

View File

@ -0,0 +1,271 @@
{
"node_id": 25,
"date_commissioned": "2025-06-19T17:13:40.727316",
"last_interview": "2025-06-19T17:13:40.727333",
"interview_version": 6,
"available": true,
"is_bridge": false,
"attributes": {
"0/29/0": [
{
"0": 22,
"1": 3
},
{
"0": 18,
"1": 1
}
],
"0/29/1": [29, 31, 40, 48, 49, 51, 60, 62, 63, 42],
"0/29/2": [41],
"0/29/3": [1],
"0/29/65532": 0,
"0/29/65533": 3,
"0/29/65528": [],
"0/29/65529": [],
"0/29/65531": [0, 1, 2, 3, 65532, 65533, 65528, 65529, 65531],
"0/31/0": [
{
"1": 5,
"2": 2,
"3": [112233],
"4": null,
"254": 3
}
],
"0/31/2": 4,
"0/31/4": 4,
"0/31/3": 3,
"0/31/65532": 0,
"0/31/65533": 2,
"0/31/65528": [],
"0/31/65529": [],
"0/31/65531": [0, 2, 4, 3, 65532, 65533, 65528, 65529, 65531],
"0/40/65532": 0,
"0/40/0": 19,
"0/40/6": "**REDACTED**",
"0/40/1": "TEST_VENDOR",
"0/40/2": 65521,
"0/40/3": "Mock Battery Storage",
"0/40/4": 32768,
"0/40/7": 0,
"0/40/8": "TEST_VERSION",
"0/40/9": 1,
"0/40/10": "1.0",
"0/40/18": "6C89C9D11F0BDAAD",
"0/40/19": {
"0": 3,
"1": 3
},
"0/40/21": 17104896,
"0/40/22": 1,
"0/40/65533": 5,
"0/40/5": "",
"0/40/65528": [],
"0/40/65529": [],
"0/40/65531": [
65532, 0, 6, 1, 2, 3, 4, 7, 8, 9, 10, 18, 19, 21, 22, 65533, 5, 65528,
65529, 65531
],
"0/48/65532": 0,
"0/48/2": 0,
"0/48/3": 0,
"0/48/1": {
"0": 60,
"1": 900
},
"0/48/4": true,
"0/48/65533": 2,
"0/48/0": 0,
"0/48/65528": [1, 3, 5],
"0/48/65529": [0, 2, 4],
"0/48/65531": [65532, 2, 3, 1, 4, 65533, 0, 65528, 65529, 65531],
"0/49/0": 1,
"0/49/1": [
{
"0": "RnJlZWJveC03Mjg2ODE=",
"1": true
}
],
"0/49/4": true,
"0/49/5": 0,
"0/49/6": "RnJlZWJveC03Mjg2ODE=",
"0/49/7": null,
"0/49/2": 10,
"0/49/3": 30,
"0/49/8": [0],
"0/49/65532": 1,
"0/49/65533": 2,
"0/49/65528": [1, 5, 7],
"0/49/65529": [0, 2, 4, 6, 8],
"0/49/65531": [
0, 1, 4, 5, 6, 7, 2, 3, 8, 65532, 65533, 65528, 65529, 65531
],
"0/51/0": [
{
"0": "WIFI_STA_DEF",
"1": true,
"2": null,
"3": null,
"4": "YFX59wI0",
"5": ["wKgBqA=="],
"6": ["/oAAAAAAAABiVfn//vcCNA==", "KgEOCgKzOZBiVfn//vcCNA=="],
"7": 1
}
],
"0/51/1": 1,
"0/51/2": 245,
"0/51/8": false,
"0/51/65532": 0,
"0/51/65533": 2,
"0/51/65528": [2],
"0/51/65529": [0, 1],
"0/51/65531": [0, 1, 2, 8, 65532, 65533, 65528, 65529, 65531],
"0/60/65532": 0,
"0/60/0": 0,
"0/60/1": null,
"0/60/2": null,
"0/60/65533": 1,
"0/60/65528": [],
"0/60/65529": [0, 2],
"0/60/65531": [65532, 0, 1, 2, 65533, 65528, 65529, 65531],
"0/62/65532": 0,
"0/62/0": [
{
"1": "FTABAQEkAgE3AyQTAhgmBIAigScmBYAlTTo3BiQVAiQRGRgkBwEkCAEwCUEEdGR9Cz5LAJceV7SCSogqC7oif2ZaaFbkT0aMcnoFyyfBgkEg7K/IzbpMUEbatodbeOpCPFebunhR9wCXs7B8lTcKNQEoARgkAgE2AwQCBAEYMAQUTYn5+OBsvnwU4qs/Er+byaEnS/AwBRS5+zzv8ZPGnI9mC3wH9vq10JnwlhgwC0D4oAj5zm+W4u/MaHn8Xzqh3zzGdKh2OrSqols1utweoW2ODVMf+AT0WNmG9sOxeaoOPppaFVorZf5T1KtB0T9gGA==",
"2": "FTABAQEkAgE3AyQUARgmBIAigScmBYAlTTo3BiQTAhgkBwEkCAEwCUEE/DujEcdTsX19xbxX+KuKKWiMaA5D9u99P/pVxIOmscd2BA2PadEMNnjvtPOpf+WE2Zxar4rby1IfAClGUUuQrTcKNQEpARgkAmAwBBS5+zzv8ZPGnI9mC3wH9vq10JnwljAFFPT6p93JKGcb7g+rTWnA6evF2EdGGDALQGkPpvsbkAFEbfPN6H3Kf23R0zzmW/gpAA3kgaL6wKB2Ofm+Tmylw22qM536Kj8mOMwaV0EL1dCCGcuxF98aL6gY",
"254": 3
}
],
"0/62/2": 5,
"0/62/3": 3,
"0/62/1": [
{
"1": "BBmX+KwLR5HGlVNbvlC+dO8Jv9fPthHiTfGpUzi2JJADX5az6GxBAFn02QKHwLcZHyh+lh9faf6rf38/nPYF7/M=",
"2": 4939,
"3": 2,
"4": 25,
"5": "Home",
"254": 3
}
],
"0/62/4": [
"FTABAQAkAgE3AyYUyakYCSYVj6gLsxgmBPIA5y8kBQA3BiYUyakYCSYVj6gLsxgkBwEkCAEwCUEEgYwxrTB+tyiEGfrRwjlXTG34MiQtJXbg5Qqd0ohdRW7MfwYY7vZiX/0h9hI8MqUralFaVPcnghAP0MSJm1YrqTcKNQEpARgkAmAwBBS3BS9aJzt+p6i28Nj+trB2Uu+vdzAFFLcFL1onO36nqLbw2P62sHZS7693GDALQPnIJqOtiZpRoUcwAo5GzvuP5SeVloEfg6jDfAMYWb+Sm6X4b9FLaO9IVlUmABOKG5Ay+6ayHN5KRUFmoo4TrxIY",
"FTABAQAkAgE3AycUQhmZbaIbYjokFQIYJgRWZLcqJAUANwYnFEIZmW2iG2I6JBUCGCQHASQIATAJQQT2AlKGW/kOMjqayzeO0md523/fuhrhGEUU91uQpTiKo0I7wcPpKnmrwfQNPX6g0kEQl+VGaXa3e22lzfu5Tzp0Nwo1ASkBGCQCYDAEFOOMk13ScMKuT2hlaydi1yEJnhTqMAUU44yTXdJwwq5PaGVrJ2LXIQmeFOoYMAtAv2jJd1qd5miXbYesH1XrJ+vgyY0hzGuZ78N6Jw4Cb1oN1sLSpA+PNM0u7+hsEqcSvvn2eSV8EaRR+hg5YQjHDxg=",
"FTABAQEkAgE3AyQUARgmBIAigScmBYAlTTo3BiQUARgkBwEkCAEwCUEEGZf4rAtHkcaVU1u+UL507wm/18+2EeJN8alTOLYkkANflrPobEEAWfTZAofAtxkfKH6WH19p/qt/fz+c9gXv8zcKNQEpARgkAmAwBBT0+qfdyShnG+4Pq01pwOnrxdhHRjAFFPT6p93JKGcb7g+rTWnA6evF2EdGGDALQPVrsFnfFplsQGV5m5EUua+rmo9hAr+OP1bvaifdLqiEIn3uXLTLoKmVUkPImRL2Fb+xcMEAqR2p7RM6ZlFCR20Y"
],
"0/62/5": 3,
"0/62/65533": 2,
"0/62/65528": [1, 3, 5, 8, 14],
"0/62/65529": [0, 2, 4, 6, 7, 9, 10, 11, 12, 13],
"0/62/65531": [65532, 0, 2, 3, 1, 4, 5, 65533, 65528, 65529, 65531],
"0/63/65532": 0,
"0/63/65533": 2,
"0/63/0": [],
"0/63/1": [],
"0/63/2": 0,
"0/63/3": 3,
"0/63/65528": [2, 5],
"0/63/65529": [0, 1, 3, 4],
"0/63/65531": [65532, 65533, 0, 1, 2, 3, 65528, 65529, 65531],
"0/42/65532": 0,
"0/42/0": [],
"0/42/65533": 1,
"0/42/1": true,
"0/42/2": 1,
"0/42/3": null,
"0/42/65528": [],
"0/42/65529": [0],
"0/42/65531": [65532, 0, 65533, 1, 2, 3, 65528, 65529, 65531],
"1/29/0": [
{
"0": 24,
"1": 1
},
{
"0": 17,
"1": 1
},
{
"0": 1296,
"1": 1
},
{
"0": 1293,
"1": 2
}
],
"1/29/1": [29, 47, 156, 144, 145, 152, 159],
"1/29/2": [],
"1/29/3": [],
"1/29/65532": 0,
"1/29/65533": 3,
"1/29/4": [],
"1/29/65528": [],
"1/29/65529": [],
"1/29/65531": [0, 1, 2, 3, 65532, 65533, 4, 65528, 65529, 65531],
"1/47/65532": 7,
"1/47/65533": 3,
"1/47/0": 0,
"1/47/1": 0,
"1/47/2": "Main",
"1/47/31": [],
"1/47/5": 0,
"1/47/11": 48000,
"1/47/12": 180,
"1/47/13": 7200,
"1/47/18": [],
"1/47/24": 100000,
"1/47/27": 1800,
"1/47/29": null,
"1/47/30": null,
"1/47/65528": [],
"1/47/65529": [],
"1/47/65531": [
65532, 65533, 0, 1, 2, 31, 5, 11, 12, 13, 18, 24, 27, 29, 30, 65528,
65529, 65531
],
"1/156/65532": 0,
"1/156/65533": 1,
"1/156/65528": [],
"1/156/65529": [],
"1/156/65531": [65532, 65533, 65528, 65529, 65531],
"1/144/65532": 0,
"1/144/0": 0,
"1/144/1": 0,
"1/144/2": null,
"1/144/8": 0,
"1/144/65533": 1,
"1/144/4": 0,
"1/144/5": 0,
"1/144/65528": [],
"1/144/65529": [],
"1/144/65531": [65532, 0, 1, 2, 8, 65533, 4, 5, 65528, 65529, 65531],
"1/145/65532": 0,
"1/145/0": null,
"1/145/65533": 1,
"1/145/65528": [],
"1/145/65529": [],
"1/145/65531": [65532, 0, 65533, 65528, 65529, 65531],
"1/152/65532": 1,
"1/152/0": 5,
"1/152/1": false,
"1/152/2": 1,
"1/152/3": 0,
"1/152/4": 0,
"1/152/65533": 4,
"1/152/5": null,
"1/152/7": 0,
"1/152/65528": [],
"1/152/65529": [0, 1],
"1/152/65531": [65532, 0, 1, 2, 3, 4, 65533, 5, 7, 65528, 65529, 65531],
"1/159/65532": 0,
"1/159/0": null,
"1/159/65533": 2,
"1/159/1": 0,
"1/159/65528": [1],
"1/159/65529": [0],
"1/159/65531": [65532, 0, 65533, 1, 65528, 65529, 65531]
},
"attribute_subscriptions": []
}

View File

@ -1251,6 +1251,477 @@
'state': '189.0', 'state': '189.0',
}) })
# --- # ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_appliance_energy_state-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'options': list([
'offline',
'online',
'fault',
'power_adjust_active',
'paused',
]),
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_battery_storage_appliance_energy_state',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.ENUM: 'enum'>,
'original_icon': None,
'original_name': 'Appliance energy state',
'platform': 'matter',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'esa_state',
'unique_id': '00000000000004D2-0000000000000019-MatterNodeDevice-1-ESAState-152-2',
'unit_of_measurement': None,
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_appliance_energy_state-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'enum',
'friendly_name': 'Mock Battery Storage Appliance energy state',
'options': list([
'offline',
'online',
'fault',
'power_adjust_active',
'paused',
]),
}),
'context': <ANY>,
'entity_id': 'sensor.mock_battery_storage_appliance_energy_state',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': 'online',
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_battery-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_battery_storage_battery',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
}),
'original_device_class': <SensorDeviceClass.BATTERY: 'battery'>,
'original_icon': None,
'original_name': 'Battery',
'platform': 'matter',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': '00000000000004D2-0000000000000019-MatterNodeDevice-1-PowerSource-47-12',
'unit_of_measurement': '%',
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_battery-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'battery',
'friendly_name': 'Mock Battery Storage Battery',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': '%',
}),
'context': <ANY>,
'entity_id': 'sensor.mock_battery_storage_battery',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '90',
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_battery_voltage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_battery_storage_battery_voltage',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 0,
}),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
}),
}),
'original_device_class': <SensorDeviceClass.VOLTAGE: 'voltage'>,
'original_icon': None,
'original_name': 'Battery voltage',
'platform': 'matter',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'battery_voltage',
'unique_id': '00000000000004D2-0000000000000019-MatterNodeDevice-1-PowerSourceBatVoltage-47-11',
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_battery_voltage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'voltage',
'friendly_name': 'Mock Battery Storage Battery voltage',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
}),
'context': <ANY>,
'entity_id': 'sensor.mock_battery_storage_battery_voltage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '48.0',
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_current-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_battery_storage_current',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 2,
}),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfElectricCurrent.AMPERE: 'A'>,
}),
}),
'original_device_class': <SensorDeviceClass.CURRENT: 'current'>,
'original_icon': None,
'original_name': 'Current',
'platform': 'matter',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': '00000000000004D2-0000000000000019-MatterNodeDevice-1-ElectricalPowerMeasurementActiveCurrent-144-5',
'unit_of_measurement': <UnitOfElectricCurrent.AMPERE: 'A'>,
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_current-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'current',
'friendly_name': 'Mock Battery Storage Current',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfElectricCurrent.AMPERE: 'A'>,
}),
'context': <ANY>,
'entity_id': 'sensor.mock_battery_storage_current',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0.0',
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_power-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_battery_storage_power',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 2,
}),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfPower.WATT: 'W'>,
}),
}),
'original_device_class': <SensorDeviceClass.POWER: 'power'>,
'original_icon': None,
'original_name': 'Power',
'platform': 'matter',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': '00000000000004D2-0000000000000019-MatterNodeDevice-1-ElectricalPowerMeasurementWatt-144-8',
'unit_of_measurement': <UnitOfPower.WATT: 'W'>,
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_power-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'power',
'friendly_name': 'Mock Battery Storage Power',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfPower.WATT: 'W'>,
}),
'context': <ANY>,
'entity_id': 'sensor.mock_battery_storage_power',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0.0',
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_time_remaining-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_battery_storage_time_remaining',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 2,
}),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}),
}),
'original_device_class': <SensorDeviceClass.DURATION: 'duration'>,
'original_icon': None,
'original_name': 'Time remaining',
'platform': 'matter',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'battery_time_remaining',
'unique_id': '00000000000004D2-0000000000000019-MatterNodeDevice-1-PowerSourceBatTimeRemaining-47-13',
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_time_remaining-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'duration',
'friendly_name': 'Mock Battery Storage Time remaining',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}),
'context': <ANY>,
'entity_id': 'sensor.mock_battery_storage_time_remaining',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '120.0',
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_time_to_full_charge-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_battery_storage_time_to_full_charge',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 2,
}),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}),
}),
'original_device_class': <SensorDeviceClass.DURATION: 'duration'>,
'original_icon': None,
'original_name': 'Time to full charge',
'platform': 'matter',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': 'battery_time_to_full_charge',
'unique_id': '00000000000004D2-0000000000000019-MatterNodeDevice-1-PowerSourceBatTimeToFullCharge-47-27',
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_time_to_full_charge-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'duration',
'friendly_name': 'Mock Battery Storage Time to full charge',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfTime.MINUTES: 'min'>,
}),
'context': <ANY>,
'entity_id': 'sensor.mock_battery_storage_time_to_full_charge',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '30.0',
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_voltage-entry]
EntityRegistryEntrySnapshot({
'aliases': set({
}),
'area_id': None,
'capabilities': dict({
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
}),
'config_entry_id': <ANY>,
'config_subentry_id': <ANY>,
'device_class': None,
'device_id': <ANY>,
'disabled_by': None,
'domain': 'sensor',
'entity_category': <EntityCategory.DIAGNOSTIC: 'diagnostic'>,
'entity_id': 'sensor.mock_battery_storage_voltage',
'has_entity_name': True,
'hidden_by': None,
'icon': None,
'id': <ANY>,
'labels': set({
}),
'name': None,
'options': dict({
'sensor': dict({
'suggested_display_precision': 0,
}),
'sensor.private': dict({
'suggested_unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
}),
}),
'original_device_class': <SensorDeviceClass.VOLTAGE: 'voltage'>,
'original_icon': None,
'original_name': 'Voltage',
'platform': 'matter',
'previous_unique_id': None,
'suggested_object_id': None,
'supported_features': 0,
'translation_key': None,
'unique_id': '00000000000004D2-0000000000000019-MatterNodeDevice-1-ElectricalPowerMeasurementVoltage-144-4',
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
})
# ---
# name: test_sensors[battery_storage][sensor.mock_battery_storage_voltage-state]
StateSnapshot({
'attributes': ReadOnlyDict({
'device_class': 'voltage',
'friendly_name': 'Mock Battery Storage Voltage',
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
'unit_of_measurement': <UnitOfElectricPotential.VOLT: 'V'>,
}),
'context': <ANY>,
'entity_id': 'sensor.mock_battery_storage_voltage',
'last_changed': <ANY>,
'last_reported': <ANY>,
'last_updated': <ANY>,
'state': '0.0',
})
# ---
# name: test_sensors[cooktop][sensor.mock_cooktop_temperature-entry] # name: test_sensors[cooktop][sensor.mock_cooktop_temperature-entry]
EntityRegistryEntrySnapshot({ EntityRegistryEntrySnapshot({
'aliases': set({ 'aliases': set({