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] Improving "TS0601" "_TZE200_b6wax7g0" TRV thermostatic radiator valve

See original GitHub issue

Hello, (I didn’t know where I should post, so feel free to merge with the relevant subject if there is one in particular, maybe in the discussions, I don’t know.) I bought a dozen of these TRV (on Amazon.fr, Qiumi brand) to install in my house : https://zigbee.blakadder.com/Beca_BRT-100.html I chose them because I looked at the blackladder page and saw it was supported in ZHA (and Zigbee2MQTT) In reality it’s not the case for all parameters (battery, child lock, window detection)

I used custom_zha_quirk ts0601_trv.py (dated 2021-09-22) “ts0601_trv.MoesHY368_Type1new”

There are 3 entities :

  • Thermostat (Temperature set and sensed in 1°C increments (0.5°C increments on the valve… even if 0.1°C would be more useful for the temperature sensor))
  • on/off switch (I did play with it but don’t understand what is it for)
  • power (unkwnown value, maybe updated only when battery voltage is below 1.8V)

I didn’t want to install Tuya app on my phone to check if these others parameters are supported, but if the user manual is correct, on the image shown, you can see :

  • battery percentage
  • countdown for the duration of boost heating
  • the mode (Auto / Manual / TempHand(?) / Holidays)
  • weekly programming

On the valve, you can also see if it’s open or closed (just a LED, it’s binary), in reality I counted a minimum of 5 positions of the motor (maybe 0%, 25%, 50%, 75%, 100%), this would be really cool if the position was published ! (even more if we could force a position)

Other settings exists in the documentation, you can change or check them in the valve menus :

  • Temperature compensation (-9 to +9°C)
  • Window open detection temperature drop / time
  • Min setting temp (5°C to 15°C)
  • Max setting temp (15°C to 35°C)
  • Boost heating coutdown (100s to 900s)
  • Dead zone (0.5°C to 5°C)
  • Energy saving mode / temp
  • Low temp protection (0°C to 5°C)
  • Standby screen brightness
  • Factory reset
  • Version number

Pairing log :

