[Device Support Request] Improving "TS0601" "_TZE200_b6wax7g0" TRV thermostatic radiator valve
See original GitHub issueHello, (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:
- Created 2 years ago
- Reactions:2
- Comments:300 (180 by maintainers)
Top GitHub Comments
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
Added to lovelace :
(I had already renamed the child lock switch when I took the screenshots)
So :
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” : 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 textis what did not work before I restart HA… after retarting HA, these functions work nicely@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