SDK and documentation for 60GHz mmWave radar sensors.
by
The presence detection radar answers one question continuously: is there a person in this space, and are they moving or still. Unlike a PIR sensor, it detects a person who is sitting, standing, or sleeping without any movement at all. Unlike a camera, it produces no image and works in complete darkness.
This article covers the full range of this radar, how sensitivity and scene modes change what it sees, where to mount it, and how to read the output. All ranges, timings, and values are the ones used by the models sold in this store.
This is a consumer and commercial sensing device. It is not a medical device and does not diagnose, treat, or prevent any condition.
This radar is available in two forms, and they use completely different protocols. Check which one you have before reading further.
| Variant | Frequency | Interface | Protocol | Configuration |
|---|---|---|---|---|
| Presence radar module | 24 GHz | UART only | Frame protocol at 115200 bps | Wired, no network setup |
| Presence radar | 60 GHz | 2.4 GHz Wi-Fi + MQTT | JSON property protocol over MQTT topics | Web page for MQTT, Android app for Wi-Fi |
Both share the same sensing principle, so the outputs mean the same thing. The coverage, the commands, and the reporting details differ, and every value in this article is marked with the variant it belongs to.
The presence radar module is the bare sensing core for integrators who embed it in their own product; its output is described under Over UART. The presence radar is the finished ceiling-mounted unit that joins your network; its output is described under Over Wi-Fi and MQTT.
Setting up the presence radar, the Wi-Fi variant, is covered step by step in the setup guide. The module needs no network setup at all.
The presence radar is a 60 GHz millimeter wave sensor in a housing of approximately 29.5 × 73 × 86 mm, designed to be recessed into a ceiling. It is powered over USB at 5 V and covers a radius of about 2.7 m when ceiling-mounted, with a beam of 100° horizontal and 80° vertical. It is built for small to medium rooms: bathrooms, bedrooms, offices, and hotel rooms.
The presence radar module is a 24 GHz sensing core without the housing and without the Wi-Fi section. It is designed for ceiling mounting up to 2.75 m and covers a much wider area, up to about 12 m across for a moving person. It is intended for corridors, open-plan floors, and large rooms where one unit has to cover everything.
Both detect a stationary person. Both expose a body movement value from 0 to 100 that tells you not just whether someone is there, but what they are doing.
A PIR sensor needs movement. It reacts to a change in infrared pattern, so a person who sits still for a few seconds becomes invisible to it. That is why PIR lights switch off while you are still in the room.
A millimeter wave radar does not need movement. It transmits a continuous wave and analyses the echo, and a human body reflects that signal whether the person is walking, sitting, or asleep. Even a perfectly still person has a chest that rises and falls, and the radar resolves displacements far smaller than that.
The practical consequence is the timing:
| Transition | Time to Report |
|---|---|
| No person to person present | Within 0.5 s |
| Person present to no person | About 40 s |
The asymmetry is deliberate. Declaring a room occupied takes one glance, because a false negative leaves a light off or a room marked empty. Declaring it empty takes 40 seconds of confirmed absence, because the radar keeps checking for micro-movement and breathing before it commits. A PIR sensor has the opposite bias, which is why it gives up on you.
| Value | Meaning |
|---|---|
| 0 | No person |
| 1 | Person present |
Reported on change, within 0.5 s of a person appearing and about 40 s after the last confirmed trace disappears.
| Value | Meaning |
|---|---|
| 0 | No movement |
| 1 | Still (static) |
| 2 | Active |
Reported on change, within 0.5 s.
The presence radar module also reports which way a person is moving relative to the radar:
| Value | Meaning |
|---|---|
| 1 | No directional movement |
| 2 | Approaching |
| 3 | Moving away |
| 4 | Continuously approaching |
| 5 | Continuously moving away |
Reported on change, roughly every 2 s while movement continues. This is the value that lets a corridor radar know which direction someone walked, without any camera.
A single value from 0 to 100. The presence radar module reports it every 5 s; the presence radar reports it every second over MQTT. The ranges have fixed meanings:
| Value | Meaning |
|---|---|
| 0 % | No person in range |
| 1 % | Still: breathing only, no limb movement |
| 2 %–30 % | Micro movement: small head or limb motion |
| 31 %–60 % | Walking or fast limb movement |
| 61 %–100 % | Running or large close-range movement |
This is the most useful value for tuning an installation. In a room where someone is sitting at a desk, a correctly configured radar reports values in the 1 %–30 % band and never drops to 0.
The presence radar module can report distance in centimetres and position as x, y, and z coordinates, both about every 2 s. Both are marked as non-critical functions with limited accuracy in the documentation. They are useful for debugging an installation, but they should not be the basis of a product feature.
The presence radar module exposes a sensitivity setting from 1 to 10, with 7 as the default.
| Range | Intended for |
|---|---|
| 7–10 | Low-interference spaces where fine motion must be caught: storage rooms, vaults |
| 4–6 | Ordinary indoor spaces: homes, hotels, offices (default) |
| 1–3 | Spaces with heavy interference: corridors, parking areas, where only large movement should trigger |
Higher sensitivity catches smaller movements and also picks up more false triggers from curtains and fans. Lower sensitivity ignores a person who is barely moving.
The presence radar module ships with seven scene modes. Each mode changes the trigger range, that is, the distance at which a moving person is detected:
| Scene mode | Trigger range, wide angle | Trigger range, narrow angle | Static range |
|---|---|---|---|
| Maximum area | 12 m | 8 m | 6 m / 4 m |
| Office | 10 m | 7 m | 6 m / 4 m |
| Hotel (default) | 9 m | 6 m | 6 m / 4 m |
| Living room | 7 m | 5 m | 6 m / 4 m |
| Bedroom | 4 m | 3 m | 6 m / 4 m |
| Zone detection | 3 m | 2 m | 6 m / 4 m |
| Bathroom | 1.8 m | 1.5 m | 6 m / 4 m |
The static range is the same across modes; what changes is how far away a moving person is noticed. Choosing the smallest mode that still covers the room is the single most effective way to remove false triggers.
The presence radar exposes scene mode as an MQTT property, but with a different numbering: 0 default, 1 zone detection, 2 bathroom, 3 bedroom, 4 living room, 5 office, 6 hotel. Do not mix the two lists; they are different protocols.
The presence radar module can force an unoccupied output after a fixed time, regardless of what it detects:
| Value | Forced unoccupied after |
|---|---|
| 0 | Not used |
| 1 | 10 s |
| 2 | 30 s |
| 3 | 1 min |
| 4 | 2 min |
| 5 | 5 min |
| 6 | 10 min |
| 7 | 30 min |
| 8 | 60 min |
Use this where a lingering signal is worse than a missed one, for example a meeting room that must be released for the next booking.
| Data Point | Range | Reported |
|---|---|---|
| Presence | 0 / 1 | On change, 0.5 s in, ~40 s out |
| Motion status | 0 / 1 / 2 | On change, 0.5 s |
| Approach / leave | 1–5 | On change, ~2 s |
| Body movement | 0–100 | Every 5 s (module), every 1 s (radar) |
| Parameter | Value |
|---|---|
| Detection radius | ~2.7 m |
| Beam, horizontal | 100° |
| Beam, vertical | 80° |
| Mounting | Recessed in ceiling |
| Signal | Maximum distance |
|---|---|
| Moving person | ~12 m |
| Sitting or micro-movement | ~6 m |
| Sleeping person | ~3 m |
In practice, the covered area is approximately 8 m × 12 m for a moving person, 4 m × 6 m for a stationary person, and 3 m × 2 m for a sleeping person. The actual area is oval rather than circular.
Both variants are ceiling-mounted. Mounting the module on a wall or at an angle changes the covered shape and is not supported.
For the presence radar module:
The two settings work together, and the module documentation gives a clear procedure:
When the entrance trigger and the interference resistance conflict, the documentation recommends protecting interference resistance first. A radar that occasionally triggers late is better than one that reports a person who is not there.
Avoid aiming the radar at:
The signal is not blocked by:
The presence radar uses a set of topics per function rather than one pair:
| Topic | Direction |
|---|---|
/RadarHP/{DeviceID}/sys/online/post |
Device reports online / offline |
/RadarHP/{DeviceID}/sys/version/post |
Device reports version information |
/RadarHP/{DeviceID}/sys/property/set |
You send settings |
/RadarHP/{DeviceID}/sys/property/set_reply |
Device answers a setting |
/RadarHP/{DeviceID}/sys/active/post |
Device reports fast-changing values |
/RadarHP/{DeviceID}/sys/passive/post |
Device reports configuration values |
The main properties:
| Property | Meaning | Access |
|---|---|---|
online |
0 offline, 1 online | post |
radarID |
Device identifier | post, get |
softwareVersion |
Software version | post, get |
firmwareVersion |
Firmware version | post, get |
protocolVersion |
Protocol version | post, get |
movementSigns |
Body movement, 0–100 | post |
keepAway |
1 none, 2 approaching, 3 leaving, 4 continuous approaching, 5 continuous leaving | post |
environ |
0 unoccupied, 1 occupied still, 2 occupied moving | post |
thresholdGear |
Sensitivity, 0–9 | post, set |
sceneMode |
0 default, 1 zone, 2 bathroom, 3 bedroom, 4 living room, 5 office, 6 hotel | post, set |
forceIntoUnmannedGear |
Forced unoccupied, 0–8 | post, set |
Values are strings. Settings are sent with "method": "set" to the property set topic, and the device answers on the set reply topic.
Two control commands apply to the fast-changing values:
"method": "control" turns individual reports on or off. A value of 1 allows the report, 0 forbids it. Note that this is the opposite of the convention used by the 60 GHz radars, where 1 means forbidden."method": "control_qos" sets the quality of service per topic, using keys such as Qos_movementSigns, Qos_keepAway, and Qos_environ. The default is QoS 1.The presence radar module exposes a UART interface at 115200 bps, 8 data bits, 1 stop bit, no parity, 3.3 V TTL level.
Header Control Command Length Data Checksum Tail
0x53 0x59 1 Byte 1 Byte 2 Bytes n Bytes 1 Byte 0x54 0x43
The checksum is the sum of the header, control byte, command byte, length bytes, and data, taking the low 8 bits.
Control byte 0x80 covers human presence. Command 0x01 reports presence, 0x02 reports motion status, 0x03 reports the body movement value, 0x04 reports distance, and 0x05 reports position. Query commands are the same values with the high bit set, for example 0x81 to query presence.
The module also has two hardware outputs that need no protocol at all:
| Pin | Output |
|---|---|
| S1 | High = person present, low = no person |
| S2 | High = active, low = still |
Both are 3.3 V logic, so a microcontroller can read presence directly without parsing any frame. GP1 to GP4 are parameter selection pins that can be redefined for your own use.
Bathrooms and small rooms. One 60 GHz unit covers a bathroom reliably, including a person sitting still on the toilet, which a PIR sensor misses entirely. This is the most common single use: occupancy-based lighting and extractor fans.
Corridors and open-plan floors. The 24 GHz module covers up to 12 m, so one unit watches a whole corridor or an open office, including which direction people walk.
Meeting rooms and desks. Presence plus the movement level distinguishes a room that is genuinely empty from one where someone is quietly working, which is exactly the distinction PIR-based systems get wrong.
Hotels. Occupancy-based climate and lighting control, with no camera in the room and nothing for the guest to object to.
Integrators. The module’s S1 and S2 outputs give a two-wire presence signal for products that have no network at all.
| Symptom | Possible Cause | Solution |
|---|---|---|
| Reports unoccupied while someone sits still | Sensitivity too low | Raise the sensitivity by one step |
| Radar too far from the person | Check the scene mode range against the room | |
| Reports occupied in an empty room | Scene mode too large for the room | Move to a smaller scene mode |
| Interference source in the beam | Remove fans, curtains, or pets from the area | |
| Person entering is not detected | Radar’s long edge not facing the entrance | Re-aim the long edge at the door |
| Unoccupied state flickers | Room too small for the sensitivity | Reduce sensitivity by one step |
| Movement value stuck at 0 | Person outside the detection area | Move the radar or reduce the scene mode |
| No data over MQTT | Report forbidden by the control command | Check the control settings and the QoS values |
| Parameter | Value |
|---|---|
| Radar frequency | 60 GHz |
| Detection radius | ~2.7 m |
| Beam angle | 100° horizontal, 80° vertical |
| Mounting | Recessed ceiling mount |
| Supply | 5 V over USB |
| Housing size | 29.5 × 73 × 86 mm |
| Wireless | 2.4 GHz Wi-Fi |
| Data output | MQTT over Wi-Fi (JSON) |
| Parameter | Value |
|---|---|
| Radar frequency | 24 GHz |
| Beam angle | 90° horizontal, 60° vertical |
| Mounting | Ceiling, horizontal, deviation ≤ 3° |
| Mounting height | 2.75 m or less |
| Moving person range | ~12 m |
| Static or micro-movement range | ~6 m |
| Sleeping person range | ~3 m |
| Presence response | Within 0.5 s |
| Unoccupied confirmation | About 40 s |
| Body movement reporting | Every 5 s |
| Sensitivity | 1–10, default 7 |
| Scene modes | 7 |
| Hardware outputs | S1 presence, S2 motion, 3.3 V logic |
| Data output | UART, 115200 bps, 8N1, 3.3 V TTL |
The presence detection radar reports whether a space is occupied and whether the person is still or moving, within 0.5 s of someone appearing and after about 40 s of confirmed absence. It detects a stationary person, which is the one thing a PIR sensor cannot do.
The 60 GHz presence radar covers about 2.7 m from a ceiling and suits bathrooms, bedrooms, and offices. The 24 GHz presence radar module covers up to 12 m and suits corridors and open floors, and it can report presence on two hardware pins with no protocol at all.
Mount it horizontally, aim the long edge at the entrance, choose the smallest scene mode that still covers the room, and set the sensitivity to match the room size. Keep fans, air conditioners, moving curtains, and metal out of the beam, and the radar will hold a stable occupied or unoccupied state for years.
tags: presence radar - 60ghz - 24ghz - occupancy - scene mode - sensitivity - mqtt