Ever since mmWave took over as the main tech behind presence and motion detection in an automated home, presence sensors have been popping up all over the place. I’ve done some work in testing a bunch of models floating around, in a effort to find those that are worth our money. You can find a full list at the bottom of this article.
Another great thing that spawned from this industry shift is the development of many DIY presence sensors and multi-sensors, like the Everything Smart Home EP1 and all those DIY Hi-Link devices based on an ESP32 board. These hit the sweet spot for any home automation enthusiast, giving you total and local control over presence detection in your home.
This article is a testing and overview of such a multi-sensor model labelled MSR-1, made and sold by Apollo Automation. This device is completely open-source, you can customize it to infinity, and offers some interesting features besides presence detection. It’s price tag starts from $34.99 on their official webstore. Europeans can get it from OpenCircuit for faster shipping times.
Technical Specification
These guys managed to create the smallest mmWave Presence and CO2 Multi-Sensor with an interesting feature set, here’s a list of everything the Apollo MSR-1 offers:
- Model: Apollo Automation MSR-1 MultiSensor
- Dimensions: 40x32x13mm
- Connectivity: Wi-Fi/Bluetooth
- Main Module: ESP32-C3 Mini
- Interface: USB-C
- mmWave Radar: Hi-Link HLK-LD2410b
- CO₂ Sensor: Sensirion SCD-40 (Optional)
- Illuminance and UV: Liteon LTR-390UV
- Temperature, Humidity and Pressure: Bosch BME280
- ESPHome Support
- RGB Pixel LED
- Piezo Buzzer
- GPIO
Overview and Package Contents
The Apollo MSR-1 MultiSensor ships with an optional outlet mount and articulating stand, for a more flexible installation. The CO2 sensor is completely optional as well, and does bring down the price significantly. The first thing you notice is how tiny this device actually is, measuring at just 40x32x13mm without attachments.
Someone at Apollo must be a big fan of German Shepherds, their logo is an image of one very happy dog. The angled USB-C adapter is made to fit perfectly on top of the corner of the device and installed directly on a wall plug, that you can also get from their store or simply use your own. The rotating stand fully replaces the backplate of the case and is 3D printed very very tight, which will keep the device in place without wiggling.
Taking out the PCB from the case, and you can appreciate the effort it must have took in creating the layout of the components in such a small form factor. Everything I marked on the picture is made to fit on a 4cm-wide board, which definitely makes the Apollo MSR-1 the smallest presence and CO2 sensor available. Yet somehow, it’s one of the most feature rich multi-sensor at the same time.
The HLK-LD2410b uses very small 1.25mm pins, so they even made a tiny 3D printed stand to hold the other end of the presence sensor and prevent it from snapping or bending the pins. The electromagnetic passive MLT-8530 buzzer they used can play some tunes, as an audible indicator triggered by events and automations in Home Assistant.
Home Assistant Integration
The Apollo MSR-1 comes pre-flashed with their own ESPHome firmware, all I needed to do was add it to Home Assistant. This is just as easy as it sounds, since Home Assistant auto-detects any ESPHome devices on your network automatically.
As soon as the device is powered by a 5V1A source, it broadcasts a Wi-Fi hotspot labelled Apollo MSR-1 Hotspot.
I connected to this Wi-Fi hotspot and accessed the local interface in a browser by typing 192.168.4.1 which is the default IP address. If you have an Android phone, you can also select the network and click Manage router which takes you to this page directly.
The MSR-1 will auto-detect any Wi-Fi SSIDs currently broadcasting in it’s vicinity, so select yours enter the password and click Save. That’s it.
Going back to Home Assistant, you will get a notification that a new device has been discovered in your network. Click Configure, followed by Submit and Save – the Apollo MSR-1 is added to Home Assistant.
If you get an error message, you may need to manually input the IP address of the MSR-1, which you can find in your routers DHCP list.
Sensors and Entities
When you select the MSR-1 under ESPHome in Home Assistant, you will notice it created a total of 81 entities from different domains. This can be overwhelming, but I say the more the merrier.
The creators of this multi-sensor even installed a small RGB LED which you can use as a visual indicator for different events. For example, if CO2 is too high, light up the LED in red. Of if presence is detected, keep the LED blue.
Most of the sensors and entities exposed by the MSR-1 are pretty self-explanatory: temperature, humidity, pressure, CO2, light, UV index and diagnostics entities like ESP temperature, firmware, CPU speed, free memory etc. The temperature and humidity can be easily calibrated, as well as the CO2 reading which involves taking the sensor outdoors.
The radar presence detection is handled by a couple of sensors and configuration parameters, which you use to fine-tune the operation of the HLK-LD2410b.
First and foremost, the radar still target and radar moving target and independent of each other and simply change state whenever there is a moving or still target detected. Their states are combined in the radar target entity, which is a combination of both and for presence to be cleared – both need to be clear and visa versa.
The radar detection distance and radar moving distance entities give you a distance to the target in centimeters. Radar moving energy and radar still energy measure the energy and speed of the target distance, the faster you move the higher the percentage on the reading.
Configuring Zones and Gates
The MSR-1 can be fine-tuned to eliminate any false triggers by using a feature called Gates, which are just energy thresholds for different distances of detection of the HLK-LD2410b. Basically, a single gate represents a pre-defined distance from the sensor for which you can adjust the move and still energy thresholds to eliminate false triggers. Before tuning a gate, you need to turn on the Radar Engineering Mode entity under configuration.
The HLK-LD2410b has the following default gate values:
For example, if I wanted to tweak the third gate which measures movement from 1.5-2.25 meters, I need to adjust the g3 move and still thresholds. A simple way of doing this is maxing out the values of the gate and than lowering them until it detects a person without being false triggered by something else. For complete optimization, you would have to tweak every gate threshold. Remember to turn off Radar Engineering Mode once you are done.
The Apollo MSR-1 also offers the ability of defining detection zones, which can be used to set separate detection areas in a single room. This is a feature the open source community continuously asked for in sensors like the Aqara FP1 and FP2.
You can define up to 3 zones by setting the distance in centimeters, which just tells the sensor that this is the maximum it should detect presence for this particular zone. For example, if you set Zone 1 to 50cm, it will detect presence from 0-50cm. Zone 2 extends from the end of Zone 1, so if you set Zone 2 to 300cm, it will detect presence at a distance from 50-300cm measured from the sensor. Each zone has it’s own sensor entity, which changes states accordingly. I created a small chart for visualization:
Triggering the LED and Buzzer
The onboard RGB LED of the MSR-1 can be triggered by a service call from withing Home Assistant, since it’s a general light entity. This can be used as a visual indicator for many things, like “detected presence”, “cleared presence”, “high CO2 levels” or anything else not even related to the device. For example, let’s say I want to create a simple automation which will turn on the LED green whenever presence is detected:
alias: Detected Presence
description: Apollo MSR-1 Detecting Presence
trigger:
- platform: state
entity_id:
- binary_sensor.apollo_msr_1_c40160_radar_target
to: "on"
condition: []
action:
- service: light.turn_on
target:
entity_id: light.apollo_msr_1_c40160_rgb_light
data:
rgb_color:
- 53
- 153
- 11
mode: single
Similarly, the onboard sound buzzer can be triggered with an automation, as an audible indicator. For example, this will play out the Mario tune:
alias: Detected Presence
description: Apollo MSR-1 Detecting Presence
trigger:
- platform: state
entity_id:
- binary_sensor.apollo_msr_1_c40160_radar_target
to: "on"
condition: []
action:
- service: esphome.apollo_msr_1_c40160_play_buzzer
data:
song_str: >-
smb:d=4,o=5,b=100:16e6,16e6,32p,8e6,16c6,8e6,8g6,8p,8g,8p,8c6,16p,8g,16p,8e,16p,8a,8b,16a#,8a,16g.,16e6,16g6,8a6,16f6,8g6,8e6,16c6,16d6,8b,16p,8c6,16p,8g,16p,8e,16p,8a,8b,16a#,8a,16g.,16e6,16g6,8a6,16f6,8g6,8e6,16c6,16d6,8b,8p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16g#,16a,16c6,16p,16a,16c6,16d6,8p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16c7,16p,16c7,16c7,p,16g6,16f#6,16f6,16d#6,16p,16e6,16p,16g#,16a,16c6,16p,16a,16c6,16d6,8p,16d#6,8p,16d6,8p,16c6
mode: single
Testing Performance
I installed the Apollo MSR-1 on a bookshelf in my living room and after I was done tinkering with gates and zones, I benchmarked the performance of the device. I entered the area multiple times from different angles and measured the response in Home Assistant.
First and foremost, movement and presence detection is instant with both the moving and still entities changing state immediately. The MSR-1 never failed to detect presence, I can’t even put a number of how fast it is since it would be in milliseconds. If you experience any delays in initial detection, they will most likely be caused by your Wi-Fi network and not the Apollo MSR-1.
When it comes to passive presence detection, there were many false triggers until I actually took the time to set the gate thresholds and tune the device to my environment. This is a must and can’t be skipped over, otherwise you will be disappointed in the performance of the MSR-1. The default radar cooldown is set to 5 seconds, I raised it to 15 to give the sensor some wiggle room and eliminate false negatives.
The HLK-LD2410b is not the most capable presence sensor out there, but it’s coded well and work great in the MSR-1. It has a maximum range of 6 meters, which is good enough for most living spaces. The configuration entities of the MSR-1 can be overwhelming, but this is what a true home automation enthusiast like me lives for.
Final Thoughts
I’ve been testing almost exclusively cheap Zigbee Tuya presence sensors for this past year and now I have a box full of trash. Even if when they have good hardware, almost all of them are badly coded and don’t work like you would want them too. One exception I would like to exclude is the ceiling mounted MTG075-ZB-RL presence sensor with a built in relay, which turned out great.
The Apollo MSR-1 seems to follow the path of Lewis’s Everything Presence Sensors, which are also ESP32 based devices that you can tweak and adjust to infinity. The Sensirion CO2 sensor is a nice addition and turns the MSR-1 into a feature rich multi-sensor.
Ultimately, the Apollo MSR-1 is a highly tweakable mmWave radar detection sensor with a nice set of additional features, most notably the optional Sensirion CO2 sensor. Considering it’s price tag and versatility, I would highly recommend the Apollo MSR-1 to any true home automation enthusiast.
You can get the Apollo Automation MSR-1 on their official webstore:
APOLLO AUTOMATION STORE
Apollo MSR-1 Only
Apollo MSR-1 with CO2 Sensor
OPEN CIRCUIT (EU)
Apollo MSR-1 Only
Apollo MSR-1 with CO2 Sensor
*If links fail to open, try disabling your AdBlocker.
Related: Apollo AIR-1 Air Quality Sensor: Official Webstore | OpenCircuit
Other Presence Sensors Reviews
- Aqara FP1 Human Presence Sensor Review
- Aqara FP2 Human Presence Sensor Review
- Everything Presence One EP1 Review
- Zigbee Presence Sensor With Relay MTG075-ZB-RL Review
- Zigbee Presence Sensor with Siren ZG-205ZL Review
- Moes/Linptech Presence Sensor ZSS-LP-HP02 Review
- Tuya ZigBee Human Presence Sensor ZY-M100 Review
- Tuya Ceiling Presence Sensor LY-TAD-K616S Review
- Tuya Zigbee Human Presence Sensor PS-HPS Review
Thank you so much for your honest and in-depth review of the Apollo MSR-1! We’re thrilled to hear that you appreciate its tweakability, additional features, and especially the optional Sensirion CO2 sensor. Your recommendation to home automation enthusiasts means a lot to us. We’re dedicated to providing versatile, high-quality products, and it’s fantastic to know the MSR-1 is hitting the mark. Thanks again for your support and for sharing your experience!
Best regards,
The Team at Apollo Automation
Were you able to tell how it handled things like pets walking into the area? My understanding is mmWave has had a lot of trouble with that.
This is true for any mmWave sensor.
It basically comes down to a lot of trial and error and continuous tweaking the parameters.
You have to find the sweet spot for your space.
The MSR-1 is highly customizable.
Just got one and installation based on this write-up went great. Thanks for making seamless.
Will be getting a few more to spread out where needed, and next step is making a nice card in Home Assistant to show it all…
Man, the MSR-1 is great.
Take a look at Mushroom or Bubble card from HACs