[Device Support Request] Smartwings WM25/L-Z Blinds
See original GitHub issueIs your feature request related to a problem? Please describe.
Pressing the open and close buttons in the UI will not open nor close the blinds however using the position slider you can adjust the blinds. The blinds are also inverted, open is closed and closed is open
Describe the solution you’d like
I would like the open and close buttons to work, for the state to not be inverted.
Device signature
{
"node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, 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=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
"endpoints": {
"1": {
"profile_id": 260,
"device_type": "0x0202",
"in_clusters": [
"0x0000",
"0x0001",
"0x0003",
"0x0004",
"0x0005",
"0x0102"
],
"out_clusters": [
"0x0003",
"0x0019"
]
}
},
"manufacturer": "Smartwings",
"model": "WM25/L-Z",
"class": "zigpy.device.Device"
}
Diagnostic information
{
"home_assistant": {
"installation_type": "Home Assistant Container",
"version": "2022.8.0",
"dev": false,
"hassio": false,
"virtualenv": false,
"python_version": "3.10.5",
"docker": true,
"arch": "aarch64",
"timezone": "America/Chicago",
"os_name": "Linux",
"os_version": "4.2.8",
"run_as_root": true
},
"custom_components": {
"alexa_media": {
"version": "4.1.0",
"requirements": [
"alexapy==1.26.1",
"packaging>=20.3",
"wrapt>=1.12.1"
]
},
"frigate": {
"version": "2.3",
"requirements": []
},
"hacs": {
"version": "1.26.2",
"requirements": [
"aiogithubapi>=22.2.4"
]
},
"mass": {
"version": "2022.8.0",
"requirements": [
"music-assistant==1.8.3"
]
}
},
"integration_manifest": {
"domain": "zha",
"name": "Zigbee Home Automation",
"config_flow": true,
"documentation": "https://www.home-assistant.io/integrations/zha",
"requirements": [
"bellows==0.31.2",
"pyserial==3.5",
"pyserial-asyncio==0.6",
"zha-quirks==0.0.78",
"zigpy-deconz==0.18.0",
"zigpy==0.48.0",
"zigpy-xbee==0.15.0",
"zigpy-zigate==0.9.0",
"zigpy-znp==0.8.1"
],
"usb": [
{
"vid": "10C4",
"pid": "EA60",
"description": "*2652*",
"known_devices": [
"slae.sh cc2652rb stick"
]
},
{
"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*"
}
],
"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": 16874,
"manufacturer": "Smartwings",
"model": "WM25/L-Z",
"name": "Smartwings WM25/L-Z",
"quirk_applied": false,
"quirk_class": "zigpy.device.Device",
"manufacturer_code": 4098,
"power_source": "Battery or Unknown",
"lqi": 247,
"rssi": -63,
"last_seen": "2022-08-10T11:40:35",
"available": true,
"device_type": "EndDevice",
"signature": {
"node_descriptor": "NodeDescriptor(logical_type=<LogicalType.EndDevice: 2>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.AllocateAddress: 128>, 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=True, *is_full_function_device=False, *is_mains_powered=False, *is_receiver_on_when_idle=False, *is_router=False, *is_security_capable=False)",
"endpoints": {
"1": {
"profile_id": 260,
"device_type": "0x0202",
"in_clusters": [
"0x0000",
"0x0001",
"0x0003",
"0x0004",
"0x0005",
"0x0102"
],
"out_clusters": [
"0x0003",
"0x0019"
]
}
}
},
"active_coordinator": false,
"entities": [
{
"entity_id": "button.smartwings_wm25_l_z_identifybutton",
"name": "Smartwings WM25/L-Z"
},
{
"entity_id": "cover.smartwings_wm25_l_z_cover",
"name": "Smartwings WM25/L-Z"
},
{
"entity_id": "sensor.smartwings_wm25_l_z_battery",
"name": "Smartwings WM25/L-Z"
}
],
"neighbors": [],
"endpoint_names": [
{
"name": "WINDOW_COVERING_DEVICE"
}
],
"user_given_name": null,
"device_reg_id": "d4a3a0070de08547e4a2aa2cf5cfc297",
"area_id": "2c665d15682749eba33548a362e5471c",
"cluster_details": {
"1": {
"device_type": {
"name": "WINDOW_COVERING_DEVICE",
"id": 514
},
"profile_id": 260,
"in_clusters": {
"0x0000": {
"endpoint_attribute": "basic",
"attributes": {
"0x0004": {
"attribute_name": "manufacturer",
"value": "Smartwings"
},
"0x0005": {
"attribute_name": "model",
"value": "WM25/L-Z"
}
},
"unsupported_attributes": {}
},
"0x0001": {
"endpoint_attribute": "power",
"attributes": {
"0x0020": {
"attribute_name": "battery_voltage",
"value": 0
},
"0x0021": {
"attribute_name": "battery_percentage_remaining",
"value": 86
}
},
"unsupported_attributes": {
"0x0031": {
"attribute_name": "battery_size"
},
"0x0033": {
"attribute_name": "battery_quantity"
}
}
},
"0x0003": {
"endpoint_attribute": "identify",
"attributes": {},
"unsupported_attributes": {}
},
"0x0004": {
"endpoint_attribute": "groups",
"attributes": {},
"unsupported_attributes": {}
},
"0x0005": {
"endpoint_attribute": "scenes",
"attributes": {},
"unsupported_attributes": {}
},
"0x0102": {
"endpoint_attribute": "window_covering",
"attributes": {
"0x0000": {
"attribute_name": "window_covering_type",
"value": 0
},
"0x0007": {
"attribute_name": "config_status",
"value": 3
},
"0x0008": {
"attribute_name": "current_position_lift_percentage",
"value": 0
},
"0x0010": {
"attribute_name": "installed_open_limit_lift",
"value": 0
},
"0x0011": {
"attribute_name": "installed_closed_limit_lift",
"value": 65535
},
"0x0013": {
"attribute_name": "installed_closed_limit_tilt",
"value": 65535
},
"0x0017": {
"attribute_name": "window_covering_mode",
"value": 20
}
},
"unsupported_attributes": {
"0x0003": {
"attribute_name": "current_position_lift"
},
"0x0004": {
"attribute_name": "current_position_tilt"
},
"0x0009": {
"attribute_name": "current_position_tilt_percentage"
},
"0x0014": {
"attribute_name": "velocity_lift"
},
"0x0016": {
"attribute_name": "deceleration_time_lift"
}
}
}
},
"out_clusters": {
"0x0003": {
"endpoint_attribute": "identify",
"attributes": {},
"unsupported_attributes": {}
},
"0x0019": {
"endpoint_attribute": "ota",
"attributes": {},
"unsupported_attributes": {}
}
}
}
}
}
}
Additional logs
2022-08-10 12:03:32.105 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [30, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x41ea>, 1, 260, 258, b'\x08Y\n\x08\x00 d', 0, 175, 239, 190, 106, 252, 0, -64]
2022-08-10 12:03:32.105 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0102] Received ZCL frame: b'\x08Y\n\x08\x00 d'
2022-08-10 12:03:32.106 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0102] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=89, command_id=10, *is_reply=True)
2022-08-10 12:03:32.107 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0102] Decoded ZCL frame: WindowCovering:Report_Attributes(attribute_reports=[Attribute(attrid=0x0008, value=TypeValue(type=uint8_t, value=100))])
2022-08-10 12:03:32.107 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0102] Received command 0x0A (TSN 89): Report_Attributes(attribute_reports=[Attribute(attrid=0x0008, value=TypeValue(type=uint8_t, value=100))])
2022-08-10 12:03:32.107 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0102] Attribute report received: current_position_lift_percentage=100
2022-08-10 12:03:32.107 DEBUG (MainThread) [homeassistant.components.zha.core.channels.base] [0x41EA:1:0x0102]: Attribute report 'Window Covering'[current_position_lift_percentage] = 100
2022-08-10 12:03:32.107 DEBUG (MainThread) [homeassistant.components.zha.cover] setting position: 100
2022-08-10 12:03:32.108 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=cover.smartwings_wm25_l_z_cover, old_state=<state cover.smartwings_wm25_l_z_cover=closing; current_position=100, friendly_name=MasterBedroomBlinds, supported_features=15 @ 2022-08-10T12:03:12.624814-05:00>, new_state=<state cover.smartwings_wm25_l_z_cover=closed; current_position=0, friendly_name=MasterBedroomBlinds, supported_features=15 @ 2022-08-10T12:03:32.108134-05:00>>
2022-08-10 12:03:32.109 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0102] Sending reply header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=89, command_id=<GeneralCommand.Default_Response: 11>, *is_reply=True)
2022-08-10 12:03:32.109 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0102] Sending reply: Default_Response(command_id=10, status=<Status.SUCCESS: 0>)
2022-08-10 12:03:32.114 DEBUG (MainThread) [zigpy_deconz.zigbee.application] Sending Zigbee request with tsn 89 under 134 request id, data: b'18590b0a00'
2022-08-10 12:03:32.115 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x41ea>, ep: 1, profile: 0x0104, cluster_id: 0x0102, data: b'08590a08002064'
2022-08-10 12:03:32.118 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_request (20, 134, <DeconzSendDataFlags.NONE: 0>, <DeconzAddressEndpoint address_mode=2 address=0x41EA endpoint=1>, 260, 258, 1, b'\x18Y\x0b\n\x00', <DeconzTransmitOptions.USE_NWK_KEY_SECURITY: 2>, 0)
2022-08-10 12:03:32.121 DEBUG (MainThread) [zigpy_deconz.api] APS data request response: [2, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, 134]
2022-08-10 12:03:32.131 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_CONFIRM|2: 166>, 0]
2022-08-10 12:03:32.131 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_confirm (0,)
2022-08-10 12:03:32.133 DEBUG (MainThread) [zigpy_deconz.api] APS data confirm response for request with id 134: 00
2022-08-10 12:03:32.133 DEBUG (MainThread) [zigpy_deconz.api] Request id: 0x86 'aps_data_confirm' for <DeconzAddressEndpoint address_mode=ADDRESS_MODE.NWK address=0x41ea endpoint=1>, status: 0x00
2022-08-10 12:03:32.156 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.masterbedroomsmartplug_value_electric_consumed_2, old_state=<state sensor.masterbedroomsmartplug_value_electric_consumed_2=0.0; state_class=measurement, meter_type=1, meter_type_name=ELECTRIC, unit_of_measurement=W, device_class=power, friendly_name=MasterBedroomSmartPlug: Value (Electric, Consumed) @ 2022-08-10T12:03:31.992250-05:00>, new_state=<state sensor.masterbedroomsmartplug_value_electric_consumed_2=0.0; state_class=measurement, meter_type=1, meter_type_name=ELECTRIC, unit_of_measurement=W, device_class=power, friendly_name=MasterBedroomSmartPlug: Value (Electric, Consumed) @ 2022-08-10T12:03:32.155892-05:00>>
2022-08-10 12:03:32.570 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_INDICATION|2: 170>, 0]
2022-08-10 12:03:32.570 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_indication (1, 1)
2022-08-10 12:03:32.572 DEBUG (MainThread) [zigpy_deconz.api] APS data indication response: [30, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x0000>, 1, <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x41ea>, 1, 260, 1, b'\x08Z\n!\x00 U', 0, 175, 239, 190, 106, 252, 0, -64]
2022-08-10 12:03:32.572 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0001] Received ZCL frame: b'\x08Z\n!\x00 U'
2022-08-10 12:03:32.573 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0001] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, is_reply=1, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=90, command_id=10, *is_reply=True)
2022-08-10 12:03:32.574 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0001] Decoded ZCL frame: PowerConfiguration:Report_Attributes(attribute_reports=[Attribute(attrid=0x0021, value=TypeValue(type=uint8_t, value=85))])
2022-08-10 12:03:32.574 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0001] Received command 0x0A (TSN 90): Report_Attributes(attribute_reports=[Attribute(attrid=0x0021, value=TypeValue(type=uint8_t, value=85))])
2022-08-10 12:03:32.574 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0001] Attribute report received: battery_percentage_remaining=85
2022-08-10 12:03:32.575 DEBUG (MainThread) [homeassistant.core] Bus:Handling <Event state_changed[L]: entity_id=sensor.smartwings_wm25_l_z_battery, old_state=<state sensor.smartwings_wm25_l_z_battery=43; state_class=measurement, battery_voltage=0.0, unit_of_measurement=%, device_class=battery, friendly_name=Smartwings WM25/L-Z Battery @ 2022-08-10T11:02:43.488219-05:00>, new_state=<state sensor.smartwings_wm25_l_z_battery=42; state_class=measurement, battery_voltage=0.0, unit_of_measurement=%, device_class=battery, friendly_name=Smartwings WM25/L-Z Battery @ 2022-08-10T12:03:32.575158-05:00>>
2022-08-10 12:03:32.576 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0001] Sending reply header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, is_reply=1, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=90, command_id=<GeneralCommand.Default_Response: 11>, *is_reply=True)
2022-08-10 12:03:32.576 DEBUG (MainThread) [zigpy.zcl] [0x41EA:1:0x0001] Sending reply: Default_Response(command_id=10, status=<Status.SUCCESS: 0>)
2022-08-10 12:03:32.578 DEBUG (MainThread) [zigpy_deconz.zigbee.application] Sending Zigbee request with tsn 90 under 135 request id, data: b'185a0b0a00'
2022-08-10 12:03:32.579 DEBUG (MainThread) [zigpy_deconz.api] 'aps_data_indication' response from <DeconzAddress address_mode=ADDRESS_MODE.NWK address=0x41ea>, ep: 1, profile: 0x0104, cluster_id: 0x0001, data: b'085a0a21002055'
2022-08-10 12:03:32.579 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_request (20, 135, <DeconzSendDataFlags.NONE: 0>, <DeconzAddressEndpoint address_mode=2 address=0x41EA endpoint=1>, 260, 1, 1, b'\x18Z\x0b\n\x00', <DeconzTransmitOptions.USE_NWK_KEY_SECURITY: 2>, 0)
2022-08-10 12:03:32.582 DEBUG (MainThread) [zigpy_deconz.api] APS data request response: [2, <DeviceState.APSDE_DATA_REQUEST_SLOTS_AVAILABLE|2: 34>, 135]
2022-08-10 12:03:32.590 DEBUG (MainThread) [zigpy_deconz.api] Device state changed response: [<DeviceState.128|APSDE_DATA_REQUEST_SLOTS_AVAILABLE|APSDE_DATA_CONFIRM|2: 166>, 0]
2022-08-10 12:03:32.590 DEBUG (MainThread) [zigpy_deconz.api] Command Command.aps_data_confirm (0,)
2022-08-10 12:03:32.592 DEBUG (MainThread) [zigpy_deconz.api] APS data confirm response for request with id 135: 00
Additional context
Issue Analytics
- State:
- Created a year ago
- Comments:22 (1 by maintainers)
Top Results From Across the Web
Contact Us - SmartWings
Please call us on +1 877-762-7861 or email us at support@smartwingshome.com. Free Shipping. Free shipping on all orders worldwide with no minimum.
Read more >Help - SmartWings
Please call us on +1 877-762-7861 or email us at support@smartwingshome.com. Free Shipping. Free shipping on all orders worldwide with no minimum.
Read more >FAQs - SmartWings
Order & Shipping FAQs How do I order SmartWings smart blinds? 1. ... You also can contact customer service to help with ordering....
Read more >Warranty & Guarantee - SmartWings
... you can contact our customer service, and they will solve it for you in the first time. Because all of our blinds...
Read more >SmartWings: Custom Smart Motorized Shades & Blinds
Please call us on +1 877-762-7861 or email us at support@smartwingshome.com. Free Shipping. Free shipping on all orders worldwide with no minimum.
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found

Quirk as implemented
Yes, the window covering mode persists through ha reboots. If I reconfigure using the reconfigure button on the device page in Home Assistant the
window_covering_moderetains theWindowCoveringMode.Motor_direction_reversedWithout the quirk, if the blinds are physically open, the state in Home Assistant is Open and pressing either the UP or Down button has no effect.
Without the quirk enabled If the state of the blinds in Home Assistant is open and the physical state of the blind is open, calling the cover.open_cover service from the developer tools services page will physically close the blinds.
With the quirk enabled, if the blinds are physically OPEN the state in Home Assistant is closed and pressing the UP button physically closes the blinds.
From the WindowCovering cluster attribute:
current_position_lift_percentage:0From Dev Tools View:
The values only change when operating the cover with the slider. When using the slider the blinds function as expected. When using the open and close button the state will switch to opening or closing but the blinds don’t perform any action.