Wanted to share a project I’ve been working on for about 3 months: a complete ELK M1 Gold integration with HA.
System overview
- ELK M1 Gold with M1XEP (FW 2.0.51)
- 4x M1XIN expander boards (54 wired zones total)
- 14 PIR motion sensors + 40 door/window contacts
- 4x Vivotek IP cameras with VCA person detection
- UPB powerline lighting (54 lights, 17 scenes)
- ELK-124V3 voice module with 7 distributed speakers
- HomeKit bridge for Apple Home integration
Automations (61 total across 10 packages)
- Alarm response with light flash + camera snapshots + push notification disarm
- Presence-based auto-arm/disarm with geofencing
- Zone-triggered night lights (PIR + camera AI dual-source)
- Garage auto-close on timer while armed
- Camera AI webhook pipeline (person detection → boolean → timer)
- Camera push notifications with critical alerts when armed
- Security mode notifications on every arm/disarm state change
Key technical challenges solved
1. TLS connection: M1XEP 2.0.51 uses AES128-SHA cipher. HAOS OpenSSL 3.x blocks it. Fix: use elksv1_2:// URL scheme instead of elks://. No custom component needed.
2. Expander zone sync timing: sync_complete fires before expander SD chain finishes. Fix: auto_configure: False creates all entities regardless of sync state.
3. M1XEP TCP drop during alarm: Firmware drops TCP during active burglar alarm. Remote disarm silently fails. Workaround: double-disarm + integration reload. Real fix: physical keypad.
4. NO zone type suppression: M1 suppresses state changes on NO zones when disarmed. PIR motion sensors don’t trigger HA automations. Fix: change zone type to NC in ElkRP2.
5. YAML gotcha — to: on: Unquoted on in YAML is boolean True, not string “on”. Silently breaks triggers. Always quote: to: "on".
Automation architecture pattern
I use a Sensor → Boolean → Timer → Action pattern for everything:
Sensor fires (webhook, PIR, contact)
-> Set input_boolean ON
-> Automation triggers on boolean
-> Execute action + start timer
-> Timer expires -> boolean OFF
This decouples sensors from actions, works with HomeKit (booleans appear as switches), survives restarts, and allows multiple sensors to trigger the same boolean.
I documented the entire process with YAML templates in a guide if anyone’s interested: The Complete ELK M1 + Home Assistant Security Blueprint
I also write a twice-weekly newsletter covering HA automation patterns and security integration tips: The Automated Home
Happy to answer questions about the integration.