Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Tuya TRV _TZE284_ymldrmzx #3819

Merged
merged 7 commits into from
Feb 24, 2025
Merged

Conversation

prairiesnpr
Copy link
Collaborator

@prairiesnpr prairiesnpr commented Feb 1, 2025

Proposed change

Adds Tuya TRV _TZE284_ymldrmzx

Based on: https://github.com/Koenkk/zigbee-herdsman-converters/blob/db7595cf52b55ff47c2132d0952d7444cc0f1b91/src/devices/tuya.ts#L5295

Closes: #3797

Additional information

Checklist

  • The changes are tested and work correctly
  • pre-commit checks pass / the code has been formatted using Black
  • Tests have been added to verify that the new code works

Copy link

codecov bot commented Feb 1, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 90.97%. Comparing base (bd9ecbb) to head (8266719).
Report is 3 commits behind head on dev.

Additional details and impacted files
@@           Coverage Diff           @@
##              dev    #3819   +/-   ##
=======================================
  Coverage   90.96%   90.97%           
=======================================
  Files         327      327           
  Lines       10606    10615    +9     
=======================================
+ Hits         9648     9657    +9     
  Misses        958      958           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@tomblu88
Copy link

tomblu88 commented Feb 1, 2025

Thanks @prairiesnpr!
I'm getting an error:

Logger: zhaquirks
Source: /usr/local/lib/python3.13/site-packages/zhaquirks/__init__.py:481
First occurred: 21:59:37 (1 occurrences)
Last logged: 21:59:37

Unexpected exception importing custom quirk 'tuya_trv'
Traceback (most recent call last):
  File "/usr/local/lib/python3.13/site-packages/zhaquirks/__init__.py", line 479, in setup
    spec.loader.exec_module(module)
    ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "<frozen importlib._bootstrap_external>", line 1022, in exec_module
  File "<frozen importlib._bootstrap>", line 488, in _call_with_frames_removed
  File "/config/zha_quirks/tuya_trv.py", line 555, in <module>
    .tuya_enchantment()
     ^^^^^^^^^^^^^^^^
AttributeError: 'TuyaQuirkBuilder' object has no attribute 'tuya_enchantment'

@prairiesnpr
Copy link
Collaborator Author

tuya_enchantment was added in 2025.2, z2m had it, but they seem to add it to everything. Try commenting it out and see if it works or install the beta.

@tomblu88
Copy link

tomblu88 commented Feb 1, 2025

I removed this line and now it works!
Thank you so much!!!!

@tomblu88
Copy link

tomblu88 commented Feb 3, 2025

@prairiesnpr something is wrong.
It is causing my ZHA integration to crash.

This is what I have in my configuration.yaml:

zha:
  database_path: /config/zigbee.db
  enable_quirks: true
  custom_quirks_path: /config/zha_quirks/

Here are the errors I'm getting:

Logger: zigpy.zcl
Source: runner.py:154
First occurred: 2 February 2025 at 20:14:51 (2 occurrences)
Last logged: 2 February 2025 at 20:17:21

