Hama Smart Radiator Termostat

I cannot find any entities on my Hama Smart Radiator Thermostat!
No problem adding the device to zha. But no entities are visible in zha. According to Hama Smart Radiator Thermostat 00176592 Zigbee compatibility info, the thermostat should work with zha and support battery, thermostat and temperature. So I guess I should get three entities.
Also gets an error code in the log: WARNING (MainThread) [zigpy.zcl] [0xc3df: 1: 0xef00] Unknown cluster-specific command 1.
Anyone have any idea what I’m doing wrong?

2 Likes

Did you get it to work?

Hi,
Yes, I followed MattWestb comments:

Added the file thermostat_88teujp.py.
And added:

# Termostat quirk
zha:
  custom_quirks_path: /config/custom_zha_quirks/

in the configuration.yaml

1 Like

Can you give a total noob a hint how to add the devices to zha? I have no idea what to choose while setting up, what serial path to choose or use…and i honestly find no information about it. If you could give me a some advice it would be much appreciated :slight_smile:

2 Likes

Hello there!

I have problems setting up the Hama Smart Thermostats in Home Assitant as well.

My Home Assistant is set up on a raspberry pi 4 with a Conbee II USB dongle for zigbee support.

First I bought one thermostat just to test it and had no trouble setting it up through the Conbee II integration. All entities are there and I can use it as intended.

After some time testing I bought two more thermostats and I can pair them but they have no entities :frowning:

I tried installing the custom quirk the same way as @mhogberg did, but after restarting HA all my zigbee devices become unresponsive and I am getting the following error log:

Logger: homeassistant.config_entries
Source: custom_zha_quirks/thermostat_88teujp.py:51
First occurred: 15:15:53 (1 occurrences)
Last logged: 15:15:53

Error setting up entry ConBee II for zha
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 372, in async_setup
    result = await component.async_setup_entry(hass, self)
  File "/usr/src/homeassistant/homeassistant/components/zha/__init__.py", line 100, in async_setup_entry
    setup_quirks(config)
  File "/usr/local/lib/python3.10/site-packages/zhaquirks/__init__.py", line 409, in setup
    importer.find_module(modname).load_module(modname)
  File "<frozen importlib._bootstrap_external>", line 548, in _check_name_wrapper
  File "<frozen importlib._bootstrap_external>", line 1063, in load_module
  File "<frozen importlib._bootstrap_external>", line 888, in load_module
  File "<frozen importlib._bootstrap>", line 290, in _load_module_shim
  File "<frozen importlib._bootstrap>", line 719, in _load
  File "<frozen importlib._bootstrap>", line 688, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/config/custom_zha_quirks/thermostat_88teujp.py", line 51, in <module>
    class ManufacturerThermostatCluster(TuyaManufClusterAttributes):
  File "/usr/local/lib/python3.10/site-packages/zigpy/zcl/__init__.py", line 84, in __init_subclass__
    raise TypeError(
TypeError: `manufacturer_attributes` is deprecated. Copy the parent class's `attributes` dictionary and update it with your manufacturer-specific `attributes`. Make sure to specify that it is manufacturer-specific through the  appropriate constructor or tuple!

The thermostats also have different signatures. This working one looks like this:

{
  "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": "0x0301",
      "in_clusters": [
        "0x0000",
        "0x0001",
        "0x0004",
        "0x0005",
        "0x0201",
        "0xef00"
      ],
      "out_clusters": [
        "0x000a",
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TZE200_yw7cahqs",
  "model": "TS0601",
  "class": "zhaquirks.tuya.ts0601_trv_sas.Thermostat_TZE200_c88teujp"
}

while the non-working ones look like this:

{
  "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=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, 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_h4cgnbzg",
  "model": "TS0601",
  "class": "zigpy.device.Device"
}

Is there any solution to this matter?