Tapestry THPZ1 Zigbee Presence Sensor—Help Needed

I hope to acquire an Edge Driver for this Tapestry Presence sensor Z1 occupancy and temperature/humidity sensor so it can be connected to SmartThings. Here are the Zigbee2MQTT Specs and here is a link to the Tapestry Home Presence Sensor Z1 (THPZ1) Owner’s Manual. I am working with the device manufacture. What additional information is required, if any, from them? Here is a few pictures of the device.

1 Like

Tell the manufacturer to pay @Mariano_Colmenarejo to make them a driver


Hey Bud,

This is Elaine. I haven’t been able to test this since I don’t have a hub, but here’s a v1 edge driver I’ve written: Samsung account

The code is being built here: GitHub - Tapestry-Home/tapestry-smartthings-edge-driver

Or if anyone from the community wants to look through and make sure I haven’t done anything weird/unexpected, that would also be helpful.

1 Like

Hi @taby2

Use the defaults of the lua capabilities, occupancy, temperature and humidity. It could work in a basic way, without temperature or sensitivity settings, which could use custom attributes or clusters.

You may need to perform a device:refresh() in the added lifecycle to initialize the values of the three capabilities

In the profile you have used

      - name: MultiFunctionalSensor

This will show a wrong icon.
You could use MotionSensor or PresenceSensor

You could also add temperature and humidity offsset preferences to the profile

  - preferenceId: tempOffset
    explicit: true
  - preferenceId: humidityOffset
    explicit: true

Fascinating looking device, @Buds_Smart_Home – do you know if they are planning any other versions, e.g., Matter, WiFi, and/or Z-Wave. Nice form factor and the mounting options show a lot of foresight. The included temperature/humidity sensor is a strong plus. :smiley:

I accepted the driver invitation, however, when taping on “Available Drivers”, I found that there were no drivers available for the Tapestry-Zigbee-Dev Channel.

Hi Barkis. Yes it’s a handsome sensor. As far as the manufacture’s plans, I’ll refer you to taby2Elaine

Thank you! We are currently hoping to release a Matter/Thread version in the next few months, but there’s a bit of a certification process attached to that which is why we launched with Zigbee first. We do have a WiFi version internally that runs over MQTT; we could certainly publish a firmware update or sell another model based on that if there was community interest.

@ Mariano_Colmenarejo I have added the suggested line in the added function. It seems Bud is having an issue (on a prior release without that added line) where the Hub isn’t realizing that the driver should be assigned to the device and isn’t allowing him to select it manually; have you seen this before?
Does the smartthings cli tool run any sort sort of validation before publishing into a channel, or is it possible a syntax error or something of the sort could cause the driver not to be loading? I have ordered a hub of my own to help with driver development but any tips you have in the meantime would be greatly appreciated.
The device firmware does not expose options to enable/disable temperature/humidity compensation, so I don’t believe it makes sense to add offset preferences; or am I misunderstanding how those work and the offsets are applied on the Hub side?

1 Like

According to Device Preferences | Developer Documentation | SmartThings they are “Automatically applied to attribute values emmited by Edge drivers - no support required by driver itself”

1 Like

FYI: I was able to install your updated driver on my hub with no issues. I don’t have the device so I could not test it.

Hi @taby2

You can add temperature and humidity correction preferences in profile.

This correction is performed automatically on the platform, adding or subtracting the correction value from the value emitted by the driver and device.

The drivers, once installed in the hub, are visible on the web and in the App, but there is currently a problem that is not visible for device pairing until some time passes, about 30 minutes. I don’t know if this is resolved or not, I haven’t tried pairing any devices this week.

As you are the manufacturer, you will know the cluster and attributes that are used to configure sensitivity, timeout occupancy,…

If you publish the documentation of clusters, attributes and values and data types used by the device, we can help you to make an attractive and efficient driver that does not flood the network with messages or is displayed offline and can be configured in a personalized way by users.


When you mention “acquire” in the context of acquiring an Edge Driver for the Tapestry Presence sensor Z1, it typically means that we would need to develop a custom driver for the device in order to integrate it with SmartThings. Since this device is not officially supported by SmartThings, we would need to either create a new driver specifically for this device or explore if any existing custom drivers, such as the EDGE Driver-Mc Zigbee Drivers, can be adapted to work with it.

To proceed further, we would require detailed specifications and communication protocols for the Tapestry Presence sensor Z1 from the device manufacturer. This would include information such as Zigbee cluster details, attribute reporting mechanisms, and any other relevant technical documentation. Additionally, having access to the device for testing purposes would greatly assist in the driver development process.