[0x1DF8:1:0x0500] Traceback (most recent call last): File "/usr/local/lib/python3.13/site-packages/zigpy/device.py", line 378, in request await send_request() File "/usr/local/lib/python3.13/site-packages/zigpy/application.py", line 835, in request await self.send_packet( ...<14 lines>... ) File "/usr/local/lib/python3.13/site-packages/bellows/zigbee/application.py", line 857, in send_packet raise zigpy.exceptions.DeliveryError( f"Failed to deliver message: {send_status!r}", send_status ) zigpy.exceptions.DeliveryError: Failed to deliver message: <sl_Status.ZIGBEE_DELIVERY_FAILED: 3074> The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/lib/python3.13/site-packages/zha/zigbee/cluster_handlers/__init__.py", line 84, in wrapper with wrap_zigpy_exceptions(): ~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/local/lib/python3.13/contextlib.py", line 162, in __exit__ self.gen.throw(value) ~~~~~~~~~~~~~~^^^^^^^ File "/usr/local/lib/python3.13/site-packages/zha/zigbee/cluster_handlers/__init__.py", line 76, in wrap_zigpy_exceptions raise ZHAException(message) from exc zha.exceptions.ZHAException: Failed to send request: Failed to deliver message: <sl_Status.ZIGBEE_DELIVERY_FAILED: 3074>
[0x839A:1:0x0500] Traceback (most recent call last): File "/usr/local/lib/python3.13/site-packages/zigpy/device.py", line 378, in request await send_request() File "/usr/local/lib/python3.13/site-packages/zigpy/application.py", line 835, in request await self.send_packet( ...<14 lines>... ) File "/usr/local/lib/python3.13/site-packages/bellows/zigbee/application.py", line 857, in send_packet raise zigpy.exceptions.DeliveryError( f"Failed to deliver message: {send_status!r}", send_status ) zigpy.exceptions.DeliveryError: Failed to deliver message: <sl_Status.ZIGBEE_DELIVERY_FAILED: 3074> The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/lib/python3.13/site-packages/zha/zigbee/cluster_handlers/__init__.py", line 84, in wrapper with wrap_zigpy_exceptions(): ~~~~~~~~~~~~~~~~~~~~~^^ File "/usr/local/lib/python3.13/contextlib.py", line 162, in __exit__ self.gen.throw(value) ~~~~~~~~~~~~~~^^^^^^^ File "/usr/local/lib/python3.13/site-packages/zha/zigbee/cluster_handlers/__init__.py", line 76, in wrap_zigpy_exceptions raise ZHAException(message) from exc zha.exceptions.ZHAException: Failed to send request: Failed to deliver message: <sl_Status.ZIGBEE_DELIVERY_FAILED: 3074>` 

