MOES Tuya ZigBee Smart Sliding Window Pusher

Thanks very much for that. Impressively quiet, and looks like it works very well. Appreciate it!

2 Likes

Lets try directly with the Smart Sliding Window Pusher.... Download and manually install the dev. branch version from this link :

https://raw.githubusercontent.com/kkossev/Hubitat/development/Drivers/ZigBee%20Window%20Shade/Zigbee_Window_Shade_lib_included.groovy

Select 'LOAD ALL DEFAULTS' from the drop-down menu and click on the Configure button above:
image

The Tuya pusher should be recognized and initialized automatically, after refreshing the web page you should see this deviceProfile in the State Variables :

WIth the Debug Logging preference enabled, I will need the live logs when the pushed is operated manually (from the buttons on the device).

Please select/copy/paste the live logs as a text. Enclose the long logs into a summary section, using the cog wheel tool in the forum editor.

This is a very early first alpha-version, a lot of things may not work properly, but I will need the debug logs to simulate the device for the next update.

@kwon2288 what settings are available on SmartThings for this device?

1 Like

The Korean-language portion is explained below.

Open and close slowly - It closes completely and stops slowly when it opens.

Manual mode - Pushing the window causes the motor to run in the push direction

motor calibration - motor limit

1 Like

Manally push open

Summary

dev:7092024-07-01 06:53:55.072infoMotion sensor illuminance is 25 lx (delayed)
dev:7092024-07-01 06:53:50.682infoMotion sensor Detected motion
dev:7092024-07-01 06:53:50.605infoMotion sensor humanMotionState is moving
dev:7892024-07-01 06:53:49.569infoSlide Window windowDetection is 1
dev:7892024-07-01 06:53:49.567debugSlide Window standardParseTuyaCluster: command=06 dp_id=4 dp=114 (0x72) fncmd=1 fncmd_len=1 (index=0)
dev:7892024-07-01 06:53:49.564debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 00187204000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:06, direction:01, data:[00, 18, 72, 04, 00, 01, 01]] description=catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 00187204000101
dev:7892024-07-01 06:53:48.589infoSlide Window windowShade is open [physical]
dev:7892024-07-01 06:53:48.586debugSlide Window updateWindowShadeStatus: isFinal: true, substituteOpenClose: false, targetPosition: 0, currentPosition: 0, windowShade: closed
dev:7892024-07-01 06:53:48.576infoSlide Window position is 0%
dev:7892024-07-01 06:53:48.573debugSlide Window processCurrentPosition: 0 (was 0)
dev:7892024-07-01 06:53:48.566debugSlide Window stopOperationTimeoutTimer
dev:7892024-07-01 06:53:48.564debugSlide Window customProcessDeviceProfileEvent(position, 0) called
dev:7892024-07-01 06:53:48.560debugSlide Window standardParseTuyaCluster: command=06 dp_id=2 dp=104 (0x68) fncmd=0 fncmd_len=4 (index=0)
dev:7892024-07-01 06:53:48.557debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 00176802000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:06, direction:01, data:[00, 17, 68, 02, 00, 04, 00, 00, 00, 00]] description=catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 00176802000400000000
dev:7092024-07-01 06:53:45.103infoMotion sensor illuminance is 11 lx
dev:7892024-07-01 06:53:43.538infoSlide Window control is 1
dev:7892024-07-01 06:53:43.536debugSlide Window standardParseTuyaCluster: command=06 dp_id=4 dp=102 (0x66) fncmd=1 fncmd_len=1 (index=0)
dev:7892024-07-01 06:53:43.533debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 00166604000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:06, direction:01, data:[00, 16, 66, 04, 00, 01, 01]] description=catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 00166604000101
dev:7092024-07-01 06:53:42.309infoMotion sensor Motion reset to inactive after 51s
dev:7092024-07-01 06:53:42.238infoMotion sensor humanMotionState is none

1 Like

Manually push close

Summary

dev:7892024-07-01 06:56:22.372infoSlide Window windowDetection is 0

