### Bug description
I have installed some of the MOES Zigbee thermostats. The d…evice has an internal clock and displays the time of day on the screen. The thermostat seems to request a time sync over Zigbee but those requests fail
### Steps to reproduce
1. Pair the thermostat with ZHA
2. The thermostat internal clock does not sync
### Expected behavior
The thermostat internal clock should sync to the time provided by ZHA
### Screenshots/Video
_No response_
### Device signature
<details><summary>Device signature</summary>
```json
{
"node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, 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=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
"endpoints": {
"1": {
"profile_id": "0x0104",
"device_type": "0x0301",
"input_clusters": [
"0x0000",
"0x0004",
"0x0005",
"0x0201",
"0x0204",
"0xef00"
],
"output_clusters": [
"0x000a",
"0x0019"
]
}
},
"manufacturer": "_TZE200_aoclfnxz",
"model": "TS0601",
"class": "zhaquirks.tuya.ts0601_electric_heating.MoesBHT"
}
```
</details>
### Diagnostic information
<details><summary>Diagnostic information</summary>
```json
{
"home_assistant": {
"installation_type": "Home Assistant Container",
"version": "2023.10.5",
"dev": false,
"hassio": false,
"virtualenv": false,
"python_version": "3.11.5",
"docker": true,
"arch": "aarch64",
"timezone": "Europe/London",
"os_name": "Linux",
"os_version": "6.1.21-v8+",
"run_as_root": true
},
"custom_components": {
"tfl_livearrivals": {
"version": "0.0.1",
"requirements": [
"aiohttp"
]
},
"hacs": {
"version": "1.24.5",
"requirements": [
"aiogithubapi>=21.11.0"
]
},
"espsomfy_rts": {
"version": "2.1.0",
"requirements": [
"websocket-client==1.4.2"
]
},
"eafa": {
"version": "0.1",
"requirements": [
"aiohttp"
]
},
"heatmiserneo": {
"version": "0.2.3",
"requirements": [
"neohubapi>=0.9"
]
},
"ukho_tides": {
"version": "0.1.1",
"requirements": [
"ukhotides==0.1.1"
]
},
"garmin_connect": {
"version": "0.2.17",
"requirements": [
"garminconnect==0.2.3",
"tzlocal"
]
},
"carbon_intensity_uk": {
"version": "0.2.0",
"requirements": [
"aiohttp",
"numpy"
]
},
"nationalrailuk": {
"version": "0.0.1",
"requirements": [
"zeep[async]==4.2.1"
]
},
"localtuya": {
"version": "5.2.1",
"requirements": []
},
"octopus_energy": {
"version": "8.3.0",
"requirements": []
}
},
"integration_manifest": {
"domain": "zha",
"name": "Zigbee Home Automation",
"after_dependencies": [
"onboarding",
"usb"
],
"codeowners": [
"@dmulcahey",
"@adminiuga",
"@puddly"
],
"config_flow": true,
"dependencies": [
"file_upload"
],
"documentation": "https://www.home-assistant.io/integrations/zha",
"iot_class": "local_polling",
"loggers": [
"aiosqlite",
"bellows",
"crccheck",
"pure_pcapy3",
"zhaquirks",
"zigpy",
"zigpy_deconz",
"zigpy_xbee",
"zigpy_zigate",
"zigpy_znp",
"universal_silabs_flasher"
],
"requirements": [
"bellows==0.36.5",
"pyserial==3.5",
"pyserial-asyncio==0.6",
"zha-quirks==0.0.105",
"zigpy-deconz==0.21.1",
"zigpy==0.57.2",
"zigpy-xbee==0.18.3",
"zigpy-zigate==0.11.0",
"zigpy-znp==0.11.6",
"universal-silabs-flasher==0.0.14",
"pyserial-asyncio-fast==0.11"
],
"usb": [
{
"vid": "10C4",
"pid": "EA60",
"description": "*2652*",
"known_devices": [
"slae.sh cc2652rb stick"
]
},
{
"vid": "1A86",
"pid": "55D4",
"description": "*sonoff*plus*",
"known_devices": [
"sonoff zigbee dongle plus v2"
]
},
{
"vid": "10C4",
"pid": "EA60",
"description": "*sonoff*plus*",
"known_devices": [
"sonoff zigbee dongle plus"
]
},
{
"vid": "10C4",
"pid": "EA60",
"description": "*tubeszb*",
"known_devices": [
"TubesZB Coordinator"
]
},
{
"vid": "1A86",
"pid": "7523",
"description": "*tubeszb*",
"known_devices": [
"TubesZB Coordinator"
]
},
{
"vid": "1A86",
"pid": "7523",
"description": "*zigstar*",
"known_devices": [
"ZigStar Coordinators"
]
},
{
"vid": "1CF1",
"pid": "0030",
"description": "*conbee*",
"known_devices": [
"Conbee II"
]
},
{
"vid": "10C4",
"pid": "8A2A",
"description": "*zigbee*",
"known_devices": [
"Nortek HUSBZB-1"
]
},
{
"vid": "0403",
"pid": "6015",
"description": "*zigate*",
"known_devices": [
"ZiGate+"
]
},
{
"vid": "10C4",
"pid": "EA60",
"description": "*zigate*",
"known_devices": [
"ZiGate"
]
},
{
"vid": "10C4",
"pid": "8B34",
"description": "*bv 2010/10*",
"known_devices": [
"Bitron Video AV2010/10"
]
}
],
"zeroconf": [
{
"type": "_esphomelib._tcp.local.",
"name": "tube*"
},
{
"type": "_zigate-zigbee-gateway._tcp.local.",
"name": "*zigate*"
},
{
"type": "_zigstar_gw._tcp.local.",
"name": "*zigstar*"
},
{
"type": "_uzg-01._tcp.local.",
"name": "uzg-01*"
},
{
"type": "_slzb-06._tcp.local.",
"name": "slzb-06*"
}
],
"is_built_in": true
},
"data": {
"ieee": "**REDACTED**",
"nwk": 59104,
"manufacturer": "_TZE200_aoclfnxz",
"model": "TS0601",
"name": "_TZE200_aoclfnxz TS0601",
"quirk_applied": true,
"quirk_class": "zhaquirks.tuya.ts0601_electric_heating.MoesBHT",
"manufacturer_code": 4098,
"power_source": "Mains",
"lqi": 168,
"rssi": -58,
"last_seen": "2023-10-26T22:36:41",
"available": true,
"device_type": "Router",
"signature": {
"node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, 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=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
"endpoints": {
"1": {
"profile_id": "0x0104",
"device_type": "0x0301",
"input_clusters": [
"0x0000",
"0x0004",
"0x0005",
"0x0201",
"0x0204",
"0xef00"
],
"output_clusters": [
"0x000a",
"0x0019"
]
}
},
"manufacturer": "_TZE200_aoclfnxz",
"model": "TS0601"
},
"active_coordinator": false,
"entities": [
{
"entity_id": "climate.upstairs",
"name": "_TZE200_aoclfnxz TS0601"
},
{
"entity_id": "sensor.upstairs_hvac_action",
"name": "_TZE200_aoclfnxz TS0601"
}
],
"neighbors": [
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x2CD4",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "79"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x2FFA",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "101"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x448B",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "108"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x84D1",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "51"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0x9735",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "83"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xAAA8",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "156"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xAADF",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "228"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xABFF",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "173"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xC05A",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "104"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xE80F",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "124"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Parent",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xF295",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "137"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xF81F",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "76"
},
{
"device_type": "Router",
"rx_on_when_idle": "On",
"relationship": "Sibling",
"extended_pan_id": "**REDACTED**",
"ieee": "**REDACTED**",
"nwk": "0xFFA7",
"permit_joining": "Unknown",
"depth": "15",
"lqi": "100"
}
],
"routes": [
{
"dest_nwk": "0x0000",
"route_status": "Active",
"memory_constrained": false,
"many_to_one": false,
"route_record_required": false,
"next_hop": "0xABFF"
},
{
"dest_nwk": "0xF295",
"route_status": "Active",
"memory_constrained": false,
"many_to_one": false,
"route_record_required": false,
"next_hop": "0xF295"
},
{
"dest_nwk": "0x2CD4",
"route_status": "Active",
"memory_constrained": false,
"many_to_one": false,
"route_record_required": false,
"next_hop": "0xF295"
},
{
"dest_nwk": "0xFFA7",
"route_status": "Active",
"memory_constrained": false,
"many_to_one": false,
"route_record_required": false,
"next_hop": "0xFFA7"
},
{
"dest_nwk": "0xE80F",
"route_status": "Active",
"memory_constrained": false,
"many_to_one": false,
"route_record_required": false,
"next_hop": "0xE80F"
},
{
"dest_nwk": "0x9735",
"route_status": "Active",
"memory_constrained": false,
"many_to_one": false,
"route_record_required": false,
"next_hop": "0x9735"
},
{
"dest_nwk": "0xAADF",
"route_status": "Active",
"memory_constrained": false,
"many_to_one": false,
"route_record_required": false,
"next_hop": "0xAADF"
},
{
"dest_nwk": "0xAAA8",
"route_status": "Active",
"memory_constrained": false,
"many_to_one": false,
"route_record_required": false,
"next_hop": "0xAADF"
},
{
"dest_nwk": "0xF595",
"route_status": "Active",
"memory_constrained": false,
"many_to_one": false,
"route_record_required": false,
"next_hop": "0xE80F"
}
],
"endpoint_names": [
{
"name": "THERMOSTAT"
}
],
"user_given_name": "Upstairs_thermostat",
"device_reg_id": "188d34b64f9b2eb5bf0c09d24d8c5b04",
"area_id": "jeff_s_office",
"cluster_details": {
"1": {
"device_type": {
"name": "THERMOSTAT",
"id": 769
},
"profile_id": 260,
"in_clusters": {
"0x0000": {
"endpoint_attribute": "basic",
"attributes": {
"0x0001": {
"attribute_name": "app_version",
"value": 72
},
"0x0004": {
"attribute_name": "manufacturer",
"value": "_TZE200_aoclfnxz"
},
"0x0005": {
"attribute_name": "model",
"value": "TS0601"
}
},
"unsupported_attributes": {}
},
"0x0004": {
"endpoint_attribute": "groups",
"attributes": {},
"unsupported_attributes": {}
},
"0x0005": {
"endpoint_attribute": "scenes",
"attributes": {},
"unsupported_attributes": {}
},
"0xef00": {
"endpoint_attribute": "tuya_manufacturer",
"attributes": {
"0x0128": {
"attribute_name": "child_lock",
"value": 0
},
"0x0101": {
"attribute_name": "enabled",
"value": 1
},
"0x0402": {
"attribute_name": "manual_mode",
"value": 0
},
"0x0424": {
"attribute_name": "running_mode",
"value": 1
},
"0x0403": {
"attribute_name": "schedule_mode",
"value": 1
},
"0x0210": {
"attribute_name": "target_temperature",
"value": 18
},
"0x0218": {
"attribute_name": "temperature",
"value": 215
}
},
"unsupported_attributes": {}
},
"0x0201": {
"endpoint_attribute": "thermostat",
"attributes": {
"0x001b": {
"attribute_name": "ctrl_sequence_of_oper",
"value": 2
},
"0x0000": {
"attribute_name": "local_temperature",
"value": 2150
},
"0x0012": {
"attribute_name": "occupied_heating_setpoint",
"value": 1800
},
"0x0025": {
"attribute_name": "programing_oper_mode",
"value": 0
},
"0x001e": {
"attribute_name": "running_mode",
"value": 0
},
"0x0029": {
"attribute_name": "running_state",
"value": 0
},
"0x001c": {
"attribute_name": "system_mode",
"value": 4
}
},
"unsupported_attributes": {
"0x0002": {
"attribute_name": "occupancy"
},
"0x0003": {
"attribute_name": "abs_min_heat_setpoint_limit"
},
"0x0004": {
"attribute_name": "abs_max_heat_setpoint_limit"
},
"0x0005": {
"attribute_name": "abs_min_cool_setpoint_limit"
},
"0x0006": {
"attribute_name": "abs_max_cool_setpoint_limit"
},
"0x0018": {
"attribute_name": "max_cool_setpoint_limit"
},
"0x0007": {
"attribute_name": "pi_cooling_demand"
},
"0x0008": {
"attribute_name": "pi_heating_demand"
},
"0x0011": {
"attribute_name": "occupied_cooling_setpoint"
},
"0x0013": {
"attribute_name": "unoccupied_cooling_setpoint"
},
"0x0014": {
"attribute_name": "unoccupied_heating_setpoint"
},
"0x0015": {
"attribute_name": "min_heat_setpoint_limit"
},
"0x0016": {
"attribute_name": "max_heat_setpoint_limit"
},
"0x0017": {
"attribute_name": "min_cool_setpoint_limit"
}
}
},
"0x0204": {
"endpoint_attribute": "thermostat_ui",
"attributes": {
"0x0001": {
"attribute_name": "keypad_lockout",
"value": 0
}
},
"unsupported_attributes": {}
}
},
"out_clusters": {
"0x000a": {
"endpoint_attribute": "time",
"attributes": {},
"unsupported_attributes": {}
},
"0x0019": {
"endpoint_attribute": "ota",
"attributes": {},
"unsupported_attributes": {}
}
}
}
}
}
}
```
</details>
### Logs
<details><summary>Logs</summary>
```python
2023-10-24 20:44:41.958 DEBUG (MainThread) [zigpy.zcl] [0x84D1:1:0xef00] Received ZCL frame: b'\x19t$\x00\x00'
2023-10-24 20:44:41.958 DEBUG (MainThread) [zigpy.zcl] [0x84D1:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufact
urer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=True, *is_general=False), tsn=116, command_id=36, *direction=<Direction.Client
_to_Server: 1>)
2023-10-24 20:44:41.960 DEBUG (MainThread) [zigpy.zcl] [0x84D1:1:0xef00] Decoded ZCL frame: MoesBHTManufCluster:set_time_request(param=[0, 0])
2023-10-24 20:44:41.961 DEBUG (MainThread) [zigpy.zcl] [0x84D1:1:0xef00] Received command 0x24 (TSN 116): set_time_request(param=[0, 0])
2023-10-24 20:44:41.962 DEBUG (MainThread) [zigpy.zcl] [0x84D1:1:0xef00] No explicit handler for cluster command 0x24: set_time_request(param=[0, 0])
```
</details>
### Additional information
Ultimately the fix seems to be like documented elsewhere: Adding one line ``set_time_offset = 1970`` in https://github.com/zigpy/zha-device-handlers/blob/dev/zhaquirks/tuya/ts0601_electric_heating.py
```
class MoesBHTManufCluster(TuyaManufClusterAttributes):
"""Manufacturer Specific Cluster of some electric heating thermostats."""
set_time_offset = 1970
```
Happy to push it however unclear if this can break other's devices