PRESENCE RADAR - SENSOR PLACEMENT GUIDE
Written 2026-10-16 from today's measurements.

HOW THE SYSTEM DECIDES SOMEONE IS THERE

The two mmWave sensors send out radio waves and notice movement and breathing
inside a cone in front of them. The PIR sensor notices warm movement crossing its
view. Each Wi-Fi node listens to the radio path between itself and the router
(your Wi-Fi network) and notices when a body disturbs that path. The Pi 400 collects all of
these, compares them, and shows one answer.

SENSOR BLOCKS

MMWAVE A (SNZB-06P, 5.8 GHz) and MMWAVE B (SNZB-06P24, 24 GHz)
  Senses: movement and breathing inside a cone in front of it.
  Place: about 1.5 to 2 m up, facing the open floor where people stand or walk.
  Keep clear: nothing metal or thick in front; no fan or curtain moving in view.
  Keep within a few metres of the Pi (A has the weaker radio link today).
  Number to check: the "Signal" row in the PRESENCE A or PRESENCE B panel on the
  Pi screen, and "Last heard" in the same panel.
  Target: "Last heard" stays at a few seconds. Today A was weaker than B.
  If bad: move it nearer the Pi and away from metal, then watch "Last heard".

PIR (SNZB-03)
  Senses: warm movement crossing its view. It does not see people standing still.
  Place: about 1.5 to 2 m up, aimed across the route people walk, so they cross
  its view instead of walking straight at it.
  Keep clear: sun through a window, heaters, anything warm in view.
  Number to check: "Last motion" in the MOTION panel on the Pi screen.
  Target: it changes when you walk the route. Today it missed all 3 visits that
  both mmWave sensors saw, so it is currently aimed at the wrong place.
  If bad: turn it a little toward the route, walk again, check "Last motion".

WI-FI NODES (C3, three C6, CYD)
  Senses: the straight path between the node and the router (see the rule below).
  Place: across the room from the router, at about desk to shoulder height.
  Keep clear: metal, fans, screens, microwaves, and other nodes' power cables.
  Number to check: Settings, "Wi-Fi CSI" page, "Nodes" box, second line of each
  node. It reads like "score 0.40 trigger 2.90 54 pkt/s -52 dBm".
  The CYD shows the same two numbers on its own screen: dBm at the left of the
  link row, packets per second ("/s") beside it, and the word OK, LOW, STALE or
  DOWN on the right.
  Target: -50 to -65 dBm, and above 30 packets per second.
  CYD bars: 3 or 4 bars means -65 dBm or stronger.
  If dBm is weaker than -65: move the node closer to the router.
  If dBm is stronger than -50: move it a little further away.
  If packets per second stay under 30: try a different USB cable and charger.

  Today's numbers (11 minutes of measurements):
    CYD (esp32-000003)  -52 dBm, 54 per second   good
    C3 (c3-000001)      -45 dBm, 34 per second   too strong, barely enough packets
    C6 000006           -68 dBm, 122 per second  noisy even in an empty room
    C6 000007           -71 dBm, 104 per second  reset itself 4 times in 30 min
    C6 000008           -80 dBm, 17 per second   effectively offline
  The two noisy C6 links rose and fell together. Placement or power is the cause.
  The ESP32-C5 board is not flashed. Leave it out until it is.

THE RULE FOR WI-FI NODES

1. A node senses the straight path between itself and the router.
2. So put it across the room from the router, with the route people walk crossing
   that path. A node right next to the router senses almost nothing.
3. Two nodes should look in different directions, not along the same line.
4. Keep nodes away from each other's power cables and from fans, screens and
   microwaves.
5. Power each node from its own short, good USB cable and its own charger.
   Do not share a charger or USB hub between two nodes.

TRANSMIT POWER (WHY A NODE MAY BE QUIETER THAN IT WAS)

The app lowers each Wi-Fi node's transmit power by itself as more nodes run, so
the nodes stay cooler and do not crowd the Wi-Fi channel. With fewer than 3 nodes
running, every node stays at full power. From 3 nodes up each one is turned down,
and a little more at 5 and again at 7.