dev:7892024-07-01 06:56:22.369debugSlide Window standardParseTuyaCluster: command=06 dp_id=4 dp=114 (0x72) fncmd=0 fncmd_len=1 (index=0)

dev:7892024-07-01 06:56:22.367debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 001C7204000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:06, direction:01, data:[00, 1C, 72, 04, 00, 01, 00]] description=catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 001C7204000100

dev:7892024-07-01 06:56:21.395infoSlide Window windowShade is closed [physical]

dev:7892024-07-01 06:56:21.392debugSlide Window updateWindowShadeStatus: isFinal: true, substituteOpenClose: false, targetPosition: 0, currentPosition: 100, windowShade: open

dev:7892024-07-01 06:56:21.389infoSlide Window position is 100%

dev:7892024-07-01 06:56:21.386debugSlide Window processCurrentPosition: 100 (was 100)

dev:7892024-07-01 06:56:21.378debugSlide Window stopOperationTimeoutTimer

dev:7892024-07-01 06:56:21.376debugSlide Window customProcessDeviceProfileEvent(position, 100) called

dev:7892024-07-01 06:56:21.373debugSlide Window standardParseTuyaCluster: command=06 dp_id=2 dp=104 (0x68) fncmd=100 fncmd_len=4 (index=0)

dev:7892024-07-01 06:56:21.370debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 001B6802000400000064, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:06, direction:01, data:[00, 1B, 68, 02, 00, 04, 00, 00, 00, 64]] description=catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 001B6802000400000064

dev:7892024-07-01 06:56:16.229infoSlide Window control is 0

dev:7892024-07-01 06:56:16.226debugSlide Window standardParseTuyaCluster: command=06 dp_id=4 dp=102 (0x66) fncmd=0 fncmd_len=1 (index=0)

dev:7892024-07-01 06:56:16.223debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 001A6604000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:06, direction:01, data:[00, 1A, 66, 04, 00, 01, 00]] description=catchall: 0104 EF00 01 01 0040 00 1483 01 00 0000 06 01 001A6604000100

1 Like

One useful article (at least for me - I learned a few new English words - 'sash', 'jamb', 'sill' :slight_smile: )

If you know what those mean you're ahead of most native English speakers. :wink:

1 Like

@kwon2288 thank you for the screenshots. I still need to better understand the meaning of these parameters ..

Can someone request this product manual in PDF format from the seller?

@zesttree thank you for the logs!

I have pushed a quick update :
ver. 3.3.2 2024-07-01 (dev. branch)

  • added configurable preferences
    • 'slowStop', '
    • manualMode';
  • added attributes
    • 'control', '
    • chargeState',
    • 'motorTimeout',
    • 'windowDetection'

Can you try the 'open' and 'close' commands from the device web page and post the debug logs?

Also, send the Debug logs when you click on the ‘Save Preferences’ button.

2 Likes

Close pushed

Summary

dev:7892024-07-01 20:37:26.222debugSlide Window zigbee private cluster 0xEF00 command 0x00 response: Success

dev:7892024-07-01 20:37:26.217debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 1483 00 00 0000 0B 01 0000

dev:7892024-07-01 20:37:25.924infoSlide Window windowShade is closing

dev:7892024-07-01 20:37:25.897debugSlide Window startOperationTimeoutTimer: 31 seconds

dev:7892024-07-01 20:37:25.894debugSlide Window sendZigbeeCommands: sent cmd=[he cmd 0x1483 0x01 0xEF00 0x00 {5FB36604000101} {}, delay 201]

dev:7892024-07-01 20:37:25.891debugSlide Window Slide Window getTuyaCommand (dp=66 fncmd=01 dp_type=04) = [he cmd 0x1483 0x01 0xEF00 0x00 {5FB36604000101} {}, delay 201]

dev:7892024-07-01 20:37:25.888debugSlide Window getTuyaDPbyCommandName: dp: 66

dev:7892024-07-01 20:37:25.886debugSlide Window getTuyaDPbyCommandName: mapAttr: [dp:102, name:control, type:enum, rw:rw, min:0, max:2, defVal:0, scale:1, map:[0:open, 1:close, 2:stop], description:Window control]

