Integration to integrate with Inner Range Inception security systems.
If this integration has been useful to you, please consider chipping in and buying me a coffee!
This integration will set up the following platforms:
| Platform | Description |
|---|---|
lock |
A lock for each configured Door. |
number |
A number input which is used to define the duration of a timed unlock operation for each Door. |
select |
A select which is used to choose the unlock operation of each door (i.e. Unlock or Timed Unlock). |
alarm_control_panel |
For each Area that can be armed or disarmed. |
binary_sensor |
For each Input and for Door attributes such as Open or Isolated states. |
sensor |
Diagnostic sensor for the last received review event. |
switch |
A switch for each Siren or Strobe, switches to control custom inputs (activate/deactivate), and switches to control review event monitoring. |
For each door that the authenticated user has permission to access, the following entities are created:
- A
lockentity to lock and unlock the door. By default, thelock.unlockaction will permanently unlock the door. - A
selectentity to choose the unlock operation of the door. The options areUnlockorTimed Unlock. - A
numberentity to set the duration of a timed unlock operation. The duration is in seconds and the default value is 5 seconds. binary_sensorentities which indicate: Open, Forced, Held Open to Long, Reader Tamper
For each area that the authenticated user has permission to access, the following entities are created:
- An
alarm_control_panelentity to arm and disarm the area. If multi-mode area arming is enabled, Night and Perimeter modes are also available. PIN code requirements can be configured in the integration options (see Configure alarm code options).
For each input that the authenticated user has permission to access, the following entities are created:
- A
binary_sensorentity to indicate the state of the input. Calculated inputs such as forced and held open are disabled by default. The device class is inferred from the input's name. - A
switchentity to control if the input has been Isolated
Custom inputs created in the Inception system have additional functionality:
- An Active switch to control the activation state of the custom input
- Allows you to programmatically activate or deactivate custom inputs from Home Assistant
- Useful for triggering automation macros configured in the Inception system
- The switch state reflects whether the custom input is currently active
Custom inputs can be used to integrate Home Assistant automations with Inception system logic. For example, you could create a custom input in Inception that triggers specific actions (unlocking multiple doors, changing area modes, etc.) and then activate it from Home Assistant based on any trigger or condition.
For each output that the authenticated user has permission to access, the following entities are created:
- A
switchentity to control the output. Typically a siren or strobe.
The integration provides diagnostic sensors for monitoring and troubleshooting:
- Last Review Event Sensor: A diagnostic sensor that displays the message description of the most recently received review event. All event data is available as entity attributes including event ID, timestamps, who/what/where information, and message details. This sensor is automatically disabled when review event monitoring is turned off and is useful for debugging event reception and creating dashboards showing recent security activity.
The integration includes configuration switches to control review event monitoring:
- Global Review Events Switch: Master switch to enable/disable all review event monitoring
- Category Switches: Individual switches for each event category (System, Audit, Access, Security, Hardware) allowing fine-grained control over which types of events are monitored
The integration provides custom services for advanced control of Inception entities.
Unlocks a door with optional timed unlock functionality.
Target: Lock entities (lock domain)
Parameters:
time_secs(optional): Number of seconds to grant access. If provided, performs a timed unlock. If omitted, performs a permanent unlock.- Type: Integer
- Default: Permanent unlock (no time limit)
Example:
# Permanent unlock
service: inception.unlock
target:
entity_id: lock.front_door
# Timed unlock for 30 seconds
service: inception.unlock
target:
entity_id: lock.front_door
data:
time_secs: 30Arms an area with custom exit delay and seal check settings. This service provides fine-grained control over the arming process beyond the standard alarm panel controls.
Target: Alarm control panel entities (alarm_control_panel domain)
Parameters:
-
exit_delay(optional): Enable exit delay when arming. When enabled, provides time to exit the premises before the system fully activates.- Type: Boolean
- Default: System default
-
seal_check(optional): Check if all inputs are sealed (inactive/closed) before arming. When enabled, arming will fail if any inputs are unsealed.- Type: Boolean
- Default: System default
-
code(optional): PIN code for arming the area.- Type: String
- Default: None (If omitted, defaults to the user which is associated with the integration's configured API token.)
Example:
# Arm with default system behavior
service: inception.area_arm
target:
entity_id: alarm_control_panel.main_area
data:
code: "1234"
# Arm without exit delay (instant arm)
service: inception.area_arm
target:
entity_id: alarm_control_panel.main_area
data:
exit_delay: false
code: "1234"
# Force arm without checking if inputs are sealed
service: inception.area_arm
target:
entity_id: alarm_control_panel.main_area
data:
seal_check: false
code: "1234"
# Instant arm and bypass seal check
service: inception.area_arm
target:
entity_id: alarm_control_panel.main_area
data:
exit_delay: false
seal_check: false
code: "1234"The integration emits Home Assistant events for real-time security notifications:
The integration automatically monitors and emits inception_review_event events for security activities such as:
- Door access attempts (card access, PIN entry)
- Area arming/disarming activities
- Input state changes (motion detection, door sensors)
- System events (tamper alerts, communication errors)
Event Data Structure:
{
"event_id": "evt_123",
"description": "Card access granted",
"message_category": "Access",
"message_value": "2011",
"message_description": "Door Access Granted from Access Button",
"when": "2025-09-14T21:48:41.3832147+10:00",
"who": "John Doe",
"what": "Front Door",
"where": "Main Entrance",
"when_ticks": 1701432600
}Event Fields:
event_id: Unique identifier for the eventdescription: Human-readable description from the systemmessage_category: Category of the message (e.g., "Access", "Security")message_value: Category of the message (e.g., 2001, 5000)message_description: Detailed description based on the MessageID (automatically added by integration)when: Timestamp in ISO 6801 formatreference_time: The timestamp of the event in UTC ticks in string form, used as a reference point to query for newer eventswho: The name of the Inception User or entity that triggered this event, if applicablewho_id: The Inception ID of the entity who triggered this eventwhat: The name of the Inception entity that was affected by this event, if applicablewhat_id: The Inception ID of the entity who was affected by this eventwhere: The name of the area or location where the event occurred, if applicablewhere_id: The Inception ID of the entity where the event was triggered
Using in Automations:
automation:
- alias: "Log Security Events"
trigger:
platform: event
event_type: inception_review_event
event_data:
message_category: "Access"
action:
- service: logbook.log
data:
name: "Security System"
message: "{{ trigger.event.data.description }} - {{ trigger.event.data.who }} at {{ trigger.event.data.where }}"
- alias: "Alert on Security Breach"
trigger:
platform: event
event_type: inception_review_event
event_data:
message_value: 5501 # Input Event Created
action:
- service: notify.mobile_app
data:
message: "Security Alert: {{ trigger.event.data.description }}"
- alias: "Door Access Notification"
trigger:
platform: event
event_type: inception_review_event
event_data:
message_category: "Access"
action:
- service: notify.mobile_app
data:
title: "Door Access"
message: "{{ trigger.event.data.message_description }} - {{ trigger.event.data.who }} at {{ trigger.event.data.what }}"Note: Review events are only available if your Inception user account has permission to access the review/audit logs. If you see 404 errors in the logs, contact your system administrator to enable review event permissions.
Recommended installation is via the Home Assistant Community Store (HACS).
If you do not wish to use HACS, then please download the latest version from the releases page and proceed to Step 2.
- Navigate to the HACS add-on
- Search for the
Inceptionintegration and install it - Restart Home Assistant
- Navigate to Home Assistant Settings > Devices & Services
- Click
+ Add Integration - Search for
Inception - Complete the guided configuration
After adding the integration, you can configure how the alarm control panel handles PIN codes:
- Navigate to Home Assistant Settings > Devices & Services
- Find the Inception integration and click
Configure - Adjust the following options:
| Option | Description | Default |
|---|---|---|
| Require pin code | When enabled, a code is required for area arming/disarming. If disabled, area operations will be performed as the user which is associated with the configured API token. | Enabled |
| Require code to arm | When enabled, a valid code must be entered to arm the alarm. When disabled, a code is only required for disarming. | Disabled |
I strongly recommend creating a new user in Inception for Home Assistant to use.
Grant the user permission to access required entities

Grant the user REST Web API User web page profile and create a User API Token

If you want to contribute to this please read the Contribution guidelines
This integration is a custom component Home Assistant port of the excellent inception-mqtt project by @matthew-larner.