[0x0000:zdo] ZDO request ZDOCmd.Mgmt_Permit_Joining_req: [60, <Bool.false: 0>]
[0xf01e] Delivery error for seq # 0x65, on endpoint id 0 cluster 0x0034: message send failure
Sending 'zdo_leave_req' failed: [0xf01e:0:0x0034]: Message send failure
Device 0xc7f4 (84:fd:27:ff:fe:a5:a9:fb) joined the network
[0xc7f4] Requesting 'Node Descriptor'
Tries remaining: 2
[0xc7f4] Extending timeout for 0x6a request
Device 0xc7f4 (84:fd:27:ff:fe:a5:a9:fb) joined the network
Skip initialization for existing device 84:fd:27:ff:fe:a5:a9:fb
Device 0xc7f4 (84:fd:27:ff:fe:a5:a9:fb) joined the network
Skip initialization for existing device 84:fd:27:ff:fe:a5:a9:fb
[0xc7f4:zdo] ZDO request ZDOCmd.Device_annce: [0xC7F4, 84:fd:27:ff:fe:a5:a9:fb, 128]
[0xc7f4] Node Descriptor: NodeDescriptor(byte1=2, byte2=64, mac_capability_flags=128, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=0, *allocate_address=True, *complex_descriptor_available=False, *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, *is_valid=True, *logical_type=<LogicalType.EndDevice: 2>, *user_descriptor_available=False)
[0xc7f4] Discovering endpoints
Tries remaining: 3
[0xc7f4] Extending timeout for 0x6c request
[0xc7f4] Discovered endpoints: [1]
[0xc7f4:1] Discovering endpoint information
Tries remaining: 3
[0xc7f4] Extending timeout for 0x6e request
[0xc7f4:1] Discovered endpoint information: SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=81, device_version=1, input_clusters=[0, 4, 5, 61184], output_clusters=[25, 10])
Unknown cluster 61184
[0xc7f4] Extending timeout for 0x70 request
[0xc7f4:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=112 command_id=Command.Read_Attributes_rsp>
[0xc7f4:1] Manufacturer: _TZE200_b6wax7g0
[0xc7f4:1] Model: TS0601
Checking quirks for _TZE200_b6wax7g0 TS0601 (84:fd:27:ff:fe:a5:a9:fb)
Considering <class 'ts0601_trv.MoesHY368_Type1new'>
Found custom device replacement for 84:fd:27:ff:fe:a5:a9:fb: <class 'ts0601_trv.MoesHY368_Type1new'>
device - 0xC7F4:84:fd:27:ff:fe:a5:a9:fb entering async_device_initialized - is_new_join: True
device - 0xC7F4:84:fd:27:ff:fe:a5:a9:fb has joined the ZHA zigbee network
[0xC7F4](TS0601): started configuration
[0xC7F4:ZDO](TS0601): 'async_configure' stage succeeded
[0xC7F4:1:0x0201]: bound 'thermostat' cluster: Status.SUCCESS
[0xC7F4:1:0x0201]: attr reporting for '{'local_temp': (30, 900, 25), 'occupied_cooling_setpoint': (30, 900, 25), 'occupied_heating_setpoint': (30, 900, 25), 'unoccupied_cooling_setpoint': (30, 900, 25)}' on 'thermostat': ConfigureReportingResponseRecord(status=0)
[0xC7F4:1:0x0201]: attr reporting for '{'unoccupied_heating_setpoint': (30, 900, 25), 'running_mode': (30, 900, 25), 'running_state': (30, 900, 5), 'system_mode': (30, 900, 25)}' on 'thermostat': ConfigureReportingResponseRecord(status=0)
[0xC7F4:1:0x0201]: attr reporting for '{'occupancy': (30, 900, 1), 'pi_cooling_demand': (30, 900, 5), 'pi_heating_demand': (30, 900, 5)}' on 'thermostat': ConfigureReportingResponseRecord(status=0)
[0xC7F4:1:0x0201]: finished channel configuration
[0xC7F4:1:0x0006]: bound 'on_off' cluster: Status.SUCCESS
[0xC7F4:1:0x0006]: reporting 'on_off' attr on 'on_off' cluster: 0/900/1: Result: '[ConfigureReportingResponseRecord(status=0)]'
[0xC7F4:1:0x0000]: finished channel configuration
[0xC7F4:1:0x0001]: bound 'power' cluster: Status.SUCCESS
[0xC7F4:1:0x0001]: reporting 'battery_voltage' attr on 'power' cluster: 3600/10800/1: Result: '[ConfigureReportingResponseRecord(status=0)]'
[0xC7F4:1:0x0019]: finished channel configuration
[0xC7F4:1:0x0201]: 'async_configure' stage succeeded
[0xC7F4:1:0x0006]: 'async_configure' stage failed: 'ConfigureReportingResponseRecord' object is not subscriptable
[0xC7F4:1:0x0000]: 'async_configure' stage succeeded
[0xC7F4:1:0x0001]: 'async_configure' stage failed: 'ConfigureReportingResponseRecord' object is not subscriptable
[0xC7F4:1:0x0019]: 'async_configure' stage succeeded
[0xC7F4](TS0601): completed configuration
[0xC7F4](TS0601): stored in registry: ZhaDeviceEntry(name='_TZE200_b6wax7g0 TS0601', ieee='84:fd:27:ff:fe:a5:a9:fb', last_seen=1635928619.9460387)
[0xC7F4](TS0601): started initialization
[0xC7F4:ZDO](TS0601): 'async_initialize' stage succeeded
[0xC7F4:1:0x0201]: initializing channel: from_cache: False
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[system_mode] = SystemMode.Heat
[0xC7F4:1:0x0201]: read attributes: Success: {}. Failed: {'abs_min_heat_setpoint_limit': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'abs_max_heat_setpoint_limit': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'abs_min_cool_setpoint_limit': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'abs_max_cool_setpoint_limit': <Status.UNSUPPORTED_ATTRIBUTE: 134>}
[0xC7F4:1:0x0201]: read attributes: Success: {}. Failed: {'max_cool_setpoint_limit': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'max_heat_setpoint_limit': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'min_cool_setpoint_limit': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'min_heat_setpoint_limit': <Status.UNSUPPORTED_ATTRIBUTE: 134>}
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[ctrl_seqe_of_oper] = ControlSequenceOfOperation.Heating_Only
[0xC7F4:1:0x0201]: read attributes: Success: {'ctrl_seqe_of_oper': <ControlSequenceOfOperation.Heating_Only: 2>}. Failed: {'local_temp': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'occupancy': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'occupied_cooling_setpoint': <Status.UNSUPPORTED_ATTRIBUTE: 134>}
[0xC7F4:1:0x0201]: read attributes: Success: {}. Failed: {'occupied_heating_setpoint': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'pi_cooling_demand': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'pi_heating_demand': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'running_mode': <Status.UNSUPPORTED_ATTRIBUTE: 134>}
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[system_mode] = SystemMode.Heat
[0xC7F4:1:0x0201]: read attributes: Success: {'system_mode': <SystemMode.Heat: 4>}. Failed: {'running_state': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'unoccupied_heating_setpoint': <Status.UNSUPPORTED_ATTRIBUTE: 134>, 'unoccupied_cooling_setpoint': <Status.UNSUPPORTED_ATTRIBUTE: 134>}
[0xC7F4:1:0x0201]: finished channel configuration
[0xC7F4:1:0x0006]: initializing channel: from_cache: False
[0xC7F4:1:0x0006]: finished channel configuration
[0xC7F4:1:0x0000]: initializing channel: from_cache: False
[0xC7F4:1:0x0000]: finished channel configuration
[0xC7F4:1:0x0001]: initializing channel: from_cache: False
[0xC7F4:1:0x0001]: finished channel configuration
[0xC7F4:1:0x0019]: initializing channel: from_cache: False
[0xC7F4:1:0x0019]: finished channel configuration
[0xC7F4:1:0x0201]: 'async_initialize' stage succeeded
[0xC7F4:1:0x0006]: 'async_initialize' stage succeeded
[0xC7F4:1:0x0000]: 'async_initialize' stage succeeded
[0xC7F4:1:0x0001]: 'async_initialize' stage succeeded
[0xC7F4:1:0x0019]: 'async_initialize' stage succeeded
[0xC7F4](TS0601): power source: Battery or Unknown
[0xC7F4](TS0601): completed initialization
[0xC7F4:1:0x0006]: attempting to update onoff state - from cache: True
[0xc7f4:zdo] ZDO request ZDOCmd.Node_Desc_req: [0x0000]
[0xc7f4:zdo] Unsupported ZDO request:ZDOCmd.Node_Desc_req
[0xc7f4:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=38 command_id=Command.Report_Attributes>
[0xc7f4:1:0x0000] ZCL request 0x000a: [[Attribute(attrid=1, value=<TypeValue type=uint8_t, value=64>), Attribute(attrid=65506, value=<TypeValue type=uint8_t, value=31>), Attribute(attrid=65508, value=<TypeValue type=uint8_t, value=0>)]]
[0xc7f4:1:0x0000] Attribute report received: app_version=64, 65506=31, 65508=0
[0x6599:11:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=40 command_id=Command.Report_Attributes>
[0x6599:11:0x0000] ZCL request 0x000a: [[Attribute(attrid=1, value=<TypeValue type=uint8_t, value=66>)]]
[0x6599:11:0x0000] Attribute report received: app_version=66
[0xc7f4:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=39 command_id=Command.Report_Attributes>
[0xc7f4:1:0x0000] ZCL request 0x000a: [[Attribute(attrid=65503, value=<TypeValue type=CharacterString, value=5)T)U)>)]]
[0xc7f4:1:0x0000] Attribute report received: 65503=5)T)U)
[0xc7f4:1:0x000a] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=False disable_default_response=False> manufacturer=None tsn=40 command_id=Command.Read_Attributes>
[0xc7f4:1:0x000a] ZCL request 0x0000: [[7]]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=41 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=155, command_id=1025, function=0, data=[1, 1])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=42 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=156, command_id=514, function=0, data=[4, 0, 0, 0, 15])]
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[occupied_heating_setpoint] = 1500
climate.tze200_b6wax7g0_ts0601_fba9a5fe_thermostat: Attribute 'occupied_heating_setpoint' = 1500 update
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=43 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=157, command_id=515, function=0, data=[4, 0, 0, 0, 180])]
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[local_temp] = 1800
climate.tze200_b6wax7g0_ts0601_fba9a5fe_thermostat: Attribute 'local_temp' = 1800 update
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=44 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=158, command_id=260, function=0, data=[1, 0])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=45 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=159, command_id=517, function=0, data=[4, 0, 0, 0, 0])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=46 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=160, command_id=1031, function=0, data=[1, 1])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=47 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=161, command_id=264, function=0, data=[1, 0])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=48 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=162, command_id=1033, function=0, data=[1, 1])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=49 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=163, command_id=269, function=0, data=[1, 0])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=50 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=164, command_id=526, function=0, data=[4, 0, 0, 0, 58])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=51 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=165, command_id=101, function=0, data=[36, 6, 0, 40, 11, 30, 42, 13, 30, 44, 17, 30, 46, 6, 0, 48, 12, 0, 46, 14, 30, 44, 17, 30, 42, 6, 0, 38, 12, 30, 40, 14, 30, 42, 18, 30, 40])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=52 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=166, command_id=615, function=0, data=[4, 0, 0, 1, 44])]
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[max_heat_setpoint_limit] = 30000
climate.tze200_b6wax7g0_ts0601_fba9a5fe_thermostat: Attribute 'max_heat_setpoint_limit' = 30000 update
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=53 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=167, command_id=616, function=0, data=[4, 0, 0, 0, 0])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=54 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=168, command_id=617, function=0, data=[4, 0, 0, 0, 0])]
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[boost_duration_seconds] = 0
climate.tze200_b6wax7g0_ts0601_fba9a5fe_thermostat: Attribute 'boost_duration_seconds' = 0 update
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=55 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=169, command_id=362, function=0, data=[1, 0])]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=56 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=170, command_id=619, function=0, data=[4, 0, 0, 0, 20])]
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[comfort_heating_setpoint] = 2000
climate.tze200_b6wax7g0_ts0601_fba9a5fe_thermostat: Attribute 'comfort_heating_setpoint' = 2000 update
[0xae6a:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=97 command_id=Command.Report_Attributes>
[0xae6a:1:0x0000] ZCL request 0x000a: [[Attribute(attrid=1, value=<TypeValue type=uint8_t, value=69>)]]
[0xae6a:1:0x0000] Attribute report received: app_version=69
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=57 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=171, command_id=620, function=0, data=[4, 0, 0, 0, 45])]
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[eco_heating_setpoint] = 4500
climate.tze200_b6wax7g0_ts0601_fba9a5fe_thermostat: Attribute 'eco_heating_setpoint' = 4500 update
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=58 command_id=1>
[0xc7f4:1:0xef00] ZCL request 0x0001: [Command(status=0, tsn=172, command_id=621, function=0, data=[4, 0, 0, 0, 5])]
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[valve_open_percentage] = 5
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[running_mode] = RunningMode.Heat
[0xC7F4:1:0x0201]: Attribute report 'MoesThermostatNew'[running_state] = RunningState.Heat_State_On
climate.tze200_b6wax7g0_ts0601_fba9a5fe_thermostat: Attribute 'valve_open_percentage' = 5 update
climate.tze200_b6wax7g0_ts0601_fba9a5fe_thermostat: Attribute 'running_mode' = RunningMode.Heat update
climate.tze200_b6wax7g0_ts0601_fba9a5fe_thermostat: Attribute 'running_state' = RunningState.Heat_State_On update
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=59 command_id=36>
[0xc7f4:1:0xef00] ZCL request 0x0024: [[0, 155]]
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=True is_reply=True disable_default_response=False> manufacturer=4098 tsn=135 command_id=Command.Default_Response>
[0x05a5:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=35 command_id=Command.Report_Attributes>
[0x05a5:1:0x0000] ZCL request 0x000a: [[Attribute(attrid=1, value=<TypeValue type=uint8_t, value=69>)]]
[0x05a5:1:0x0000] Attribute report received: app_version=69
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=60 command_id=17>
[0xc7f4:1:0xef00] Unknown cluster-specific command 17
[0xc7f4:1:0xef00] ZCL request 0x0011: b'\x00\x9c@'
[0xc7f4:1:0xef00] No handler for cluster command 17
[0xc7f4:1:0xef00] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=CLUSTER_COMMAND manufacturer_specific=False is_reply=True disable_default_response=False> manufacturer=None tsn=60 command_id=17>
[0xc7f4:1:0xef00] Unknown cluster-specific command 17
[0xc7f4:1:0xef00] ZCL request 0x0011: b'\x00\x9c@'
[0xc7f4:1:0xef00] No handler for cluster command 17
[0x8e5a:3:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=23 command_id=Command.Report_Attributes>
[0x8e5a:3:0x0006] ZCL request 0x000a: [[Attribute(attrid=0, value=<TypeValue type=Bool, value=Bool.false>)]]
[0x8e5a:3:0x0006] Attribute report received: on_off=0
[0xeb95:11:0x0006] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=80 command_id=Command.Report_Attributes>
[0xeb95:11:0x0006] ZCL request 0x000a: [[Attribute(attrid=0, value=<TypeValue type=Bool, value=Bool.false>)]]
[0xeb95:11:0x0006] Attribute report received: on_off=0
[0xb2d6:1:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=120 command_id=Command.Report_Attributes>
[0xb2d6:1:0x0000] ZCL request 0x000a: [[Attribute(attrid=1, value=<TypeValue type=uint8_t, value=69>)]]
[0xb2d6:1:0x0000] Attribute report received: app_version=69
[0xff60:11:0x0000] ZCL deserialize: <ZCLHeader frame_control=<FrameControl frame_type=GLOBAL_COMMAND manufacturer_specific=False is_reply=True disable_default_response=True> manufacturer=None tsn=126 command_id=Command.Report_Attributes>
[0xff60:11:0x0000] ZCL request 0x000a: [[Attribute(attrid=1, value=<TypeValue type=uint8_t, value=66>)]]
[0xff60:11:0x0000] Attribute report received: app_version=66

Device signature :

{
  "node_descriptor": "NodeDescriptor(byte1=2, byte2=64, mac_capability_flags=128, manufacturer_code=4098, maximum_buffer_size=82, maximum_incoming_transfer_size=82, server_mask=11264, maximum_outgoing_transfer_size=82, descriptor_capability_field=0, *allocate_address=True, *complex_descriptor_available=False, *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, *is_valid=True, *logical_type=<LogicalType.EndDevice: 2>, *user_descriptor_available=False)",
  "endpoints": {
    "1": {
      "profile_id": 260,
      "device_type": "0x0301",
      "in_clusters": [
        "0x0000",
        "0x0001",
        "0x0004",
        "0x0005",
        "0x0006",
        "0x0201",
        "0x0204",
        "0xef00"
      ],
      "out_clusters": [
        "0x000a",
        "0x0019"
      ]
    }
  },
  "manufacturer": "_TZE200_b6wax7g0",
  "model": "TS0601",
  "class": "ts0601_trv.MoesHY368_Type1new"
}

I don’t kow zigbee, and don’t know how I can help, but here is the information I can get. I can test anything to get more information, or modified quirks …

I don’t mind if it breaks temporarily my house heating (I have only two of these valves installed for now)

Issue Analytics

  • State:open
  • Created 2 years ago
  • Reactions:2
  • Comments:300 (180 by maintainers)

github_iconTop GitHub Comments

5reactions
Youpimatincommented, Nov 16, 2021

Downloaded zip ; installed “ts0601_trv_moes.py” ; deleted previous quirk and “pycache” folder ; reloaded ZHA integration ; deleted 1 TRV ; re-paired this device.

Quirk: ts0601_trv_moes.MoesHY368_Type3 ZHA3

Added to lovelace : Entities

(I had already renamed the child lock switch when I took the screenshots)

So :

  • 3 switches
  • 1 analog_output Valve State
  • 1 thermostat
  • 1 power level

Switch 1 : ?

Switch 2 : “Child Lock” is working writing from HA to the TRV (icon appears and disapears directly on TRV display if display is on), but not reported to HA when changed on the TRV.

Switch 3 : “Open Window Detection” is working writing from HA to the TRV (A2 status changing 0/1 on menu if menu is opened on the TRV), but not reported to HA when changed on the TRV.

The thermostat set point is working writing from HA to the TRV, but not reported to HA when changed on the TRV.

The thermostat sensed temperature is not reported to HA anymore (it stays 19°C indefinitely).

I get an error when playing with the “analog_output Valve State” : Error1 and when changing temperature on the TRV (but not when changing temperature in HA), it displays on HA: 2000 for a valve opening of 0% 2025 for a valve opening of 25% 2050 for a valve opening of 50% 2075 for a valve opening of 75% 2100 for a valve opening of 100%

Strikethrough text is what did not work before I restart HA… after retarting HA, these functions work nicely

4reactions
iedexcommented, Nov 26, 2021

@jacekk015 It works! 🚀 I changed in HA some schedule values, after that I checked the schedule on TRV and my changes were there. I see an error in log, not sure if something important: 2021-11-26 14:04:33 DEBUG (MainThread) [zigpy.appdb] Error handling '_save_attribute' event with (84:fd:27:ff:fe:a6:76:05, 1, 61184, 101, [40, 30, 18, 42, 30, 14, 40, 30, 12, 38, 0, 6, 42, 15, 17, 44, 30, 14, 46, 0, 12, 48, 0, 6, 46, 30, 17, 44, 30, 13, 42, 30, 11, 40, 0, 7]) params: Error binding parameter 4 - probably unsupported type. log-program-2.txt

Read more comments on GitHub >

github_iconTop Results From Across the Web

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 >
Moes TV02 TRV - Zigbee - Home Assistant Community
I'm using ZHA to integrate my zigbee devices. I bought a Tuya thermostatic valve (MOES TV02) and I paired it with ZHA, but...
Read more >
TuYa TS0601_thermostat control via MQTT | Zigbee2MQTT
Description, Radiator valve with thermostat ... If you'd like to force device to send local_temperature you can use this MQTT command:.
Read more >
Thermostatic Radiator Valve Evaluation - NREL
“Deliver systems and strategies that achieve 10%-15% space conditioning energy savings by upgrading existing heating/cooling equipment for homes ...
Read more >
POPP Valve user guide : Aeotec Help Desk - Solutions
The following instructions tell you how to add your Thermostatic Radiator Valve to your Z-Wave network using an existing gateway. Installing TRV ......
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