dev:7892024-07-01 20:37:25.883debugSlide Window sendClose: sending command close (1), sDirection = unknown

dev:7892024-07-01 20:37:25.880debugSlide Window sendClose() dpCommandClose = 1

dev:7892024-07-01 20:37:25.878debugSlide Window close: sending sendClose() command

dev:7892024-07-01 20:37:25.875debugSlide Window close: [digital]

Open pushed

Summary

dev:7892024-07-01 20:39:14.693infoSlide Window windowShade is open [digital]

dev:7892024-07-01 20:39:14.688debugSlide Window updateWindowShadeStatus: isFinal: true, substituteOpenClose: false, targetPosition: 0, currentPosition: 0, windowShade: opening

dev:7892024-07-01 20:39:14.685warnSlide Window operationTimeout!

dev:7892024-07-01 20:39:13.456debugSlide Window zigbee private cluster 0xEF00 command 0x00 response: Success

dev:7892024-07-01 20:39:13.449debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 1483 00 00 0000 0B 01 0000

dev:7892024-07-01 20:39:12.707infoSlide Window windowShade is opening

dev:7892024-07-01 20:39:12.661debugSlide Window startOperationTimeoutTimer: 2 seconds

dev:7892024-07-01 20:39:12.655debugSlide Window sendZigbeeCommands: sent cmd=[he cmd 0x1483 0x01 0xEF00 0x00 {DC616604000100} {}, delay 201]

dev:7892024-07-01 20:39:12.652debugSlide Window Slide Window getTuyaCommand (dp=66 fncmd=00 dp_type=04) = [he cmd 0x1483 0x01 0xEF00 0x00 {DC616604000100} {}, delay 201]

dev:7892024-07-01 20:39:12.648debugSlide Window getTuyaDPbyCommandName: dp: 66

dev:7892024-07-01 20:39:12.646debugSlide Window getTuyaDPbyCommandName: mapAttr: [dp:102, name:control, type:enum, rw:rw, min:0, max:2, defVal:0, scale:1, map:[0:open, 1:close, 2:stop], description:Window control]

dev:7892024-07-01 20:39:12.643debugSlide Window sendOpen: sending command open (0), sDirection = unknown

dev:7892024-07-01 20:39:12.640debugSlide Window sendOpen() dpCommandOpen = 0

dev:7892024-07-01 20:39:12.638infoSlide Window opening

Save Preferences pushed

Summary

dev:7892024-07-01 20:40:21.400debugSlide Window zigbee private cluster 0xEF00 command 0x00 response: Success

dev:7892024-07-01 20:40:21.395debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 1483 00 00 0000 0B 01 0000

dev:7892024-07-01 20:40:21.332debugSlide Window zigbee private cluster 0xEF00 command 0x00 response: Success

