Here's how to build your own alarm system in one afternoon, one that can do more than many commercial solutions, without any monthly costs.
Why an Alarm System?
Be honest: have you ever thought about what happens when you are not at home? In Germany, around 83,000 home burglaries were recently registered per year (PKS 2025), the fourth year in a row with a rising trend. That is more than 220 burglaries a day. The good news: around 45 percent of burglaries fail at the attempt stage, often because security technology deters the burglars or raises the alarm early.
An alarm system gives you a better sense of security while also acting as a deterrent. Visible security technology is one of the most important deterrence factors. Some insurers even reward its use with lower premiums.
However, commercial alarm systems are often expensive, tied to cloud services, and require monthly fees. There is another way.
Why Radar Presence Sensors Are Ideal
Classic motion detectors (PIR sensors) have two decisive weaknesses:
- They only detect movement. If someone stands still, whether listening or hiding, they go undetected.
- They do not know zones. The entire detection area is a single, undifferentiated space. Targeted monitoring of a door, window, or specific room zones is not possible.
The Senvolon presence sensor KL MZ solves both problems at once:
- 60 GHz radar detects even completely motionless people. Breathing alone is enough of a signal.
- Up to 4 freely configurable detection zones per device: you decide which area counts as "door," "window," or "room," and monitor these areas separately and specifically.
- Double the use from a single sensor: when the alarm system is disarmed, the same zones can be used for other purposes. For example, to automatically turn the light on or off when you enter or leave the room.
- Built-in siren, a real difference from other sensors: no external device needed, every room with a presence sensor also has a siren built right in. If an alarm is detected, all sirens activate.
- 100% local: no cloud required, no dependency on third-party providers.
- MQTT integration: direct integration into Home Assistant, including automatic recognition via MQTT Discovery.
- Climate sensors included: temperature, humidity, air pressure, and brightness as a basis for further automations.
Combined with Home Assistant, this becomes a full-featured, smart alarm system. Flexible, expandable, and with no ongoing costs at all.
Cost Comparison: Off-the-Shelf System vs. DIY
| System | Purchase Cost | Monthly Cost | Cloud Required |
|---|---|---|---|
| Comparable off-the-shelf alarm system | €500–1,000 | €10–30/month | usually |
| DIY with Senvolon + Home Assistant | €300–450 | €0 | No |
DIY cost example:
- 3× Senvolon presence sensor KL MZ: 3 × €99 = €297
- Home Assistant on an existing Raspberry Pi or mini PC: €0–150
- Total: approx. €300–450, no ongoing costs
After 2 years with a cloud-based off-the-shelf solution (at €15/month), you would already have spent €360 on the subscription alone, and would still be limited to PIR detection without zones.
What Do You Need?
| Component | Details | Cost |
|---|---|---|
| 2–3× Senvolon presence sensor KL MZ | Order in the shop | €99 each |
| Home Assistant | On a Raspberry Pi 4/5, mini PC, or NUC | €0–150 |
| Wi-Fi router | Probably already on hand | €0 |
| USB-C power adapters | 5V/2A per sensor (USB-C cable included) | €0–10 |
| Smartphone | For notifications (HA Companion App) | already on hand |
No separate control panel, no gateway, no additional siren needed.
Step by Step: Setting Up Your Alarm System
Step 1: Positioning and Mounting the Sensors
Think about which rooms you want to monitor. A typical setup for an apartment:
| Room | Position | Monitors |
|---|---|---|
| Hallway | Wall opposite the front door, 1.8 m high | Entrance area |
| Living Room | Wall facing the balcony door, 1.8 m high | Balcony door & center of room |
| Bedroom | Wall facing the window, 1.8 m high | Window area |
Mounting tips:
- Mounting height: 1.50–2.00 m (wall) or on the ceiling
- Clear line of sight to the monitored area, no furniture in the way
- Avoid reflections: do not mount directly opposite mirrors or large glass surfaces
- 120° detection angle: the sensor covers a cone-shaped area of the room in front of it
- For ceiling mounting: the higher the ceiling, the larger the detection area
The power supply is provided via USB-C (cable included). Route the cable neatly along the wall, or use the internal 5V connector for hidden wiring.
Step 2: Setting Up MQTT in Home Assistant
MQTT is the communication protocol between your sensors and Home Assistant. You need an MQTT broker. The easiest option is the Mosquitto add-on in HA.
Installing Mosquitto:
- Go to Settings → Add-ons → Add-on Store in Home Assistant
- Search for "Mosquitto broker" and install it
- Start the add-on and enable "Start on boot"
Creating an MQTT user:
- Go to Settings → People → Users
- Create a new user, e.g.:
- Username:
mqtt_user - Password:
sicheres_passwort
- Username:
Adding the MQTT integration:
- Go to Settings → Devices & Services → Add Integration
- Search for "MQTT" and set up the integration
- Broker:
localhost(orcore-mosquitto), port:1883
You can also find a compact overview of all the MQTT steps in our quick start guide Integrating the presence sensor into Home Assistant.
Step 3: Connecting the Sensor to Wi-Fi and MQTT
Each presence sensor has its own web interface for configuration.
- Initial setup: on first start, the sensor sets up its own Wi-Fi network. Connect to it and open the configuration page in your browser.
- Set up Wi-Fi: enter the details of your home Wi-Fi (2.4 GHz).
-
Configure MQTT under "Connections":
-
Broker address: the IP address of your Home Assistant (e.g.,
192.168.1.100) -
Port:
1883 -
Username:
mqtt_user -
Password:
sicheres_passwort -
Topic: the sensor's name, e.g.,
Flur,Wohnzimmer, orSchlafzimmer. This name is used as the base for all MQTT messages from this device.
-
Broker address: the IP address of your Home Assistant (e.g.,
-
Set up zones: under "Zones," define the detection areas and give them meaningful names without umlauts (Home Assistant takes over the name directly):
-
Zone 1: the door or window area, e.g.,
TuerorBalkon, for early detection during a break-in -
Zone 2: the center of the room, e.g.,
Raum, detects movement throughout the whole room. When the alarm system is disarmed, this zone also works great for lighting control: the light turns on automatically when someone enters the room. - Optional: define interference zones to avoid false alarms caused by fans, moving curtains, or similar.
-
Zone 1: the door or window area, e.g.,
- Siren: the built-in siren can be controlled via MQTT at any time. This works independently of any further configuration. Home Assistant handles the control entirely through the automations in step 6.
Repeat these steps for each sensor.
Step 4: Automatically Adding the Sensors to Home Assistant
The presence sensor supports MQTT Auto-Discovery: as soon as MQTT is set up, the sensor registers itself with Home Assistant automatically. You do not need to write any YAML configuration.
At least the following entities are created automatically:
| Entity | Description | Type |
|---|---|---|
Presence |
Presence in the room (yes/no) | binary_sensor |
Detection |
Number of people detected | sensor |
[Zonenname] |
Presence in the respective zone | binary_sensor |
Siren |
Siren on/off | switch |
Temperature |
Room temperature | sensor |
Humidity |
Humidity | sensor |
Air Pressure |
Air pressure | sensor |
Brightness |
Brightness | sensor |
The zones appear in Home Assistant with exactly the name you configured in the presence sensor. Give your zones meaningful names (without umlauts), and you get clear, easy-to-use entities in HA right away.
Tip: name your devices in the presence sensor after the room they are mounted in (e.g.,
Flur,Wohnzimmer,Schlafzimmer). Then all entities in Home Assistant are sorted by room right away, and the entity IDs in these instructions match without renaming. The entity IDs are in fact derived from the topic you set: a sensor with the topicFlurcreatesbinary_sensor.flur_presence, while a sensor with the topicmulti_zone_presence_sensorcreatesbinary_sensor.multi_zone_presence_sensor_presence. You can see the exact IDs for your system at any time under Developer Tools → States.
Step 5: Setting Up the Alarm Control Panel
The alarm control panel is the central hub of your alarm system in Home Assistant.
Standard Installation (Home Assistant OS / Supervised)
Set it up via the user interface:
Settings → Devices & Services → Add Integration → "Manual Alarm Control Panel"
Configure the following:
-
Name:
Alarmanlage -
Arming delay (arming time):
30seconds, time to leave the home -
Trigger delay (delay time):
30seconds, time to disarm after returning -
Trigger duration (trigger time):
300seconds, this is how long the alarm state stays active, matching the automatic siren shutoff after 5 minutes in step 6 - Code: your personal PIN
Docker Installation (e.g., via Portainer)
Note for Docker users: unlike the standard installation, this integration currently cannot be set up via the user interface in the Docker/Portainer version. It must be entered manually into
configuration.yaml.
1. Accessing the Configuration File via SSH
Since Home Assistant runs in a Docker container, the configuration files are located in a protected system directory.
Open your terminal (PowerShell, CMD, or macOS Terminal) and connect:
ssh admin@192.168.1.100
Open the configuration file with administrator rights in the Nano editor:
sudo nano /var/lib/docker/volumes/HASS_Config/_data/configuration.yaml
2. Inserting the YAML Configuration
Scroll all the way to the bottom of the file and insert the following block. Make sure alarm_control_panel: starts at the very left margin (no spaces before it):
# Manual alarm control panel
alarm_control_panel:
- platform: manual
name: Alarmanlage
code: "0815" # Your personal PIN
delay_time: 30 # Time to disarm after returning (entry delay)
arming_time: 30 # Time to leave the home (exit delay)
trigger_time: 300 # Duration of the alarm state (300 sec = 5 min, matches step 6)
Save & exit: Ctrl + O → Enter → Ctrl + X
3. Checking the Configuration and Restarting
- Open Home Assistant in your browser
- Go to Developer Tools → YAML tab
- Click Check Configuration
- If the green text "Configuration will not prevent homeassistant from starting…" appears, click Restart and confirm
4. Adding the Panel to the Dashboard
After the restart, the alarm system is registered in the system and still needs to be made visible in the interface:
- Go to your Overview (Dashboard)
- Click the three dots at the top right → Edit Dashboard
- Click Add Card and search for Alarm Panel
- Select the entity
alarm_control_panel.alarmanlageand click Save
Step 6: Creating the Alarm Automations
Now comes the heart of the system: the automations that turn your sensors into a real alarm system.
Where do you edit automations? The easiest way is directly in the HA interface under Settings → Automations → Create Automation → Start with an Empty Automation. There, paste the YAML code for each of the following automations, one at a time, and save.
A note on the code: the automations use the note: field, which lets you comment directly on triggers, conditions, and actions. These notes also appear in the visual editor at the relevant step and mark, among other things, the places where you need to enter your own entity IDs. If your Home Assistant version does not yet know this field, simply delete the note: lines; the function of the automations will not change as a result.
Automation 1: Trigger the Alarm on Presence
alias: "Alarm: Presence Detected"
description: >
Triggers the alarm when presence is detected while the system is armed.
triggers:
- trigger: state
entity_id:
- binary_sensor.flur_presence
- binary_sensor.wohnzimmer_presence
- binary_sensor.schlafzimmer_presence
to: "on"
note: >-
Enter the presence entities of all your sensors here. If you only
want to arm individual zones, enter the zone entities instead,
such as binary_sensor.flur_tuer.
conditions:
- condition: state
entity_id: alarm_control_panel.alarmanlage
state: "armed_away"
note: "The alarm only triggers when the system is armed."
actions:
- action: alarm_control_panel.alarm_trigger
target:
entity_id: alarm_control_panel.alarmanlage
mode: single
Automation 2: Activate the Sirens on Alarm
alias: "Alarm: Turn On Sirens"
description: >
Activates all sirens when the alarm is triggered.
triggers:
- trigger: state
entity_id: alarm_control_panel.alarmanlage
to: "triggered"
actions:
- action: switch.turn_on
target:
entity_id:
- switch.flur_siren
- switch.wohnzimmer_siren
- switch.schlafzimmer_siren
note: "Enter the siren entities of all your sensors here."
mode: single
Automation 3: Turn Off the Sirens on Disarm or After 5 Minutes
alias: "Alarm: Turn Off Sirens"
description: >
Deactivates all sirens when disarming or after 5 minutes.
triggers:
- trigger: state
entity_id: alarm_control_panel.alarmanlage
to: "disarmed"
note: "Case 1: You disarm the system."
- trigger: state
entity_id: alarm_control_panel.alarmanlage
to: "triggered"
for:
minutes: 5
note: "Case 2: The alarm has been running for 5 minutes."
actions:
- action: switch.turn_off
target:
entity_id:
- switch.flur_siren
- switch.wohnzimmer_siren
- switch.schlafzimmer_siren
note: "The same siren entities as in Automation 2."
mode: single
Good to know: the sirens turn off automatically in two cases: when you disarm the system, or after 5 minutes at the latest. The trigger duration of the alarm control panel from step 5 (
trigger_time: 300) is set to match this value.
Step 7: Setting Up Notifications
Of course, you also want to know immediately when something happens, even while you are out.
Automation 4: Push Notification on Alarm
alias: "Alarm: Push Notification"
description: >
Sends a notification when the alarm is triggered.
triggers:
- trigger: state
entity_id: alarm_control_panel.alarmanlage
to: "triggered"
actions:
- action: notify.mobile_app_ihr_handy
data:
title: "🚨 ALARM!"
message: >
Presence detected! The alarm has been triggered.
Time: {{ now().strftime('%H:%M:%S') }}
data:
priority: high
ttl: 0
channel: alarm
note: >-
Use your own notification service, e.g.,
notify.mobile_app_[device_name] or notify.signal.
mode: single
Tip: install the Home Assistant Companion App on your smartphone. The notification service automatically becomes available as
notify.mobile_app_[device_name]; the exact name depends on the device name in the app and can be found under Developer Tools → Actions.
Step 8: Creating a Dashboard
A clear dashboard gives you your alarm system's status at a glance. Here is a Lovelace configuration:
title: Alarm System
views:
- title: Overview
path: alarm
icon: mdi:shield-home
cards:
# Alarm panel
- type: alarm-panel
entity: alarm_control_panel.alarmanlage
name: "Alarm system"
states:
- arm_away
# Room overview
- type: horizontal-stack
cards:
- type: entities
title: "🚪 Hallway"
entities:
- entity: binary_sensor.flur_presence
name: "Presence"
- entity: sensor.flur_detection
name: "People"
- entity: binary_sensor.flur_tuer
name: "Door zone"
- type: entities
title: "🛋️ Living Room"
entities:
- entity: binary_sensor.wohnzimmer_presence
name: "Presence"
- entity: sensor.wohnzimmer_detection
name: "People"
- entity: binary_sensor.wohnzimmer_balkon
name: "Balcony zone"
- type: entities
title: "🛏️ Bedroom"
entities:
- entity: binary_sensor.schlafzimmer_presence
name: "Presence"
- entity: sensor.schlafzimmer_detection
name: "People"
- entity: binary_sensor.schlafzimmer_fenster
name: "Window zone"
# Sensor data
- type: horizontal-stack
cards:
- type: sensor
entity: sensor.flur_temperature
name: "Hallway"
graph: line
- type: sensor
entity: sensor.wohnzimmer_temperature
name: "Living room"
graph: line
- type: sensor
entity: sensor.schlafzimmer_temperature
name: "Bedroom"
graph: line
# Recent events
- type: logbook
entities:
- alarm_control_panel.alarmanlage
- binary_sensor.flur_presence
- binary_sensor.wohnzimmer_presence
- binary_sensor.schlafzimmer_presence
hours_to_show: 24
title: "Recent Events"
Tip: you can find the exact entity IDs of your zones (e.g.,
binary_sensor.flur_tuer) under Developer Tools → States in Home Assistant. Adjust the entity IDs in the dashboard accordingly.
Advanced Tips
Using Zones Cleverly
Every presence sensor offers up to 4 detection zones. Put them to targeted use:
- Zone 1 pointed directly at a door or window → early detection right at the point of entry
- Zone 2 pointed at the center of the room → detects any movement in the room
- Zones for lighting control: when the alarm system is disarmed, the same zones can be used for smart lighting automations. Our how-to on intelligent lighting control shows how to build a brightness-dependent control with hysteresis from this.
- Interference zones can be defined to suppress false alarms from known sources (fan, curtain)
Setting Up Schedules
Arm the system automatically at night or when you leave the house:
alias: "Alarm: Arm Automatically at Night"
description: >
Arms the system automatically every evening at a fixed time.
triggers:
- trigger: time
at: "23:00:00"
actions:
- action: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.alarmanlage
data:
code: "IHR_CODE"
note: "Use the same code as when setting it up in step 5."
mode: single
alias: "Alarm: Disarm Automatically in the Morning"
description: >
Disarms the system automatically every morning at a fixed time.
triggers:
- trigger: time
at: "06:30:00"
actions:
- action: alarm_control_panel.alarm_disarm
target:
entity_id: alarm_control_panel.alarmanlage
data:
code: "IHR_CODE"
note: "Use the same code as when setting it up in step 5."
mode: single
Automatic Activation When Leaving the House
Even more convenient: the system arms itself automatically as soon as the last person leaves the house, with no manual switching on at all.
Home Assistant uses the zone feature (zone.home) for this. As soon as the count of people in the home zone drops to 0, the automation is triggered.
alias: "Alarm: Arm Automatically When Leaving"
description: >
Arms the alarm system when no one is home anymore.
triggers:
- trigger: state
entity_id: zone.home
to: "0"
note: "The state of zone.home corresponds to the number of people present."
actions:
- action: alarm_control_panel.alarm_arm_away
target:
entity_id: alarm_control_panel.alarmanlage
data:
code: "IHR_CODE"
note: "Use the same code as when setting it up in step 5."
mode: single
Requirement: the Home Assistant Companion App must be installed on all household members' smartphones, with location sharing enabled. Only then can HA detect when there really is no one left at home.
Open-Window Detection as a Bonus
The built-in climate sensors provide an additional clue. A sudden drop in temperature in a room can indicate an open window.
Looking Ahead: How to Expand Your System
Your alarm system is a solid foundation, and with Home Assistant, the possibilities are almost unlimited:
- Presence simulation while on vacation: the sensor's brightness sensor drives a realistic light simulation while the radar stays armed. Our how-to on vacation presence simulation shows how the two work together.
- Camera integration: add cameras and have a photo taken automatically and sent to your phone when an alarm triggers.
- Door and window sensors: add Zigbee contact sensors for an extra layer of detection, for example to react the instant a door opens, even before anyone enters the sensor's detection area.
- Light as a deterrent: have all the lights turn on automatically during an alarm. This adds an extra deterrent.
- Notifying neighbors: send a message to trusted people during an alarm, for example via a Telegram bot or Signal.
- More Senvolon presence sensors: expand your system to as many rooms as you like. Every sensor brings radar detection, zones, and its own siren. All devices are managed centrally through Home Assistant.
Conclusion
With just a few Senvolon presence sensors KL MZ and Home Assistant, you get an alarm system that surpasses classic off-the-shelf solutions in several ways:
- Built-in siren in every sensor: no separate device, no extra effort. The alarm sounds everywhere it is detected.
- Freely configurable zones: you decide which areas are monitored, and keep the door, window, and center of the room separately in view.
- Double the use: the same zones that trigger the alarm when the system is armed can otherwise control the lighting. One sensor, two jobs.
- Full flexibility: thanks to Home Assistant, you design automations, schedules, and notifications exactly to your needs, and can expand the system at any time.
- No ongoing costs, no cloud dependency, full control over your data.
Ready to get started?
👉 Order the Senvolon presence sensor KL MZ in the shop
If you have questions, the Senvolon support team is happy to help: support@senvolon.de
All models compared: Presence sensors