zha-device-handlers
zha-device-handlers copied to clipboard
[Device Support Request] Lack of "child lock" feature in recently released support of "_TZE200_u9bfwha0"
Is your feature request related to a problem? Please describe. The last 2022-10 HA release came with new support of Tuya-like Thermostat identified by "_TZE200_u9bfwha0" manufacturer. This support was introduced few days ago in commit 0ad9fa2.
I've two of these devices (recently bought) and now they're mostly usable (many thanks!), but at least one feature is still missing: The ability to control the "child lock" feature via the UI, although the device exposes it in: Cluster: "MoesBHTUserInterface, EndpointId: 1, Id: 0x0204 Attribute: "keypad_lockout", id: 0x0001
NOTE: The "child lock" can be set/unset writing a value of 1/0 directly into the aforementioned attribute in the "Zigbee device management" dialog box, but is very inconvenient to do so there.
Describe the solution you'd like The ZHA should display this feature in some manner (as a switch, for instance) so users
Device signature
"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.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 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": 260,
"device_type": "0x0301",
"in_clusters": [
"0x0000",
"0x0004",
"0x0005",
"0x0201",
"0x0204",
"0xef00"
],
"out_clusters": [
"0x000a",
"0x0019"
]
}
}
},
Diagnostic information
{
"home_assistant": {
"installation_type": "Home Assistant OS",
"version": "2022.10.1",
"dev": false,
"hassio": true,
"virtualenv": false,
"python_version": "3.10.5",
"docker": true,
"arch": "aarch64",
"timezone": "Europe/Madrid",
"os_name": "Linux",
"os_version": "5.15.61-v8",
"supervisor": "2022.09.1",
"host_os": "Home Assistant OS 9.0",
"docker_version": "20.10.17",
"chassis": "embedded",
"run_as_root": true
},
"custom_components": {
"hacs": {
"version": "1.27.2",
"requirements": [
"aiogithubapi>=22.2.4"
]
},
"alarmo": {
"version": "v1.9.5",
"requirements": []
}
},
"integration_manifest": {
"domain": "zha",
"name": "Zigbee Home Automation",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/zha",
"requirements": [
"bellows==0.34.1",
"pyserial==3.5",
"pyserial-asyncio==0.6",
"zha-quirks==0.0.82",
"zigpy-deconz==0.19.0",
"zigpy==0.51.2",
"zigpy-xbee==0.16.0",
"zigpy-zigate==0.10.0",
"zigpy-znp==0.9.0"
],
"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"
]
}
],
"codeowners": [
"@dmulcahey",
"@adminiuga",
"@puddly"
],
"zeroconf": [
{
"type": "_esphomelib._tcp.local.",
"name": "tube*"
},
{
"type": "_zigate-zigbee-gateway._tcp.local.",
"name": "*zigate*"
},
{
"type": "_zigstar_gw._tcp.local.",
"name": "*zigstar*"
}
],
"dependencies": [
"file_upload"
],
"after_dependencies": [
"onboarding",
"usb",
"zeroconf"
],
"iot_class": "local_polling",
"loggers": [
"aiosqlite",
"bellows",
"crccheck",
"pure_pcapy3",
"zhaquirks",
"zigpy",
"zigpy_deconz",
"zigpy_xbee",
"zigpy_zigate",
"zigpy_znp"
],
"is_built_in": true
},
"data": {
"ieee": "**REDACTED**",
"nwk": 8206,
"manufacturer": "_TZE200_u9bfwha0",
"model": "TS0601",
"name": "_TZE200_u9bfwha0 TS0601",
"quirk_applied": true,
"quirk_class": "zhaquirks.tuya.ts0601_electric_heating.MoesBHT",
"manufacturer_code": 4098,
"power_source": "Mains",
"lqi": 255,
"rssi": -41,
"last_seen": "2022-10-07T22:04:49",
"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.AllocateAddress|RxOnWhenIdle|MainsPowered|FullFunctionDevice: 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": 260,
"device_type": "0x0301",
"in_clusters": [
"0x0000",
"0x0004",
"0x0005",
"0x0201",
"0x0204",
"0xef00"
],
"out_clusters": [
"0x000a",
"0x0019"
]
}
}
},
"active_coordinator": false,
"entities": [
{
"entity_id": "sensor.tze200_u9bfwha0_ts0601_thermostathvacaction",
"name": "_TZE200_u9bfwha0 TS0601"
},
{
"entity_id": "climate.tze200_u9bfwha0_ts0601_thermostat",
"name": "_TZE200_u9bfwha0 TS0601"
}
],
"neighbors": [],
"endpoint_names": [
{
"name": "THERMOSTAT"
}
],
"user_given_name": "Term\u00f2stat Estudi",
"device_reg_id": "9e825872d17b51b5597326c065900d09",
"area_id": "estudi",
"cluster_details": {
"1": {
"device_type": {
"name": "THERMOSTAT",
"id": 769
},
"profile_id": 260,
"in_clusters": {
"0x0000": {
"endpoint_attribute": "basic",
"attributes": {
"0x0000": {
"attribute_name": "zcl_version",
"value": 3
},
"0x0001": {
"attribute_name": "app_version",
"value": 72
},
"0x0003": {
"attribute_name": "hw_version",
"value": 1
},
"0x0004": {
"attribute_name": "manufacturer",
"value": "_TZE200_u9bfwha0"
},
"0x0005": {
"attribute_name": "model",
"value": "TS0601"
},
"0xfffe": {
"attribute_name": "attr_reporting_status",
"value": 0
}
},
"unsupported_attributes": {
"0x0009": {
"attribute_name": "generic_device_type"
},
"0x000a": {
"attribute_name": "product_code"
},
"0x000d": {
"attribute_name": "serial_number"
},
"0x0013": {
"attribute_name": "alarm_mask"
}
}
},
"0x0004": {
"endpoint_attribute": "groups",
"attributes": {},
"unsupported_attributes": {}
},
"0x0005": {
"endpoint_attribute": "scenes",
"attributes": {},
"unsupported_attributes": {}
},
"0xef00": {
"endpoint_attribute": "tuya_manufacturer",
"attributes": {
"0x0210": {
"attribute_name": "target_temperature",
"value": 20
},
"0x0218": {
"attribute_name": "temperature",
"value": 220
},
"0x0403": {
"attribute_name": "schedule_mode",
"value": 1
},
"0x0402": {
"attribute_name": "manual_mode",
"value": 0
},
"0x0101": {
"attribute_name": "enabled",
"value": 1
},
"0x0424": {
"attribute_name": "running_mode",
"value": 1
},
"0x0128": {
"attribute_name": "child_lock",
"value": 0
}
},
"unsupported_attributes": {}
},
"0x0201": {
"endpoint_attribute": "thermostat",
"attributes": {
"0x0000": {
"attribute_name": "local_temperature",
"value": 2200
},
"0x0012": {
"attribute_name": "occupied_heating_setpoint",
"value": 2000
},
"0x001b": {
"attribute_name": "ctrl_sequence_of_oper",
"value": 2
},
"0x001c": {
"attribute_name": "system_mode",
"value": 4
},
"0x001e": {
"attribute_name": "running_mode",
"value": 0
},
"0x0025": {
"attribute_name": "programing_oper_mode",
"value": 0
},
"0x0029": {
"attribute_name": "running_state",
"value": 0
}
},
"unsupported_attributes": {
"0x0000": {
"attribute_name": "local_temperature"
},
"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"
},
"0x0016": {
"attribute_name": "max_heat_setpoint_limit"
},
"0x0013": {
"attribute_name": "unoccupied_cooling_setpoint"
},
"0x0007": {
"attribute_name": "pi_cooling_demand"
},
"0x0008": {
"attribute_name": "pi_heating_demand"
},
"0x0010": {
"attribute_name": "local_temperature_calibration"
},
"0x0011": {
"attribute_name": "occupied_cooling_setpoint"
},
"0x0012": {
"attribute_name": "occupied_heating_setpoint"
},
"0x0014": {
"attribute_name": "unoccupied_heating_setpoint"
},
"0x0015": {
"attribute_name": "min_heat_setpoint_limit"
},
"0x0017": {
"attribute_name": "min_cool_setpoint_limit"
},
"0x0018": {
"attribute_name": "max_cool_setpoint_limit"
},
"0x0020": {
"attribute_name": "start_of_week"
},
"0x001a": {
"attribute_name": "remote_sensing"
},
"0x001c": {
"attribute_name": "system_mode"
},
"0x0041": {
"attribute_name": "ac_capacity"
}
}
},
"0x0204": {
"endpoint_attribute": "thermostat_ui",
"attributes": {
"0x0001": {
"attribute_name": "keypad_lockout",
"value": 0
}
},
"unsupported_attributes": {
"0x0000": {
"attribute_name": "temperature_display_mode"
},
"0x0002": {
"attribute_name": "schedule_programming_visibility"
}
}
}
},
"out_clusters": {
"0x000a": {
"endpoint_attribute": "time",
"attributes": {},
"unsupported_attributes": {}
},
"0x0019": {
"endpoint_attribute": "ota",
"attributes": {},
"unsupported_attributes": {}
}
}
}
}
}
}
Additional logs
Paste any additional debug logs here.
Don't remove the extra line breaks outside the ``` marks.
The device have already implemented 'something' for the child_lock, but I'm not sure how it works:
https://github.com/zigpy/zha-device-handlers/blob/dev/zhaquirks/tuya/ts0601_electric_heating.py#L130-L134
There hasn't been any activity on this issue recently. Due to the high number of incoming GitHub notifications, we have to clean some of the old issues, as many of them have already been resolved with the latest updates. Please make sure to update to the latest version and check if that solves the issue. Let us know if that works for you by adding a comment 👍 This issue has now been marked as stale and will be closed if no further activity occurs. Thank you for your contributions.