MSR-1

mmWave CO2 Multisensor

Setup

Setup

Getting Started

 

 
Please refer to the general getting started article
Setup

Sensor Definitions

Once added to Home Assistant you can configure different settings for your sensor. Below is what each setting does.

Controls

Sensors

Configuration

Setup

Bluetooth Tracking with MSR-1

 

 

Please refer to the general Bluetooth tracking article
Setup

General Tips

MSR-1

apollo-automation-MSR-1-presence-multisensor-PCB-components-layout-1024x768.jpg.webp

(Picture from Smart Home Scene)


Light Sensor (LTR-390UV)

Light holes.png

Mounting

LD2410 Zone map.png

LD2410 Gates.png

ld2410_mounting_hor-1.jpeg

Gate and FOV Visualization

ld2410 table.png

MSR-1 radar map.png

Radar gates Colored.png

Increased ESP Temperature

If you are experiencing higher than normal ESP temperatures ~140+ degrees F then changing the wifi power save mode option might help decrease the temperature. Here is the link to the ESPHome WiFi Component Power Save Mode.

Power Save Mode
The WiFi interface of all ESPs offer three power save modes to reduce the amount of power spent on WiFi. While some options can reduce the power usage of the ESP, they generally also decrease the reliability of the WiFi connection, with frequent disconnections from the router in the highest power saving mode.

NONE (least power saving, Default for ESP8266)
LIGHT (Default for ESP32)
HIGH (most power saving)

wifi:
  # ...
  power_save_mode: none

The code above can be added to the devices .yaml through the ESPHome addon edit button.

(Thank you for the suggestion, Brian!)
(Referenced from ESPHome website)

Setup

How To Change The Update Frequency Of Sensors

How To Change The Update Frequency Of Sensors

Calibrating And Updating

Calibrating And Updating

Updating MSR-1 Firmware

 

 

Please refer to the general firmware update article
Calibrating And Updating

How To Tune mmWave Using Home Assistant

If you're experiencing false triggers, we recommend using Radar Engineering Mode (REM) to monitor the gate energy and adjust the gate threshold to eliminate them.

Here is a quick introduction video of the ld2410b gates and zones.

Here is a video of how to tune the mmWave sensor using radar engineering mode,

  1. Open Home Assistant
  2. Navigate to Settings>Devices & services>ESPHome>Select the MSR-1
  3. Scroll down to the Configuration section
  4. Turn on Radar Engineering Mode (REM)
    Configuration.png
  5. Scroll down to the Diagnostic section and you will see that REM shows the move and still energy for gates 0-8
    Diagnostic.png
  6. The gates are different distances from the sensor
    ld2410 table.pngMSR-1 radar map.png
  7. Moving the gate still and move threshold slider to the right increases the amount of energy needed to trigger the sensor. Do this if you want the gate to be less sensitive.
    High Threshold.png
  8. Moving the gate still and move threshold slider to the left decreases the amount of energy needed to trigger the sensor. Do this if you want the gate to be more sensitive.
    Low Threshold.png

Alternate Method

Thanks to MakeItWorkTech for this method!

"I ended up maxing out the sliders on all gates and then bringing them down just enough to pick up human presence. Definitely easier than using the LD2410B app."

Example

- You may have an open-concept kitchen and living room, and you want the MSR-1 to activate your under-cabinet lights only when you're in the kitchen.

Here's how:

  1. Stand in the desired trigger locations.
  2. Observe the gate energy.
  3. Adjust the gate threshold slider to the right, increasing the energy required to trigger the mmWave sensor. This ensures that your kitchen lights only come on when you're actually in the kitchen, not just walking by in the living room. Also, you can lower the gate threshold in the kitchen by moving the slider to the left. This makes the mmWave sensor more sensitive, even when standing still. This way, you avoid having the lights go off while reading a recipe or doing the dishes.

- From clarinetJWD, "Engineering mode is what I was missing at first. I did exactly that, and now detection is basically perfect! My under cabinet lights now come on to max brightness whenever someone is in the kitchen, and return to their previous value when they leave. Next up is replacing the really flaky motion switch in my garage so it stops shutting off when I'm doing a project at the workbench! Thanks, these are really good.

References

