Created
July 17, 2021 08:08
-
-
Save koying/7ffb29e2db56649b8cb7fd5702a2ff46 to your computer and use it in GitHub Desktop.
TS004F custom quirk
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"""Tuya 4 Button Remote TS004F""" | |
from zigpy.profiles import zha | |
from zigpy.quirks import CustomDevice | |
from zigpy.zcl.clusters.general import Basic, OnOff, Identify, Ota, LevelControl, PowerConfiguration, Time, Groups, Scenes | |
from zigpy.zcl.clusters.lightlink import LightLink | |
from zhaquirks.const import ( | |
MODEL, | |
BUTTON_1, | |
BUTTON_2, | |
BUTTON_3, | |
BUTTON_4, | |
ARGS, | |
COMMAND, | |
DEVICE_TYPE, | |
DOUBLE_PRESS, | |
ENDPOINT_ID, | |
ENDPOINTS, | |
INPUT_CLUSTERS, | |
CLUSTER_ID, | |
LONG_PRESS, | |
LONG_RELEASE, | |
MODELS_INFO, | |
OUTPUT_CLUSTERS, | |
PROFILE_ID, | |
SHORT_PRESS, | |
COMMAND_ON, | |
COMMAND_OFF, | |
COMMAND_STEP, | |
COMMAND_MOVE, | |
COMMAND_STOP, | |
) | |
class Tuya4NewButtonTriggers: | |
"""Tuya 4-button New version remote device triggers.""" | |
device_automation_triggers = { | |
(SHORT_PRESS, BUTTON_1): {COMMAND: COMMAND_ON, CLUSTER_ID: 6, ENDPOINT_ID: 1}, | |
(SHORT_PRESS, BUTTON_2): {COMMAND: COMMAND_OFF, CLUSTER_ID: 6, ENDPOINT_ID: 1}, | |
(SHORT_PRESS, BUTTON_3): { | |
COMMAND: COMMAND_STEP, | |
CLUSTER_ID: 8, | |
ENDPOINT_ID: 1, | |
ARGS: [0, 51, 10], | |
}, | |
(LONG_PRESS, BUTTON_3): { | |
COMMAND: COMMAND_MOVE, | |
CLUSTER_ID: 8, | |
ENDPOINT_ID: 1, | |
ARGS: [0, 51], | |
}, | |
(SHORT_PRESS, BUTTON_4): { | |
COMMAND: COMMAND_STEP, | |
CLUSTER_ID: 8, | |
ENDPOINT_ID: 1, | |
ARGS: [1, 51, 10], | |
}, | |
(LONG_PRESS, BUTTON_4): { | |
COMMAND: COMMAND_MOVE, | |
CLUSTER_ID: 8, | |
ENDPOINT_ID: 1, | |
ARGS: [1, 51], | |
}, | |
(LONG_RELEASE, BUTTON_4): {COMMAND: COMMAND_STOP, ENDPOINT_ID: 1}, | |
} | |
class TuyaSmartRemote004F(CustomDevice, Tuya4NewButtonTriggers): | |
"""Tuya 4-button New version remote 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)", | |
# SizePrefixedSimpleDescriptor(endpoint=1, profile=260, device_type=260, device_version=1, input_clusters=[0, 1, 3, 4, 6, 4096], output_clusters=[25, 10, 3, 4, 5, 6, 8, 4096]) | |
MODEL: "TS004F", | |
ENDPOINTS: { | |
1: { | |
PROFILE_ID: zha.PROFILE_ID, | |
DEVICE_TYPE: zha.DeviceType.DIMMER_SWITCH, | |
INPUT_CLUSTERS: [ | |
Basic.cluster_id, | |
PowerConfiguration.cluster_id, | |
Identify.cluster_id, | |
Groups.cluster_id, | |
OnOff.cluster_id, | |
LightLink.cluster_id, | |
], | |
OUTPUT_CLUSTERS: [ | |
Ota.cluster_id, | |
Time.cluster_id, | |
Identify.cluster_id, | |
Groups.cluster_id, | |
Scenes.cluster_id, | |
OnOff.cluster_id, | |
LevelControl.cluster_id, | |
LightLink.cluster_id, | |
], | |
} | |
}, | |
} | |
replacement = { | |
ENDPOINTS: { | |
1: { | |
PROFILE_ID: zha.PROFILE_ID, | |
DEVICE_TYPE: zha.DeviceType.REMOTE_CONTROL, | |
INPUT_CLUSTERS: [ | |
Basic.cluster_id, | |
PowerConfiguration.cluster_id, | |
Identify.cluster_id, | |
Groups.cluster_id, | |
OnOff.cluster_id, | |
LightLink.cluster_id, | |
], | |
OUTPUT_CLUSTERS: [ | |
Ota.cluster_id, | |
Time.cluster_id, | |
Identify.cluster_id, | |
Groups.cluster_id, | |
Scenes.cluster_id, | |
OnOff.cluster_id, | |
LevelControl.cluster_id, | |
LightLink.cluster_id, | |
], | |
} | |
}, | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment