question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[Device Support Request] TS0601 _TZE200_hue3yfsn / TV02 Zigbee TRV

See original GitHub issue

Is your feature request related to a problem? Please describe. I bought this thermostat from AliExpress. It’s possible to pair with ZHA, but no entities are exposed.

Describe the solution you’d like Ideally, I’d like to control all settings these Tuya based thermostats have. I know that Zigbee2MQTT seems to be able to do that (Source)

Device signature

  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0051",
      "in_clusters": [
        "0x0000",
        "0x0004",
        "0x0005",
        "0xef00"
      ],
      "out_clusters": [
        "0x000a",
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TZE200_hue3yfsn",
  "model": "TS0601",
  "class": "zigpy.device.Device"
}

Additional context The thermostat has no branding whatsoever (neither the device itself, nor the packaging material), I can’t tell who is the actual manufacturer. In the included manual it’s refered to as TV02 Zigbee Thermostat Radiator Valve I bought it from this link: AliExpress

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:118 (60 by maintainers)

github_iconTop GitHub Comments

7reactions
rforrocommented, Feb 19, 2022

Great new guys I’ve finally cracked the online mode! Now I’m are able to set the device into online mode, where it for ca. 1 minute constantly publishes all values including current temperature.

The code will follow in short.

EDIT code is here you can test it. I’ve created a third on/off switch, because we cannot use HA button entity, which is shame. To better distinguish this on from the others, it has reverse polarity. It’s constantly in ON-State and by switching it to OFF-State you’ll actually activate the online mode. Then, after few seconds, the switch goes back to ON-State, so you can active the online mode again. You can also keep the device in online mode, just keep turning the switch to OFF-State, you cannot deactivate the online mode in TRV. It will expire automatically 1 minute after last online command was sent.

NOTE this will consume your battery, so use it only from time to time.

ts0601_trv.zip

6reactions
rforrocommented, Nov 8, 2021

I was able to implement: - heating operation off/heat - present manual/schedule/holiday - opened window detection - child lock - fault (not able to test) - temperature offset

Clipboard01

Probably this TRV will be needing its own class because I can’t test it with original ZONNSMART. The behaviour like ability to turn it off is missing on most devices like SITERWELL or LIDL.

Unique behaviour of this TRV:

###Off You can turn this TRV off, by setting ZONNSMART_HEATING_STOPPING = 0x016B to 1. On the TRV will be show HS (heating stopped) and you can’t do anything till you deactivate it.

###Present Manual and Schedule works like expected but holiday mode cannot be started by selecting the mode. It only shows the holiday mode temperature and after 5sec it switches back to schedule mode. (FYI holiday mode is activated automatically by setting begin and end timestamp = not implemented)

###Frost Protection (not implemeted) I don’t know how to implement this one, because it’s like one of those Present Modes. After setting ZONNSMART_FROST_PROTECT_ATTR = 0x010a attribute, on TRV will be shown AF (antifreeze), it sets temperature to 8 degrees and you cannot do anything until you disable this.

###Don’t publishes room temperature This TRV never publishes room temperature, it has to be manually requested. Currently the only way is to set temperature offset (even with 0), after that the room temperature will be published.

If someone will test it, here is the quirk: valve.zip but for presets to work, you have to add to /components/zha/climate.py following lines:

@STRICT_MATCH(
    channel_names=CHANNEL_THERMOSTAT,
    manufacturers={
        "_TZE200_hue3yfsn",
        },
)

class ZONNSMARTThermostat(Thermostat):
    """ZONNSMART Thermostat implementation"""
    def __init__(self, unique_id, zha_device, channels, **kwargs):
        """Initialize ZHA Thermostat instance."""
        super().__init__(unique_id, zha_device, channels, **kwargs)
            self._presets = [
            PRESET_SCHEDULE,
            PRESET_NONE,
            PRESET_AWAY,
        ]
        self._supported_flags |= SUPPORT_PRESET_MODE

    async def async_attribute_updated(self, record):
        """Handle attribute update from device."""
        if record.attr_name == "operation_preset":
            if record.value == 0:
                self._preset = PRESET_SCHEDULE
            if record.value == 1:
                self._preset = PRESET_NONE
            if record.value == 3:
                self._preset = PRESET_AWAY
        await super().async_attribute_updated(record)

    async def async_preset_handler(self, preset: str, enable: bool = False) -> bool:
        """Set the preset mode."""
        mfg_code = self._zha_device.manufacturer_code
        if not enable:
            return await self._thrm.write_attributes(
                {"operation_preset": 1}, manufacturer=mfg_code
            )
        if preset == PRESET_SCHEDULE:
            return await self._thrm.write_attributes(
                {"operation_preset": 0}, manufacturer=mfg_code
            )
        if preset == PRESET_AWAY:
            return await self._thrm.write_attributes(
                {"operation_preset": 3}, manufacturer=mfg_code
            )
        return False
Read more comments on GitHub >

github_iconTop Results From Across the Web

[Device Support Request] TS0601 _TZE200_hue3yfsn / TV02 ...
Without this change, I tried to add the model info to all thermostat classes that match the signature of this TRV, but none...
Read more >
Moes Zigbee Smart Valve TS0601 in Home Assistant - YouTube
Very simple and easy to install and use device that will allow you to control heating in every room of your home (if...
Read more >
Struggling Homeassistant Zigbee Home Automation Conbee 2
[Device Support Request] TS0601 _TZE200_hue3yfsn / TV02 Zigbee TRV · Issue #1027 · zigpy/zha-device-handlers · GitHub · Status of tuya TRVs ...
Read more >
Support new TuYa devices - Zigbee2MQTT
In order to provide support for E.G. the TS0601 model ID you would create the following ... const tuya = require('zigbee-herdsman-converters/lib/tuya'); ...
Read more >
Adding a Zigbee Smart Thermostatic radiator valve to Home ...
In the past, we have used a basic manual-controlled TRV on the loft radiator, which runs from our gas-fired central heating system with...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found