Calibrating And Updating

How To Tune mmWave Using HLKRadarTool

Auto-Calibration (Average, Maximum, and Intelligent)

1. Download the HLKRadarTool app for either Android or Apple

2. Ensure the mmWave radar you want to tune has Radar Control Bluetooth turned on. Home Assistant > Settings > Devices & services > ESPHome Devices > Select Device > Scroll down and toggle on Radar Control Bluetooth

Radar Control Bluetooth.png

3. Open the app and select your device

Find Device.png

4. Turn on Engineering Mode

EM.png

5. Select More and then select Parameter settings

More and PS.png

6. Select Detect background noise

DBN.png

7. Insert Delay detection and Detection time values. (For iPhone users Delay detection cannot be 0). Then select Start. This will give us our reference values so we can auto-calibrate the mmWave sensor.

DD, DT and Start.png

8. Select Back to navigate to the Parameter settings. Then select one of the auto-calibration buttons.

Average
- Sets the gate sensitivity to the average move and still energy

Average.png

Maximum
- Sets the gate sensitivity to the maximum move and still energy

Max.png

Intelligent
- Sets the gate sensitivity equal to or just above the maximum move and still energy

Intelligent.png

9. Now your mmWave should be tuned to your environment!

Manual Calibration

1. Follow steps 1-5 above

2. Select Motion or Static sensitivity, change it to your desired value, and select Set

Manual.png

3. Now your mmWave should be tuned to your environment!

Calibrating And Updating

MSR-1 Temperature & Humidity Offsets

BME280 & SCD40 Sensors: Overcoming Temperature & Humidity Reading Challenges

The BME280 and SCD40 sensors are known for their precision in measuring temperature and humidity. However, like all sensor systems, they can sometimes provide inaccurate readings due to various factors. In the case of the BME280 and SCD40 sensors, one significant challenge arises from the heat produced by the ESP chip, which can alter the environment inside its enclosure, thereby skewing the readings. 

Adjusting the BME280 and SCD40 Temperature Offset

For users who want to fine-tune their sensors, the BME280 and SCD40 Temperature Offset entities can be manually adjusted to match the conditions in their home. The offset values are subtracted from the raw temperature & humidity readings in the firmware to update the sensor readings in the home assistant entity. For example: scd40_temperature entity = raw scd40 temperature reading - scd40_offset. 

By default, these offsets are preset to values based on our NIST certified thermometer, it's important to note that these values are calibrated for our environment. They might not be accurate for all settings. Therefore, by using a reference thermometer, users can adjust the difference between the readings to get a more accurate representation.  

Users will also notice the bme280_humidity_calibratedscd40_humidity_calibratedbme280_temperature_calibrated, and scd40_temperature_calibratedentities. These values utilize the linear filter in the ESPHome firmware to adjust the readings based on our collected data. Again, due to environmental differences, these might not always be precise.

Modeling the Relationship Between Sensors

Another approach to getting accurate readings is to model the relationship between the ESP temperature and the other sensors compared against a reference temperature. This can be achieved by creating a template sensor in Home Assistant that employs a decision tree or our regression coefficients.

Here's an example that can be added to a configuration YAML:

sensor:
  - platform: template
    sensors:
      estimated_reference_temperature:
        friendly_name: "Estimated Temperature"
        unit_of_measurement: '°C'
        value_template: >
          {{
            0.3228 * states('sensor.apollo_msr_1_a79e24_esp_temperature') | float +
            0.8702 * states('sensor.apollo_msr_1_a79e24_scd40_temperature') | float +
            -0.1285 * states('sensor.apollo_msr_1_a79e24_bme280_temperature') | float +
            -0.0491 * states('sensor.apollo_msr_1_a79e24_scd40_humidity') | float +
            0.0851 * states('sensor.apollo_msr_1_a79e24_bme280_humidity') | float +
            -17.4840
          }}


      estimated_reference_humidity:
        friendly_name: "Estimated Humidity"
        unit_of_measurement: '%'
        value_template: >
          {{
            -1.2468 * states('sensor.apollo_msr_1_a79e24_esp_temperature') | float +
            -2.1959 * states('sensor.apollo_msr_1_a79e24_scd40_temperature') | float +
            2.9604 * states('sensor.apollo_msr_1_a79e24_bme280_temperature') | float +
            0.2380 * states('sensor.apollo_msr_1_a79e24_scd40_humidity') | float +
            1.8283 * states('sensor.apollo_msr_1_a79e24_bme280_humidity') | float +
            40.1686
          }}

