<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: fuxinsuo</title>
    <description>The latest articles on DEV Community by fuxinsuo (@249263431).</description>
    <link>https://dev.to/249263431</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4190046%2Ffc057b5f-aef1-4d96-b8a2-7862d1c6b7af.png</url>
      <title>DEV Community: fuxinsuo</title>
      <link>https://dev.to/249263431</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/249263431"/>
    <language>en</language>
    <item>
      <title>The Sleep Monitoring Radar: What It Measures, How to Install It, and How to Read the Data</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 09:14:24 +0000</pubDate>
      <link>https://dev.to/249263431/the-sleep-monitoring-radar-what-it-measures-how-to-install-it-and-how-to-read-the-data-336j</link>
      <guid>https://dev.to/249263431/the-sleep-monitoring-radar-what-it-measures-how-to-install-it-and-how-to-read-the-data-336j</guid>
      <description>&lt;p&gt;The sleep monitoring radar measures presence in bed, breathing rate, heart rate, body movement, sleep stages, and a sleep score, all without contact and without a camera. It is mounted once above or beside the bed, and it reports data continuously through the night.&lt;/p&gt;

&lt;p&gt;This article covers everything about this radar: what each data point means, how a night is processed, where to install it, and how to read the output over MQTT or UART. It is written for the radar sold in this store, so all ranges, frequencies, and values are the ones this specific model uses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is a consumer wellness device. It is not a medical device and does not diagnose, treat, or prevent any condition.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Variants, Two Protocols
&lt;/h2&gt;

&lt;p&gt;This radar is available in two forms, and they use completely different protocols. Check which one you have before reading further.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variant&lt;/th&gt;
&lt;th&gt;Interface&lt;/th&gt;
&lt;th&gt;Protocol&lt;/th&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sleep radar module&lt;/td&gt;
&lt;td&gt;UART only&lt;/td&gt;
&lt;td&gt;Frame protocol at 115200 bps&lt;/td&gt;
&lt;td&gt;Wired, no network setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep radar&lt;/td&gt;
&lt;td&gt;2.4 GHz Wi-Fi + MQTT&lt;/td&gt;
&lt;td&gt;JSON property protocol over MQTT topics&lt;/td&gt;
&lt;td&gt;Web page for MQTT, Android app for Wi-Fi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Both variants share the same sensing core, so the measured values mean the same thing. The ranges, the commands, and the reporting details differ, and every value in this article is marked with the variant it belongs to.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;sleep radar module&lt;/strong&gt; is the bare sensing core for integrators who embed it in their own product; its output is described under Over UART. The &lt;strong&gt;sleep radar&lt;/strong&gt; is the finished unit that joins your network; its output is described under Over Wi-Fi and MQTT.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Radar Is
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;sleep radar&lt;/strong&gt; is a 60 GHz millimeter wave sensor in a housing of approximately 80 × 80 × 51.8 mm. It is designed for fixed installation at a bed: either side-wall mounted or mounted above the bed head and tilted downward.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;sleep radar module&lt;/strong&gt; is the same sensing core without the housing and without the Wi-Fi section. It exposes a UART interface and is intended to be built into another product.&lt;/p&gt;

&lt;p&gt;Both measure, through a blanket and in complete darkness:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whether a person is in bed or out of bed&lt;/li&gt;
&lt;li&gt;Breathing rate and breathing state&lt;/li&gt;
&lt;li&gt;Heart rate&lt;/li&gt;
&lt;li&gt;Body movement level&lt;/li&gt;
&lt;li&gt;Sleep stage: awake, light sleep, or deep sleep&lt;/li&gt;
&lt;li&gt;Time spent in each stage, and a sleep score at the end of the night&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Neither measures who the person is, and neither records images, video, or audio. The sleep radar publishes numbers over Wi-Fi; the sleep radar module publishes them over a serial line.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Sees You Through a Blanket
&lt;/h2&gt;

&lt;p&gt;The radar transmits a 60 GHz FMCW signal and analyses the echo. Breathing moves the chest wall by less than one millimeter, and the 60 GHz band resolves displacements of that scale. A blanket is a non-metallic material, so the signal passes through it and reflects off the chest underneath.&lt;/p&gt;

&lt;p&gt;The beam covers a horizontal angle of &lt;strong&gt;40°&lt;/strong&gt; and a vertical angle of &lt;strong&gt;40°&lt;/strong&gt;, so the radar must be aimed at the chest area rather than at the whole room. A full explanation of the FMCW principle is in the companion article &lt;a href="https://249263431.github.io/60GHz-Radar-SDK/fundamentals/2026/10/17/how-mmwave-radar-works.html" rel="noopener noreferrer"&gt;How mmWave Radar Works&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Measures
&lt;/h2&gt;

&lt;p&gt;Every value below is reported either when the state changes or at a fixed interval. The exact property names for Wi-Fi and UART are given in the section Getting the Data Out.&lt;/p&gt;

&lt;h3&gt;
  
  
  Presence in Bed
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Out of bed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;In bed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The radar reports a person within &lt;strong&gt;0.5 s&lt;/strong&gt; of detection. It takes about &lt;strong&gt;40 s&lt;/strong&gt; of confirmed absence before it reports unoccupied, because the radar checks for micro-movement and breathing before declaring the area empty.&lt;/p&gt;

&lt;p&gt;The in-bed state is entered as soon as the energy condition is met. The out-of-bed state is output about &lt;strong&gt;30 s&lt;/strong&gt; after the person leaves.&lt;/p&gt;

&lt;h3&gt;
  
  
  Motion Status
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;No movement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Still (static)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;State changes are reported within &lt;strong&gt;0.5 s&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Body Movement Level
&lt;/h3&gt;

&lt;p&gt;A single value from 0 to 100, reported &lt;strong&gt;every 1 s&lt;/strong&gt;. The ranges have fixed meanings:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0 %&lt;/td&gt;
&lt;td&gt;No person in range&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 %&lt;/td&gt;
&lt;td&gt;Still: breathing only, no limb movement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 %–30 %&lt;/td&gt;
&lt;td&gt;Micro movement: small head or limb motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31 %–60 %&lt;/td&gt;
&lt;td&gt;Walking or fast limb movement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;61 %–100 %&lt;/td&gt;
&lt;td&gt;Running or large close-range movement&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is the most useful value for tuning an installation. A correctly aimed radar reports values around 1 % while a person lies still.&lt;/p&gt;

&lt;h3&gt;
  
  
  Breathing Rate
&lt;/h3&gt;

&lt;p&gt;Reported &lt;strong&gt;every 3 s&lt;/strong&gt;. The range is &lt;strong&gt;0–45 breaths per minute&lt;/strong&gt; on the sleep radar module and &lt;strong&gt;0–30&lt;/strong&gt; on the sleep radar.&lt;/p&gt;

&lt;p&gt;The breathing state is reported separately when it changes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Normal&lt;/td&gt;
&lt;td&gt;10 to 25 breaths per minute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;Above 25 breaths per minute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Below 10 breaths per minute&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No person detected (default state)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The breathing waveform is available but &lt;strong&gt;switched off by default&lt;/strong&gt;. When enabled, it reports 5 values every second, each in the range 0–255. Each value is the real measurement plus 128, which keeps the curve centred on the display axis.&lt;/p&gt;

&lt;h3&gt;
  
  
  Heart Rate
&lt;/h3&gt;

&lt;p&gt;Reported &lt;strong&gt;every 3 s&lt;/strong&gt;. The range is &lt;strong&gt;50–120 bpm&lt;/strong&gt; on the sleep radar module and &lt;strong&gt;60–120 bpm&lt;/strong&gt; on the sleep radar, which is the corrected range.&lt;/p&gt;

&lt;p&gt;The heart rate state is reported separately: normal, high, low, or detecting. The heart rate waveform follows the same rule as the breathing waveform: 5 values per second, 0–255, real value plus 128, off by default.&lt;/p&gt;

&lt;h3&gt;
  
  
  Human Distance and Position
&lt;/h3&gt;

&lt;p&gt;Both are reported every 2 s. Distance is in centimetres, 0–65535. Position is given as x, y, and z coordinates.&lt;/p&gt;

&lt;p&gt;Both are marked as &lt;strong&gt;non-critical functions with limited accuracy&lt;/strong&gt; in the sleep radar module documentation. They are useful for debugging an installation, but they should not be used as the basis of a product feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sleep Stage
&lt;/h3&gt;

&lt;p&gt;Reported &lt;strong&gt;every 10 minutes&lt;/strong&gt; while the person is in bed.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Deep sleep&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Light sleep&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Awake&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;None (out of bed)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The stage is evaluated once per 10-minute window, so the value changes in steps rather than continuously. Note that some older versions of the documentation list these values in a different order; the order above is the one used by the sleep radar module protocol.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stage Durations
&lt;/h3&gt;

&lt;p&gt;Three separate values, in minutes: awake duration, light sleep duration, and deep sleep duration. Each ranges from 0 to 65535 and is updated together with the 10-minute sleep stage report.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sleep Score and Sleep Rating
&lt;/h3&gt;

&lt;p&gt;The sleep score is reported &lt;strong&gt;when the sleep session ends&lt;/strong&gt;, as a value from &lt;strong&gt;0 to 100&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A valid score is only produced when the sleep duration is between &lt;strong&gt;4 and 12 hours&lt;/strong&gt;. Outside that range the session is treated as an anomaly and no meaningful score is output.&lt;/p&gt;

&lt;p&gt;The radar also reports a rating derived from the score:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1–60&lt;/td&gt;
&lt;td&gt;Poor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;61–75&lt;/td&gt;
&lt;td&gt;Fair&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;76–100&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  The Sleep Report
&lt;/h3&gt;

&lt;p&gt;At the end of a sleep session the radar publishes a report of 11 fields. This is the main output most integrations use.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Range&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sleep score&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total sleep duration&lt;/td&gt;
&lt;td&gt;0–65535 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Awake percentage&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Light sleep percentage&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Deep sleep percentage&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Time out of bed&lt;/td&gt;
&lt;td&gt;0–255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Number of times out of bed&lt;/td&gt;
&lt;td&gt;0–255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Turn count&lt;/td&gt;
&lt;td&gt;0–255&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average breathing rate&lt;/td&gt;
&lt;td&gt;0–25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average heart rate&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing pauses&lt;/td&gt;
&lt;td&gt;0–10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Breathing pauses are counted as a raw sensor output. The radar counts pauses in the breathing waveform; it does not interpret them, and no medical meaning should be attached to the number.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sleep Comprehensive Status
&lt;/h3&gt;

&lt;p&gt;A second, shorter report published &lt;strong&gt;every 10 minutes&lt;/strong&gt; while the person is in bed, with 8 fields:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Range&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Presence&lt;/td&gt;
&lt;td&gt;1 = present, 0 = absent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep stage&lt;/td&gt;
&lt;td&gt;3 = out of bed, 2 = awake, 1 = light, 0 = deep&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average breathing rate&lt;/td&gt;
&lt;td&gt;10-minute average&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Average heart rate&lt;/td&gt;
&lt;td&gt;10-minute average&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Turn count&lt;/td&gt;
&lt;td&gt;Turns during light or deep sleep&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Large movement proportion&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Small movement proportion&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing pauses&lt;/td&gt;
&lt;td&gt;Count within 10 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This report is the practical choice for a live dashboard, because it arrives every 10 minutes whether or not the stage changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sleep Anomalies
&lt;/h3&gt;

&lt;p&gt;Reported when the state changes:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Sleep duration shorter than 4 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Sleep duration longer than 12 hours&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;No presence detected for 30 minutes while in a sleep state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The 30-minute rule is the one most useful in care settings: if the radar is in a sleep state and detects nobody for half an hour, it raises the anomaly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Struggle and No-Person Timing
&lt;/h3&gt;

&lt;p&gt;Two further functions are available on the sleep radar module protocol. Both are switches that must be enabled before they report anything.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Abnormal struggle&lt;/strong&gt;: reports none, normal, or abnormal struggle. The sensitivity of the judgement can be set to low, medium (default), or high.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No-person timing&lt;/strong&gt;: reports none, normal, or abnormal. The threshold is configurable; note that the documented range differs between the setting command and the query command, so treat the setting range as the reliable one.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Reporting Rhythm
&lt;/h2&gt;

&lt;p&gt;A single table of every value and when it arrives:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data Point&lt;/th&gt;
&lt;th&gt;Range&lt;/th&gt;
&lt;th&gt;Reported&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Presence in bed&lt;/td&gt;
&lt;td&gt;0 / 1&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Motion status&lt;/td&gt;
&lt;td&gt;0 / 1 / 2&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Body movement&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;td&gt;Every 1 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human distance&lt;/td&gt;
&lt;td&gt;0–65535 cm&lt;/td&gt;
&lt;td&gt;Every 2 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human position&lt;/td&gt;
&lt;td&gt;x, y, z&lt;/td&gt;
&lt;td&gt;Every 2 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing rate&lt;/td&gt;
&lt;td&gt;0–45&lt;/td&gt;
&lt;td&gt;Every 3 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing state&lt;/td&gt;
&lt;td&gt;Normal / high / low / none&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heart rate&lt;/td&gt;
&lt;td&gt;50–120 bpm&lt;/td&gt;
&lt;td&gt;Every 3 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heart rate state&lt;/td&gt;
&lt;td&gt;Normal / high / low / detecting&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing waveform&lt;/td&gt;
&lt;td&gt;5 values, 0–255&lt;/td&gt;
&lt;td&gt;Every 1 s, off by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heart rate waveform&lt;/td&gt;
&lt;td&gt;5 values, 0–255&lt;/td&gt;
&lt;td&gt;Every 1 s, off by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep stage&lt;/td&gt;
&lt;td&gt;0–3&lt;/td&gt;
&lt;td&gt;Every 10 min while in bed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stage durations&lt;/td&gt;
&lt;td&gt;0–65535 min&lt;/td&gt;
&lt;td&gt;With the 10-minute report&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep score&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;td&gt;On sleep end&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep rating&lt;/td&gt;
&lt;td&gt;Poor / fair / good&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep report&lt;/td&gt;
&lt;td&gt;11 fields&lt;/td&gt;
&lt;td&gt;On sleep end&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep comprehensive status&lt;/td&gt;
&lt;td&gt;8 fields&lt;/td&gt;
&lt;td&gt;Every 10 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep anomaly&lt;/td&gt;
&lt;td&gt;0–3&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Two Mounting Methods
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Side-wall mounting (sleep radar).&lt;/strong&gt; Mount the radar on the wall at the side of the bed, at a height of &lt;strong&gt;1.8–2.2 m&lt;/strong&gt;, pointing at the bed. This is the standard method for the finished sleep radar and needs no tilt adjustment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tilted mounting above the bed head (sleep radar module).&lt;/strong&gt; Mount the radar above the bed head, tilted downward at &lt;strong&gt;30°–45°&lt;/strong&gt;, with &lt;strong&gt;45° recommended&lt;/strong&gt;, and &lt;strong&gt;0.8–1 m above the bed surface&lt;/strong&gt;. This is the method described in the sleep radar module documentation and gives the strongest breathing signal, because the beam hits the chest directly instead of at an angle.&lt;/p&gt;

&lt;p&gt;Use the tilted method whenever the physical layout allows it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Detection Range
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Maximum Distance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Breathing rate&lt;/td&gt;
&lt;td&gt;~1.5 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep detection&lt;/td&gt;
&lt;td&gt;~2.5 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human presence&lt;/td&gt;
&lt;td&gt;~2.5 m&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If the bed is large, or the radar ends up further away than these distances, the breathing signal degrades first and disappears before the presence detection does.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Interferes
&lt;/h3&gt;

&lt;p&gt;Avoid installing the radar where the beam reaches:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Electric fans (moving blades cause false readings)&lt;/li&gt;
&lt;li&gt;Air conditioners (the internal motor causes false detection)&lt;/li&gt;
&lt;li&gt;Curtains that move with air flow&lt;/li&gt;
&lt;li&gt;Metal objects&lt;/li&gt;
&lt;li&gt;Water pipes or flowing water&lt;/li&gt;
&lt;li&gt;Pets that move around the bed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not aim the radar directly at an air conditioner, and do not install it facing the same direction as the air flow.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the Signal Passes Through
&lt;/h3&gt;

&lt;p&gt;The signal is not blocked by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clothing and blankets&lt;/li&gt;
&lt;li&gt;Curtains&lt;/li&gt;
&lt;li&gt;Thin wooden boards&lt;/li&gt;
&lt;li&gt;Glass&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Installation Steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Identify the bed head and the position where the sleeper's chest rests.&lt;/li&gt;
&lt;li&gt;For side-wall mounting, mark a point 1.8–2.2 m high on the wall at the side of the bed. For tilted mounting, mark a point 0.8–1 m above the bed surface, above the bed head.&lt;/li&gt;
&lt;li&gt;Aim the radar so the main beam covers the chest area of a person lying on the bed.&lt;/li&gt;
&lt;li&gt;Check the whole detection area for the interference sources listed above and remove or avoid them.&lt;/li&gt;
&lt;li&gt;Fix the radar in place and power it.&lt;/li&gt;
&lt;li&gt;Wait for the initialization to complete, then verify the data.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Verifying the Installation
&lt;/h3&gt;

