mirror of
https://github.com/home-assistant/core.git
synced 2025-09-01 10:51:47 +02:00
Add support for tuya ywcgq category (liquid level) (#150096)
Thanks @joostlek / @frenck
This commit is contained in:
@@ -222,6 +222,7 @@ class DPCode(StrEnum):
|
||||
HUMIDITY_OUTDOOR_3 = "humidity_outdoor_3" # Outdoor humidity
|
||||
HUMIDITY_SET = "humidity_set" # Humidity setting
|
||||
HUMIDITY_VALUE = "humidity_value" # Humidity
|
||||
INSTALLATION_HEIGHT = "installation_height"
|
||||
IPC_WORK_MODE = "ipc_work_mode"
|
||||
LED_TYPE_1 = "led_type_1"
|
||||
LED_TYPE_2 = "led_type_2"
|
||||
@@ -232,12 +233,18 @@ class DPCode(StrEnum):
|
||||
LEVEL_CURRENT = "level_current"
|
||||
LIGHT = "light" # Light
|
||||
LIGHT_MODE = "light_mode"
|
||||
LIQUID_DEPTH = "liquid_depth"
|
||||
LIQUID_DEPTH_MAX = "liquid_depth_max"
|
||||
LIQUID_LEVEL_PERCENT = "liquid_level_percent"
|
||||
LIQUID_STATE = "liquid_state"
|
||||
LOCK = "lock" # Lock / Child lock
|
||||
MASTER_MODE = "master_mode" # alarm mode
|
||||
MASTER_STATE = "master_state" # alarm state
|
||||
MACH_OPERATE = "mach_operate"
|
||||
MANUAL_FEED = "manual_feed"
|
||||
MATERIAL = "material" # Material
|
||||
MAX_SET = "max_set"
|
||||
MINI_SET = "mini_set"
|
||||
MODE = "mode" # Working mode / Mode
|
||||
MOODLIGHTING = "moodlighting" # Mood light
|
||||
MOTION_RECORD = "motion_record"
|
||||
|
@@ -339,6 +339,32 @@ NUMBERS: dict[str, tuple[NumberEntityDescription, ...]] = {
|
||||
entity_category=EntityCategory.CONFIG,
|
||||
),
|
||||
),
|
||||
# Tank Level Sensor
|
||||
# Note: Undocumented
|
||||
"ywcgq": (
|
||||
NumberEntityDescription(
|
||||
key=DPCode.MAX_SET,
|
||||
translation_key="alarm_maximum",
|
||||
entity_category=EntityCategory.CONFIG,
|
||||
),
|
||||
NumberEntityDescription(
|
||||
key=DPCode.MINI_SET,
|
||||
translation_key="alarm_minimum",
|
||||
entity_category=EntityCategory.CONFIG,
|
||||
),
|
||||
NumberEntityDescription(
|
||||
key=DPCode.INSTALLATION_HEIGHT,
|
||||
translation_key="installation_height",
|
||||
device_class=NumberDeviceClass.DISTANCE,
|
||||
entity_category=EntityCategory.CONFIG,
|
||||
),
|
||||
NumberEntityDescription(
|
||||
key=DPCode.LIQUID_DEPTH_MAX,
|
||||
translation_key="maximum_liquid_depth",
|
||||
device_class=NumberDeviceClass.DISTANCE,
|
||||
entity_category=EntityCategory.CONFIG,
|
||||
),
|
||||
),
|
||||
# Vibration Sensor
|
||||
# https://developer.tuya.com/en/docs/iot/categoryzd?id=Kaiuz3a5vrzno
|
||||
"zd": (
|
||||
|
@@ -1301,6 +1301,25 @@ SENSORS: dict[str, tuple[TuyaSensorEntityDescription, ...]] = {
|
||||
),
|
||||
*BATTERY_SENSORS,
|
||||
),
|
||||
# Tank Level Sensor
|
||||
# Note: Undocumented
|
||||
"ywcgq": (
|
||||
TuyaSensorEntityDescription(
|
||||
key=DPCode.LIQUID_STATE,
|
||||
translation_key="liquid_state",
|
||||
),
|
||||
TuyaSensorEntityDescription(
|
||||
key=DPCode.LIQUID_DEPTH,
|
||||
translation_key="depth",
|
||||
device_class=SensorDeviceClass.DISTANCE,
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
TuyaSensorEntityDescription(
|
||||
key=DPCode.LIQUID_LEVEL_PERCENT,
|
||||
translation_key="liquid_level",
|
||||
state_class=SensorStateClass.MEASUREMENT,
|
||||
),
|
||||
),
|
||||
# Vibration Sensor
|
||||
# https://developer.tuya.com/en/docs/iot/categoryzd?id=Kaiuz3a5vrzno
|
||||
"zd": BATTERY_SENSORS,
|
||||
|
@@ -213,6 +213,18 @@
|
||||
},
|
||||
"siren_duration": {
|
||||
"name": "Siren duration"
|
||||
},
|
||||
"alarm_maximum": {
|
||||
"name": "Alarm maximum"
|
||||
},
|
||||
"alarm_minimum": {
|
||||
"name": "Alarm minimum"
|
||||
},
|
||||
"installation_height": {
|
||||
"name": "Installation height"
|
||||
},
|
||||
"maximum_liquid_depth": {
|
||||
"name": "Maximum liquid depth"
|
||||
}
|
||||
},
|
||||
"select": {
|
||||
@@ -711,6 +723,20 @@
|
||||
"charging": "[%key:common::state::charging%]",
|
||||
"charge_done": "Charge done"
|
||||
}
|
||||
},
|
||||
"liquid_state": {
|
||||
"name": "Liquid state",
|
||||
"state": {
|
||||
"normal": "[%key:common::state::normal%]",
|
||||
"lower_alarm": "[%key:common::state::low%]",
|
||||
"upper_alarm": "[%key:common::state::high%]"
|
||||
}
|
||||
},
|
||||
"liquid_depth": {
|
||||
"name": "Liquid depth"
|
||||
},
|
||||
"liquid_level": {
|
||||
"name": "Liquid level"
|
||||
}
|
||||
},
|
||||
"switch": {
|
||||
|
@@ -434,9 +434,15 @@ DEVICE_MOCKS = {
|
||||
Platform.BINARY_SENSOR,
|
||||
Platform.SENSOR,
|
||||
],
|
||||
"ywcgq_h8lvyoahr6s6aybf": [
|
||||
# https://github.com/home-assistant/core/issues/145932
|
||||
Platform.NUMBER,
|
||||
Platform.SENSOR,
|
||||
],
|
||||
"ywcgq_wtzwyhkev3b4ubns": [
|
||||
# https://community.home-assistant.io/t/something-is-wrong-with-tuya-tank-level-sensors-with-the-new-official-integration/689321
|
||||
# not (yet) supported
|
||||
# https://github.com/home-assistant/core/issues/103818
|
||||
Platform.NUMBER,
|
||||
Platform.SENSOR,
|
||||
],
|
||||
"zndb_ze8faryrxr0glqnn": [
|
||||
# https://github.com/home-assistant/core/issues/138372
|
||||
|
148
tests/components/tuya/fixtures/ywcgq_h8lvyoahr6s6aybf.json
Normal file
148
tests/components/tuya/fixtures/ywcgq_h8lvyoahr6s6aybf.json
Normal file
@@ -0,0 +1,148 @@
|
||||
{
|
||||
"endpoint": "https://apigw.tuyaeu.com",
|
||||
"terminal_id": "REDACTED",
|
||||
"mqtt_connected": true,
|
||||
"disabled_by": null,
|
||||
"disabled_polling": false,
|
||||
"id": "bf3d16d38b17d7034ddxd4",
|
||||
"name": "Rainwater Tank Level",
|
||||
"category": "ywcgq",
|
||||
"product_id": "h8lvyoahr6s6aybf",
|
||||
"product_name": "Tank A Level",
|
||||
"online": true,
|
||||
"sub": false,
|
||||
"time_zone": "+01:00",
|
||||
"active_time": "2025-05-31T09:55:19+00:00",
|
||||
"create_time": "2025-05-31T09:55:19+00:00",
|
||||
"update_time": "2025-05-31T09:55:19+00:00",
|
||||
"function": {
|
||||
"max_set": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "%",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"scale": 0,
|
||||
"step": 1
|
||||
}
|
||||
},
|
||||
"mini_set": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "%",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"scale": 0,
|
||||
"step": 1
|
||||
}
|
||||
},
|
||||
"upper_switch": {
|
||||
"type": "Boolean",
|
||||
"value": {}
|
||||
},
|
||||
"installation_height": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "m",
|
||||
"min": 100,
|
||||
"max": 3000,
|
||||
"scale": 3,
|
||||
"step": 1
|
||||
}
|
||||
},
|
||||
"liquid_depth_max": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "m",
|
||||
"min": 100,
|
||||
"max": 2700,
|
||||
"scale": 3,
|
||||
"step": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"status_range": {
|
||||
"liquid_state": {
|
||||
"type": "Enum",
|
||||
"value": {
|
||||
"range": ["normal", "lower_alarm", "upper_alarm"]
|
||||
}
|
||||
},
|
||||
"liquid_depth": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "m",
|
||||
"min": 0,
|
||||
"max": 10000,
|
||||
"scale": 3,
|
||||
"step": 1
|
||||
}
|
||||
},
|
||||
"max_set": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "%",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"scale": 0,
|
||||
"step": 1
|
||||
}
|
||||
},
|
||||
"mini_set": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "%",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"scale": 0,
|
||||
"step": 1
|
||||
}
|
||||
},
|
||||
"upper_switch": {
|
||||
"type": "Boolean",
|
||||
"value": {}
|
||||
},
|
||||
"installation_height": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "m",
|
||||
"min": 100,
|
||||
"max": 3000,
|
||||
"scale": 3,
|
||||
"step": 1
|
||||
}
|
||||
},
|
||||
"liquid_depth_max": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "m",
|
||||
"min": 100,
|
||||
"max": 2700,
|
||||
"scale": 3,
|
||||
"step": 1
|
||||
}
|
||||
},
|
||||
"liquid_level_percent": {
|
||||
"type": "Integer",
|
||||
"value": {
|
||||
"unit": "%",
|
||||
"min": 0,
|
||||
"max": 100,
|
||||
"scale": 0,
|
||||
"step": 1
|
||||
}
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"liquid_state": "normal",
|
||||
"liquid_depth": 455,
|
||||
"max_set": 90,
|
||||
"mini_set": 10,
|
||||
"upper_switch": false,
|
||||
"installation_height": 1350,
|
||||
"liquid_depth_max": 100,
|
||||
"liquid_level_percent": 36
|
||||
},
|
||||
"set_up": false,
|
||||
"support_local": true
|
||||
}
|
@@ -1,20 +1,22 @@
|
||||
{
|
||||
"endpoint": "https://apigw.tuyaeu.com",
|
||||
"terminal_id": "REDACTED",
|
||||
"endpoint": "https://openapi.tuyaus.com",
|
||||
"auth_type": 0,
|
||||
"country_code": "1",
|
||||
"app_type": "tuyaSmart",
|
||||
"mqtt_connected": true,
|
||||
"disabled_by": null,
|
||||
"disabled_polling": false,
|
||||
"id": "bf27a4********368f4w",
|
||||
"name": "Nivel del tanque A",
|
||||
"name": "House Water Level",
|
||||
"model": "EPT_Ultrasonic level sensor",
|
||||
"category": "ywcgq",
|
||||
"product_id": "wtzwyhkev3b4ubns",
|
||||
"product_name": "Tank A Level",
|
||||
"online": true,
|
||||
"sub": false,
|
||||
"time_zone": "+01:00",
|
||||
"active_time": "2024-01-05T10:22:24+00:00",
|
||||
"create_time": "2024-01-05T10:22:24+00:00",
|
||||
"update_time": "2024-01-05T10:22:24+00:00",
|
||||
"time_zone": "-06:00",
|
||||
"active_time": "2023-11-02T22:48:03+00:00",
|
||||
"create_time": "2023-11-02T22:48:03+00:00",
|
||||
"update_time": "2023-11-09T13:32:38+00:00",
|
||||
"function": {
|
||||
"max_set": {
|
||||
"type": "Integer",
|
||||
@@ -126,14 +128,13 @@
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"liquid_state": "normal",
|
||||
"liquid_depth": 77,
|
||||
"liquid_state": "upper_alarm",
|
||||
"liquid_depth": 42,
|
||||
"max_set": 100,
|
||||
"mini_set": 10,
|
||||
"installation_height": 980,
|
||||
"liquid_depth_max": 140,
|
||||
"liquid_level_percent": 97
|
||||
"mini_set": 0,
|
||||
"installation_height": 560,
|
||||
"liquid_depth_max": 100,
|
||||
"liquid_level_percent": 100
|
||||
},
|
||||
"set_up": false,
|
||||
"support_local": true
|
||||
"terminal_id": "REDACTED"
|
||||
}
|
||||
|
@@ -817,3 +817,471 @@
|
||||
'state': '-1.5',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][number.rainwater_tank_level_alarm_maximum-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100.0,
|
||||
'min': 0.0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1.0,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.rainwater_tank_level_alarm_maximum',
|
||||
'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': 'Alarm maximum',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'alarm_maximum',
|
||||
'unique_id': 'tuya.bf3d16d38b17d7034ddxd4max_set',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][number.rainwater_tank_level_alarm_maximum-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Rainwater Tank Level Alarm maximum',
|
||||
'max': 100.0,
|
||||
'min': 0.0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1.0,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.rainwater_tank_level_alarm_maximum',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '90.0',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][number.rainwater_tank_level_alarm_minimum-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100.0,
|
||||
'min': 0.0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1.0,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.rainwater_tank_level_alarm_minimum',
|
||||
'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': 'Alarm minimum',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'alarm_minimum',
|
||||
'unique_id': 'tuya.bf3d16d38b17d7034ddxd4mini_set',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][number.rainwater_tank_level_alarm_minimum-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Rainwater Tank Level Alarm minimum',
|
||||
'max': 100.0,
|
||||
'min': 0.0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1.0,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.rainwater_tank_level_alarm_minimum',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '10.0',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][number.rainwater_tank_level_installation_height-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 3.0,
|
||||
'min': 0.1,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 0.001,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.rainwater_tank_level_installation_height',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.DISTANCE: 'distance'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Installation height',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'installation_height',
|
||||
'unique_id': 'tuya.bf3d16d38b17d7034ddxd4installation_height',
|
||||
'unit_of_measurement': 'm',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][number.rainwater_tank_level_installation_height-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'distance',
|
||||
'friendly_name': 'Rainwater Tank Level Installation height',
|
||||
'max': 3.0,
|
||||
'min': 0.1,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 0.001,
|
||||
'unit_of_measurement': 'm',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.rainwater_tank_level_installation_height',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '1.35',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][number.rainwater_tank_level_maximum_liquid_depth-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 2.7,
|
||||
'min': 0.1,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 0.001,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.rainwater_tank_level_maximum_liquid_depth',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.DISTANCE: 'distance'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Maximum liquid depth',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'maximum_liquid_depth',
|
||||
'unique_id': 'tuya.bf3d16d38b17d7034ddxd4liquid_depth_max',
|
||||
'unit_of_measurement': 'm',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][number.rainwater_tank_level_maximum_liquid_depth-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'distance',
|
||||
'friendly_name': 'Rainwater Tank Level Maximum liquid depth',
|
||||
'max': 2.7,
|
||||
'min': 0.1,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 0.001,
|
||||
'unit_of_measurement': 'm',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.rainwater_tank_level_maximum_liquid_depth',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.1',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][number.house_water_level_alarm_maximum-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100.0,
|
||||
'min': 0.0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1.0,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.house_water_level_alarm_maximum',
|
||||
'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': 'Alarm maximum',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'alarm_maximum',
|
||||
'unique_id': 'tuya.mocked_device_idmax_set',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][number.house_water_level_alarm_maximum-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'House Water Level Alarm maximum',
|
||||
'max': 100.0,
|
||||
'min': 0.0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1.0,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.house_water_level_alarm_maximum',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '100.0',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][number.house_water_level_alarm_minimum-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 100.0,
|
||||
'min': 0.0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1.0,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.house_water_level_alarm_minimum',
|
||||
'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': 'Alarm minimum',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'alarm_minimum',
|
||||
'unique_id': 'tuya.mocked_device_idmini_set',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][number.house_water_level_alarm_minimum-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'House Water Level Alarm minimum',
|
||||
'max': 100.0,
|
||||
'min': 0.0,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 1.0,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.house_water_level_alarm_minimum',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.0',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][number.house_water_level_installation_height-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 2.5,
|
||||
'min': 0.2,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 0.001,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.house_water_level_installation_height',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.DISTANCE: 'distance'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Installation height',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'installation_height',
|
||||
'unique_id': 'tuya.mocked_device_idinstallation_height',
|
||||
'unit_of_measurement': 'm',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][number.house_water_level_installation_height-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'distance',
|
||||
'friendly_name': 'House Water Level Installation height',
|
||||
'max': 2.5,
|
||||
'min': 0.2,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 0.001,
|
||||
'unit_of_measurement': 'm',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.house_water_level_installation_height',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.56',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][number.house_water_level_maximum_liquid_depth-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max': 2.4,
|
||||
'min': 0.1,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 0.001,
|
||||
}),
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'number',
|
||||
'entity_category': <EntityCategory.CONFIG: 'config'>,
|
||||
'entity_id': 'number.house_water_level_maximum_liquid_depth',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
}),
|
||||
'original_device_class': <NumberDeviceClass.DISTANCE: 'distance'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Maximum liquid depth',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'maximum_liquid_depth',
|
||||
'unique_id': 'tuya.mocked_device_idliquid_depth_max',
|
||||
'unit_of_measurement': 'm',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][number.house_water_level_maximum_liquid_depth-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'distance',
|
||||
'friendly_name': 'House Water Level Maximum liquid depth',
|
||||
'max': 2.4,
|
||||
'min': 0.1,
|
||||
'mode': <NumberMode.AUTO: 'auto'>,
|
||||
'step': 0.001,
|
||||
'unit_of_measurement': 'm',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'number.house_water_level_maximum_liquid_depth',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.1',
|
||||
})
|
||||
# ---
|
||||
|
@@ -4421,6 +4421,318 @@
|
||||
'state': 'low',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][sensor.rainwater_tank_level_distance-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': None,
|
||||
'entity_id': 'sensor.rainwater_tank_level_distance',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
'suggested_display_precision': 2,
|
||||
}),
|
||||
}),
|
||||
'original_device_class': <SensorDeviceClass.DISTANCE: 'distance'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Distance',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'depth',
|
||||
'unique_id': 'tuya.bf3d16d38b17d7034ddxd4liquid_depth',
|
||||
'unit_of_measurement': 'm',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][sensor.rainwater_tank_level_distance-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'distance',
|
||||
'friendly_name': 'Rainwater Tank Level Distance',
|
||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||
'unit_of_measurement': 'm',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.rainwater_tank_level_distance',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.455',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][sensor.rainwater_tank_level_liquid_level-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': None,
|
||||
'entity_id': 'sensor.rainwater_tank_level_liquid_level',
|
||||
'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': 'Liquid level',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'liquid_level',
|
||||
'unique_id': 'tuya.bf3d16d38b17d7034ddxd4liquid_level_percent',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][sensor.rainwater_tank_level_liquid_level-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Rainwater Tank Level Liquid level',
|
||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.rainwater_tank_level_liquid_level',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '36.0',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][sensor.rainwater_tank_level_liquid_state-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': None,
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'sensor',
|
||||
'entity_category': None,
|
||||
'entity_id': 'sensor.rainwater_tank_level_liquid_state',
|
||||
'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': 'Liquid state',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'liquid_state',
|
||||
'unique_id': 'tuya.bf3d16d38b17d7034ddxd4liquid_state',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_h8lvyoahr6s6aybf][sensor.rainwater_tank_level_liquid_state-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'Rainwater Tank Level Liquid state',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.rainwater_tank_level_liquid_state',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'normal',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][sensor.house_water_level_distance-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': None,
|
||||
'entity_id': 'sensor.house_water_level_distance',
|
||||
'has_entity_name': True,
|
||||
'hidden_by': None,
|
||||
'icon': None,
|
||||
'id': <ANY>,
|
||||
'labels': set({
|
||||
}),
|
||||
'name': None,
|
||||
'options': dict({
|
||||
'sensor': dict({
|
||||
'suggested_display_precision': 2,
|
||||
}),
|
||||
}),
|
||||
'original_device_class': <SensorDeviceClass.DISTANCE: 'distance'>,
|
||||
'original_icon': None,
|
||||
'original_name': 'Distance',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'depth',
|
||||
'unique_id': 'tuya.mocked_device_idliquid_depth',
|
||||
'unit_of_measurement': 'm',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][sensor.house_water_level_distance-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'device_class': 'distance',
|
||||
'friendly_name': 'House Water Level Distance',
|
||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||
'unit_of_measurement': 'm',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.house_water_level_distance',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '0.42',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][sensor.house_water_level_liquid_level-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': None,
|
||||
'entity_id': 'sensor.house_water_level_liquid_level',
|
||||
'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': 'Liquid level',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'liquid_level',
|
||||
'unique_id': 'tuya.mocked_device_idliquid_level_percent',
|
||||
'unit_of_measurement': '%',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][sensor.house_water_level_liquid_level-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'House Water Level Liquid level',
|
||||
'state_class': <SensorStateClass.MEASUREMENT: 'measurement'>,
|
||||
'unit_of_measurement': '%',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.house_water_level_liquid_level',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': '100.0',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][sensor.house_water_level_liquid_state-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
}),
|
||||
'area_id': None,
|
||||
'capabilities': None,
|
||||
'config_entry_id': <ANY>,
|
||||
'config_subentry_id': <ANY>,
|
||||
'device_class': None,
|
||||
'device_id': <ANY>,
|
||||
'disabled_by': None,
|
||||
'domain': 'sensor',
|
||||
'entity_category': None,
|
||||
'entity_id': 'sensor.house_water_level_liquid_state',
|
||||
'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': 'Liquid state',
|
||||
'platform': 'tuya',
|
||||
'previous_unique_id': None,
|
||||
'suggested_object_id': None,
|
||||
'supported_features': 0,
|
||||
'translation_key': 'liquid_state',
|
||||
'unique_id': 'tuya.mocked_device_idliquid_state',
|
||||
'unit_of_measurement': None,
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[ywcgq_wtzwyhkev3b4ubns][sensor.house_water_level_liquid_state-state]
|
||||
StateSnapshot({
|
||||
'attributes': ReadOnlyDict({
|
||||
'friendly_name': 'House Water Level Liquid state',
|
||||
}),
|
||||
'context': <ANY>,
|
||||
'entity_id': 'sensor.house_water_level_liquid_state',
|
||||
'last_changed': <ANY>,
|
||||
'last_reported': <ANY>,
|
||||
'last_updated': <ANY>,
|
||||
'state': 'upper_alarm',
|
||||
})
|
||||
# ---
|
||||
# name: test_platform_setup_and_discovery[zndb_ze8faryrxr0glqnn][sensor.meter_phase_a_current-entry]
|
||||
EntityRegistryEntrySnapshot({
|
||||
'aliases': set({
|
||||
|
Reference in New Issue
Block a user