For users who want to gather their own data with a reference sensor and MSR-1 within their home, we recommend logging data to a CSV using the following YAML entries:

#Configuration.yaml
notify:
  - platform: file
    name: sensor_csv_log
    filename: /config/sensor_log.csv
    timestamp: False

#Automations.yaml
  - id: log_sensor_data_to_csv
    alias: "Log Sensor Data to CSV"
    trigger:
      platform: time_pattern
      minutes: "/1"  # Log data every minute to match reference sensor
    action:
      - service: notify.sensor_csv_log
        data_template:
          message: >
            {{ now().strftime('%Y-%m-%d %H:%M:%S') }},
            {{ states('sensor.apollo_msr_1_a79e24_esp_temperature') | default('NA') }},
            {{ states('sensor.apollo_msr_1_a79e24_scd40_temperature') | default('NA') }},
            {{ states('sensor.apollo_msr_1_a79e24_bme280_temperature') | default('NA') }},
            {{ states('sensor.apollo_msr_1_a79e24_scd40_humidity') | default('NA') }},
            {{ states('sensor.apollo_msr_1_a79e24_bme280_humidity') | default('NA') }},
            {{ states('number.apollo_msr_1_a79e24_bme280_temperature_offset') | default('NA') }},
            {{ states('number.apollo_msr_1_a79e24_scd40_humidity_offset') | default('NA') }},
            {{ states('number.apollo_msr_1_a79e24_bme280_humidity_offset') | default('NA') }},
            {{ states('number.apollo_msr_1_a79e24_scd40_temperature_offset') | default('NA') }},
            {{ states('sensor.apollo_msr_1_a79e24_uptime') | default('NA') }}

The Interrelation of Temperature and Humidity

It's important to understand that temperature and humidity share an interdependent relationship. When the air temperature rises, its capacity to hold moisture increases, which can decrease relative humidity levels. Conversely, when the temperature falls, the air's capacity to hold moisture decreases, leading to increased humidity. This relationship plays a significant role in how sensors detect and interpret readings, making it even more crucial to ensure accuracy.

Advanced Accuracy with GPIO

For those seeking the highest accuracy, an advanced solution is available. The exposed GPIO on the back of the board can be utilized to solder a temperature probe. This modification can dramatically improve both temperature and humidity readings, providing data that's as accurate as possible.

Calibrating And Updating

CO2 Calibration For MSR-1

Please refer to the General CO2 Calibration article

Examples

Examples

MSR-1 Home Assistant Dashboard Examples

Radar Scatter Plot With Apex Charts For MSR-1


JPE Apex Charts 3.png

type: custom:apexcharts-card
header:
  show: true
  title: MSR-1 Radar Distance
  show_states: true
  colorize_states: true
apex_config:
  legend:
    position: top
    horizontalAlign: center
    offsetX: -80
    offsetY: 0
experimental:
  brush: true
brush:
  selection_span: 4h
graph_span: 24hr
chart_type: scatter
series:
  - entity: sensor.apollo_msr_1_a79e14_radar_detection_distance
    name: Detection
    stroke_width: 1
    color: green
    show:
      in_brush: true
      extremas: true
  - entity: sensor.apollo_msr_1_a79e14_radar_moving_distance
    name: Moving
    stroke_width: 1
  - entity: sensor.apollo_msr_1_a79e14_radar_still_distance
    name: Still
    stroke_width: 1

CO2 Charts

Home Assistant Sensor

CO 2 Graph.png

graph: line
type: sensor
entity: sensor.apollo_msr_1_a79e38_co2
detail: 2
name: Bedroom CO2
hours_to_show: 24

Custom: Plotly Graph Card

Plotly CO2 Graph.png

type: custom:plotly-graph
entities:
  - entity: sensor.apollo_msr_1_a79e38_co2
hours_to_show: 24
refresh_interval: 10
title: Bedroom CO2