&lt;p&gt;Four tests, taken from the sleep radar module documentation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Sleep stage.&lt;/strong&gt; Lie still on the bed for 10 minutes. The reported stage should change from awake to light sleep.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-bed detection.&lt;/strong&gt; Approach the bed at a speed of at least 0.7 m/s and stop the moment the state changes. The radar should report in-bed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Out-of-bed detection.&lt;/strong&gt; Leave the area, at least 3 m away with no interference. The radar should report out-of-bed within 5 minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breathing.&lt;/strong&gt; Sit still within 1.5 m in front of the radar, breathe calmly for 3 minutes, then hold your breath for 30–40 seconds. The breathing value should drop to 0 and the radar should report a breathing-hold event.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the breathing waveform is flat or missing during test 4, the radar is not aimed at the chest. Adjust the angle or the height before looking at anything else.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a Night Is Processed
&lt;/h2&gt;

&lt;p&gt;Understanding this sequence explains most of the odd-looking data.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Power on.&lt;/strong&gt; The radar initializes and reports that initialization is complete.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mode selection.&lt;/strong&gt; The radar runs in one of two modes. Sleep detection mode is the default and the mode to use. Real-time detection mode exists for quick testing only and does not produce a sleep report.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;In-bed.&lt;/strong&gt; When the energy condition is met, the radar reports in-bed and starts evaluating.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stage evaluation.&lt;/strong&gt; Every 10 minutes, the radar judges the stage and reports it, together with the updated stage durations and the comprehensive status.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Out of bed.&lt;/strong&gt; About 30 seconds after the person leaves, the radar reports out-of-bed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Session end.&lt;/strong&gt; If the person does not return, the radar treats the session as finished and computes the statistics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report.&lt;/strong&gt; The sleep score and the full sleep report are published. The report is generated once the area has been unoccupied for about 5 minutes.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Two consequences worth knowing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Switching modes clears the data.&lt;/strong&gt; If you switch between real-time and sleep detection mode, the accumulated data is discarded and detection restarts from zero.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A short night produces no score.&lt;/strong&gt; Sessions shorter than 4 hours or longer than 12 hours are reported as anomalies instead.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting the Data Out
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Over Wi-Fi and MQTT (sleep radar)
&lt;/h3&gt;

&lt;p&gt;Two topics are used, with the model prefix for the sleep radar being &lt;code&gt;Radar60SP&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Report topic: &lt;code&gt;/Radar60SP/{DeviceID}/sys/property/post&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Set topic: &lt;code&gt;/Radar60SP/{DeviceID}/sys/property/set&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Data is JSON. A typical report looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"post"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"sleepStatus"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0"&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The properties you will use most:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Access&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sleepSwitch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sleep function on / off&lt;/td&gt;
&lt;td&gt;get, set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sleepStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sleep stage&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;getIntoBed&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;In bed / out of bed&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;awakeDuration&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Awake minutes&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lightSleepDuration&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Light sleep minutes&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;deepSleepDuration&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deep sleep minutes&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sleepScore&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sleep score&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sleepComprehensiveStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8-field status report&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sleepQualityAnalysis&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;11-field sleep report&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;abnormalSleep&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sleep anomaly&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;breathSwitch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Breathing function on / off&lt;/td&gt;
&lt;td&gt;get, set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;breathValue&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Breathing rate&lt;/td&gt;
&lt;td&gt;post&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;breathInform&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Breathing state&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;heartRateSwitch&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Heart rate function on / off&lt;/td&gt;
&lt;td&gt;get, set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;heartRateValue&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Heart rate&lt;/td&gt;
&lt;td&gt;post&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;heartRateInform&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Heart rate state&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;someoneExists&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Presence&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;motionStatus&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Motion status&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;movementSigns&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Body movement level&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;reportMode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1 = sleep mode, 0 = real-time mode&lt;/td&gt;
&lt;td&gt;get, set&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Values are reported as strings. Most properties support a query with &lt;code&gt;"method": "get"&lt;/code&gt; and a setting with &lt;code&gt;"method": "set"&lt;/code&gt;; the device answers on the report topic.&lt;/p&gt;

&lt;h3&gt;
  
  
  Over UART (sleep radar module)
&lt;/h3&gt;

&lt;p&gt;The sleep radar module exposes a UART interface at &lt;strong&gt;115200 bps&lt;/strong&gt;, 8 data bits, 1 stop bit, no parity, 3.3 V TTL level.&lt;/p&gt;

&lt;p&gt;The frame structure is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Header   Control  Command  Length   Data     Checksum  Tail
0x53 0x59  1 Byte   1 Byte   2 Bytes  n Bytes  1 Byte    0x54 0x43
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The checksum is the sum of the header, control byte, command byte, length bytes, and data, taking the low 8 bits.&lt;/p&gt;

&lt;p&gt;Control byte &lt;code&gt;0x84&lt;/code&gt; covers sleep monitoring. Within it, command &lt;code&gt;0x0C&lt;/code&gt; returns the comprehensive status, &lt;code&gt;0x0D&lt;/code&gt; returns the sleep report, &lt;code&gt;0x0E&lt;/code&gt; returns the sleep anomaly, and &lt;code&gt;0x10&lt;/code&gt; returns the rating. Query commands are the same values with the high bit set, for example &lt;code&gt;0x8D&lt;/code&gt; to query the comprehensive status.&lt;/p&gt;

&lt;h3&gt;
  
  
  With Home Assistant
&lt;/h3&gt;

&lt;p&gt;Because the radar publishes standard MQTT, it can be added to Home Assistant as an MQTT sensor. The practical approach is to subscribe to the report topic and map the fields you need. The comprehensive status report, arriving every 10 minutes, is usually enough for a dashboard; the full sleep report is best stored for history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where It Is Used
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Home sleep tracking.&lt;/strong&gt; One radar above the bed gives a nightly record of stages, durations, and score with nothing to wear and nothing to charge. This is the most common individual use.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Care facilities and nursing homes.&lt;/strong&gt; A room without a camera still needs to know whether the occupant is in bed, how long they were out of bed, and whether the night was unusually short or long. The anomaly report covers the last case directly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hotels and long-stay apartments.&lt;/strong&gt; Presence-based control of lighting and climate, with the sleep report available as an optional guest feature.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution integrators.&lt;/strong&gt; The radar plus a broker plus a dashboard is a complete bed-side monitoring unit. The UART interface allows the same sensor to be embedded in a product without Wi-Fi.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Cannot Do
&lt;/h2&gt;

&lt;p&gt;This section matters as much as the features.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It is not a medical device.&lt;/strong&gt; It does not diagnose, treat, or prevent any condition, and its output must not be presented as a medical measurement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It does not identify people.&lt;/strong&gt; With two people in one bed the signals combine, and the stage judgement reflects the combined movement. Use one radar per bed, not per room.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It cannot see through metal.&lt;/strong&gt; A metal bed frame, a metal headboard, or a metal lamp between the radar and the chest will degrade the signal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It is sensitive to movement in the beam.&lt;/strong&gt; A fan, a curtain, or a pet produces readings that look like a person. Installation is not optional.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A wrong angle produces unusable data.&lt;/strong&gt; If the beam misses the chest, the breathing value will be absent or unstable long before the presence detection fails.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The score is a device index.&lt;/strong&gt; It is computed from duration, stage proportions, movement, and breathing. It is not a health assessment and should not be compared with any clinical scale.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Breathing pauses are a raw count.&lt;/strong&gt; The radar counts pauses in the waveform. It does not classify them, and no medical conclusion follows from the number.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptom&lt;/th&gt;
&lt;th&gt;Possible Cause&lt;/th&gt;
&lt;th&gt;Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;No breathing value&lt;/td&gt;
&lt;td&gt;Beam missing the chest&lt;/td&gt;
&lt;td&gt;Adjust the angle or height; run the breathing test&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Metal object in the beam path&lt;/td&gt;
&lt;td&gt;Remove or relocate the radar&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Person too far away&lt;/td&gt;
&lt;td&gt;Move within 1.5 m for breathing detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing value unstable&lt;/td&gt;
&lt;td&gt;Interference source in the beam&lt;/td&gt;
&lt;td&gt;Remove fans, curtains, or pets from the area&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Always reports out of bed&lt;/td&gt;
&lt;td&gt;Radar too high or too far&lt;/td&gt;
&lt;td&gt;Lower to 0.8–1 m above the bed, or use side-wall mounting at 1.8–2.2 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep stage never changes&lt;/td&gt;
&lt;td&gt;Person not still for 10 minutes&lt;/td&gt;
&lt;td&gt;Wait a full 10-minute window&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Radar in real-time mode&lt;/td&gt;
&lt;td&gt;Set &lt;code&gt;reportMode&lt;/code&gt; to 1 (sleep mode)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No sleep score&lt;/td&gt;
&lt;td&gt;Session shorter than 4 h or longer than 12 h&lt;/td&gt;
&lt;td&gt;Check the anomaly report instead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Waveform empty&lt;/td&gt;
&lt;td&gt;Waveform reporting is off by default&lt;/td&gt;
&lt;td&gt;Enable the waveform switch&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data cleared unexpectedly&lt;/td&gt;
&lt;td&gt;Mode was switched&lt;/td&gt;
&lt;td&gt;Do not switch modes during a session&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;False presence at night&lt;/td&gt;
&lt;td&gt;Moving object in the beam&lt;/td&gt;
&lt;td&gt;Remove the interference source&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Specifications
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Radar frequency&lt;/td&gt;
&lt;td&gt;60 GHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beam angle&lt;/td&gt;
&lt;td&gt;40° horizontal, 40° vertical&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Housing size&lt;/td&gt;
&lt;td&gt;80 × 80 × 51.8 mm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supply voltage&lt;/td&gt;
&lt;td&gt;4.5–5.5 V&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operating current&lt;/td&gt;
&lt;td&gt;200 mA minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power consumption&lt;/td&gt;
&lt;td&gt;0.8 W minimum&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wireless&lt;/td&gt;
&lt;td&gt;2.4 GHz Wi-Fi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data output&lt;/td&gt;
&lt;td&gt;MQTT over Wi-Fi (JSON), UART&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;UART&lt;/td&gt;
&lt;td&gt;115200 bps, 8N1, 3.3 V TTL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Side-wall mounting height&lt;/td&gt;
&lt;td&gt;1.8–2.2 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tilted mounting&lt;/td&gt;
&lt;td&gt;30°–45° downward, 0.8–1 m above the bed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing detection range&lt;/td&gt;
&lt;td&gt;~1.5 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep and presence range&lt;/td&gt;
&lt;td&gt;~2.5 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep stage interval&lt;/td&gt;
&lt;td&gt;10 minutes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep score range&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;The sleep monitoring radar reports presence in bed, breathing rate and state, heart rate, body movement, sleep stage, stage durations, and a sleep score, at fixed intervals from every second to every 10 minutes, with the full report published when the session ends.&lt;/p&gt;

&lt;p&gt;Mount it above the bed head tilted 30°–45° at 0.8–1 m above the bed surface, or side-wall mounted at 1.8–2.2 m. Keep it within 1.5 m for breathing and 2.5 m for sleep and presence. Keep fans, air conditioners, moving curtains, metal, and pets out of the beam.&lt;/p&gt;

&lt;p&gt;It is a consumer wellness device that records what happens at the bed side. It does not diagnose anything, and the quality of its data depends almost entirely on where and how it is installed.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
      <category>sleep</category>
      <category>health</category>
    </item>
    <item>
      <title>Three mmWave Radar Specs That Are Almost Always Exaggerated</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 09:09:07 +0000</pubDate>
      <link>https://dev.to/249263431/three-mmwave-radar-specs-that-are-almost-always-exaggerated-524o</link>
      <guid>https://dev.to/249263431/three-mmwave-radar-specs-that-are-almost-always-exaggerated-524o</guid>
      <description>&lt;p&gt;Anyone who has compared millimeter wave radar quotations has seen the same thing. A spreadsheet arrives with columns for detection angle, detection distance, and speed, and some rows look far better than the rest. Angles of 130° and 140°. Distances of 8 m and 10 m. Speed described only as "fast".&lt;/p&gt;

&lt;p&gt;Most of those numbers are not achievable, and the reason is not commercial. They are blocked by antenna physics, transmit power, and processing capacity. This article sets out the practical limits for home and building millimeter wave radar, explains why each one cannot be moved by better algorithms, and gives a short checklist for reading a spec sheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Inflated Specs Hurt Everyone
&lt;/h2&gt;

&lt;p&gt;An exaggerated specification is usually not written to mislead the buyer. It is written to exclude competitors. If the tender requires 140° of coverage, every honest supplier is disqualified before the comparison even starts.&lt;/p&gt;

&lt;p&gt;The consequences land on all three parties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The buyer&lt;/strong&gt; receives hardware that does not meet the number it was purchased against, and has no recourse at acceptance because the specification was never achievable in the first place.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The honest supplier&lt;/strong&gt; is filtered out by a threshold it could not meet without lying.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The vendor who signed the inflated specification&lt;/strong&gt; ships a product that underperforms on site, and carries the warranty and reputation cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A spec sheet is a contract. Numbers that no hardware can reach do not protect the buyer; they only move the failure to a later date.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limit 1: Detection Angle
&lt;/h2&gt;

&lt;p&gt;A horizontal detection angle of &lt;strong&gt;130° or 140°&lt;/strong&gt; is common in tender documents. For a home or building mmWave radar it is not achievable.&lt;/p&gt;

&lt;p&gt;A mmWave radar antenna — whether etched on a PCB or built as an AiP module — transmits into a bounded spatial region and listens for the return. Outside that region the signal is too weak to be useful. The geometry is set by the antenna, not by software.&lt;/p&gt;

&lt;p&gt;The practical figures:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Measure&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Maximum angle per side&lt;/td&gt;
&lt;td&gt;~60°&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Absolute maximum total angle&lt;/td&gt;
&lt;td&gt;~120°&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Usable total angle&lt;/td&gt;
&lt;td&gt;~100°&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;At 120° the mmWave radar is already working at the edge of the antenna pattern, where the signal is weak and the detection becomes unreliable. In practice, the usable angle is closer to &lt;strong&gt;100°&lt;/strong&gt;. Anything beyond that is either a specially designed antenna for a specific application, or a number that was written down rather than measured.&lt;/p&gt;

&lt;p&gt;This applies to general chip-based solutions and PCB-based products, which is what nearly all home mmWave radars are. A finished home product does not exceed these figures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is an antenna limit, not an algorithm limit.&lt;/strong&gt; No amount of signal processing creates energy that the antenna never radiated in that direction. A specification of 130° or 140° cannot be met by any supplier using standard hardware, which is precisely why writing it is an effective way to remove the competition — and precisely why it should not be written.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limit 2: Detection Distance
&lt;/h2&gt;

&lt;p&gt;A detection distance of &lt;strong&gt;8 m or 10 m&lt;/strong&gt; appears regularly in comparison tables. For a home mmWave radar, the reliable figure is around &lt;strong&gt;6 to 7 m&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The reason is transmit power. Home mmWave radar antennas transmit at low power — a few dBm — because the product is meant to radiate as little as possible into a living space. That power sets the range at which a human target still returns a usable signal.&lt;/p&gt;

&lt;p&gt;Increasing the range means increasing the power, and that creates a second problem. More power brings in more of everything else in the room: noise, clutter, and weak returns from distant objects. The mmWave radar then has to filter the clutter out while keeping the person, and those two requirements pull against each other. Push the range far enough and the mmWave radar either loses the person or keeps the clutter.&lt;/p&gt;

&lt;p&gt;This has been measured repeatedly across many rooms. The consistent result is that &lt;strong&gt;6 to 7 m&lt;/strong&gt; is where a home mmWave radar reliably detects a person, and beyond that the margin disappears.&lt;/p&gt;

&lt;p&gt;A distance of 8 m or 10 m is a theoretical figure. It may describe what the radio can do in an empty anechoic chamber. It does not describe what the product does in a room with furniture, a fan, and a curtain. If a product genuinely detected a person reliably at 10 m in a real room, its anti-interference performance would have to be extremely poor, because it would be reporting everything it received.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limit 3: Speed
&lt;/h2&gt;

&lt;p&gt;Speed is often listed as "fast" or omitted entirely. For a home mmWave radar detecting a person, the honest figure is that it handles movement up to roughly &lt;strong&gt;3 m/s&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A home mmWave radar does far more than measure speed. It has to run the detection chain, extract targets, and perform point cloud and posture analysis on every frame. All of that computation takes time, and it limits how fast a moving target can be tracked reliably.&lt;/p&gt;

