esphome-mmwave-sensors
                                
                                
                                
                                    esphome-mmwave-sensors copied to clipboard
                            
                            
                            
                        ESPHome integration for mmWave Sensors from Seeed Studio
ESPHome integration for mmWave sensors
Collection of header files and esphome yaml configs to integrate some Seeed Studio mmWave sensors into Home Assistant.
Currently the following sensors are partially implemented
- Seeed Studio
MR24HPB1- 24 GHz Human Stationary SensorMR24HPC1- 24 GHz Human Static Presence LiteMR60BHA1- 60 GHz Respiratory Heartbeat Sensor
 
Table of Contents
- ESPHome integration for mmWave sensors
- Table of Contents
 - Roadmap
 - Installation
- Files
 - Hardware
- MCU
 - Wiring
 
 - ESPHome Device
 
 - Supported Functions
 - MR24HPC1
- Sensor
 - Device Website
 - Home Assistant
 
 - MR60HBA1
- Sensor
 - Device Website
 - Home Assistant
 
 - Contributing
 - License
 
 
Roadmap
- Implement missing SeeedStudio Sensors (MR24BSD1 & MR60FDA1)
 - Make documentation cleaner and enhance with screenshots and plots
 - Implement sensors as proper external components
- Are there proper docs on how the config validation/generation part of esphome works?
 
 
Installation
Files
If you don't bother or use all the supported sensors just copy the header and packages directories into your Home Assistant config/esphome directory.
Otherwise these are the files needed for each sensor:
MR24HPB1- Headers
- headers/mr24hpb1.h
 - headers/mr24hpb1_frame.h
 
 - Config
- packages/mr24d.yaml
 
 
- Headers
 MR24HPC1- Headers
- headers/mr24hpc1.h
 - headers/mrx_frame.h
 
 - Config
- packages/mr24hpc1.yaml
 
 
- Headers
 MR60BHA1- Headers
- headers/mr60bha1.h
 - headers/mrx_frame.h
 
 - Config
- packages/mr60bha1.yaml
 
 
- Headers
 
You can change the name of the headers directory in home assistant if it doesn't apply to your naming scheme. You can adjust the file locations via substitutions.
substitutions:
  header_frame: headers/mrx_frame.h
  header_sensor: headers/mr24hpc1.h
Hardware
MCU
The template assumes the use of a ESP32. I specifically used the AZDelivery ESP32 Devkit C, but any other ESP32 and ESP8266 should work I guess. But I have not tested this.
Wiring
The template assumes the following wiring:
| MCU | mmWave Sensor | 
|---|---|
| 5V | 5V | 
| GND | GND | 
| GPIO16 (UART RX) | TX | 
| GPIO17 (UART TX) | RX | 
The uart pins can be changed in the ESPHome yaml via substitutions
substitutions:
  uart_rx_pin: "16"
  uart_tx_pin: "17"
ESPHome Device
Take a look at the yaml files in the examples directory, these should give you a basic understanding of what to do when you create a new device in ESPHome.
Basically the section substitutions and packages are relevant. When you create a new device the other user relevant section will be generated by ESPHome, the before mentions sections need to be added from the provided example yaml files.
Supported Functions
The MR24HPC1 and MR60BHA1 sensor also support multiple inputs to reset, change operation modes and query specific sensor states.
MR24HPB1 | 
MR24HPC1 | 
MR60BHA1 | 
Info | |
|---|---|---|---|---|
| presence | x | x | x | binary (detected/clear) | 
| motion | x | x | x | binary (detected/clear) | 
| body movement | x | x | x | measurement (0: unoccupied, 1: static presence, 2-100: activity level) | 
| proximity | x | x | measurement (<0: approaching, 0 none or stationary, >0 moving away) | |
| distance | x | measurement (distance to object in cm) | ||
| x, y, z angle | x | measurements (relative position of object to sensor) | ||
| heartrate | x | measurement | ||
| breathing rate | x | measurement | ||
| breathing info | x | measurement (1: normal, 2: fast, 3: slow, 4: none) | ||
| radar out of bounds | x | measurement (0: out of range, 1: within range) | 
MR24HPC1
Sensor

Device Website

Home Assistant

MR60HBA1
Sensor

Device Website

Home Assistant

Contributing
Since C++ is not my strongest of languages and this is my first implementation which is interacting with ESPHome, Home Assistant and the uart protocol in general, there are probably a lot of things that can be done easier or cleaner.
Please feel free to dive in! Open an issue or submit PRs.
License
MIT © thefipster