Home Assistant Guage

CO2 Guage.png

type: gauge
entity: sensor.apollo_msr_1_a79e38_co2
needle: true
unit: ppm
min: 0
max: 3000
severity:
  green: 0
  yellow: 1000
  red: 2000
Examples

Using MSR-1 Buzzer

This guide will walk you through using the buzzer on your MSR-1. You can also call the below service through automations in Home Assistant.

  1. Open Home Assistant and navigate to developer tools in the bottom left

Screenshot 2023-11-01 at 10.52.38 PM.png

2. Click on services

3. Choose your MSR-1's buzzer (You can type in buzzer to find it easier)

4. Put a rtttl tone into the the string box

5. Click on call service button in bottom right

Screenshot 2023-11-01 at 10.57.33 PM.png


Examples

MSR-1 Automation Guide

Examples

MSR-1 Examples From GitHub

https://github.com/ApolloAutomation/MSR-1/tree/main/Examples

 

Examples

MSR-1 + Alarmo Home Security Install

My grandmother wanted a security system that would alert her when there was movement in her home after she had gone to bed.

Additional Info

Additional Info

Exposed GPIO

Screenshot 2023-11-18 at 6.33.00 PM.png

 

The back of the Apollo MSR-1 has exposed GPIO for a variety of uses.

From left to right:

Additional Info

mmWave Presence Sensor Comparison

Link to excel file: mmWave Presence Sensor Excel Spreadsheet

Scroll table to right to see others

Column1 Apollo MSR-1 Apollo MSR-1 CO2 Everything Presence One Kit Everything Presence Lite Kit Screek Human Sensor 1U Screek Human Sensor 2A Aqara FP1 Aqara FP2 Seeed Studio mmWave Kit
 Price (USD)   $                                                                                                                         34.99  $                                                                                                                         54.99  $                                                                78.00  $                                                               37.00  $                                                        25.99  $                                                       29.99  $                49.99  $                                     82.99  $                                                                             26.99
Motion Detection                  
mmWave LD2410B LD2410B SEN0395 LD2450 LD2410C LD2450 BGT60TR13C IWR6843 Human Static Presence Module Lite
Detection Distance (m) 6 6 9 6 6 6 5 6 to 8 5
Detection Zones 3 zones and 9 gates (adjustable and distance based) 3 zones and 9 gates (adjustable and distance based)   x   x x x  
Target Tracking       x   x x x  
PIR     Panasonic            
Connection Method                  
Wi-Fi ESP32-C3-MINI ESP32-C3-MINI ESP32-WROOM-32 ESP32-WROOM-32 ESP32-S2 ESP32-C3   ESP32-WROOM-32U ESP32-C3
Zwave             x    
Zigbee             x    
Bluetooth ESP32-C3-MINI ESP32-C3-MINI ESP32-WROOM-32 ESP32-WROOM-32 ESP32-S2 ESP32-C3   ESP32-WROOM-32U ESP32-C3
ESPHome ESP32-C3-MINI ESP32-C3-MINI ESP32-WROOM-32 ESP32-WROOM-32 ESP32-S2 ESP32-C3     ESP32-C3
Case / Stand                  
Case Included x x  $                                                                   8.00 x x x x x x
Cable       x x x x x x
Stand $4.99 (Optional) $4.99 (Optional) Included with case purchase x     x x  
Outlet Mount $6.99 (Optional) $6.99 (Optional)              
Outlet Mount w/ Wall Plug $19.99 (Optional) $19.99 (Optional)              
Size (mm) 40x32x13 40x32x13     36.7x30x13.8 56.9x56.9x14.3 52x45x36 64x64x29.5 70x70
Additional Features                  
LED x x x x          
RGB LED x x              
Temp/Humidity x x x           $6.50 (Optional)
Light/LUX x x x x          
UV/UV Index x x              
GPIO x x x            
Piezo Buzzer x x              
CO2   SCD40              
Works with multiple mmWave       x         x
                   