&lt;p&gt;A speed-measuring radar has a simpler job: it measures speed and nothing else, so it can be very fast. A presence or fall radar also has to decide what the target is doing — standing, sitting, lying, falling — and that judgement is what caps the usable speed.&lt;/p&gt;

&lt;p&gt;So a home mmWave radar is not the right instrument for tracking a fast-moving object, and any specification implying otherwise is describing a different product.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why These Are Hardware Limits
&lt;/h2&gt;

&lt;p&gt;The three limits share a structure. Each is fixed before any algorithm runs.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Fixed by&lt;/th&gt;
&lt;th&gt;Can an algorithm improve it?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Detection angle&lt;/td&gt;
&lt;td&gt;Antenna size and array geometry&lt;/td&gt;
&lt;td&gt;No — the energy was never radiated in that direction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detection distance&lt;/td&gt;
&lt;td&gt;Transmit power and signal-to-noise ratio&lt;/td&gt;
&lt;td&gt;Partly, but only by trading away anti-interference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Speed&lt;/td&gt;
&lt;td&gt;Frame rate and processing load&lt;/td&gt;
&lt;td&gt;No — the computation has to happen before the result exists&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The angle is set when the antenna is laid out. The distance is set when the transmit power is chosen. The speed is set when the processing budget per frame is allocated. By the time the detection chain receives a frame, all three are already decided.&lt;/p&gt;

&lt;p&gt;This is why a supplier cannot sign a specification of 140°, 10 m, and high speed and then engineer around it later. The hardware does not support it, and no firmware release changes an antenna.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Evaluate a Spec Sheet
&lt;/h2&gt;

&lt;p&gt;Six checks, in order of how quickly they eliminate a misleading claim.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Check the angle against 120°.&lt;/strong&gt; Anything above 120° total is beyond standard antenna geometry. Anything above 130° is not achievable with a general-purpose mmWave radar.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the distance against 7 m.&lt;/strong&gt; Ask what the test environment was. A distance quoted without a room description, an installation height, and a target description is a theoretical number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the speed unit.&lt;/strong&gt; If the specification says "fast" instead of a figure in m/s, ask for the figure. For home posture detection, expect something in the region of 3 m/s.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for the test conditions, not just the number.&lt;/strong&gt; Installation height, room size, target posture, and interference sources present. Two mmWave radars with the same quoted range can behave completely differently once these are stated.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for a recorded test in the target scene.&lt;/strong&gt; A short video of the mmWave radar running in a room of the size and shape you intend to deploy is worth more than any table.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the acceptance criteria as scenarios, not numbers.&lt;/strong&gt; "Detects a lying person within 3 s in a 2 m × 3 m bathroom with the door closed" is verifiable. "10 m detection range" is not.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The last point matters most. A scenario-based acceptance criterion can be tested on delivery. A headline number usually cannot.&lt;/p&gt;

&lt;h2&gt;
  
  
  What We Publish Instead
&lt;/h2&gt;

&lt;p&gt;The specifications we publish are the values we have measured, stated with the conditions they were measured under.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detection angles are given as usable figures, not antenna-pattern extremes.&lt;/li&gt;
&lt;li&gt;Distances are given for the scene the product is specified for, with the installation height that produces them.&lt;/li&gt;
&lt;li&gt;Speeds are given as figures in m/s, with the posture analysis they assume.&lt;/li&gt;
&lt;li&gt;Where a value depends on the scene — and most of them do — the article that covers it says so.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This costs us some rows in a comparison table. It also means that a mmWave radar bought against our specification behaves the way the specification said it would, which is the only outcome a procurement process is supposed to produce.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Three numbers in a millimeter wave radar specification are almost always inflated, and all three are fixed by hardware rather than by software.&lt;/p&gt;

&lt;p&gt;The usable detection angle is around &lt;strong&gt;100°&lt;/strong&gt;, with &lt;strong&gt;120°&lt;/strong&gt; as the absolute maximum of a standard antenna. The reliable detection distance for a home mmWave radar is &lt;strong&gt;6 to 7 m&lt;/strong&gt;, because the transmit power is deliberately low and raising it destroys anti-interference. The usable speed for posture detection is around &lt;strong&gt;3 m/s&lt;/strong&gt;, because the processing budget per frame is spent on deciding what the target is doing.&lt;/p&gt;

&lt;p&gt;None of these can be improved by a better algorithm, because the antenna, the power, and the frame budget are all decided before the algorithm receives a frame. A specification that asks for 140°, 10 m, and high speed is not asking for a better product. It is asking every honest supplier to disqualify itself.&lt;/p&gt;

&lt;p&gt;Read a spec sheet for the test conditions behind each number. If the conditions are missing, the number is decoration.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
      <category>specification</category>
      <category>sensor</category>
    </item>
    <item>
      <title>How to Set Up Your mmWave Radar: MQTT and Wi-Fi Configuration</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 09:06:33 +0000</pubDate>
      <link>https://dev.to/249263431/how-to-set-up-your-mmwave-radar-mqtt-and-wi-fi-configuration-472</link>
      <guid>https://dev.to/249263431/how-to-set-up-your-mmwave-radar-mqtt-and-wi-fi-configuration-472</guid>
      <description>&lt;p&gt;After receiving the radar, two things must be configured before it can send data: the MQTT connection and the Wi-Fi connection. The MQTT settings tell the radar where to send its data, and the Wi-Fi settings tell it how to reach your network. Both are configured once and stored inside the module.&lt;/p&gt;

&lt;p&gt;This guide covers the complete setup for users outside China: preparing the MQTT environment, configuring the radar through its built-in web page, and connecting it to Wi-Fi with the Android configuration app. No serial cable and no WeChat account are required.&lt;/p&gt;

&lt;h2&gt;
  
  
  What You Need Before You Start
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Android phone&lt;/td&gt;
&lt;td&gt;Android 5.0 or later&lt;/td&gt;
&lt;td&gt;The configuration app is Android-only; there is no iOS version&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wi-Fi network&lt;/td&gt;
&lt;td&gt;
&lt;strong&gt;2.4 GHz&lt;/strong&gt; band&lt;/td&gt;
&lt;td&gt;5 GHz / 5.8 GHz cannot be used&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wi-Fi password&lt;/td&gt;
&lt;td&gt;Known&lt;/td&gt;
&lt;td&gt;Needed in Step 4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;MQTT broker&lt;/td&gt;
&lt;td&gt;Address, port, ClientID, username, password&lt;/td&gt;
&lt;td&gt;See Step 1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Configuration app&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;BK_BLE5.apk&lt;/code&gt; (2.35 MB)&lt;/td&gt;
&lt;td&gt;Download link in Step 3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Power&lt;/td&gt;
&lt;td&gt;5 V USB adapter&lt;/td&gt;
&lt;td&gt;The module boots automatically when powered&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Keep your phone's Wi-Fi switched on during the whole setup. You will connect it to the radar's own hotspot in Step 2 and back to your home network afterwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Prepare Your MQTT Environment
&lt;/h2&gt;

&lt;p&gt;The radar does not send data to a cloud service by default. It publishes everything to the MQTT broker you specify, so the broker has to be ready &lt;strong&gt;before&lt;/strong&gt; the radar is configured.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the Radar Needs
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Field&lt;/th&gt;
&lt;th&gt;Example&lt;/th&gt;
&lt;th&gt;Limit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Server address&lt;/td&gt;
&lt;td&gt;&lt;code&gt;tcp://broker.emqx.io:1883&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Up to 64 characters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ClientID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;radar-livingroom-01&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Up to 32 characters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Username&lt;/td&gt;
&lt;td&gt;&lt;code&gt;radar&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Up to 32 characters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password&lt;/td&gt;
&lt;td&gt;your password&lt;/td&gt;
&lt;td&gt;Up to 32 characters&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three points to check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use a plain TCP endpoint.&lt;/strong&gt; The module is configured with a &lt;code&gt;tcp://&lt;/code&gt; address, so choose a broker endpoint that accepts plain TCP, normally port 1883.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use a unique ClientID for every radar.&lt;/strong&gt; Two devices sharing one ClientID will keep disconnecting each other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Open the port.&lt;/strong&gt; If the broker runs on a server outside your local network, make sure the port is reachable from the network the radar joins.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Broker Options
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Suitable for&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Self-hosted (EMQX, Mosquitto)&lt;/td&gt;
&lt;td&gt;Production and long-term use&lt;/td&gt;
&lt;td&gt;Full control, needs a server or a home server&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Managed cloud broker&lt;/td&gt;
&lt;td&gt;Production without running a server&lt;/td&gt;
&lt;td&gt;Check that a plain TCP endpoint is offered&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Public test broker &lt;code&gt;tcp://broker.emqx.io:1883&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;First test only&lt;/td&gt;
&lt;td&gt;Anyone can read the data; never use it for real deployment&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Write the four values down before moving on. You will type them into the radar in the next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Configure MQTT on the Radar
&lt;/h2&gt;

&lt;p&gt;The radar has a built-in web configuration page. This is the only place where the MQTT settings are entered — the Android app cannot do it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Press and hold the button on the module for &lt;strong&gt;more than 10 seconds&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;On your phone, open the Wi-Fi settings and connect to the hotspot named &lt;code&gt;RadarConfig-xxxxxxxxxxxx&lt;/code&gt; (the last characters identify the device).&lt;/li&gt;
&lt;li&gt;Open a browser and go to &lt;code&gt;192.168.0.1&lt;/code&gt;. The configuration page opens and shows the device ID plus empty MQTT fields.&lt;/li&gt;
&lt;li&gt;Fill in the server address, ClientID, username, and password from Step 1.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Modify&lt;/strong&gt; to save. The page refreshes and shows the values you entered.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Setup complete, exit&lt;/strong&gt;. The module reboots and leaves configuration mode.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The settings are stored inside the module, so this step is done once. If you change the broker later, repeat Step 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; while the phone is connected to the &lt;code&gt;RadarConfig&lt;/code&gt; hotspot it has no internet access. That is normal — the page is served by the module itself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Install the Configuration App
&lt;/h2&gt;

&lt;p&gt;The radar is provisioned over Bluetooth. The WeChat mini-program used in China is not available outside China, so use the Android app instead.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download &lt;code&gt;BK_BLE5.apk&lt;/code&gt; (2.35 MB) from GitHub:
&lt;code&gt;https://github.com/249263431/Android_BK_BLE_WIFI_NEW_2024031901/blob/main/BK_BLE5.apk&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If your phone asks, allow installing apps from this source (Settings → Apps → Special access → Install unknown apps).&lt;/li&gt;
&lt;li&gt;Open the app. The main screen is titled &lt;strong&gt;Network Test&lt;/strong&gt; and shows three fields: Bluetooth name, Wi-Fi name, and Wi-Fi password.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The app configures Wi-Fi only. It contains no MQTT settings, which is why Step 2 comes first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Connect the Radar to Wi-Fi
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Press and hold the button for about &lt;strong&gt;5 seconds&lt;/strong&gt;, until the LED turns off, then release. The LED starts flashing: the module is now in provisioning mode.&lt;/li&gt;
&lt;li&gt;Make sure the phone's Wi-Fi is on, and grant the location permission if the phone asks for it. Android requires it to scan for Bluetooth and Wi-Fi devices.&lt;/li&gt;
&lt;li&gt;In the app, tap &lt;strong&gt;Choose bluetooth&lt;/strong&gt; and select &lt;code&gt;Radar_BLE&lt;/code&gt; from the list. If the list is empty, wait 10–20 seconds for the scan to finish.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Choose SSID&lt;/strong&gt; and select your &lt;strong&gt;2.4 GHz&lt;/strong&gt; network. Type the Wi-Fi password, and use &lt;strong&gt;Show Password&lt;/strong&gt; to check what you typed.&lt;/li&gt;
&lt;li&gt;Tap &lt;strong&gt;Start confguring network&lt;/strong&gt; and wait. The whole process takes a few seconds.&lt;/li&gt;
&lt;li&gt;When the app reports success, the radar is connected to your router and to your broker.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Two limits to remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;2.4 GHz only.&lt;/strong&gt; A 5 GHz / 5.8 GHz network cannot be used. If your router broadcasts both bands under one name, split the bands in the router settings or use a separate 2.4 GHz network.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;90 seconds.&lt;/strong&gt; If provisioning does not finish within 90 seconds it times out. Press and hold the button again to restart.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; every step in this section must be done while the LED is flashing. If the LED is not flashing, the attempt has failed and you need to start again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Verify the Connection
&lt;/h2&gt;

&lt;p&gt;Check three things, in order:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Wi-Fi&lt;/strong&gt; — the app reports a successful configuration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Broker&lt;/strong&gt; — subscribe with any MQTT client to the radar's report topic. The topic prefix depends on the model:&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;th&gt;Topic prefix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;60 GHz sleep radar&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/Radar60SP/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;60 GHz fall radar&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/Radar60FL/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24 GHz presence radar&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/RadarHP/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24 GHz sleep radar&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/RadarSP/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;24 GHz fall radar&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/RadarFL/&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The full report topic is &lt;code&gt;&amp;lt;prefix&amp;gt;/&amp;lt;DeviceID&amp;gt;/sys/property/post&lt;/code&gt;. The DeviceID is the value shown on the configuration page in Step 2. A healthy radar publishes JSON messages such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"post"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;"someoneExists"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"1"&lt;/span&gt;&lt;span class="p"&gt;}}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Data&lt;/strong&gt; — the messages change when the state changes, for example when someone enters or leaves the room.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  If Something Goes Wrong
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Issue&lt;/th&gt;
&lt;th&gt;Possible Cause&lt;/th&gt;
&lt;th&gt;Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;No &lt;code&gt;Radar_BLE&lt;/code&gt; in the app list&lt;/td&gt;
&lt;td&gt;Module not in provisioning mode&lt;/td&gt;
&lt;td&gt;Press and hold the button for 5 s until the LED flashes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Bluetooth or location permission denied&lt;/td&gt;
&lt;td&gt;Grant both permissions and scan again&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Provisioning times out&lt;/td&gt;
&lt;td&gt;Wrong Wi-Fi band&lt;/td&gt;
&lt;td&gt;Use a 2.4 GHz network&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Wrong Wi-Fi password&lt;/td&gt;
&lt;td&gt;Re-enter the password and check it with Show Password&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cannot open &lt;code&gt;192.168.0.1&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Phone not connected to the &lt;code&gt;RadarConfig&lt;/code&gt; hotspot&lt;/td&gt;
&lt;td&gt;Reconnect to the hotspot and reload the page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Radar online but no data&lt;/td&gt;
&lt;td&gt;Broker address, port, or credentials wrong&lt;/td&gt;
&lt;td&gt;Repeat Step 2 and check every field&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;ClientID already used by another device&lt;/td&gt;
&lt;td&gt;Give every radar a unique ClientID&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Firewall blocking the port&lt;/td&gt;
&lt;td&gt;Open the port or use a reachable broker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bluetooth scan fails on Android 12 or later&lt;/td&gt;
&lt;td&gt;Nearby devices permission not granted&lt;/td&gt;
&lt;td&gt;Allow the "Nearby devices" permission for the app&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Common Mistakes
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mistake&lt;/th&gt;
&lt;th&gt;Result&lt;/th&gt;
&lt;th&gt;Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Configuring Wi-Fi before MQTT&lt;/td&gt;
&lt;td&gt;The app has no MQTT fields, so the broker is never set&lt;/td&gt;
&lt;td&gt;Do Step 2 first&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Using a 5 GHz network&lt;/td&gt;
&lt;td&gt;Provisioning always fails&lt;/td&gt;
&lt;td&gt;Use 2.4 GHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Using the public test broker for real use&lt;/td&gt;
&lt;td&gt;Data is visible to everyone&lt;/td&gt;
&lt;td&gt;Use your own broker&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Same ClientID on several radars&lt;/td&gt;
&lt;td&gt;Devices disconnect each other&lt;/td&gt;
&lt;td&gt;Use a unique ClientID per device&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Assuming the app configures everything&lt;/td&gt;
&lt;td&gt;The broker is never configured&lt;/td&gt;
&lt;td&gt;Complete both steps&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Setting up the radar takes two configurations and nothing else. Prepare the MQTT broker first and write down the address, port, ClientID, username, and password. Then press the button for 10 seconds, join the &lt;code&gt;RadarConfig&lt;/code&gt; hotspot, and enter those values at &lt;code&gt;192.168.0.1&lt;/code&gt;. Finally, install &lt;code&gt;BK_BLE5.apk&lt;/code&gt;, press the button for 5 seconds until the LED flashes, and send the radar your 2.4 GHz Wi-Fi credentials over Bluetooth.&lt;/p&gt;