dev:7892024-07-01 20:40:21.328debugSlide Window parse: descMap = [raw:catchall: 0104 EF00 01 01 0040 00 1483 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:1483, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 EF00 01 01 0040 00 1483 00 00 0000 0B 01 0000

dev:7892024-07-01 20:40:21.090infoSlide Window updated

dev:7892024-07-01 20:40:21.085debugSlide Window sendZigbeeCommands: sent cmd=[he cmd 0x1483 0x01 0xEF00 0x00 {02A96A04000100} {}, delay 201]

dev:7892024-07-01 20:40:21.082infoSlide Window setPar: (2) sending parameter manualMode (0 (scaledValue=0))

dev:7892024-07-01 20:40:21.079debugSlide Window Slide Window getTuyaCommand (dp=6A fncmd=00 dp_type=04) = [he cmd 0x1483 0x01 0xEF00 0x00 {02A96A04000100} {}, delay 201]

dev:7892024-07-01 20:40:21.076debugSlide Window sendTuyaParameter: sending parameter manualMode dpValHex 00 (raw=0) Tuya dp=6A dpType=04

dev:7892024-07-01 20:40:21.073debugSlide Window setPar(manualMode, 0)

dev:7892024-07-01 20:40:21.071debugSlide Window updateAllPreferences: foundMap = [dp:106, name:manualMode, type:enum, rw:rw, min:0, max:1, defVal:0, scale:1, map:[0:enabled, 1:disabled], title:Manual Mode, description:Pushing the window causes the motor to run in the push direction]

dev:7892024-07-01 20:40:21.068debugSlide Window updateAllPreferences: preference slowStop is not set (preferenceValue was null)

dev:7892024-07-01 20:40:21.065debugSlide Window updateAllPreferences: foundMap = [dp:110, name:slowStop, type:enum, rw:rw, map:[0:enabled, 1:disabled], title:Slow Stop, description:Enable/disable the slow stop function]

dev:7892024-07-01 20:40:21.062debugSlide Window sendZigbeeCommands: sent cmd=[he cmd 0x1483 0x01 0xEF00 0x00 {112B6D04000100} {}, delay 201]

dev:7892024-07-01 20:40:21.059infoSlide Window setPar: (2) sending parameter motorDirection (0 (scaledValue=0))

dev:7892024-07-01 20:40:21.056debugSlide Window Slide Window getTuyaCommand (dp=6D fncmd=00 dp_type=04) = [he cmd 0x1483 0x01 0xEF00 0x00 {112B6D04000100} {}, delay 201]

dev:7892024-07-01 20:40:21.054debugSlide Window sendTuyaParameter: sending parameter motorDirection dpValHex 00 (raw=0) Tuya dp=6D dpType=04

dev:7892024-07-01 20:40:21.051debugSlide Window setPar(motorDirection, 0)

dev:7892024-07-01 20:40:21.048debugSlide Window updateAllPreferences: foundMap = [dp:109, name:motorDirection, dt:04, type:enum, rw:rw, min:0, max:1, defVal:0, scale:1, map:[0:left, 1:right], title:Motor Direction, description:Motor direction install side]

dev:7892024-07-01 20:40:21.045debugSlide Window updateAllPreferences: preferences=[motorDirection:109, slowStop:110, manualMode:106]

dev:7892024-07-01 20:40:21.042debugSlide Window customUpdated: updateAllPreferences()...

dev:7892024-07-01 20:40:21.039debugSlide Window customUpdated: ...

dev:7892024-07-01 20:40:21.037debugSlide Window deviceHealthCheck is scheduled every 240 minutes

dev:7892024-07-01 20:40:21.009infoscheduling health check every 240 minutes by Activity check method

dev:7892024-07-01 20:40:20.955infoSlide Window driver version 3.3.2 2024/07/01 8:19 AM (TS0601 _TZ3210_5rta89nj) (C-7 2.3.9.157)

dev:7892024-07-01 20:40:20.952infoSlide Window updated()...

1 Like

State Variables

  • deviceProfile : TUYA_SLIDING_WINDOW_PUSHER
  • deviceType : Curtain
  • lastTx : {cmdTime=1719837621075}
  • lastRx : {batteryTime=1719837373242, checkInTime=1719837241295}
  • stats : {cfgCtr=1, bVoltCtr=1, battCtr=1, rxCtr=14, txCtr=24}
  • driverVersion : 3.3.2 2024/07/01 8:19 AM (TS0601 _TZ3210_5rta89nj) (C-7 2.3.9.157)
  • health : {checkCtr3=0, offlineCtr=0}
  • states : {isRefresh=false, isDigital=false, isPing=false}
2 Likes

Hi kkossev,

No physical movement from pusher when open and close buttons were pushed.

#&%$#& !!!

We encounter the same problem where the Zigbee2MQTT guys stopped 5 days ago... :frowning:


Update: I have one idea of what could be wrong and will implement it later this evening.

1 Like

@kkossev Product manual is here.
It is pdf format.

1 Like

Please update to version '3.3.3' '2024/07/01 8:03 PM' .

This is a shoot in the dark, and I have only one bullet... But I think the chances are 50/50 ! :+1:

Test any of the open/close/stop commands.

2 Likes

Yes its working .

1 Like

Woohoo!:partying_face::tada::champagne:

2 Likes

I also applied this driver.
windowsShade value is displayed in reverse.

1 Like