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 IH012-RT01

ModelIH012-RT01
VendorTuya
DescriptionMotion sensor
Exposesbattery, voltage, sensitivity, keep_time, occupancy, battery_low
PictureTuya IH012-RT01

Notes

Pairing

To start pairing, press the button (pinhole on the side of the device) using a pin/paperclip for approx. 10 seconds. The led will turn on, then start blinking while the pairing process is in progress.

Reading and Setting Values

As a low power device, the motion sensor isn't reachable most of the time, but only when active (e.g. because it detected motion). Therefore, requests to read or set values (i.e. sensitivity or keep_time) won't be processed right away, typically. Instead, they will be queued and sent on the next occasion.

Troubleshooting: Occupancy stays on or off permanently

If the occupancy state stays on despite a lack of movement, or off despite movement, it needs to be re-paired. This can happen, e.g., when the power is interrupted by a battery change.

Method 1

  1. Remove from Zigbee2MQTT (without force). Device should start blinking upon successful removal.
  2. Remove battery, wait a few seconds, reinsert.
  3. Execute normal pairing procedure.

Re-pairing without removal or power cut does not fix this issue.

Method 2

Completely removing and adding the device again might generate a new device id which can be a hassle depending on your setup. So here's an alternate method that avoids re-pairing the device:

  1. Click the device's interview button in the z2m UI, so that the confirmation prompt opens ("Are you sure?")
  2. Push and hold the pairing button so the LED lights up
  3. Now before the device goes into pairing mode, click OK in the confirmation prompt
  4. Wait a second or two and let go of the pairing button, again before it actually enters pairing mode
  5. You should get a message popup in the z2m UI saying the device only supports zigbee specification revision 21, and that the interview was successful

This is a bit tricky to get right with only two hands but might be worth it if you want to avoid re-adding the device.

Exposes

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 %.

Voltage (numeric)

Voltage of the battery in millivolts. Value can be found in the published state on the voltage property. It's not possible to read (/get) or write (/set) this value. The unit of this value is mV.

Sensitivity (enum)

PIR sensor sensitivity. Value can be found in the published state on the sensitivity property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"sensitivity": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"sensitivity": NEW_VALUE}. The possible values are: low, medium, high.

Keep time (enum)

PIR keep time in seconds. Value can be found in the published state on the keep_time property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"keep_time": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"keep_time": NEW_VALUE}. The possible values are: 30, 60, 120.

Occupancy (binary)

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

Battery low (binary)

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

Help to make the docu better and edit this page on Github ✌
Last Updated:: 6/19/25, 5:56 PM