&lt;p&gt;Use 2.4 GHz Wi-Fi, a unique ClientID for every radar, and a broker you control. Once both steps are done, the radar publishes its data to your broker and the setup is finished.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
      <category>mqtt</category>
      <category>setup</category>
    </item>
    <item>
      <title>Why mmWave Radar Takes Seconds to Respond</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 09:00:52 +0000</pubDate>
      <link>https://dev.to/249263431/why-mmwave-radar-takes-seconds-to-respond-13ef</link>
      <guid>https://dev.to/249263431/why-mmwave-radar-takes-seconds-to-respond-13ef</guid>
      <description>&lt;p&gt;A common question from new users is why the radar feels slow. Breathing rate takes a while to settle. A fall is not reported the instant it happens. Heart rate seems to lag behind what the person is feeling. The suspicion is usually that the sensor is underpowered or the signal is weak.&lt;/p&gt;

&lt;p&gt;The opposite is closer to the truth. The delay is the price of not reporting things that did not happen, and it is built into how millimeter wave radar processes a signal. This article explains where the delay comes from, which measurements are genuinely fast, and which are slow by design.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Trade-off Behind Every Delay
&lt;/h2&gt;

&lt;p&gt;Every millimeter wave radar faces the same choice on every frame: report now, or confirm first.&lt;/p&gt;

&lt;p&gt;Report immediately and the reporting rate approaches one hundred percent — nothing is missed. It also means every shower, every squat to pick something up, and every curtain movement becomes an alarm. Report only after confirmation and the false alarm rate collapses, at the cost of a few seconds of latency.&lt;/p&gt;

&lt;p&gt;Neither extreme is a product. A sensor that reports everything is unusable because nobody trusts it, and a sensor that reports nothing is unusable because it reports nothing. The delay you notice is the interval the radar spends deciding which side of that line an event falls on.&lt;/p&gt;

&lt;p&gt;So latency is not a defect to be engineered away. It is the setting that decides how many false alarms you are willing to accept in exchange for how quickly a real event is published.&lt;/p&gt;

&lt;h2&gt;
  
  
  How a Second Is Built
&lt;/h2&gt;

&lt;p&gt;The delay starts with how the radar divides time.&lt;/p&gt;

&lt;p&gt;A second is split into ten intervals of &lt;strong&gt;0.1 s&lt;/strong&gt;. Each of those is split again into several sub-frames. The radar does not evaluate a single sub-frame in isolation — it averages across the sub-frames inside one 0.1 s window, and then across the 0.1 s windows inside a second.&lt;/p&gt;

&lt;p&gt;Within each window the radar computes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The average velocity of the target&lt;/li&gt;
&lt;li&gt;The average movement amplitude&lt;/li&gt;
&lt;li&gt;How many frames show the target approaching&lt;/li&gt;
&lt;li&gt;How many show it receding&lt;/li&gt;
&lt;li&gt;How many show large movement, and how many show small movement&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Combining the 0.1 s windows is what produces a height change, a breathing amplitude, or a heart rate amplitude. Every one of those values is an average, not a measurement of one instant. An average needs several samples before it means anything, and that requirement is the origin of the delay.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Frames Drift
&lt;/h2&gt;

&lt;p&gt;The radar transmits and receives continuously. It is closer to a machine gun firing frames than a camera taking one picture at a time, and that has a consequence: no two frames are identical.&lt;/p&gt;

&lt;p&gt;Because the transmission is continuous and the target is moving, each frame captures the target at a slightly different phase. The result is a small drift between frames that is not signal and not noise — it is the geometry of sampling a moving object.&lt;/p&gt;

&lt;p&gt;To keep the output stable, the radar does not trust a single frame. It recomputes across many frames and publishes only what survives the recomputation. That repetition is the second source of delay, and it is unavoidable: a value computed from one frame would jump around, and a value that jumps around is worse than a value that arrives late.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a Fall Takes Seconds
&lt;/h2&gt;

&lt;p&gt;A fall is the clearest example of the trade-off, because the raw signal is unambiguous and the decision is not.&lt;/p&gt;

&lt;p&gt;The radar sees the target collapse: a tall reflection at chest height becomes a wide, low reflection on the floor, within about a second. That alone is enough to raise an alarm, and raising it immediately would catch every fall.&lt;/p&gt;

&lt;p&gt;It would also catch a person crouching to pick something up, a person sitting on the edge of the bathtub, and a person reaching for a towel on the floor. All of those produce the same collapse.&lt;/p&gt;

&lt;p&gt;So the radar confirms before publishing. It checks whether the height change is sustained, whether the target stays low, and whether the posture persists across repeated detections. Only a target that is still down several seconds later is reported.&lt;/p&gt;

&lt;p&gt;The finished unit applies fixed rules on top: a body held below &lt;strong&gt;70 cm&lt;/strong&gt; in a static posture raises the alarm after &lt;strong&gt;30 seconds&lt;/strong&gt;, and a person who stays completely still raises it after &lt;strong&gt;5 minutes&lt;/strong&gt;. The configurable fall duration covers everything in between.&lt;/p&gt;

&lt;p&gt;That is why a fall takes seconds. The radar already knows something happened; it is spending those seconds making sure it happened to a person and not to someone bending over.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Breathing Takes Longer
&lt;/h2&gt;

&lt;p&gt;Breathing has the same structure, plus one extra problem: the signal has natural gaps.&lt;/p&gt;

&lt;p&gt;A human breath is not a smooth wave. It is an inhale, an exhale, and a pause, and the pause is the difficulty. During the pause there is no chest movement to measure, so the radar has to decide whether the person has stopped breathing or is simply between breaths.&lt;/p&gt;

&lt;p&gt;A single pause is not enough information. The radar has to observe several complete breath cycles — inhale, exhale, pause — before it can establish a rate, and a full cycle takes several seconds. Only after seeing the same rhythm repeat does the published value settle.&lt;/p&gt;

&lt;p&gt;This is why the breathing value arrives frequently but stabilises slowly. The radar publishes a number every few seconds from the very first frame, and that number keeps moving until enough cycles have been observed. A rate computed from two breaths is not a rate.&lt;/p&gt;

&lt;p&gt;Heart rate follows the same logic, for the same reason: it is a rhythm with gaps, and a rhythm needs repetition before it means anything.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Actually Fast
&lt;/h2&gt;

&lt;p&gt;Not everything is delayed, and knowing which values are fast is useful when designing a system around the radar.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data&lt;/th&gt;
&lt;th&gt;Speed&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Body movement amplitude&lt;/td&gt;
&lt;td&gt;Near real time, updates every second&lt;/td&gt;
&lt;td&gt;A magnitude, not a rhythm — no averaging across cycles needed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Energy level&lt;/td&gt;
&lt;td&gt;Near real time&lt;/td&gt;
&lt;td&gt;The size of a change is measurable in a single frame&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human position&lt;/td&gt;
&lt;td&gt;Within 1–2 seconds&lt;/td&gt;
&lt;td&gt;A coordinate, not a pattern&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Presence&lt;/td&gt;
&lt;td&gt;Within 0.5 s of a person appearing&lt;/td&gt;
&lt;td&gt;A state change, not a measurement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Motion status&lt;/td&gt;
&lt;td&gt;Within 0.5 s&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing rate&lt;/td&gt;
&lt;td&gt;Several seconds to stabilise&lt;/td&gt;
&lt;td&gt;Requires several full breath cycles&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heart rate&lt;/td&gt;
&lt;td&gt;Several seconds to stabilise&lt;/td&gt;
&lt;td&gt;Same&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fall alarm&lt;/td&gt;
&lt;td&gt;Seconds, by design&lt;/td&gt;
&lt;td&gt;Requires sustained-posture confirmation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dwell alarm&lt;/td&gt;
&lt;td&gt;Minutes, by design&lt;/td&gt;
&lt;td&gt;Requires sustained stillness&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep stage&lt;/td&gt;
&lt;td&gt;Every 10 minutes&lt;/td&gt;
&lt;td&gt;Evaluated once per window&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pattern is simple. Anything that measures &lt;strong&gt;how much&lt;/strong&gt; is fast. Anything that measures &lt;strong&gt;a rhythm&lt;/strong&gt; or &lt;strong&gt;a decision&lt;/strong&gt; is slow, because both require repetition before they can be trusted.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Work With the Delay
&lt;/h2&gt;

&lt;p&gt;The latency is fixed by the detection chain, but a system can be designed around it.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Do not treat a single reading as final.&lt;/strong&gt; Breathing and heart rate values move for several seconds before settling. Average them on your side, or display them with a settling indicator.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separate fast signals from slow ones.&lt;/strong&gt; Use presence and movement amplitude for anything that must feel instant — lighting, extractor fans, occupancy displays. Use breathing, heart rate, and sleep data only for trends and history, where a few seconds of delay is invisible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Set the fall duration to the event, not to the fastest possible reaction.&lt;/strong&gt; A short duration catches more real events and produces more false ones. A long duration does the opposite. The right value depends on how much a false alarm costs in your deployment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Design the escalation path around the dwell alarm, not the fall alarm.&lt;/strong&gt; The fall alarm is seconds. The dwell alarm is minutes, and it is the one that covers the person who does not fall but stops moving.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expect the sleep stage to move in steps.&lt;/strong&gt; It is evaluated once per ten-minute window, so it changes in steps rather than continuously. That is not lag; that is the reporting interval.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Millimeter wave radar divides a second into ten intervals of 0.1 s, averages across sub-frames and across intervals, and recomputes across many frames to remove drift. Every published value is the product of that averaging, and averaging takes time.&lt;/p&gt;

&lt;p&gt;The delay is not a limitation of the sensor. It is the setting that decides how many false alarms you accept in exchange for how fast a real event is published. A radar that reported everything instantly would be useless, because nobody would believe it.&lt;/p&gt;

&lt;p&gt;Movement amplitude, energy, and position are near real time, because they measure a magnitude. Breathing rate, heart rate, fall alarms, and dwell alarms take seconds to minutes, because they measure a rhythm or require a confirmed decision.&lt;/p&gt;

&lt;p&gt;Design your system with that split in mind: fast values for anything that must respond immediately, slow values for anything that only needs to be right.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
      <category>latency</category>
      <category>sensor</category>
    </item>
    <item>
      <title>The Presence Detection Radar: Range, Sensitivity, and Scene Modes</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 08:57:02 +0000</pubDate>
      <link>https://dev.to/249263431/the-presence-detection-radar-range-sensitivity-and-scene-modes-431m</link>
      <guid>https://dev.to/249263431/the-presence-detection-radar-range-sensitivity-and-scene-modes-431m</guid>
      <description>&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is a consumer and commercial sensing device. It is not a medical device and does not diagnose, treat, or prevent any condition.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Two Variants, Two Protocols
&lt;/h2&gt;

&lt;p&gt;This radar is available in two forms, and they use completely different protocols. Check which one you have before reading further.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Variant&lt;/th&gt;
&lt;th&gt;Frequency&lt;/th&gt;
&lt;th&gt;Interface&lt;/th&gt;
&lt;th&gt;Protocol&lt;/th&gt;
&lt;th&gt;Configuration&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Presence radar module&lt;/td&gt;
&lt;td&gt;24 GHz&lt;/td&gt;
&lt;td&gt;UART only&lt;/td&gt;
&lt;td&gt;Frame protocol at 115200 bps&lt;/td&gt;
&lt;td&gt;Wired, no network setup&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Presence radar&lt;/td&gt;
&lt;td&gt;60 GHz&lt;/td&gt;
&lt;td&gt;2.4 GHz Wi-Fi + MQTT&lt;/td&gt;
&lt;td&gt;JSON property protocol over MQTT topics&lt;/td&gt;
&lt;td&gt;Web page for MQTT, Android app for Wi-Fi&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;presence radar module&lt;/strong&gt; is the bare sensing core for integrators who embed it in their own product; its output is described under Over UART. The &lt;strong&gt;presence radar&lt;/strong&gt; is the finished ceiling-mounted unit that joins your network; its output is described under Over Wi-Fi and MQTT.&lt;/p&gt;

&lt;p&gt;Setting up the presence radar, the Wi-Fi variant, is covered step by step in the &lt;a href="https://249263431.github.io/60GHz-Radar-SDK/guide/2026/10/17/radar-setup-guide.html" rel="noopener noreferrer"&gt;setup guide&lt;/a&gt;. The module needs no network setup at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Radar Is
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;presence radar&lt;/strong&gt; 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 &lt;strong&gt;2.7 m&lt;/strong&gt; when ceiling-mounted, with a beam of &lt;strong&gt;100° horizontal&lt;/strong&gt; and &lt;strong&gt;80° vertical&lt;/strong&gt;. It is built for small to medium rooms: bathrooms, bedrooms, offices, and hotel rooms.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;presence radar module&lt;/strong&gt; is a 24 GHz sensing core without the housing and without the Wi-Fi section. It is designed for ceiling mounting up to &lt;strong&gt;2.75 m&lt;/strong&gt; and covers a much wider area, up to about &lt;strong&gt;12 m&lt;/strong&gt; across for a moving person. It is intended for corridors, open-plan floors, and large rooms where one unit has to cover everything.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  How It Detects a Person Who Is Not Moving
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;The practical consequence is the timing:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Transition&lt;/th&gt;
&lt;th&gt;Time to Report&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;No person to person present&lt;/td&gt;
&lt;td&gt;Within &lt;strong&gt;0.5 s&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Person present to no person&lt;/td&gt;
&lt;td&gt;About &lt;strong&gt;40 s&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Measures
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Presence
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;No person&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Person present&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Reported on change, within 0.5 s of a person appearing and about 40 s after the last confirmed trace disappears.&lt;/p&gt;

&lt;h3&gt;
  
  
  Motion Status
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;No movement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Still (static)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Active&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Reported on change, within 0.5 s.&lt;/p&gt;

&lt;h3&gt;
  
  
  Approach and Leave Direction
&lt;/h3&gt;

&lt;p&gt;The presence radar module also reports which way a person is moving relative to the radar:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;No directional movement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Approaching&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Moving away&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Continuously approaching&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Continuously moving away&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Body Movement Level
&lt;/h3&gt;

&lt;p&gt;A single value from 0 to 100. The presence radar module reports it &lt;strong&gt;every 5 s&lt;/strong&gt;; the presence radar reports it every second over MQTT. The ranges have fixed meanings:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0 %&lt;/td&gt;
&lt;td&gt;No person in range&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1 %&lt;/td&gt;
&lt;td&gt;Still: breathing only, no limb movement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2 %–30 %&lt;/td&gt;
&lt;td&gt;Micro movement: small head or limb motion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31 %–60 %&lt;/td&gt;
&lt;td&gt;Walking or fast limb movement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;61 %–100 %&lt;/td&gt;
&lt;td&gt;Running or large close-range movement&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Human Distance and Position
&lt;/h3&gt;

&lt;p&gt;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 &lt;strong&gt;non-critical functions with limited accuracy&lt;/strong&gt; in the documentation. They are useful for debugging an installation, but they should not be the basis of a product feature.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sensitivity
&lt;/h3&gt;

&lt;p&gt;The presence radar module exposes a sensitivity setting from &lt;strong&gt;1 to 10&lt;/strong&gt;, with &lt;strong&gt;7 as the default&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Range&lt;/th&gt;
&lt;th&gt;Intended for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;7–10&lt;/td&gt;
&lt;td&gt;Low-interference spaces where fine motion must be caught: storage rooms, vaults&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4–6&lt;/td&gt;
&lt;td&gt;Ordinary indoor spaces: homes, hotels, offices (default)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1–3&lt;/td&gt;
&lt;td&gt;Spaces with heavy interference: corridors, parking areas, where only large movement should trigger&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scene Mode
&lt;/h3&gt;

&lt;p&gt;The presence radar module ships with seven scene modes. Each mode changes the &lt;strong&gt;trigger&lt;/strong&gt; range, that is, the distance at which a moving person is detected:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scene mode&lt;/th&gt;
&lt;th&gt;Trigger range, wide angle&lt;/th&gt;
&lt;th&gt;Trigger range, narrow angle&lt;/th&gt;
&lt;th&gt;Static range&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Maximum area&lt;/td&gt;
&lt;td&gt;12 m&lt;/td&gt;
&lt;td&gt;8 m&lt;/td&gt;
&lt;td&gt;6 m / 4 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Office&lt;/td&gt;
&lt;td&gt;10 m&lt;/td&gt;
&lt;td&gt;7 m&lt;/td&gt;
&lt;td&gt;6 m / 4 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hotel (default)&lt;/td&gt;
&lt;td&gt;9 m&lt;/td&gt;
&lt;td&gt;6 m&lt;/td&gt;
&lt;td&gt;6 m / 4 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Living room&lt;/td&gt;
&lt;td&gt;7 m&lt;/td&gt;
&lt;td&gt;5 m&lt;/td&gt;
&lt;td&gt;6 m / 4 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bedroom&lt;/td&gt;
&lt;td&gt;4 m&lt;/td&gt;
&lt;td&gt;3 m&lt;/td&gt;
&lt;td&gt;6 m / 4 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zone detection&lt;/td&gt;
&lt;td&gt;3 m&lt;/td&gt;
&lt;td&gt;2 m&lt;/td&gt;
&lt;td&gt;6 m / 4 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bathroom&lt;/td&gt;
&lt;td&gt;1.8 m&lt;/td&gt;
&lt;td&gt;1.5 m&lt;/td&gt;
&lt;td&gt;6 m / 4 m&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The static range is the same across modes; what changes is how far away a &lt;strong&gt;moving&lt;/strong&gt; person is noticed. Choosing the smallest mode that still covers the room is the single most effective way to remove false triggers.&lt;/p&gt;