`Logger: homeassistant.config_entries
Source: config_entries.py:640
First occurred: 13:10:07 (1 occurrences)
Last logged: 13:10:07

Error setting up entry Socket://[MyGatewayIP]:8888 for zha
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 640, in __async_setup_with_context
    result = await component.async_setup_entry(hass, self)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/zha/__init__.py", line 132, in async_setup_entry
    async with radio_mgr.connect_zigpy_app() as app:
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/usr/local/lib/python3.13/contextlib.py", line 214, in __aenter__
    return await anext(self.gen)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/zha/radio_manager.py", line 182, in connect_zigpy_app
    app = await self.radio_type.controller.new(
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        app_config, auto_form=False, start_radio=False
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  File "/usr/local/lib/python3.13/site-packages/zigpy/application.py", line 239, in new
    await app._load_db()
  File "/usr/local/lib/python3.13/site-packages/zigpy/application.py", line 111, in _load_db
    await self._dblistener.load()
  File "/usr/local/lib/python3.13/site-packages/zigpy/appdb.py", line 684, in load
    device = zigpy.quirks.get_device(device)
  File "/usr/local/lib/python3.13/site-packages/zigpy/quirks/__init__.py", line 43, in get_device
    return _DEVICE_REGISTRY.get_device(device)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
  File "/usr/local/lib/python3.13/site-packages/zigpy/quirks/registry.py", line 125, in get_device
    raise MultipleQuirksMatchException(
        f"Multiple matches found for device {device}: {matches}"
    )
zigpy.exceptions.MultipleQuirksMatchException: Multiple matches found for device <Device model='TS0601' manuf='_TZE284_ymldrmzx' nwk=0x022E ieee=a4:c1:38:9b:9b:1e:9e:b7 is_initialized=True>: [QuirksV2RegistryEntry(quirk_file=PosixPath('/usr/local/lib/python3.13/site-packages/zhaquirks/tuya/builder/__init__.py'), quirk_file_line=75, manufacturer_model_metadata=(ManufacturerModelMetadata(manufacturer='_TZE284_ymldrmzx', model='TS0601'),), friendly_name=None, device_alerts=(), filters=(), custom_device_class=None, device_node_descriptor=None, skip_device_configuration=True, adds_metadata=(AddsMetadata(cluster=<class 'zhaquirks.tuya.TuyaPowerConfigurationCluster2AAA'>, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, constant_attributes=frozendict.frozendict({})), AddsMetadata(cluster=<class 'tuya_trv.TuyaThermostatV2'>, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, constant_attributes=frozendict.frozendict({}))), removes_metadata=(), replaces_metadata=(ReplacesMetadata(remove=RemovesMetadata(cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>), add=AddsMetadata(cluster=<class 'zhaquirks.tuya.builder.TuyaQuirkBuilder.add_to_registry.<locals>.TuyaReplacementCluster'>, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, constant_attributes=frozendict.frozendict({}))),), replaces_cluster_occurrences_metadata=(), entity_metadata=(SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='child_lock', fallback_name='Child lock', attribute_name='child_lock', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='window_detection', fallback_name='Open window detection', attribute_name='window_detection', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), BinarySensorMetadata(entity_platform=<EntityPlatform.BINARY_SENSOR: 'binary_sensor'>, entity_type=<EntityType.DIAGNOSTIC: 'diagnostic'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key=None, fallback_name='Window open', attribute_name='window_open', reporting_config=None, device_class=<BinarySensorDeviceClass.WINDOW: 'window'>), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='holiday_temperature', fallback_name='Holiday temperature', attribute_name='holiday_temperature', reporting_config=None, min=5, max=30, step=1, unit=<UnitOfTemperature.CELSIUS: '°C'>, mode=None, multiplier=None, device_class=None), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='frost_protection', fallback_name='Frost protection', attribute_name='frost_protection', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='scale_protection', fallback_name='Scale protection', attribute_name='scale_protection', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='boost_heating', fallback_name='Boost heating', attribute_name='boost_heating', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='boost_time', fallback_name='Boost time', attribute_name='boost_time', reporting_config=None, min=0, max=1000, step=1, unit=<UnitOfTime.MINUTES: 'min'>, mode=None, multiplier=None, device_class=None), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='holiday_mode', fallback_name='Holiday mode', attribute_name='holiday_mode', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), ZCLEnumMetadata(entity_platform=<EntityPlatform.SELECT: 'select'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='screen_orientation', fallback_name='Screen orientation', enum=<enum 'ScreenOrientation'>, attribute_name='screen_orientation', reporting_config=None), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='antifrost_temperature', fallback_name='Antifrost temperature', attribute_name='antifrost_temperature', reporting_config=None, min=5, max=30, step=1, unit=<UnitOfTemperature.CELSIUS: '°C'>, mode=None, multiplier=None, device_class=None), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='heating_stop', fallback_name='Heating stop', attribute_name='heating_stop', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='eco_temperature', fallback_name='Eco temperature', attribute_name='eco_temperature', reporting_config=None, min=5, max=30, step=1, unit=<UnitOfTemperature.CELSIUS: '°C'>, mode=None, multiplier=None, device_class=None), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='comfort_temperature', fallback_name='Comfort temperature', attribute_name='comfort_temperature', reporting_config=None, min=5, max=30, step=1, unit=<UnitOfTemperature.CELSIUS: '°C'>, mode=None, multiplier=None, device_class=None), ZCLSensorMetadata(entity_platform=<EntityPlatform.SENSOR: 'sensor'>, entity_type=<EntityType.STANDARD: 'standard'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='fault_code', fallback_name='Fault code', attribute_name='fault_code', reporting_config=None, divisor=1, multiplier=1, unit=None, device_class=None, state_class=None)), device_automation_triggers_metadata=frozendict.frozendict({})), QuirksV2RegistryEntry(quirk_file=PosixPath('/usr/local/lib/python3.13/site-packages/zhaquirks/tuya/builder/__init__.py'), quirk_file_line=75, manufacturer_model_metadata=(ManufacturerModelMetadata(manufacturer='_TZE284_ymldrmzx', model='TS0601'),), friendly_name=None, device_alerts=(), filters=(), custom_device_class=None, device_node_descriptor=None, skip_device_configuration=True, adds_metadata=(AddsMetadata(cluster=<class 'zhaquirks.tuya.TuyaPowerConfigurationCluster2AAA'>, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, constant_attributes=frozendict.frozendict({})), AddsMetadata(cluster=<class 'tuya_trv.TuyaThermostatV2'>, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, constant_attributes=frozendict.frozendict({}))), removes_metadata=(), replaces_metadata=(ReplacesMetadata(remove=RemovesMetadata(cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>), add=AddsMetadata(cluster=<class 'zhaquirks.tuya.builder.TuyaQuirkBuilder.add_to_registry.<locals>.TuyaReplacementCluster'>, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, constant_attributes=frozendict.frozendict({}))),), replaces_cluster_occurrences_metadata=(), entity_metadata=(SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='child_lock', fallback_name='Child lock', attribute_name='child_lock', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='window_detection', fallback_name='Open window detection', attribute_name='window_detection', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), BinarySensorMetadata(entity_platform=<EntityPlatform.BINARY_SENSOR: 'binary_sensor'>, entity_type=<EntityType.DIAGNOSTIC: 'diagnostic'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key=None, fallback_name='Window open', attribute_name='window_open', reporting_config=None, device_class=<BinarySensorDeviceClass.WINDOW: 'window'>), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='holiday_temperature', fallback_name='Holiday temperature', attribute_name='holiday_temperature', reporting_config=None, min=5, max=30, step=1, unit=<UnitOfTemperature.CELSIUS: '°C'>, mode=None, multiplier=None, device_class=None), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='frost_protection', fallback_name='Frost protection', attribute_name='frost_protection', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='scale_protection', fallback_name='Scale protection', attribute_name='scale_protection', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='boost_heating', fallback_name='Boost heating', attribute_name='boost_heating', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='boost_time', fallback_name='Boost time', attribute_name='boost_time', reporting_config=None, min=0, max=1000, step=1, unit=<UnitOfTime.MINUTES: 'min'>, mode=None, multiplier=None, device_class=None), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='holiday_mode', fallback_name='Holiday mode', attribute_name='holiday_mode', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), ZCLEnumMetadata(entity_platform=<EntityPlatform.SELECT: 'select'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='screen_orientation', fallback_name='Screen orientation', enum=<enum 'ScreenOrientation'>, attribute_name='screen_orientation', reporting_config=None), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='antifrost_temperature', fallback_name='Antifrost temperature', attribute_name='antifrost_temperature', reporting_config=None, min=5, max=30, step=1, unit=<UnitOfTemperature.CELSIUS: '°C'>, mode=None, multiplier=None, device_class=None), SwitchMetadata(entity_platform=<EntityPlatform.SWITCH: 'switch'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='heating_stop', fallback_name='Heating stop', attribute_name='heating_stop', reporting_config=None, force_inverted=False, invert_attribute_name=None, off_value=0, on_value=1), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='eco_temperature', fallback_name='Eco temperature', attribute_name='eco_temperature', reporting_config=None, min=5, max=30, step=1, unit=<UnitOfTemperature.CELSIUS: '°C'>, mode=None, multiplier=None, device_class=None), NumberMetadata(entity_platform=<EntityPlatform.NUMBER: 'number'>, entity_type=<EntityType.CONFIG: 'config'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='comfort_temperature', fallback_name='Comfort temperature', attribute_name='comfort_temperature', reporting_config=None, min=5, max=30, step=1, unit=<UnitOfTemperature.CELSIUS: '°C'>, mode=None, multiplier=None, device_class=None), ZCLSensorMetadata(entity_platform=<EntityPlatform.SENSOR: 'sensor'>, entity_type=<EntityType.STANDARD: 'standard'>, cluster_id=61184, endpoint_id=1, cluster_type=<ClusterType.Server: 0>, initially_disabled=False, attribute_initialized_from_cache=True, translation_key='fault_code', fallback_name='Fault code', attribute_name='fault_code', reporting_config=None, divisor=1, multiplier=1, unit=None, device_class=None, state_class=None)), device_automation_triggers_metadata=frozendict.frozendict({}))]

@prairiesnpr
Copy link
Collaborator Author

That's a known bug that's fixed in 2025.2, there is a closed incident in ZHA that has a workaround or you can install the beta and you would be good.

@TheJulianJES TheJulianJES added the Tuya Request/PR regarding a Tuya device label Feb 6, 2025
@tomblu88
Copy link

tomblu88 commented Feb 9, 2025

I found another error.
'.tuya_number(
dp_id=21,'
Is mapped twice.

Thanks!

@prairiesnpr prairiesnpr force-pushed the add-_TZE284_ymldrmzx branch 3 times, most recently from 00ec6dd to 9068348 Compare February 13, 2025 22:17
@TheJulianJES TheJulianJES merged commit ff5bf0b into zigpy:dev Feb 24, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Tuya Request/PR regarding a Tuya device
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Device Support Request] - Please add support for TS0601_TZE284_ymldrmzx TRV
3 participants