Help with zigbee2mqtt and curtain switch (Zemismart ZM-CSW002-D)

Hi everyone, I got my first device with zigbee - Zemismart ZM-CSW002-D (curtain switch)
I use usb stick CC2531 like a coordinator. I have installed mqtt broker and zigbee2mqtt via Supervisor.
My coordinator CC2531 is installed correctly, but I have promlem with Zemismart ZM-CSW002-D (SM-SW101-ZC)
It has a message:

NO COMPONENTS Maybe this device is not (yet) supported by Zigbee2Mqtt?

I have set the following settings:

data_path: /share/zigbee2mqtt
external_converters: []
devices: devices.yaml
groups: groups.yaml
homeassistant: true
permit_join: true
  base_topic: zigbee2mqtt
  server: 'mqtt://core-mosquitto'
  user: mqtt_user
  password: mqtt_password
  port: /dev/ttyACM0
  log_level: info
  pan_id: 6754
  channel: 11
    - 1
    - 3
    - 5
    - 7
    - 9
    - 11
    - 13
    - 15
    - 0
    - 2
    - 4
    - 6
    - 8
    - 10
    - 12
    - 13
  availability_blocklist: []
  availability_passlist: []
device_options: {}
blocklist: []
passlist: []
queue: {}
  port: 8099
  new_api: true
  enabled: false
  master: 'pty,raw,echo=0,link=/dev/ttyZ2M,mode=777'
  slave: 'tcp-listen:8485,keepalive,nodelay,reuseaddr,keepidle=1,keepintvl=1,keepcnt=5'
  restartdelay: 1
  initialdelay: 1
  options: '-d -d'
  log: false
zigbee_shepherd_devices: true

What am I doing wrong?

Hello everyone, I solved my problem.
Perhaps this will help new users like me.
I followed this instruction

I added a file divices.js in share\zigbee2mqtt and put this config into it:

        zigbeeModel: ['TS130F'],
        fingerprint: [
            {modelID: 'TS130F', manufacturerName: '_TZ3000_8kzqqzu4'}
        model: 'SC400',
        vendor: 'Loratap',
        description: 'Curtain switch',
        supports: 'open, close, stop, position',
        fromZigbee: [fz.cover_position_tilt, fz.ignore_basic_report],
        toZigbee: [tz.cover_state, tz.cover_position_tilt],
        meta: {configureKey: 1, coverInverted: true},

Next step, I added this config into configuration.yaml

  - platform: "mqtt"
    availability_topic: "zigbee2mqtt/bridge/state"
    command_topic: "zigbee2mqtt/<FRIENDLY_NAME>/set"
    value_template: "{{ value_json.position }}"
    set_position_template: "{ \"position\": {{ position }} }"
    set_position_topic: "zigbee2mqtt/<FRIENDLY_NAME>/set"
    position_topic: "zigbee2mqtt/<FRIENDLY_NAME>"

  - platform: "mqtt"
    state_topic: "zigbee2mqtt/<FRIENDLY_NAME>"
    availability_topic: "zigbee2mqtt/bridge/state"
    unit_of_measurement: "lqi"
    value_template: "{{ value_json.linkquality }}"
    icon: "mdi:signal"

Now I have a question, how can I calibrate my curtain switch?
I found the following tables:

This is not for HA, but I suppose the addresses should be the same.
I need to increase the opening and closing time to 45 seconds. Now it is 10 seconds.

1 Like

Same problem here.
I have the curtain switch, operates well, but only for 10 seconds in both directions.


1 Like

Hey! Have you found any solution for calibrating the switch yet?

Hi. I have not resolved this problem :slightly_frowning_face:

Have anyone fixed this issue?


  1. Puts the device in calibration mode (from zigbee2mqtt frontend).
  2. Open curtain completely
  3. Click device pause button
  4. Close curtain completely
  5. Click device pause button
  6. Exit from calibration mode