&lt;p&gt;The presence radar exposes scene mode as an MQTT property, but with a different numbering: &lt;code&gt;0&lt;/code&gt; default, &lt;code&gt;1&lt;/code&gt; zone detection, &lt;code&gt;2&lt;/code&gt; bathroom, &lt;code&gt;3&lt;/code&gt; bedroom, &lt;code&gt;4&lt;/code&gt; living room, &lt;code&gt;5&lt;/code&gt; office, &lt;code&gt;6&lt;/code&gt; hotel. Do not mix the two lists; they are different protocols.&lt;/p&gt;

&lt;h3&gt;
  
  
  Forced Unmanned
&lt;/h3&gt;

&lt;p&gt;The presence radar module can force an unoccupied output after a fixed time, regardless of what it detects:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Forced unoccupied after&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;Not used&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;10 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;30 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;1 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;2 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;5 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;10 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;30 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;60 min&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reporting Rhythm
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Data Point&lt;/th&gt;
&lt;th&gt;Range&lt;/th&gt;
&lt;th&gt;Reported&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Presence&lt;/td&gt;
&lt;td&gt;0 / 1&lt;/td&gt;
&lt;td&gt;On change, 0.5 s in, ~40 s out&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Motion status&lt;/td&gt;
&lt;td&gt;0 / 1 / 2&lt;/td&gt;
&lt;td&gt;On change, 0.5 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Approach / leave&lt;/td&gt;
&lt;td&gt;1–5&lt;/td&gt;
&lt;td&gt;On change, ~2 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Body movement&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;td&gt;Every 5 s (module), every 1 s (radar)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Detection Range
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Presence radar (60 GHz, ceiling-mounted)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Detection radius&lt;/td&gt;
&lt;td&gt;~2.7 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beam, horizontal&lt;/td&gt;
&lt;td&gt;100°&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beam, vertical&lt;/td&gt;
&lt;td&gt;80°&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mounting&lt;/td&gt;
&lt;td&gt;Recessed in ceiling&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Presence radar module (24 GHz, ceiling-mounted)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;Maximum distance&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Moving person&lt;/td&gt;
&lt;td&gt;~12 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sitting or micro-movement&lt;/td&gt;
&lt;td&gt;~6 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleeping person&lt;/td&gt;
&lt;td&gt;~3 m&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;In practice, the covered area is approximately &lt;strong&gt;8 m × 12 m&lt;/strong&gt; for a moving person, &lt;strong&gt;4 m × 6 m&lt;/strong&gt; for a stationary person, and &lt;strong&gt;3 m × 2 m&lt;/strong&gt; for a sleeping person. The actual area is oval rather than circular.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mounting
&lt;/h3&gt;

&lt;p&gt;Both variants are &lt;strong&gt;ceiling-mounted&lt;/strong&gt;. Mounting the module on a wall or at an angle changes the covered shape and is not supported.&lt;/p&gt;

&lt;p&gt;For the presence radar module:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mount horizontally, with the radar's long edge facing the room entrance so a person entering crosses the beam head-on&lt;/li&gt;
&lt;li&gt;Keep the horizontal deviation within &lt;strong&gt;3°&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Mount at a height of &lt;strong&gt;2.75 m&lt;/strong&gt; or less&lt;/li&gt;
&lt;li&gt;Keep the area in front of the radar clear of obstructions and covers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tuning the Scene Mode and Sensitivity
&lt;/h3&gt;

&lt;p&gt;The two settings work together, and the module documentation gives a clear procedure:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Compare the room area with the scene mode table and pick a starting mode.&lt;/li&gt;
&lt;li&gt;Confirm where people actually spend time; the centre of that area is where the radar belongs.&lt;/li&gt;
&lt;li&gt;Find the room entrance and aim the radar's long edge at it.&lt;/li&gt;
&lt;li&gt;Check the detection area for interference sources.&lt;/li&gt;
&lt;li&gt;If interference exists, shrink the trigger range by moving to a smaller scene mode.&lt;/li&gt;
&lt;li&gt;Decide the starting sensitivity from the room type.&lt;/li&gt;
&lt;li&gt;If the room is small (&lt;strong&gt;15 m² or less&lt;/strong&gt;), reduce the sensitivity by one step. Small rooms strengthen reflections, so lowering sensitivity keeps the unoccupied judgement stable.&lt;/li&gt;
&lt;li&gt;If the room is large (&lt;strong&gt;40 m² or more&lt;/strong&gt;), raise the sensitivity by one step. Large rooms weaken reflections, so raising sensitivity keeps the occupied judgement stable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Interferes
&lt;/h3&gt;

&lt;p&gt;Avoid aiming the radar at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Electric fans&lt;/li&gt;
&lt;li&gt;Air conditioners (the internal motor causes false detection)&lt;/li&gt;
&lt;li&gt;Curtains that move with air flow&lt;/li&gt;
&lt;li&gt;Metal objects&lt;/li&gt;
&lt;li&gt;Water pipes or flowing water&lt;/li&gt;
&lt;li&gt;Pets moving in the area&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  What the Signal Passes Through
&lt;/h3&gt;

&lt;p&gt;The signal is not blocked by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clothing&lt;/li&gt;
&lt;li&gt;Curtains&lt;/li&gt;
&lt;li&gt;Thin wooden boards&lt;/li&gt;
&lt;li&gt;Glass&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Getting the Data Out
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Over Wi-Fi and MQTT (presence radar)
&lt;/h3&gt;

&lt;p&gt;The presence radar uses a set of topics per function rather than one pair:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Topic&lt;/th&gt;
&lt;th&gt;Direction&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/RadarHP/{DeviceID}/sys/online/post&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Device reports online / offline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/RadarHP/{DeviceID}/sys/version/post&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Device reports version information&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/RadarHP/{DeviceID}/sys/property/set&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;You send settings&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/RadarHP/{DeviceID}/sys/property/set_reply&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Device answers a setting&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/RadarHP/{DeviceID}/sys/active/post&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Device reports fast-changing values&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/RadarHP/{DeviceID}/sys/passive/post&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Device reports configuration values&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The main properties:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Property&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Access&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;online&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0 offline, 1 online&lt;/td&gt;
&lt;td&gt;post&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;radarID&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Device identifier&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;softwareVersion&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Software version&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;firmwareVersion&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Firmware version&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;protocolVersion&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Protocol version&lt;/td&gt;
&lt;td&gt;post, get&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;movementSigns&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Body movement, 0–100&lt;/td&gt;
&lt;td&gt;post&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;keepAway&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;1 none, 2 approaching, 3 leaving, 4 continuous approaching, 5 continuous leaving&lt;/td&gt;
&lt;td&gt;post&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;environ&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0 unoccupied, 1 occupied still, 2 occupied moving&lt;/td&gt;
&lt;td&gt;post&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;thresholdGear&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Sensitivity, 0–9&lt;/td&gt;
&lt;td&gt;post, set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sceneMode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;0 default, 1 zone, 2 bathroom, 3 bedroom, 4 living room, 5 office, 6 hotel&lt;/td&gt;
&lt;td&gt;post, set&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;forceIntoUnmannedGear&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Forced unoccupied, 0–8&lt;/td&gt;
&lt;td&gt;post, set&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Values are strings. Settings are sent with &lt;code&gt;"method": "set"&lt;/code&gt; to the property set topic, and the device answers on the set reply topic.&lt;/p&gt;

&lt;p&gt;Two control commands apply to the fast-changing values:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;"method": "control"&lt;/code&gt; turns individual reports on or off. A value of &lt;strong&gt;1 allows the report, 0 forbids it&lt;/strong&gt;. Note that this is the opposite of the convention used by the 60 GHz radars, where 1 means forbidden.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;"method": "control_qos"&lt;/code&gt; sets the quality of service per topic, using keys such as &lt;code&gt;Qos_movementSigns&lt;/code&gt;, &lt;code&gt;Qos_keepAway&lt;/code&gt;, and &lt;code&gt;Qos_environ&lt;/code&gt;. The default is QoS 1.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Over UART (presence radar module)
&lt;/h3&gt;

&lt;p&gt;The presence radar module exposes a UART interface at &lt;strong&gt;115200 bps&lt;/strong&gt;, 8 data bits, 1 stop bit, no parity, 3.3 V TTL level.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Header   Control  Command  Length   Data     Checksum  Tail
0x53 0x59  1 Byte   1 Byte   2 Bytes  n Bytes  1 Byte    0x54 0x43
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The checksum is the sum of the header, control byte, command byte, length bytes, and data, taking the low 8 bits.&lt;/p&gt;

&lt;p&gt;Control byte &lt;code&gt;0x80&lt;/code&gt; covers human presence. Command &lt;code&gt;0x01&lt;/code&gt; reports presence, &lt;code&gt;0x02&lt;/code&gt; reports motion status, &lt;code&gt;0x03&lt;/code&gt; reports the body movement value, &lt;code&gt;0x04&lt;/code&gt; reports distance, and &lt;code&gt;0x05&lt;/code&gt; reports position. Query commands are the same values with the high bit set, for example &lt;code&gt;0x81&lt;/code&gt; to query presence.&lt;/p&gt;

&lt;p&gt;The module also has two hardware outputs that need no protocol at all:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Pin&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;S1&lt;/td&gt;
&lt;td&gt;High = person present, low = no person&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;S2&lt;/td&gt;
&lt;td&gt;High = active, low = still&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where It Is Used
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Bathrooms and small rooms.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Corridors and open-plan floors.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Meeting rooms and desks.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hotels.&lt;/strong&gt; Occupancy-based climate and lighting control, with no camera in the room and nothing for the guest to object to.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Integrators.&lt;/strong&gt; The module's S1 and S2 outputs give a two-wire presence signal for products that have no network at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  What It Cannot Do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It is not a medical device.&lt;/strong&gt; It reports occupancy and movement. It does not diagnose, treat, or prevent any condition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It cannot count people reliably.&lt;/strong&gt; It reports whether at least one person is present, not how many. Two people in the area read the same as one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It cannot identify people.&lt;/strong&gt; There is no way to tell who is in the room from the radar output alone.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It cannot see through metal.&lt;/strong&gt; A metal ceiling panel, a metal light fitting, or a metal cabinet between the radar and the person will degrade or block the signal.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It does not react instantly to an empty room.&lt;/strong&gt; The 40-second unoccupied delay is built in. A system that needs a room marked empty in 2 seconds will not get it from this radar without forcing it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High sensitivity is not free.&lt;/strong&gt; Catching a person who is barely moving also means catching a curtain that is barely moving.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scene mode is not cosmetic.&lt;/strong&gt; Leaving a large mode on a small room is the most common cause of a radar that reports people who are not there.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptom&lt;/th&gt;
&lt;th&gt;Possible Cause&lt;/th&gt;
&lt;th&gt;Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Reports unoccupied while someone sits still&lt;/td&gt;
&lt;td&gt;Sensitivity too low&lt;/td&gt;
&lt;td&gt;Raise the sensitivity by one step&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Radar too far from the person&lt;/td&gt;
&lt;td&gt;Check the scene mode range against the room&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reports occupied in an empty room&lt;/td&gt;
&lt;td&gt;Scene mode too large for the room&lt;/td&gt;
&lt;td&gt;Move to a smaller scene mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;Interference source in the beam&lt;/td&gt;
&lt;td&gt;Remove fans, curtains, or pets from the area&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Person entering is not detected&lt;/td&gt;
&lt;td&gt;Radar's long edge not facing the entrance&lt;/td&gt;
&lt;td&gt;Re-aim the long edge at the door&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unoccupied state flickers&lt;/td&gt;
&lt;td&gt;Room too small for the sensitivity&lt;/td&gt;
&lt;td&gt;Reduce sensitivity by one step&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Movement value stuck at 0&lt;/td&gt;
&lt;td&gt;Person outside the detection area&lt;/td&gt;
&lt;td&gt;Move the radar or reduce the scene mode&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No data over MQTT&lt;/td&gt;
&lt;td&gt;Report forbidden by the control command&lt;/td&gt;
&lt;td&gt;Check the &lt;code&gt;control&lt;/code&gt; settings and the QoS values&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Specifications
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Presence radar (60 GHz)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Radar frequency&lt;/td&gt;
&lt;td&gt;60 GHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detection radius&lt;/td&gt;
&lt;td&gt;~2.7 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beam angle&lt;/td&gt;
&lt;td&gt;100° horizontal, 80° vertical&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mounting&lt;/td&gt;
&lt;td&gt;Recessed ceiling mount&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supply&lt;/td&gt;
&lt;td&gt;5 V over USB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Housing size&lt;/td&gt;
&lt;td&gt;29.5 × 73 × 86 mm&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wireless&lt;/td&gt;
&lt;td&gt;2.4 GHz Wi-Fi&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data output&lt;/td&gt;
&lt;td&gt;MQTT over Wi-Fi (JSON)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Presence radar module (24 GHz)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Parameter&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Radar frequency&lt;/td&gt;
&lt;td&gt;24 GHz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Beam angle&lt;/td&gt;
&lt;td&gt;90° horizontal, 60° vertical&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mounting&lt;/td&gt;
&lt;td&gt;Ceiling, horizontal, deviation ≤ 3°&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mounting height&lt;/td&gt;
&lt;td&gt;2.75 m or less&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Moving person range&lt;/td&gt;
&lt;td&gt;~12 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Static or micro-movement range&lt;/td&gt;
&lt;td&gt;~6 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleeping person range&lt;/td&gt;
&lt;td&gt;~3 m&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Presence response&lt;/td&gt;
&lt;td&gt;Within 0.5 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unoccupied confirmation&lt;/td&gt;
&lt;td&gt;About 40 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Body movement reporting&lt;/td&gt;
&lt;td&gt;Every 5 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sensitivity&lt;/td&gt;
&lt;td&gt;1–10, default 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scene modes&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hardware outputs&lt;/td&gt;
&lt;td&gt;S1 presence, S2 motion, 3.3 V logic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data output&lt;/td&gt;
&lt;td&gt;UART, 115200 bps, 8N1, 3.3 V TTL&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
      <category>presence</category>
      <category>iot</category>
    </item>
    <item>
      <title>How mmWave Radar Works: From FMCW to Breathing Detection</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 08:50:42 +0000</pubDate>
      <link>https://dev.to/249263431/how-mmwave-radar-works-from-fmcw-to-breathing-detection-1f3j</link>
      <guid>https://dev.to/249263431/how-mmwave-radar-works-from-fmcw-to-breathing-detection-1f3j</guid>
      <description>&lt;p&gt;Millimeter wave radar detects human presence, breathing, heart rate, body movement, and sleep stages without any physical contact. It does not need a camera, and the person does not need to wear anything. This makes it a practical sensing technology for homes, elderly care, hotels, and offices.&lt;/p&gt;

&lt;p&gt;This article explains how millimeter wave radar works, starting from the FMCW principle, and why the 60GHz band is able to detect chest movement smaller than one millimeter. It also compares millimeter wave radar with PIR sensors, cameras, and wearable devices.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Millimeter Wave Radar
&lt;/h2&gt;

&lt;p&gt;Millimeter wave refers to electromagnetic waves with a wavelength between &lt;strong&gt;1 mm and 10 mm&lt;/strong&gt;, which corresponds to a frequency range of roughly &lt;strong&gt;30 GHz to 300 GHz&lt;/strong&gt;. It is simply a segment of the electromagnetic spectrum, in the same way as infrared or visible light.&lt;/p&gt;

&lt;p&gt;Millimeter wave has three useful properties for indoor sensing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Large bandwidth, which allows fine resolution&lt;/li&gt;
&lt;li&gt;Narrow beam, which allows accurate direction finding&lt;/li&gt;
&lt;li&gt;Good penetration through smoke, dust, and non-metallic materials&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For indoor presence detection, sleep monitoring, and fall detection, &lt;strong&gt;60 GHz&lt;/strong&gt; is the most widely validated and cost-effective choice. At 60 GHz the wavelength is approximately &lt;strong&gt;5 mm&lt;/strong&gt;, which is short enough to build a compact antenna array and fine enough to resolve small targets.&lt;/p&gt;

&lt;h2&gt;
  
  
  How mmWave Radar Works: The FMCW Principle
&lt;/h2&gt;

&lt;p&gt;Most indoor millimeter wave sensors use &lt;strong&gt;FMCW (Frequency Modulated Continuous Wave)&lt;/strong&gt;. Instead of sending a short pulse, the radar transmits a continuous signal whose frequency sweeps linearly up and down over time. The processing chain has five steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Transmit
&lt;/h3&gt;

