Zigbee2MQTTZigbee2MQTT
  • Getting started
  • Supported Adapters
  • Supported Devices
  • Installation
  • Configuration
  • Usage
  • FAQ
Devices
  • Zigbee

    • Zigbee network
    • Improve network range and stability
    • Secure your Zigbee network
    • Sniff Zigbee traffic
    • Create a CC2530 router
  • Support new devices

    • Support new devices
    • Support new Tuya devices
    • Find Tuya Data Points
  • Remote Adapter

    • Connect to a remote adapter
    • Connect to a remote Sonoff ZBBridge
  • More

    • 3D cases
    • External converters
    • External extensions
    • Switch to the dev branch
    • Get Tuya and Xiaomi OTA url
  • Forum
  • Discord
  • Issues
  • Donate
GitHub
GitHub (docs)
  • Getting started
  • Supported Adapters
  • Supported Devices
  • Installation
  • Configuration
  • Usage
  • FAQ
Devices
  • Zigbee

    • Zigbee network
    • Improve network range and stability
    • Secure your Zigbee network
    • Sniff Zigbee traffic
    • Create a CC2530 router
  • Support new devices

    • Support new devices
    • Support new Tuya devices
    • Find Tuya Data Points
  • Remote Adapter

    • Connect to a remote adapter
    • Connect to a remote Sonoff ZBBridge
  • More

    • 3D cases
    • External converters
    • External extensions
    • Switch to the dev branch
    • Get Tuya and Xiaomi OTA url
  • Forum
  • Discord
  • Issues
  • Donate
GitHub
GitHub (docs)

Tuya ZG-103Z

ModelZG-103Z
VendorTuya
DescriptionVibration sensor
Exposesvibration, tilt, x, y, z, battery, sensitivity
PictureTuya ZG-103Z

Notes

Battery

Uses a CR2450 battery

Pairing

Press the reset button for about 3 seconds. The LED lights flash.

NOTE: When you fail to pair a device, try replacing the battery, this could solve the problem.

Frequency of vibration actions

The subtopic /action with payload vibration and associated status JSON blobs are emitted about one second after onset, but not more frequently than 5 second regardless of whether vibrations are continuous or intermittent within that 5 second.

Troubleshooting: device stops sending messages/disconnects from network

Since devices do not fully comply to the Zigbee standard, it sometimes happens that they disconnect from the network. Most of the times this happens because of the following reasons:

  • Device has a weak signal, you can see the signal quality in the published messages as linkquality. A linkquality < 20 is considered weak.
  • Low battery voltage, this can even happen when the battery still appears full. Try a different battery.
  • The device is connected through a router which cannot deal with Xiaomi devices. This is known to happen devices from: Centralite, General Electric, Iris, Ledvance, Legrand, OSRAM, Sylvania, SmartThings, Securifi. A possible solution is to connect the device directly to the central coordinator by pushing the reset button while being physically close to it.

More detailed information about this can be found here.

Sensitivity

The sensitivity can be changed by publishing to zigbee2mqtt/FRIENDLY_NAME/set{"sensitivity": "SENSITIVITY"} where SENSITIVITY is one of the following values: low, medium, high.

After setting the sensitivity you immediately have to start pressing the reset button with an interval of 1 second until you see Zigbee2MQTT publishing the new sensitivity to MQTT.

Calibration

In order to improve the factory calibration or lack thereof, you can get a better result with a 2 step offset calibration:

  • Ensure the x, y and z offset are set to 0 in the device specific settings
  • Put the device on a level surface, face up.
    • A few seconds after the tilt action, the angles and accelerometer values (x_axis, y_axis, z_axis) are updated
    • x_axis and y_axis should be small, z_axis around 255
    • Set the offset for x and y to the opposite values of x_axis and y_axis to compensate.
  • Put the device on a side
    • After a few seconds, te values update, and z_axis should be small, as well as one of the x_axis or y_axis, the other being around ±1000
    • Set the offset for z to the opposite of z_axis You can fine tune the values of the offset by trying other sides and picking values that match best. Remember that the device sends accelerometer values a few seconds after the actual tilt event.

Exposes

Vibration (binary)

Indicates whether the device detected vibration. Value can be found in the published state on the vibration property. It's not possible to read (/get) or write (/set) this value. If value equals true vibration is ON, if false OFF.

Tilt (binary)

Indicates whether the device detected tilt. Value can be found in the published state on the tilt property. It's not possible to read (/get) or write (/set) this value. If value equals true tilt is ON, if false OFF.

X (numeric)

X coordinate. Value can be found in the published state on the x property. It's not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 256.

Y (numeric)

Y coordinate. Value can be found in the published state on the y property. It's not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 256.

Z (numeric)

Z coordinate. Value can be found in the published state on the z property. It's not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 256.

Battery (numeric)

Remaining battery in %, can take up to 24 hours before reported. Value can be found in the published state on the battery property. It's not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 100. The unit of this value is %.

Sensitivity (enum)

Vibration detection sensitivity. Value can be found in the published state on the sensitivity property. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"sensitivity": NEW_VALUE}. The possible values are: low, middle, high.

Help to make the docu better and edit this page on Github ✌
Last Updated: 6/24/25, 7:58 PM