If you could provide us with the necessary technical details and possibly arrange for device testing, we can then assess the feasibility of integrating the Tapestry Presence sensor Z1 with SmartThings. Feel free to share any additional information or updates you may have regarding this process. Thank you!


@Paul_Oliver and @Mariano_Colmenarejo , thanks for the info regarding preferences; I’ve added in those lines.

I would be thrilled to help with development of a community driver; you are welcome to do so in your own channel or contribute to the repository we are using.

The device implements only the following standard Zigbee clusters and attributes, on endpoint 1:

  1. 0x000 Basic Cluster
    1. 0x0004 Manufacturer Name: Tapestry
    2. 0x0005 Model Identifier: THPZ1
    3. 0x0008 Device class ID: 0 - Lighting
    4. 0x0009 Generic Device Type: 0xe3 - motion or light sensor
    5. 0x4000 Software Build ID: “0.29.17”, on the current firmware release
    • several others, including Application version, HW version, Stack version, date code, product URL, which I wouldn’t recommend relying on to fingerprint the device
  2. 0x003 Identify Cluster
    1. 0x0000 Identify Time
  3. 0x406 Occupancy sensing
    1. 0x000 occupancy, 1 when occupancy is detected and 0 otherwise
    2. 0x001 sensor type, 0x30
    3. 0x002 sensor type bitmap, 0x01
  4. 0x402 Temperature measurement
    1. 0x000 Measured Value, temperature in 100x degrees C
    2. 0x001 min value, 0
    3. 0x002 max value, 10000
  5. 0x405 Humidity measurement
    1. 0x000 Measured Value, humidity in 100x RH in %
    2. 0x001 min value, 0
    3. 0x002 max value, 10000

There are no custom or nonstandard Zigbee clusters which control sensitivity or timeouts. Happy to send more detailed information if required, or if I missed anything critical.

1 Like

Hi @taby2

If device only use standard clusters and attributes and do not have sensitivity and occupancy timeout settings, then with the driver as you have it written it should work fine.

It would report with default configuration:


  • maximum interval 600 sec
  • Change report 1°c


  • maximum interval 3600 sec
  • Change report 1%

The only thing that could be added in preferences is a custom configuration for temperature and humidity reports. There are users who appreciate it enough to configure it for the use they need.

I use these preference values, but they can be other

- name: "tempMaxTime"
     title: "Temperature Report Interval (min)"
     description: "Select Temp. Report Max. Interval (5 min to 240 min)"
     required: false
     preferenceType: integer
       minimum: 5
       maximum: 240
       default: 5
   - name: "tempChangeRep"
     title: "Temperature Reportable Change"
     description: "Select Temp. Reportable Change 0.1º to 6º"
     required: false
     preferenceType: number
       minimum: 0.1
       maximum: 6
       default: 0.1
   - name: "humMaxTime"
     title: "Humidity Report Interval (min)"
     description: "Select Humidity Report Max. Interval (5 min to 240 min)"
     required: false
     preferenceType: integer
       minimum: 5
       maximum: 240
       default: 10
   - name: "humChangeRep"
     title: "Humidity Reportable Change (%)"
     description: "Select Humidity Reportable Change 1% to 10%"
     required: false
     preferenceType: integer
       minimum: 1
       maximum: 10
       default: 1

It need a simple code, it need to add a function that is executed in the infoChange lifecycle, when the user changes a configuration value in the preferences settings.

This is an example of the function in a driver on my github

I can write it next Monday on your GitHub, until then I don’t have access to my PC.

or you can adapt code yourself if you want


There was a typo in the fingerprints file which was preventing the driver from loading properly; that’s been fixed and pushed to the channel linked earlier, and my and @Buds_Smart_Home 's hubs are picking up the devices correctly now, and basic functionality is working. I haven’t added any user preferences in and would be very grateful if you would be able to put in the recommended additions, and can test to make sure they work as expected then.

Thank you all for all the help and input so far!


Hi @taby2

I created a pull request with theses driver changes:

Added profile preferences for temperature and Humidity offsets
Added profile preferences for custom configuration of Temperature and Humidity reports
Added code to preferences handler
Added code to custom device configuration
Added code to driverSwitched lifecycle to perform a device custom configuration when user make a driver change form other different driver, zigbee thing for example


Thank you so much! Tested on my hub and everything seems to work as expected, so it’s been merged into main and pushed to the dev and release channels!