question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

[Device Support Request] Smartwings WM25/L-Z Blinds

See original GitHub issue

Is 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:open
  • Created a year ago
  • Comments:22 (1 by maintainers)

github_iconTop GitHub Comments

2reactions
warllo54commented, Aug 13, 2022
  • Yes, the quirk has the inverted code implemented.
Quirk as implemented
"""Device handler for Smartwings WM25L-Z roller blinds."""
from zigpy.profiles import zha
from zigpy.quirks import CustomCluster, CustomDevice
from zigpy.zcl.clusters.closures import WindowCovering
from zigpy.zcl.clusters.general import (
    Basic,
    Groups,
    Identify,
    Ota,
    PowerConfiguration,
    Scenes,
)

from zhaquirks import DoublingPowerConfigurationCluster
from zhaquirks.const import (
    DEVICE_TYPE,
    ENDPOINTS,
    INPUT_CLUSTERS,
    MODELS_INFO,
    OUTPUT_CLUSTERS,
    PROFILE_ID,
)


class InvertedWindowCoveringCluster(CustomCluster, WindowCovering):
    """WindowCovering cluster implementation.
    This implementation inverts the reported covering percent for non standard
    devices that don't follow the reporting spec.
    """

    cluster_id = WindowCovering.cluster_id
    CURRENT_POSITION_LIFT_PERCENTAGE = 0x0008

    def _update_attribute(self, attrid, value):
        if attrid == self.CURRENT_POSITION_LIFT_PERCENTAGE:
            value = 100 - value
        super()._update_attribute(attrid, value)


class WM25LBlinds(CustomDevice):
    """Custom device representing Smartwings WM25/L-Z roller blinds."""

    signature = {
        # <SimpleDescriptor endpoint=1 profile=260 device_type=514
        # device_version=1
        # input_clusters=[0, 1, 3, 4, 5, 32, 258]
        # output_clusters=[3, 25]>
        MODELS_INFO: [
            ("Smartwings", "WM25/L-Z"),
        ],
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.WINDOW_COVERING_DEVICE,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    PowerConfiguration.cluster_id,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
                    WindowCovering.cluster_id,
                ],
                OUTPUT_CLUSTERS: [Identify.cluster_id, Ota.cluster_id],
            }
        },
    }

    replacement = {
        ENDPOINTS: {
            1: {
                PROFILE_ID: zha.PROFILE_ID,
                DEVICE_TYPE: zha.DeviceType.WINDOW_COVERING_DEVICE,
                INPUT_CLUSTERS: [
                    Basic.cluster_id,
                    DoublingPowerConfigurationCluster,
                    Identify.cluster_id,
                    Groups.cluster_id,
                    Scenes.cluster_id,
#                    WindowCovering.cluster_id,
                    InvertedWindowCoveringCluster,
                ],
                OUTPUT_CLUSTERS: [Identify.cluster_id, Ota.cluster_id],
            }
        }
    }
  • 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_mode retains the WindowCoveringMode.Motor_direction_reversed

  • Without 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.

2reactions
warllo54commented, Aug 12, 2022

From the WindowCovering cluster attribute: current_position_lift_percentage:0

From Dev Tools View:

state: open
current_position: 100
friendly_name: MasterBedroomBlinds
supported_features: 15

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.

Read more comments on GitHub >

github_iconTop 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 >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found