The safety rule, in plain words: a node is only turned down while its link is
clearly healthy, which means stronger than -60 dBm and at least 20 packets per
second, for 30 seconds in a row. If the link then gets weaker than -62 dBm or
drops under 15 packets per second, or the node goes offline or shows WEAK LINK,
the app puts it back to full power at once. So a node far from the router, with a
weak link, simply stays at full power: it is never turned down.

Setting it yourself (Settings, "Wi-Fi CSI" page):
  Automatic on or off: the switch "Lower TX power automatically". Turn it off and
  every node is left alone (the app stops sending changes).
  One fixed value for one node: in the settings file, that node's entry under
  csi_nodes takes "tx_dbm" (2 to 20; 0 means automatic). A fixed value is used
  as you set it and the safety rule does not apply to it. Check that node's dBm
  and packets per second afterwards.
A lowered node can read a weaker dBm than before; judge placement by the targets
above only after the node has settled, and re-learn its baseline if you change it.

THE 10-MINUTE CHECK (stand in the room, use only the Pi screen)

1. Everyone leaves the room. Press O, open the "Wi-Fi CSI" page, press the button
   "Re-learn all baselines". Wait 1 full minute.
2. Look at the "Nodes" box. Every node line should start with QUIET. A node that
   says LEARNING needs more time. A node that says OFFLINE is not working.
3. Look at the "Live" box at the bottom. It should say "still" and "0/N links
   in motion".
4. Walk the route slowly, one step every two seconds, from where people enter to
   where they sit. Write down which node lines turn to MOTION and in what order.
5. Leave the room and wait. All lines should return to QUIET within about
   a minute.
6. Walk it again in the other direction. The order should reverse.
7. What the results mean:
   a. A node never turns to MOTION: its path does not cross your route.
      Move it so the route crosses the line to the router.
   b. A node is in MOTION with the room empty: look at its dBm and packets per
      second, then fix its cable, charger and spot, then Re-learn it.
   c. Two nodes turn to MOTION at exactly the same moments every time: they
      share a path or a power source. Move one to a different direction.
   d. A node shows WEAK LINK (only under -85 dBm or 15 packets per second): move
      it closer to the router. Between -65 and -85 there is no warning, so read
      the dBm yourself.
   e. A node drops to OFFLINE or LEARNING by itself: its power is bad. Change
      its cable and charger.
8. The expected order for someone walking in: the node whose path they cross
   first turns first. The PIR "Last motion" should change. A and B should show
   a detection in the same walk.
9. If the order is wrong, change only one thing, press Re-learn on that node
   (the "Re-learn" button in its own block), wait 1 minute, walk again.

DO THIS NOW

1. Move C6 000008 much closer to the router, to -55 to -65 dBm, or unplug it:
   at -80 dBm it is effectively offline.
2. Give C6 000007 its own short USB cable and its own charger: it reset 4 times
   in 30 minutes.
3. Move the two working C6 nodes to different spots and different power, away
   from the router's cable: their noise rises and falls together.
4. Turn the PIR toward the route people walk: it missed all 3 visits the radars saw.
5. Move the C3 a little further from the router, aiming for about -55 dBm:
   it is stronger than the target and never fired in 87 minutes.
6. Settings, "Wi-Fi CSI" page, "Re-learn all baselines", with nobody in the room.
7. Run the 10-minute check above.

THE ROOM SCREEN (press R)

1. The zone names are labels for which sensors see someone, not metres.
2. "A only", "B only", "A + B", "PIR cone" and "CSI only" are the five choices.
3. You can rename each zone. The names do not change what is measured.
4. There is no live distance from the 24 GHz sensor, so nothing here is a distance.
5. The line starting "now:" shows the current zone, direction and confidence.

GLOSSARY

dBm: how strong the Wi-Fi signal is. Closer to zero is stronger (-50 beats -70).
Packets per second: how many Wi-Fi packets the node hears each second.
Baseline: what a quiet, empty room looks like for one node, learned by itself.
Link: the radio path between one node and the router.
Motion: a link's reading has risen well above its baseline.
Quiet: a link's reading is near its baseline.
Learning: the node is still measuring the empty room. Keep the room empty.
Weak: the app's word for a link with too few packets or too little signal.