&lt;p&gt;The radar transmits a 60 GHz FMCW chirp through its antenna array. Because the wavelength is only about 5 mm, the antenna can be small enough to fit inside a ceiling-mounted housing.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Reflect
&lt;/h3&gt;

&lt;p&gt;The wave hits the target and part of the energy is reflected back. The echo carries information about range, velocity, and angle. A human chest reflects the signal continuously, even when the person is completely still, because breathing moves the chest wall.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Receive
&lt;/h3&gt;

&lt;p&gt;The received echo is mixed with the transmitted signal. The mixing produces a beat frequency that is proportional to the target range. The signal is then filtered and sampled by an ADC.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Digital Signal Processing
&lt;/h3&gt;

&lt;p&gt;An FFT separates targets in the range domain, and Doppler and phase differences reveal velocity and micro-movement. This is the step that separates a real human from a moving curtain: a curtain has movement but no stable phase structure or breathing rhythm.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Output Application Data
&lt;/h3&gt;

&lt;p&gt;The processed result is published as application data: presence status, body movement level, human distance, breathing rate, heart rate, sleep stage, or fall alarm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why 60GHz Can Detect Breathing
&lt;/h2&gt;

&lt;p&gt;Breathing moves the chest wall by &lt;strong&gt;less than 1 mm&lt;/strong&gt;. Detecting this requires very fine range resolution and a stable phase reference, and this is where the 60 GHz band performs well.&lt;/p&gt;

&lt;p&gt;The reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wavelength of approximately &lt;strong&gt;5 mm&lt;/strong&gt; gives centimeter-level range resolution&lt;/li&gt;
&lt;li&gt;Narrow, focused beam concentrates energy on the chest area&lt;/li&gt;
&lt;li&gt;High sensitivity to micro-motion compared with the 24 GHz band&lt;/li&gt;
&lt;li&gt;Small antenna size, which allows compact product design&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For comparison, the 24 GHz band has a wavelength of about &lt;strong&gt;12.5 mm&lt;/strong&gt;, which makes it less sensitive to micro-motion and requires a larger antenna. 24 GHz radar is well suited to presence detection over a wide area, while 60 GHz radar is the better choice when breathing, heart rate, or sleep stages are required.&lt;/p&gt;

&lt;h2&gt;
  
  
  What mmWave Radar Can Detect
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Signal&lt;/th&gt;
&lt;th&gt;What It Measures&lt;/th&gt;
&lt;th&gt;Typical Range&lt;/th&gt;
&lt;th&gt;Report Frequency&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Human presence&lt;/td&gt;
&lt;td&gt;Occupied / unoccupied&lt;/td&gt;
&lt;td&gt;Up to several meters&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Motion status&lt;/td&gt;
&lt;td&gt;Static / active&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Body movement&lt;/td&gt;
&lt;td&gt;Movement level 0–100&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Every 1 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human distance&lt;/td&gt;
&lt;td&gt;0–65535 cm&lt;/td&gt;
&lt;td&gt;Non-critical function&lt;/td&gt;
&lt;td&gt;Every 2 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Breathing rate&lt;/td&gt;
&lt;td&gt;0–45 breaths/min&lt;/td&gt;
&lt;td&gt;~1.5 m&lt;/td&gt;
&lt;td&gt;Every 3 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heart rate&lt;/td&gt;
&lt;td&gt;50–120 bpm&lt;/td&gt;
&lt;td&gt;~1.5 m&lt;/td&gt;
&lt;td&gt;Every 3 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep stage&lt;/td&gt;
&lt;td&gt;Awake / light / deep&lt;/td&gt;
&lt;td&gt;~2.5 m&lt;/td&gt;
&lt;td&gt;Every 10 min&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sleep score&lt;/td&gt;
&lt;td&gt;0–100&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;On sleep end&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fall alarm&lt;/td&gt;
&lt;td&gt;Fall detected&lt;/td&gt;
&lt;td&gt;~2.5 m&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dwell alarm&lt;/td&gt;
&lt;td&gt;Static dwell detected&lt;/td&gt;
&lt;td&gt;~2.5 m&lt;/td&gt;
&lt;td&gt;On change&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Body Movement Levels
&lt;/h3&gt;

&lt;p&gt;The movement parameter is reported as a value from 0 to 100, with fixed meaning:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;0%&lt;/td&gt;
&lt;td&gt;No person in range&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1%&lt;/td&gt;
&lt;td&gt;Still (breathing only, no limb movement)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2%–30%&lt;/td&gt;
&lt;td&gt;Micro movement (small head or limb motion)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;31%–60%&lt;/td&gt;
&lt;td&gt;Walking or fast limb movement&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;61%–100%&lt;/td&gt;
&lt;td&gt;Running or large close-range movement&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Sleep Stages and Sleep Score
&lt;/h3&gt;

&lt;p&gt;While a person is in bed, the radar evaluates the sleep stage &lt;strong&gt;every 10 minutes&lt;/strong&gt; and reports awake, light sleep, or deep sleep. When the sleep session ends, it reports a sleep score from 0 to 100:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Score&lt;/th&gt;
&lt;th&gt;Rating&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1–60&lt;/td&gt;
&lt;td&gt;Poor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;61–75&lt;/td&gt;
&lt;td&gt;Fair&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;76–100&lt;/td&gt;
&lt;td&gt;Good&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The sleep report includes total sleep duration, awake / light / deep percentages, time out of bed, number of times out of bed, turn count, average breathing rate, average heart rate, and apnea count.&lt;/p&gt;

&lt;p&gt;The radar also reports sleep anomalies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sleep duration shorter than &lt;strong&gt;4 hours&lt;/strong&gt; (insufficient sleep)&lt;/li&gt;
&lt;li&gt;Sleep duration longer than &lt;strong&gt;12 hours&lt;/strong&gt; (excessive sleep)&lt;/li&gt;
&lt;li&gt;No presence detected for &lt;strong&gt;30 minutes&lt;/strong&gt; while the person should be in bed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  mmWave Radar vs PIR, Cameras, and Wearables
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Technology&lt;/th&gt;
&lt;th&gt;Detects a Stationary Person&lt;/th&gt;
&lt;th&gt;Works in Darkness&lt;/th&gt;
&lt;th&gt;Measures Breathing&lt;/th&gt;
&lt;th&gt;Privacy Risk&lt;/th&gt;
&lt;th&gt;Wearing Required&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;PIR sensor&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Camera&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Needs infrared&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wearable device&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;mmWave radar&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A PIR sensor only reacts to movement, so a person sitting still or sleeping is invisible to it. A camera captures images, which raises privacy concerns in bedrooms and bathrooms and needs infrared illumination in the dark. A wearable device measures breathing well, but it must be worn and charged, and many users stop wearing it after a few weeks.&lt;/p&gt;

&lt;p&gt;Millimeter wave radar has none of these limitations, and it produces no image data at all. The output is a set of numbers.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Penetrates and What Blocks the Signal
&lt;/h2&gt;

&lt;p&gt;Millimeter wave passes through most non-metallic materials. It also reacts to any movement inside the detection area.&lt;/p&gt;

&lt;p&gt;Penetrates without affecting detection:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clothing and blankets&lt;/li&gt;
&lt;li&gt;Curtains&lt;/li&gt;
&lt;li&gt;Thin wooden boards&lt;/li&gt;
&lt;li&gt;Glass&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Causes interference or false alarms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Electric fans (moving blades)&lt;/li&gt;
&lt;li&gt;Air conditioners (internal motor)&lt;/li&gt;
&lt;li&gt;Curtains moving with wind&lt;/li&gt;
&lt;li&gt;Metal objects in front of the antenna&lt;/li&gt;
&lt;li&gt;Flowing water and water pipes&lt;/li&gt;
&lt;li&gt;Pets moving inside the detection area&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Do not aim the radar directly at an air conditioner, or install it facing the same direction as the air flow. The internal motor causes false detection.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where mmWave Radar Is Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Home sleep monitoring&lt;/strong&gt;: nightly breathing, heart rate, and sleep score without wearing a device&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Elderly care and nursing homes&lt;/strong&gt;: fall alarm, long absence from bed, reduced activity over several days, no cameras in rooms&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bathrooms&lt;/strong&gt;: low posture detection and fall alarm in wet environments where a camera is unacceptable&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hotels and offices&lt;/strong&gt;: presence-based lighting and HVAC control, occupancy statistics&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Smart home platforms&lt;/strong&gt;: standard MQTT integration, including Home Assistant auto-discovery&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Common Misconceptions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Misconception&lt;/th&gt;
&lt;th&gt;Reality&lt;/th&gt;
&lt;th&gt;Solution&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;"It is just a motion sensor"&lt;/td&gt;
&lt;td&gt;It resolves chest displacement below 1 mm through phase analysis&lt;/td&gt;
&lt;td&gt;Aim the main beam at the chest area&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"60GHz and 24GHz are the same"&lt;/td&gt;
&lt;td&gt;60GHz is far more sensitive to micro-motion and needs a smaller antenna&lt;/td&gt;
&lt;td&gt;Use 60GHz for breathing, heart rate, and sleep&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Higher sensitivity is always better"&lt;/td&gt;
&lt;td&gt;High sensitivity picks up curtains, fans, and pets&lt;/td&gt;
&lt;td&gt;Match sensitivity to room size and interference&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"It cannot work through a blanket"&lt;/td&gt;
&lt;td&gt;Non-metallic materials do not block the signal&lt;/td&gt;
&lt;td&gt;Keep metal away from the antenna face&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"A camera gives better data"&lt;/td&gt;
&lt;td&gt;Cameras fail in darkness without infrared and create privacy risk&lt;/td&gt;
&lt;td&gt;Use radar where privacy matters&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Getting Reliable Data
&lt;/h2&gt;

&lt;p&gt;Signal quality depends mostly on geometry. For a sleep monitoring radar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify the main sleep area and the bed head position.&lt;/li&gt;
&lt;li&gt;Mark a point &lt;strong&gt;0.8–1 m above the bed surface&lt;/strong&gt; on the wall or ceiling.&lt;/li&gt;
&lt;li&gt;Tilt the radar downward at &lt;strong&gt;30°–45°&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Make sure the main beam covers the chest area of the person lying on the bed.&lt;/li&gt;
&lt;li&gt;Check the detection area for interference sources and remove them.&lt;/li&gt;
&lt;li&gt;Fix the radar in place, power it on, and verify the data.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Testing After Installation
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Lie on the bed in a normal sleeping position.&lt;/li&gt;
&lt;li&gt;Stay still for at least &lt;strong&gt;10 minutes&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Check that breathing rate and heart rate are reported.&lt;/li&gt;
&lt;li&gt;Check that the sleep stage changes from awake to light sleep.&lt;/li&gt;
&lt;li&gt;If the data is unstable, adjust the tilt angle or the installation height.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A simple test: confirm that the breathing waveform is visible in the app. If the waveform is flat or missing, the radar is not aimed at the chest correctly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Millimeter wave radar uses FMCW to transmit a sweeping 60 GHz signal, mixes the echo with the transmitted signal to obtain range, and uses FFT and phase analysis to extract micro-movement. At a wavelength of about 5 mm, it resolves chest displacement below 1 mm, which makes breathing rate, heart rate, and sleep stages measurable without contact.&lt;/p&gt;

&lt;p&gt;Keep three points in mind: use the &lt;strong&gt;60 GHz&lt;/strong&gt; band for breathing and sleep, keep the radar within &lt;strong&gt;1.5 m&lt;/strong&gt; for breathing detection and &lt;strong&gt;2.5 m&lt;/strong&gt; for sleep and presence detection, and keep fans, air conditioners, moving curtains, and metal out of the beam.&lt;/p&gt;

&lt;p&gt;A radar that is correctly aimed produces stable data. If the numbers look unstable, check the installation position and angle first.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
      <category>fmcw</category>
      <category>sensor</category>
    </item>
    <item>
      <title>Bathroom Version or Bedroom Version? Why One Fall Radar Cannot Cover Both</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 08:47:56 +0000</pubDate>
      <link>https://dev.to/249263431/bathroom-version-or-bedroom-version-why-one-fall-radar-cannot-cover-both-328j</link>
      <guid>https://dev.to/249263431/bathroom-version-or-bedroom-version-why-one-fall-radar-cannot-cover-both-328j</guid>
      <description>&lt;p&gt;A fall detection radar is built to answer one question: has the person in this room ended up on the floor when they should not be. In a bathroom, that question has a clear answer, because the only normal postures are standing and sitting. In a bedroom, the same question has the opposite answer, because lying down is the normal state for most of the night.&lt;/p&gt;

&lt;p&gt;Those two rooms need opposite logic, so this radar ships in two versions: a bathroom version and a bedroom version. They are not interchangeable, and using the wrong one produces either false alarms or missed events.&lt;/p&gt;

&lt;p&gt;This article explains what each version is tuned for, why the two cannot be merged into one, and how to choose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why These Two Scenes, and Only These Two
&lt;/h2&gt;

&lt;p&gt;A public area can be covered by a camera and by staff. A bedroom and a bathroom cannot, and those are precisely the two rooms where an elderly person is most likely to be alone and most likely to fall.&lt;/p&gt;

&lt;p&gt;So the problem is not "detect falls everywhere". It is "detect falls in the two rooms where a camera cannot go and where nobody is watching". Both of those rooms are small, enclosed, and have a predictable layout. That is what makes radar-based sensing practical in them.&lt;/p&gt;

&lt;p&gt;It is also what makes them different from each other.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bathroom Version: One Door, Known Path
&lt;/h2&gt;

&lt;p&gt;A bathroom has no bed. The normal postures are standing and sitting, and anything lower is a problem. That gives the bathroom version a simple rule: &lt;strong&gt;a low posture is an event.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The version watches for four conditions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Condition&lt;/th&gt;
&lt;th&gt;What It Means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lying down&lt;/td&gt;
&lt;td&gt;The person is on the floor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sitting down and not getting up&lt;/td&gt;
&lt;td&gt;A collapse onto the toilet or the floor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No movement for a prolonged period&lt;/td&gt;
&lt;td&gt;The person has stopped moving entirely&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;In the room for too long&lt;/td&gt;
&lt;td&gt;The person has not left within the expected time&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Any one of these raises an alarm.&lt;/p&gt;

&lt;p&gt;What makes this reliable is the door. A bathroom has one, and the person enters and leaves through the same one. The radar therefore knows when someone arrived, and knows when the room is empty. That single fact resolves most of the interference in the room: a washing machine, a flushing toilet, or a shower curtain settling after the person has gone can all be discarded, because the radar already knows nobody is inside.&lt;/p&gt;

&lt;p&gt;The height and movement-amplitude measurements that radar provides natively do the rest. A tall target becomes a wide, low target, and that transition is the fall.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Bedroom Version: Inside the Bed vs Outside the Bed
&lt;/h2&gt;

&lt;p&gt;A bedroom has a bed, and that changes everything. Lying down is the normal state for eight hours a night. A radar that treated a low posture as an event would alarm continuously from the moment the person got into bed.&lt;/p&gt;

&lt;p&gt;So the bedroom version inverts the rule: &lt;strong&gt;inside the bed is normal, outside the bed is an event.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The bed, and any sofa or low platform in the room, is excluded from the monitored zone. Everything else in the room is monitored in full. A person who gets out of bed and collapses on the floor, slips while standing beside the bed, or falls against a wardrobe is detected immediately. The same person turning over, sitting up, or lying still in bed produces nothing.&lt;/p&gt;

&lt;p&gt;This is the distinction the bathroom version does not need to make. A bathroom has no bed, so nothing has to be carved out. A bedroom has one, and failing to carve it out would make the product unusable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Two Cannot Be Merged
&lt;/h2&gt;

&lt;p&gt;The two versions need opposite conclusions from the same measurement.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Bathroom Version&lt;/th&gt;
&lt;th&gt;Bedroom Version&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Low posture&lt;/td&gt;
&lt;td&gt;An event, reported&lt;/td&gt;
&lt;td&gt;Normal inside the bed, ignored&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long stillness&lt;/td&gt;
&lt;td&gt;An event, reported&lt;/td&gt;
&lt;td&gt;Normal inside the bed, ignored&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Key structural feature&lt;/td&gt;
&lt;td&gt;The single door&lt;/td&gt;
&lt;td&gt;The bed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zone that must be excluded&lt;/td&gt;
&lt;td&gt;Interference sources&lt;/td&gt;
&lt;td&gt;The bed and any low furniture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Detection area and zone precision&lt;/td&gt;
&lt;td&gt;Tuned for a small wet room&lt;/td&gt;
&lt;td&gt;Tuned for a bed plus its surroundings&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;A single set of parameters cannot satisfy both. Tune it for the bathroom and it alarms all night in a bedroom. Tune it for the bedroom and it misses a collapse on a bathroom floor. The height signal is identical in both rooms; the required answer is opposite.&lt;/p&gt;

&lt;p&gt;This is why the product ships as two versions rather than one version with a mode switch, and why the difference is not a firmware setting that a user can change.&lt;/p&gt;