Country USA USA EU EU China China China China China
Product Link Apollo MSR-1 Apollo MSR-1 Everything Presence One Kit Everything Presence Lite Kit Screek Human Sensor 1U Screek Human Sensor 2A Aqara FP1 Aqara FP2 Seeed Studio mmWave Kit
mmWave  LD2410B LD2410B SEN0395 LD2450 LD2410C LD2450 BGT60TR13C IWR6843 Human Static Presence Module Lite
ESP ESP32-C3-MINI ESP32-C3-MINI ESP32-WROOM-32 ESP32-WROOM-32 ESP32-S2 ESP32-C3   ESP32-WROOM-32U ESP32-C3
                   
                   
                   
                   
                   

Additional Info

Adding CO2 To MSR-1


1. Unplug your MSR-1 from power and remove the back

IMG_3784.jpeg

2. Remove the board from the case and orientate it like the below image. In the bottom right there is a black connector. There is a x in the lower right corner of the connector

IMG_3788.jpeg

3. Orientate the CO2 module so the white x on the module is also in the lower right and the gold dot is in the upper left as seen below

IMG_3787.jpeg

4. Align the connector on the back of the CO2 module with the connector on the MSR-1. Once aligned, push down so the CO2 module fully seats itself

IMG_3789.jpeg

5. Put your MSR-1 back in the case and slide the back cover on. Please refer to our CO2 calibration guide to calibrate the CO2 module.

Additional Info

Reducing LD2410 Log Entries In Home Assistant

  1. Open your Home Assistant config.yaml
  2. Add in this code but use your MSR-1's name
logbook:
  exclude:
    entities:
      - binary_sensor.hallway_motion_home_security_motion_detection

Troubleshooting

Troubleshooting

Manually Uploading Code Through ESPHome

If your device becomes unresponsive and you've exhausted the other troubleshooting methods you can upload a fresh set of firmware by following the below guide. The utility does need to be run from Chrome or Edge.

If your device has already been connected to Home Assistant previously please refer to Removing Device From Home Assistant first before proceeding
  1. Plug your MSR-1 into your computer with a quality USBC cable that supports data transfer

  2. Navigate to our installer page and click connect ** Install Page **

  3. Select your Apollo device, it will show with a similar name to the one below, and click connect. If you aren't sure which device it is, you can unplug the MSR-1 and see which disappears.

ComSelection.png

If no device shows, click cancel and then install the recommended driver that shows on the popup. If you have installed the driver, tried different cables, and it still won't work refer here for putting the MSR-1 in bootloader mode and then retry step 3. Putting MSR-1 In Boot Mode Document

  1. Choose to install the new firmware

  1. Wait for the installer to finish

  1. After finishing, check for the Apollo hotspot and connect. This might not show if you previously had the MSR-1 connected to your wifi

  2. Log into Home Assistant and go to the ESPHome addon check to see if you can adopt the device.

If you encounter the below error, please complete the Putting MSR-1 In Boot Mode Document and go back to step 3.

Troubleshooting

Putting The MSR-1 In Boot Mode

This will cover how to put the MSR-1 into boot mode. This is sometimes needed for uploading new firmware if the device is struggling.

Boot Button Only

  1. Unplug the device
  2. See the photo below to help access the boot button through the top of the case
  3. Use a pin to press and hold the boot button, while holding the boot button plug it back into your computer/power and then release the boot button

MSR-1 Top Shot Boot Button.jpg
    4. Continue with uploading the firmware document

Boot and Reset Buttons

  1. Unplug the device
  2. Slide the back of the case off
  3. Remove the device from the case
  4. Plug it back into your computer
  5. Press and hold the boot button, while holding it press and release the reset button, then release the boot button

MSR-1_Buttons.jpg

6. Continue with uploading the firmware document

MSR-1 Reviews

MSR-1 Reviews

Make It Work Tech MSR-1 Review


Apollo MSR-1 Review starts at 31:22.
MSR-1 Reviews

Smart Home Scene MSR-1 Review

Smart Home Scene MSR-1 Review

MSR-1 Reviews

DrZzs MSR-1 Review



Apollo MSR-1 review starts at 19:53.
MSR-1 Reviews

BeardedTinker MSR-1 Review

BeardedTinker YouTube Video review - MSR-1

MSR-1 Reviews

Simon Says Home Assistant MSR-1 Review

MSR-1 Reviews

MostlyChris MSR-1 Review