How to build the easiest Zigbee chair occupancy sensor

Disclosure: This post contains affiliate links. If you click through and make a purchase, I’ll earn a commission, at no additional cost to you. Read my full disclosure here.
Advertisement

Reliably informing Home Assistant whether someone is occupying a room has to be one of the most challenging tasks we face on our home automation adventure. In an attempt to cover all bases, I built a cheap (~US$25) and simple chair occupancy sensor, and in this guide I will show you how you can do the same. Although it is a DIY project, This sensor requires no soldering, 3D-printing, or knowledge of electronics.

Advertisement

If working from home has taught me one thing, it is that motion sensors, known also as passive infrared sensors (PIR), are worthless when sitting at a desk for hours. The problem these sensors face is that they rely on a significant amount of motion to be triggered, certainly more than is produced by typing on a keyboard. With my new DIY chair occupancy sensor, the lights stay on, no matter how still I am sitting.

An Aqara/Xiaomi water leak sensor (model SJCGQ11LM) on a wooden floor.  On the back of the sensor, there are two wires leading to the car seat sensor.
This is it: the chair occupancy sensor I use in the office.

Table of Contents

What you will need to build a Zigbee chair occupancy sensor

As the title suggests, this project relies on Zigbee, so you will have to have one of the Zigbee offerings set up in Home Assistant. I am using Zigbee2MQTT, and ZHA will also work. Next, you will need an Aqara/Xiaomi water leak sensor (model SJCGQ11LM). No, I am not joking, you will need a water leak sensor. Finally, the easiest way of detecting a person in a chair is by using something that already exists to do exactly that: a car seat pressure sensor.

Advertisement

Using a Zigbee sensor has many advantages, mainly the fact that it can be powered by a single button cell. Its size means it can be hidden underneath the chair or attached somewhere unobstructive using double-sided tape. With everything tucked away nicely, you can use the chair without having to care about accidentally ripping out any cables.

An Aqara/Xiaomi water leak sensor on a wooden floor. The front of the device is shown, where there is an icon of a water drop.
Aqara/Xiaomi water leak sensor (model SJCGQ11LM)
A car seat sensor on a wooden floor.
The universal car seat pressure sensor I used for my chair occupancy sensor

As to why you need to use the Aqara/Xiaomi water leak sensor, it is simple: Just like every other binary sensor, for example a door/window sensor, the water leak sensor is either on (circuit closed) or off (circuit open). Water leak sensors work by having two exposed terminals which complete a circuit when they are submerged in a conductive liquid, such as tap water.

Advertisement

Attaching the car seat pressure sensor

What the Aqara/Xiaomi water leak sensor allows you to do is attach wires to the terminals and use the sensor in whatever way you want to. The terminals on this sensor are two small screws you can loosen, wrap a wire around, and tighten again to make sure the wires don’t come loose.

An Aqara/Xiaomi water leak sensor (model SJCGQ11LM) on a wooden floor.  On the back of the sensor, there are two wires leading to the car seat sensor.
The car seat pressure sensor’s wires can be attached to the two terminals of the Zigbee water leak sensor

The wires we are attacking to it are the two stemming from the car seat pressure sensor. It doesn’t matter which wire you attach to which terminal. Simply strip a short section of the sleeving, loosing the screw on the Aqara/Xiaomi water leak sensor, wrap one exposed wire around each screw, and tighten the screws again.

Advertisement

Completing the car seat pressure sensor

Just like that, you have built your very own chair occupancy pressure sensor. If you are lucky, your chair will have a removable case, which allows you to place the car seat pressure sensor right underneath behind. Most popular office chairs from IKEA seem to allow this.

You have to make sure that the car seat pressure sensor doesn’t have too much weight on the chair is unoccupied, or else it will continually be registering the seat as occupied.

A screenshot showing the DIY Zigbee chair occupancy sensor in the Home Assistant interface. It shows the two available sensors (temperater and water leak) and diagnostic information (battery state).
How the DIY Zigbee chair occupancy sensor presents itself in Home Assistant
A screenshot showing how the DIY Zigbee chair occupancy sensor can be used in Home Assistant.
How to use the DIY Zigbee chair occupancy sensor in an automation.

In Home Assistant, this DIY sensor will still show up as a water leak sensor. When using it in automations, simply select the water_leak attribute and use the states on (chair occupied) and off (chair unoccupied). The sensor registers a leak within a couple of seconds but takes around ten seconds to switch back. In most cases, this delay shouldn’t be an issue.

Advertisement

Of note is that the temperature reading of the sensor, as seen in the screenshot above, is useless. I’m uncertain if it is measuring the inside temperature to protect the battery, but in any case, you will not be getting any useful information out of it. I recommend disabling this entity altogether.

Xiaomi releases a new generation of Smart Air Purifiers

First impression review of the ILIFE A11 robot vacuum

Advertisement
Liam Alexander Colman, the author and maintainer of Home Assistant Guides.

About Liam Alexander Colman

Liam Alexander Colman has been using Home Assistant for various projects for quite some time. What started off with a Raspberry Pi quickly became three Raspberry Pis and eventually a full-blown server. I now use Unraid as my operating system, and Home Assistant happily runs in a Docker container. My personal setup includes many Zigbee devices as well as integrations with existing products such as my Android TV box. Read on to find out more on how I got started with Home Assistant.

4 thoughts on “How to build the easiest Zigbee chair occupancy sensor”

  1. Great info man, I always wanted to build something like that and now I will thanks to you.
    One question – can you please post a pic on where exactly did you put the car sear pressure sensor?

    Reply
    • Hey there. Sure, I can do that when I have the time. I have a pretty basic IKEA chair (this one) which allows you to remove the fabric part (which is blue in the image). I can then place the sensor between the fabric and the padding, so it’s literally right under my behind, with nothing pressing down on it when the chair is empty.

      Reply
  2. Regarding the built in temperature sensor – this is similar to other Aqara/Xiaomi sensors. You can set an ‘offset’ to the temperature value in Zigbee2MQTT if you are able to get another reliable sensor close by and see if it tracks it closely. I have this for a motion sensor and it gives a reasonably accurate room temperature with a large offset – although this sensor will probably track your butt temperature!!!

    Reply
    • Yes, I read that. However, I put the chair next to my open window when it was much colder outside and the reading didn’t budge. Either way, I have much more reliable temp sensors in the room.

      Reply

Leave a comment

Advertisement
Share to...