&lt;h2&gt;
  
  
  Zero Configuration
&lt;/h2&gt;

&lt;p&gt;Neither version requires the user to mark anything.&lt;/p&gt;

&lt;p&gt;The user does not define the bed position, the door position, the room boundary, or the monitored zone. Each version ships with its zone logic already configured for the scene it is built for. Mount it, power it on, and it is working.&lt;/p&gt;

&lt;p&gt;That is deliberate. Asking a user to draw a bed outline on a floor plan introduces two failure modes at once: the setup is difficult for the people most likely to buy this product, and an incorrectly drawn zone silently removes the protection they paid for. A zone that is drawn slightly too small is worse than no zone at all, because it looks like it is working.&lt;/p&gt;

&lt;p&gt;Both versions are configured at the factory for the scene they serve. The only thing the user chooses is which room the radar is going into.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Happens If You Use the Wrong Version
&lt;/h2&gt;

&lt;p&gt;The two failure modes are symmetric, and both are predictable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bathroom version installed in a bedroom.&lt;/strong&gt; The radar has not been told that a bed exists, so a person lying in bed is a low posture that persists. The result is a fall alarm within minutes of the person going to sleep, repeated every time they turn over. In a room with a tatami platform or a floor mattress, the same thing happens the moment someone lies down to rest.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bedroom version installed in a bathroom.&lt;/strong&gt; The radar has been configured to ignore low, persistent targets inside an excluded zone. A person who sits down on the toilet and does not get up, or who collapses and stays down, may fall inside that excluded logic and never be reported.&lt;/p&gt;

&lt;p&gt;Neither behaviour is a defect. Both are the direct consequence of asking one version to work in the room the other version was built for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Version Do You Need
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Installing in a bathroom, shower room, or toilet&lt;/strong&gt; — use the bathroom version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installing in a bedroom, to monitor someone getting out of bed&lt;/strong&gt; — use the bedroom version.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Covering both rooms&lt;/strong&gt; — order one of each. They are separate units for separate rooms, and one unit cannot serve both.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Installing anywhere else&lt;/strong&gt; — this radar is not the right product. For corridors, living rooms, and open spaces, use a presence radar instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not sure which room your installation matches&lt;/strong&gt; — describe the room, or send a photo and the room dimensions, before ordering. It takes a message and prevents a return.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The short version: the bathroom version goes in the room with a toilet, and the bedroom version goes in the room with a bed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Neither Version Does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Neither is a medical device or an emergency service.&lt;/strong&gt; Both publish alarms to your MQTT broker. Delivering a notification to a person is done by your own system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neither achieves a zero missed-event rate.&lt;/strong&gt; The design target is the highest practical reporting rate in the intended scene. No sensor of this type eliminates missed events.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neither eliminates false alarms.&lt;/strong&gt; Tuning reduces them. The scene is what removes most of them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neither replaces human checks.&lt;/strong&gt; For anyone at real risk, this is an addition to a care routine, not a substitute for one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Neither works in an open space.&lt;/strong&gt; Both are specified for a small enclosed room.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A tatami platform, a floor mattress, or a low bed needs a conversation first.&lt;/strong&gt; If the sleeping surface is at floor level, tell us before ordering so the right version and the right mounting position can be confirmed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;A fall detection radar has to decide whether a low posture is normal. In a bathroom it never is, so the bathroom version reports it immediately and uses the single door to know when the room is empty. In a bedroom it usually is, so the bedroom version excludes the bed and monitors everything outside it.&lt;/p&gt;

&lt;p&gt;Those are opposite requirements, which is why the product ships in two versions, why the zone logic is fixed at the factory, and why the user never has to mark anything.&lt;/p&gt;

&lt;p&gt;Choose by room: the bathroom version for the room with a toilet, the bedroom version for the room with a bed. Using the wrong one produces either an alarm every time the person lies down, or no alarm at all when they fall.&lt;/p&gt;

&lt;p&gt;Further detail on the alarm fields, timing parameters, and MQTT properties is in the companion article &lt;a href="https://249263431.github.io/60GHz-Radar-SDK/product/2026/10/17/fall-radar-guide.html" rel="noopener noreferrer"&gt;The Fall Detection Radar: How Alarms Work, How to Tune Them, and What to Expect&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
      <category>fall</category>
      <category>elderly</category>
    </item>
    <item>
      <title>Why the Same Fall Radar Behaves Differently in a Bathroom and an Open Office</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 08:42:24 +0000</pubDate>
      <link>https://dev.to/249263431/why-the-same-fall-radar-behaves-differently-in-a-bathroom-and-an-open-office-1605</link>
      <guid>https://dev.to/249263431/why-the-same-fall-radar-behaves-differently-in-a-bathroom-and-an-open-office-1605</guid>
      <description>&lt;p&gt;A customer mounts a fall detection radar in an office corner, walks around, lies down on the floor, and gets a reliable alarm. Another customer mounts the same radar in a bathroom and gets a different result. Neither radar is faulty. The radar is tuned for one of those two rooms.&lt;/p&gt;

&lt;p&gt;This article explains what "tuned for the bathroom" actually means, which three design decisions depend on it, and what changes when the radar is moved to an open space. It is written for anyone evaluating this radar, and for anyone who has tested it somewhere other than a bathroom and wondered why the behaviour changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why We Optimize for the Bathroom
&lt;/h2&gt;

&lt;p&gt;A bathroom is a small, enclosed room with a single door, hard reflective surfaces, and a handful of predictable moving objects. That combination is unusual, and it cuts both ways.&lt;/p&gt;

&lt;p&gt;The same properties that make a bathroom difficult — tiled walls, a waterproof floor, a toilet, an extractor fan, a shower curtain — also make it possible to tune a radar very precisely for it. A room of roughly &lt;strong&gt;2 m × 3 m&lt;/strong&gt;, about &lt;strong&gt;5 to 6 m²&lt;/strong&gt;, with one door and hard walls, gives the radar a bounded area with a known entry and exit path.&lt;/p&gt;

&lt;p&gt;So the tuning is not a limitation added to the product. It is a set of deliberate design decisions that only work because the room has that shape.&lt;/p&gt;

&lt;h2&gt;
  
  
  Interference Sources in a Bathroom
&lt;/h2&gt;

&lt;p&gt;Four things in a typical bathroom produce radar returns that resemble a person.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Source&lt;/th&gt;
&lt;th&gt;Why It Causes a False Reading&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Washing machine&lt;/td&gt;
&lt;td&gt;A low, vibrating target can resemble a collapsed posture&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Toilet flushing&lt;/td&gt;
&lt;td&gt;The signal passes through tile; the changing water surface produces a strong return&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shower curtain or towel moving in air flow&lt;/td&gt;
&lt;td&gt;A moving soft target looks similar to a moving person&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Extractor fan vibration&lt;/td&gt;
&lt;td&gt;Continuous micro-movement disturbs the stillness judgement&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each of these has a different signature. A washing machine is low and constant. A flushing toilet produces a brief, strong return from a fixed position. A curtain moves without a consistent phase structure. A fan vibrates at a fixed frequency.&lt;/p&gt;

&lt;p&gt;A general-purpose sensor sees all four as ambiguous. A sensor tuned for the room can be told what to expect.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Entry and Exit Direction Suppresses False Alarms
&lt;/h2&gt;

&lt;p&gt;This is the most important of the three design decisions, and it is the one that stops working first when the radar leaves a bathroom.&lt;/p&gt;

&lt;p&gt;The radar tracks which direction a person enters and leaves through. In a bathroom there is exactly one door, so the entry and exit paths are known and short. That single fact is enough to resolve most of the interference table above.&lt;/p&gt;

&lt;p&gt;Here is the logic:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A person enters through the door. The radar registers an entry event.&lt;/li&gt;
&lt;li&gt;While the person is inside, movement, presence, and posture are evaluated normally.&lt;/li&gt;
&lt;li&gt;When the person leaves through the same door, the radar registers an exit event.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;From that moment, reports from the room are suppressed for a defined window.&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Step 4 is the key. Most false alarms in a bathroom happen at the moment of leaving: the toilet flushes after the person has gone, the curtain settles, the washing machine starts its spin cycle. Without the exit event, the radar has no way to know those returns are not a person on the floor. With it, they are simply discarded.&lt;/p&gt;

&lt;p&gt;A washing machine that was a problem all day stops being a problem, because the radar knows nobody is in the room.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why an Open Room Breaks This Logic
&lt;/h2&gt;

&lt;p&gt;The suppression window depends on there being one door. Remove the door, or add a second one, and two different failures appear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failure one: the radar keeps reporting a person who has left.&lt;/strong&gt; In a corridor or an open office, a person enters from one side and leaves from another. The radar sees an entry without a matching exit, cannot conclude that the room is empty, and continues to treat the space as occupied. The state that should have cleared does not clear.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Failure two: the radar clears a room that still has someone in it.&lt;/strong&gt; In a busy space, several people enter and leave through different paths. The radar concludes that the occupancy has ended and clears the state to unoccupied, while a person is still inside. The result is the opposite error: someone is present, and the radar reports nobody.&lt;/p&gt;

&lt;p&gt;Neither failure is a defect. Both are the direct consequence of applying a single-door assumption to a room with no doors.&lt;/p&gt;

&lt;p&gt;This is why the radar is specified for bathrooms and similar small enclosed rooms, and not for corridors, open-plan offices, or any space where people enter and leave through different paths.&lt;/p&gt;

&lt;h2&gt;
  
  
  Signal Strength: Why Reflections Help
&lt;/h2&gt;

&lt;p&gt;The second design decision is counter-intuitive: the radar performs better in a bathroom than in an empty room, and the reason is the tiling.&lt;/p&gt;

&lt;p&gt;A bathroom is full of hard, flat, reflective surfaces. Tile walls, a glazed floor, and waterproof membranes create strong multi-path reflections, and the radar receives the same target through several paths at once. In a bathroom, that means the return from a person lying still is strong and stable.&lt;/p&gt;

&lt;p&gt;The same reflections also create what can be called dry interference: returns that arrive from fixed structures rather than from a person. The detection chain filters those out, so the useful signal from the person is kept and the structural returns are removed. The room is reflective enough to give a strong signal, and the filtering is tuned to know which reflections to ignore.&lt;/p&gt;

&lt;p&gt;An open room does not have that property. Fewer surfaces, longer distances, and absorptive materials such as carpet, fabric, and plasterboard mean weaker returns and fewer of them. A person lying completely still in an open area produces a weaker signal than the same person in a tiled bathroom, because there is simply less energy coming back.&lt;/p&gt;

&lt;p&gt;So an empty office is not a cleaner test environment. It is a different one, with less signal to work with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Geometry: Why the Range Never Misses in a Bathroom
&lt;/h2&gt;

&lt;p&gt;The third design decision is about shape rather than signal.&lt;/p&gt;

&lt;p&gt;A bathroom is bounded. Walls on all sides, a typical floor area of 2 m × 3 m, and a ceiling height of 2.2 to 2.8 m. A fallen person is over a metre long, so within that space a fall lands well inside the detection area. The walls do the bounding for free: there is nowhere in the room for a body to fall outside the covered zone.&lt;/p&gt;

&lt;p&gt;An open area has no such boundary. A person can fall with their feet inside the detection area and their torso outside it, or fall just beyond the edge of the coverage. The radar reports what it can see, and what it can see is a partial target at the edge of range.&lt;/p&gt;

&lt;p&gt;The detection area of this radar is approximately &lt;strong&gt;3 m × 2 m&lt;/strong&gt; for a low posture and &lt;strong&gt;3 m × 2.5 m&lt;/strong&gt; for fall and dwell detection. In a bathroom of 2 m × 3 m, that covers the whole floor. In an open room of the same size or larger, it covers part of it.&lt;/p&gt;

&lt;p&gt;This is the difference between a radar that is specified for a room and a radar that is specified for an area. This product is specified for a room.&lt;/p&gt;

&lt;h2&gt;
  
  
  Periodic Re-Detection and Reporting Rate
&lt;/h2&gt;

&lt;p&gt;Every millimeter wave radar faces the same trade-off. Reporting an event immediately risks reporting it wrongly; waiting to confirm risks missing it entirely.&lt;/p&gt;

&lt;p&gt;The standard answer is periodic re-detection: the radar re-examines the target at fixed intervals rather than deciding once. A posture that persists across several consecutive checks is reported; one that does not is discarded. This is what raises the reporting rate, and it is also what keeps the false alarm rate down, because a transient return does not survive the re-checks.&lt;/p&gt;

&lt;p&gt;Two parameters control the balance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Fall duration&lt;/strong&gt; — how long the posture must persist before the alarm is published. Shortening it catches more events and produces more false ones; lengthening it does the opposite.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dwell duration&lt;/strong&gt; — the same idea applied to a person who has stopped moving without falling.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a bathroom, the entry and exit information removes most of the false candidates before the re-detection stage even runs, so the periodic checks can be tuned aggressively for sensitivity. In an open room, the false candidates are never removed, so the same tuning produces alarms that the re-checks then have to reject.&lt;/p&gt;

&lt;p&gt;The result is a radar that feels responsive in the intended scene and hesitant outside it.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Test It Properly
&lt;/h2&gt;

&lt;p&gt;If you are evaluating this radar, test it in the environment it is designed for. A bathroom-like setup takes twenty minutes and removes every variable discussed above.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Build or use a space of roughly &lt;strong&gt;2 m × 3 m&lt;/strong&gt;, with walls on all sides.&lt;/li&gt;
&lt;li&gt;Fit a single door, and use it for every entry and exit during the test.&lt;/li&gt;
&lt;li&gt;Mount the radar on the ceiling at &lt;strong&gt;2.2 to 2.8 m&lt;/strong&gt;, sensor face pointing straight down, above the area where a person would fall.&lt;/li&gt;
&lt;li&gt;Enter through the door, move around, and leave through the same door. Confirm the presence state follows you.&lt;/li&gt;
&lt;li&gt;Test a fall with a real lying posture, held still. Confirm the alarm arrives within the configured fall duration.&lt;/li&gt;
&lt;li&gt;Test a dwell: lie still without falling, and confirm the dwell alarm arrives after the configured dwell duration.&lt;/li&gt;
&lt;li&gt;Introduce one interference source at a time — a running extractor fan, a hanging cloth, a filled container — and confirm it does not produce an alarm while nobody is in the room.&lt;/li&gt;
&lt;li&gt;Leave the room and confirm the state clears, then confirm that subsequent interference does not raise an alarm.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If the radar passes those eight steps in a room of that shape, it will behave the same way in a real bathroom. If it is tested in a corridor instead, steps 4 and 8 will fail for the reasons described above, and the result will not predict the real-world behaviour.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Radar Is Not
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;It is not a general-purpose presence sensor.&lt;/strong&gt; It is tuned for a small enclosed room with one door. For corridors and open spaces, use a presence radar instead.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It does not achieve a zero missed-event rate.&lt;/strong&gt; The design target is the highest practical reporting rate in the intended scene, and the tuning is directed at reducing missed events there. No sensor of this type eliminates them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It will produce false alarms outside the intended scene.&lt;/strong&gt; Entry and exit suppression is what removes them, and that mechanism requires a single known door.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It is not a medical device and not an emergency service.&lt;/strong&gt; It publishes alarms to your MQTT broker. What happens next — a notification, a call, a dashboard entry — is built by your own system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;It does not replace human checks.&lt;/strong&gt; For anyone at real risk, it is an addition to a care routine, never a substitute for one.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;This radar is tuned for a bathroom, and the tuning rests on three things: a single door that makes entry and exit known, reflective surfaces that give a strong return which the detection chain then filters, and walls that bound the detection area so a fall cannot land outside it.&lt;/p&gt;

&lt;p&gt;Move it to an open office and all three weaken at once. The entry and exit logic stops resolving, the signal gets weaker instead of stronger, and the coverage no longer covers the whole floor. The radar is not broken; it is being asked to work in a room it was not designed for.&lt;/p&gt;

&lt;p&gt;Test it in a 2 m × 3 m space with one door, mounted at 2.2 to 2.8 m facing straight down, and use the door for every entry and exit. If it passes there, it will pass in a real bathroom.&lt;/p&gt;

&lt;p&gt;Further detail on the alarm fields, timing parameters, and MQTT properties is in the companion article &lt;a href="https://249263431.github.io/60GHz-Radar-SDK/product/2026/10/17/fall-radar-guide.html" rel="noopener noreferrer"&gt;The Fall Detection Radar: How Alarms Work, How to Tune Them, and What to Expect&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
      <category>fall</category>
      <category>bathroom</category>
    </item>
    <item>
      <title>Why Fall Detection Is Harder Than It Looks: Three Failure Modes</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 08:40:20 +0000</pubDate>
      <link>https://dev.to/249263431/why-fall-detection-is-harder-than-it-looks-three-failure-modes-3pb</link>
      <guid>https://dev.to/249263431/why-fall-detection-is-harder-than-it-looks-three-failure-modes-3pb</guid>
      <description>&lt;p&gt;Fall detection is one of the most requested features in elderly care sensing, and one of the least straightforward to deliver. The name suggests a single clear event — a person falls, an alarm fires — but the sensing problem behind it has three distinct failure modes, and each one behaves differently in a real room.&lt;/p&gt;

&lt;p&gt;This article describes those three modes: two kinds of false alarm and one kind of missed event. It also covers a problem that sits above all of them, which is that "a fall" is not a precisely defined acceptance criterion. Understanding these four things is the difference between a fall radar that works in a deployment and one that generates complaints.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Demand Is Real
&lt;/h2&gt;

&lt;p&gt;For an elderly person with reduced mobility — unsteady gait, a cane, limited strength, or partial loss of independence — a fall is not a health metric. It is an event where somebody needs to know, quickly, so that the person can be helped up.&lt;/p&gt;

&lt;p&gt;That is a different requirement from sleep monitoring or presence detection. Nobody is harmed by a sleep score that arrives late. A person lying on a bathroom floor for forty minutes is harmed by an alarm that did not fire, and by an alarm that fired three times the previous night for no reason.&lt;/p&gt;

&lt;p&gt;So the sensing requirements are strict in both directions at once: the false alarm rate has to be low enough that the alarm is believed, and the missed-event rate has to be low enough that the alarm is trusted. Those two requirements pull against each other, and that tension is the source of everything below.&lt;/p&gt;

&lt;h2&gt;
  
  
  False Alarm 1: Nobody There, but the Radar Reports Someone
&lt;/h2&gt;

&lt;p&gt;The first failure mode is an alarm raised in an empty room.&lt;/p&gt;

&lt;p&gt;A bathroom is full of things that move without a person present. An open window lets a curtain or a towel move in the air flow. A leaking container drips. A toilet flushes. An extractor fan vibrates. Each of these produces a radar return, and a return from a low, stationary-looking target is exactly what a fall looks like.&lt;/p&gt;

&lt;p&gt;The sequence is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An interference source produces a return.&lt;/li&gt;
&lt;li&gt;The radar classifies the return as a target rather than clutter.&lt;/li&gt;
&lt;li&gt;The target is low and does not move.&lt;/li&gt;
&lt;li&gt;A low, stationary target is the signature the fall detector is looking for.&lt;/li&gt;
&lt;li&gt;An alarm is published, in an empty room.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the failure mode that matters most at scale. A single false alarm is an inconvenience. A deployment of hundreds of units, each producing occasional empty-room alarms, produces a continuous stream of notifications that nobody acts on — and once occupants learn that the alarm is usually wrong, they stop responding to it, including when it is right.&lt;/p&gt;

&lt;p&gt;Reducing this mode is mostly about the room, not the algorithm. Knowing whether a person is actually present — through entry and exit tracking, or through a corroborating signal — removes most of the candidates before the posture judgement runs. That is why a single-door bathroom is a much easier sensing problem than an open room, and why the scene matters as much as the sensor.&lt;/p&gt;

&lt;h2&gt;
  
  
  False Alarm 2: Someone There, but the Posture Is Misread
&lt;/h2&gt;

&lt;p&gt;The second failure mode is an alarm raised while a person is present and doing something entirely normal.&lt;/p&gt;

&lt;p&gt;Three examples, all of them ordinary activities:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Activity&lt;/th&gt;
&lt;th&gt;What the Radar Sees&lt;/th&gt;
&lt;th&gt;What It Concludes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Squatting to wash clothes&lt;/td&gt;
&lt;td&gt;Hand and arm movement at low height, head relatively still&lt;/td&gt;
&lt;td&gt;A person struggling on the floor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mopping the floor&lt;/td&gt;
&lt;td&gt;A moving object at floor level, low and wide&lt;/td&gt;
&lt;td&gt;A low, moving target&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sitting on the toilet, swinging a leg&lt;/td&gt;
&lt;td&gt;Foot movement at low height, torso still&lt;/td&gt;
&lt;td&gt;Movement near the floor without a head&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The common mechanism is a mismatch between what the radar weights and where the person's mass actually is. A radar that over-weights low-level movement and under-weights the position of the torso will read a squatting person as a collapsed one, because the hands are moving and the head is not.&lt;/p&gt;

&lt;p&gt;This mode is harder to remove than the first one, because the person really is there. Entry and exit tracking does not help — the person never left. What helps is judging posture from the whole target rather than from a single region: height, centroid, and the ratio of movement at different heights together, rather than any one of them alone.&lt;/p&gt;

&lt;h2&gt;
  
  
  Missed Events: When There Is No Descent
&lt;/h2&gt;

&lt;p&gt;The third failure mode is the one nobody wants to talk about, because it is the one that matters most.&lt;/p&gt;

&lt;p&gt;A fall detector's most reliable trigger is a rapid descent: a tall target collapses into a wide, low one within about a second. That transition is distinctive, and it is what most detection chains are built around.&lt;/p&gt;

&lt;p&gt;Not every fall produces it.&lt;/p&gt;

&lt;p&gt;A person sitting on a toilet who slowly slides sideways and comes to rest on the floor has not descended in the radar's sense. Their height changed, but gradually, and without the rapid motion the detector is looking for. The same applies to a slow slump against a wall, or a controlled lowering after dizziness.&lt;/p&gt;

&lt;p&gt;The result is a missed event in exactly the scenario where the person is least able to get up.&lt;/p&gt;

&lt;p&gt;This is a genuine limitation of the approach, not a tuning problem. A detector that requires a rapid descent will miss slow descents. A detector that does not require one will report every sitting-down and lying-down motion as a fall. There is no setting that gives both.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "a Fall" Is Not an Acceptance Criterion
&lt;/h2&gt;

&lt;p&gt;Above the three failure modes sits a problem that is easier to state than to solve: nobody agrees on what counts as a fall.&lt;/p&gt;

&lt;p&gt;Consider the questions a real deployment has to answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lying flat on the floor is clearly a fall. Is lying prone, face down, also a fall?&lt;/li&gt;
&lt;li&gt;Is a person sitting on the floor against a wall a fall, or a rest?&lt;/li&gt;
&lt;li&gt;Is a slow slide from a seated position a fall, or a collapse?&lt;/li&gt;
&lt;li&gt;Is a person who is down and then gets up unaided a reportable event?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every one of these is a real scenario, and every one is answered differently by different vendors, different products, and different care providers. The word "fall" in a specification covers all of them and none of them.&lt;/p&gt;

&lt;p&gt;The practical consequence is that two products with the same quoted capability can behave completely differently on site, and a buyer cannot tell which from the specification. It also means that a requirement written as "detects falls" cannot be verified on delivery, because there is no shared definition of the thing being verified.&lt;/p&gt;

&lt;p&gt;This is why scenario-based acceptance matters more in this category than in any other sensing category. "Detects a person lying flat on the floor within 10 seconds in a 2 m × 3 m bathroom with the door closed" is testable. "Fall detection" is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Evaluate a Fall Radar
&lt;/h2&gt;

&lt;p&gt;Five checks that separate a product with real deployment experience from one with a specification sheet.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ask for a test in an empty room with interference.&lt;/strong&gt; A running extractor fan, a hanging cloth, a dripping tap, and a toilet flush, with nobody present. If the radar alarms, the first failure mode is unaddressed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for a test of normal low activity.&lt;/strong&gt; Squatting, mopping, sitting and swinging a leg. These are the second failure mode, and they are easy to demonstrate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask specifically about slow descents.&lt;/strong&gt; Not "does it detect falls" — ask whether it reports a person who slowly slides from a seated position to the floor. This is the question most vendors will not answer directly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask what environment the quoted false alarm rate was measured in.&lt;/strong&gt; A rate measured in an empty room with no interference is not a rate. Ask for the room, the installation height, and the interference sources present.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write the acceptance criteria as scenarios, not capabilities.&lt;/strong&gt; List the postures, the room, the timing, and the interference sources you expect. A product that passes a scenario list can be verified on delivery; a product that passes a capability list cannot.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The fifth point is the one that changes outcomes. It moves the conversation from what the product claims to what the product does in your room.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Still Open
&lt;/h2&gt;

&lt;p&gt;Three things in this category do not have clean answers, and it is worth being explicit about them.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Slow descents remain the hardest case.&lt;/strong&gt; Any detector that requires a rapid descent will miss them, and relaxing that requirement raises the false alarm rate. The trade-off is inherent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The boundary between a fall and a rest is genuinely ambiguous.&lt;/strong&gt; Sitting on the floor, lying on a sofa, and sliding against a wall are all real behaviours, and no sensing approach classifies them perfectly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;There is no industry-standard definition of a fall.&lt;/strong&gt; Until acceptance criteria are written as scenarios rather than capabilities, two products with the same specification will continue to behave differently on site.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these are solved by a better algorithm alone. They are solved by matching the detection logic to the room, by writing acceptance criteria that can actually be tested, and by being explicit about which cases a given product is and is not specified for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;Fall detection has three failure modes, and they are different problems with different causes. Empty-room alarms come from interference that resembles a low, stationary person. Misread postures come from weighting low-level movement over the position of the torso. Missed events come from requiring a rapid descent that a slow collapse does not produce.&lt;/p&gt;

&lt;p&gt;Above all three sits the definition problem: "a fall" is not a precisely defined event, so a specification that says "detects falls" cannot be verified.&lt;/p&gt;

&lt;p&gt;Evaluate a fall radar by asking for the empty-room test, the normal-activity test, and the slow-descent test, and by writing your acceptance criteria as scenarios rather than capabilities. The products that survive those four questions are the ones that have been deployed rather than only specified.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
      <category>fall</category>
      <category>safety</category>
    </item>
    <item>
      <title>Three Ways mmWave Fall Detection Goes Wrong (and Why 'Detects Falls' Is Not a Spec)</title>
      <dc:creator>fuxinsuo</dc:creator>
      <pubDate>Sat, 17 Oct 2026 07:36:48 +0000</pubDate>
      <link>https://dev.to/249263431/three-ways-mmwave-fall-detection-goes-wrong-and-why-detects-falls-is-not-a-spec-2562</link>
      <guid>https://dev.to/249263431/three-ways-mmwave-fall-detection-goes-wrong-and-why-detects-falls-is-not-a-spec-2562</guid>
      <description>

&lt;p&gt;title: "Three Ways mmWave Fall Detection Goes Wrong (and Why 'Detects Falls' Is Not a Spec)"&lt;br&gt;
tags: mmwave, radar, iot, homeassistant, embedded&lt;br&gt;
canonical_url: &lt;a href="https://249263431.github.io/60GHz-Radar-SDK/fundamentals/2026/10/17/fall-detection-failure-modes.html" rel="noopener noreferrer"&gt;https://249263431.github.io/60GHz-Radar-SDK/fundamentals/2026/10/17/fall-detection-failure-modes.html&lt;/a&gt;&lt;br&gt;
You would think "fall detection" is a solved problem. A person falls, the sensor notices, an alarm fires. In practice, the sensing problem behind that sentence has three distinct failure modes, and each one behaves differently in a real room.&lt;/p&gt;

&lt;p&gt;This post is a field note from building 60GHz mmWave radar modules for elderly care. No marketing claims — just the failure modes, why they happen, and how to evaluate a device before you put it in someone's bathroom.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the demand is real
&lt;/h2&gt;

&lt;p&gt;For an elderly person with reduced mobility — unsteady gait, a cane, limited strength — a fall is not a health metric. It is an event where somebody needs to know, quickly, so the person can be helped up.&lt;/p&gt;

&lt;p&gt;That requirement is strict in both directions: the false alarm rate has to be low enough that the alarm is believed, and the missed-event rate has to be low enough that it is trusted. Those two pull against each other, and that tension is the source of everything below.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure mode 1: nobody is there, but the radar reports someone
&lt;/h2&gt;

&lt;p&gt;A bathroom is full of things that move without a person present. An open window lets a curtain move. A leaking container drips. A toilet flushes. An extractor fan vibrates. Each produces a radar return, and a return from a low, stationary-looking target is exactly what a fall looks like.&lt;/p&gt;

&lt;p&gt;The sequence is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An interference source produces a return.&lt;/li&gt;
&lt;li&gt;The radar classifies it as a target rather than clutter.&lt;/li&gt;
&lt;li&gt;The target is low and does not move.&lt;/li&gt;
&lt;li&gt;A low, stationary target is the signature the detector looks for.&lt;/li&gt;
&lt;li&gt;An alarm fires — in an empty room.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is the mode that matters most at scale. A single false alarm is an inconvenience. A deployment of hundreds of units, each producing occasional empty-room alarms, produces a stream of notifications nobody acts on — and once occupants learn the alarm is usually wrong, they stop responding to it, including when it is right.&lt;/p&gt;

&lt;p&gt;What helps: knowing whether a person is actually present (entry/exit tracking, or a corroborating signal) removes most candidates before the posture judgement runs. A single-door bathroom is a much easier problem than an open room.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure mode 2: someone is there, but the posture is misread
&lt;/h2&gt;

&lt;p&gt;Three ordinary activities that get misclassified:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Activity&lt;/th&gt;
&lt;th&gt;What the radar sees&lt;/th&gt;
&lt;th&gt;What it concludes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Squatting to wash clothes&lt;/td&gt;
&lt;td&gt;Hand/arm movement at low height, head still&lt;/td&gt;
&lt;td&gt;A person struggling on the floor&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mopping the floor&lt;/td&gt;
&lt;td&gt;A moving object at floor level&lt;/td&gt;
&lt;td&gt;A low, moving target&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sitting, swinging a leg&lt;/td&gt;
&lt;td&gt;Foot movement low, torso still&lt;/td&gt;
&lt;td&gt;Movement near the floor without a head&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The common mechanism: the radar over-weights low-level movement and under-weights where the person's mass actually is. Judging posture from the whole target — height, centroid, and movement at different heights together — is what reduces this, not any single threshold.&lt;/p&gt;

&lt;h2&gt;
  
  
  Failure mode 3: when there is no descent
&lt;/h2&gt;

&lt;p&gt;The most reliable trigger for a fall detector is a rapid descent: a tall target collapses into a wide, low one within about a second. That transition is distinctive, and most detection chains are built around it.&lt;/p&gt;

&lt;p&gt;Not every fall produces it. A person who slowly slides off a toilet and comes to rest on the floor has not descended in the radar's sense — height changed, but gradually, without the rapid motion the detector expects. Same for a slow slump against a wall.&lt;/p&gt;

&lt;p&gt;The result is a missed event in exactly the scenario where the person is least able to get up. This is a limitation of the approach, not a tuning problem: a detector that requires a rapid descent will miss slow ones; one that does not will report every sit-down as a fall. No setting gives both.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem above all three: "a fall" is not a spec
&lt;/h2&gt;

&lt;p&gt;Consider what a real deployment has to answer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lying flat is clearly a fall. Is lying prone also a fall?&lt;/li&gt;
&lt;li&gt;Is a person sitting on the floor against a wall a fall, or a rest?&lt;/li&gt;
&lt;li&gt;Is a slow slide from seated a fall, or a collapse?&lt;/li&gt;
&lt;li&gt;Is a person who falls and gets up unaided a reportable event?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every one is a real scenario, and every one is answered differently by different vendors. "Detects falls" in a spec covers all of them and none of them. The practical fix is to write acceptance criteria as scenarios, not capabilities:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Detects a person lying flat on the floor within 10 seconds, in a 2 m × 3 m bathroom with the door closed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is testable. "Fall detection" is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before you buy or deploy
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Ask for the empty-room test.&lt;/strong&gt; Running fan, hanging cloth, dripping tap, toilet flush, nobody present. If it alarms, mode 1 is unaddressed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask for the normal-activity test.&lt;/strong&gt; Squatting, mopping, sitting and leg-swinging. These are mode 2.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask specifically about slow descents.&lt;/strong&gt; Not "does it detect falls" — ask whether it reports a person who slowly slides from seated to the floor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask what environment the false-alarm rate was measured in.&lt;/strong&gt; A rate from an empty, interference-free room is not a rate.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write acceptance as scenarios, not capabilities.&lt;/strong&gt; A product that passes a scenario list can be verified on delivery.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Where this comes from
&lt;/h2&gt;

&lt;p&gt;I maintain the documentation and SDK for a line of 60GHz mmWave radar modules (fall detection, sleep monitoring, presence detection) that speak Wi-Fi + MQTT and integrate with Home Assistant. The full write-up of these three failure modes, including the acceptance-criteria section, is here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docs and guides:&lt;/strong&gt; &lt;a href="https://249263431.github.io/60GHz-Radar-SDK/" rel="noopener noreferrer"&gt;https://249263431.github.io/60GHz-Radar-SDK/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are evaluating mmWave radar for a care deployment, the setup guide and MQTT topic reference there are the practical starting point.&lt;/p&gt;

</description>
      <category>mmwave</category>
      <category>radar</category>
    </item>
  </channel>
</rss>
