Core
Home Assistant is a centralized home automation platform designed to orchestrate diverse internet-connected devices and services. It functions as a local-first control system that normalizes heterogeneous hardware protocols into a unified set of entities, attributes, and services. The core architecture relies on an event-driven state bus and a modular integration model, allowing the system to manage state changes and communicate across decoupled components through standardized interfaces.
The platform distinguishes itself through a highly flexible, declarative configuration framework that allows users to define system behavior, automations, and entity settings using structured text files. It features a reactive automation engine that processes complex logic sequences triggered by state changes, temporal events, or external webhooks. To support advanced users, the system includes a template-based logic engine for dynamic data processing and a blueprint system that enables the reuse of pre-configured automation templates.
Beyond basic orchestration, the project provides a comprehensive suite of administrative and diagnostic tools. This includes granular identity and access management, energy monitoring for various utilities, and sophisticated organizational features like area, floor, and label management. The system also offers extensive developer utilities, such as real-time state inspection, automation execution tracing, and live template debugging, to assist in maintaining and troubleshooting complex configurations.
The system is configured primarily through YAML files, which are parsed and validated at runtime to ensure consistency across the integration ecosystem.
Features
- Home Automation Platforms - A centralized control system that orchestrates smart devices, automates environmental tasks, and manages state across diverse hardware integrations.
- Device Abstraction Layers - A middleware interface that normalizes heterogeneous hardware protocols into a consistent set of entities, attributes, and services.
- Local User Management - Home Assistant includes a built-in provider for managing local user accounts and credentials, storing hashed passwords and salts within the application configuration directory.
- Multi-Factor Authentication - Home Assistant enables multi-factor authentication by sending one-time passwords to specified notification channels, providing an additional layer of security for user login attempts.
- Logical Condition Evaluators - Home Assistant supports combining multiple conditions using logical operators to evaluate complex criteria, including nested structures for precise automation control.
- Time-based One-Time Passwords - Home Assistant supports time-based one-time password authentication, requiring a six-digit code from a mobile authenticator application to verify user login attempts.
- Trusted Network Authentication - Home Assistant allows bypassing password authentication for requests originating from specified IP addresses or network ranges to simplify local access.
- Event-Driven Automation Engines - A reactive processing layer that executes complex logic sequences triggered by state changes, temporal events, or external webhooks.
- Event-Driven Automations - Defining complex logic and sequences that trigger actions based on real-time state changes, sensor data, or scheduled events.
- State-Change Triggers - Home Assistant enables executing automations when entity states change, with options to filter by specific state transitions or the duration of a state.
- Template-Based Logic Engines - "Processes dynamic expressions and conditional logic at runtime to enable flexible automation triggers, state transformations, and custom notifications."
- Automation Templates - Home Assistant enables the creation of automation blueprints by converting existing automations into reusable YAML files with configurable inputs and metadata.
- Script Sequences - Home Assistant allows defining a sequence of actions using a list of maps, supporting optional aliases for each step to improve readability.
- Event-Based Triggers - Home Assistant supports executing automations when specific system events occur, with options to filter by event data or user context for precise control.
- Home Automation Frameworks - Home Assistant provides a comprehensive framework for configuring automated tasks by defining triggers, conditions, and actions that respond to environmental state changes.
- Smart Home Orchestration - Centralizing control of diverse IoT devices and services into a unified, local-first automation platform for residential environments.
- System Action Executions - Home Assistant enables the execution of system actions, such as toggling devices or running scripts, by passing parameters to specific domains and services.
- Action Execution Engines - Home Assistant enables executing actions on entities or devices by specifying the action name and target identifiers to control components.
- Template Condition Validators - Home Assistant allows executing custom logic by evaluating boolean templates, enabling complex state checks and dynamic condition assessment.
- Automation Blueprints - Home Assistant allows creating automations by selecting a blueprint, naming the instance, and configuring required parameters directly within the editor.
- Component Selectors - Home Assistant enables targeting specific entities, devices, or areas for actions, with optional filtering based on entity or device properties.
- Device Selectors - Home Assistant enables picking single or multiple devices, with optional filtering by manufacturer, model, provided entities, or device class.
- Entity Selectors - Home Assistant supports picking single or multiple entities, with optional filtering by integration, domain, device class, or specific inclusion lists.
- Automation Triggers - Home Assistant allows assigning unique identifiers to triggers, enabling them to be referenced in automation conditions or actions and grouped for complex logic.
- Automation Variable Definitions - Home Assistant enables the definition of variables for triggers to use in templates, supporting blueprint inputs and templated values for flexible automation logic.
- Execution Flow Controls - Home Assistant supports pausing script execution until a specific state condition is met via a template or until a trigger event occurs.
- Automation Configuration Management - Home Assistant allows including automation files in the main configuration to ensure that automations created via the graphical interface are correctly loaded and visible.
- Automation Execution Modes - Home Assistant provides configurable execution modes to control concurrent triggers, supporting single-instance execution, queuing, or parallel processing for complex automation logic.
- Automation State Access - Home Assistant allows templates to access current automation state and trigger variables, enabling the evaluation of conditions based on the user context that initiated execution.
- State Inspection Tools - Home Assistant provides developer tools to inspect the current state of entities, including unique identifiers and associated attributes, to inform automation logic.
- Time-Based Triggers - Home Assistant allows executing automations at specific times using fixed strings, input datetime entities, or sensor timestamps with optional offsets.
- Webhook Triggers - Home Assistant supports executing automations via incoming HTTP webhooks, providing options for custom methods and local-only network restrictions.
- Dependency Injection Registries - "Manages the lifecycle and discovery of system services by dynamically loading and linking components based on configuration requirements."
- Parallel Execution Strategies - Home Assistant supports executing multiple actions simultaneously rather than sequentially, allowing independent tasks to run at the same time to improve performance.
- Blueprint Action Sequences - Home Assistant supports inputting sequences of actions in the editor to generate a list of tasks to be performed by the system.
- Concurrency Control Policies - "Manages overlapping automation and script triggers by enforcing specific execution policies like queuing, parallel processing, or single-instance restarts."
- Scene Configurations - Home Assistant allows defining scenes in YAML by specifying a friendly name and a list of entities with their desired states or attributes.
- Automation Trigger Contexts - Home Assistant enables access to event-specific trigger details within templates, allowing for dynamic modification of automation actions based on the initiating event.
- Floor-Based Organizations - Home Assistant allows grouping multiple areas into a single floor to facilitate automation actions that target all devices within that level.
- Floor Management - Home Assistant allows creating, editing, and deleting floors, defining names and levels to organize areas within the home environment.
- Automation Execution Tracing - Home Assistant provides interactive graphs and step-by-step timelines to inspect the execution history of automations, helping to debug logic paths and state changes.
- Blueprint Area Selectors - Home Assistant allows picking single or multiple areas, with optional filtering based on associated devices, entities, manufacturers, or integration domains.
- Event-Driven State Buses - "Coordinates system-wide communication by broadcasting state changes and events to decoupled components through a centralized asynchronous message bus."
- Component Integration Models - "Encapsulates external hardware and service logic into isolated modules that communicate via standardized interfaces and shared entity registries."
- Declarative Configuration Frameworks - A structured system for defining infrastructure, automation logic, and user preferences using human-readable configuration files and schemas.
- Entity Abstraction Layers - "Maps physical devices and virtual sensors to unique identifiers, decoupling hardware-specific implementation details from high-level automation and dashboard logic."
- Declarative Configuration Files - "Defines system behavior, automations, and entity settings through structured text files that are parsed and validated at runtime."
- Blueprint Input Configurations - Home Assistant allows configuring user-provided inputs with custom selectors and default values, enabling dynamic and reusable configuration fields within the interface.
- YAML Configuration Schemas - Home Assistant supports configuring automation behavior using YAML, including unique identifiers, execution modes, variable injection, and trace storage settings for advanced debugging.
- Extensible Integration Ecosystems - A modular architecture that allows third-party components to extend core functionality through standardized discovery, authentication, and communication protocols.
- Spatial Organizations - Home Assistant supports organizing devices and entities into physical rooms to enable targeted automation actions and automatic generation of dashboard cards.
- Configuration Modularization - Home Assistant supports modularizing configuration files by splitting them into smaller YAML files using include statements for better organization and readability.
- Configuration Validation Tools - Home Assistant provides command-line tools to validate configuration files, identifying syntax errors or invalid entries before restarting the system.
- Configuration Editors - Home Assistant supports editing configuration files by providing file access and allowing users to choose an appropriate editor based on their installation type.
- Configuration Environment Variables - Home Assistant supports including values from environment variables or external YAML files to improve configuration readability and manage sensitive data across environments.
- Configuration File Parsers - Home Assistant supports configuring the scene integration to read from YAML files, enabling the visual editor to manage scene definitions automatically.
- Integration Domain Identifiers - Home Assistant allows identifying integration and entity domains to understand how components provide functionality and services within the system.
- Entity State Management - Home Assistant represents the current state of an entity at a specific moment, including attributes and timestamps for monitoring and control.
- State Context Trackers - Home Assistant tracks the origin of state changes by attaching unique identifiers to events, allowing automations to trace the cause of updates.
- State Transition Controllers - Home Assistant allows applying transition durations to scene activations to smoothly interpolate light states over a specified time period.
- Energy Usage Monitoring - Home Assistant allows measuring energy production by installing current transformer clamp sensors on electrical wires to calculate usage and feed data into the system.
- Remote Access Tunnels - Home Assistant enables secure remote access to the network via an encrypted, managed tunnel that requires no router port configuration or manual exposure.
- Event Monitoring Systems - Home Assistant allows monitoring the event bus to react to system-wide events, such as state changes, service calls, or automation triggers.
- General System Configuration - Home Assistant provides administrative interfaces and configuration files to manage general system settings, including location and network parameters.
- Device Energy Monitoring - Home Assistant enables monitoring energy usage of individual devices by installing smart plugs or relays between outlets and appliances.
- Electricity Meter Integrations - Home Assistant supports integrating electricity meter data using hardware interfaces like P1 ports or Zigbee to monitor real-time energy consumption.
- Integration Diagnostics - Home Assistant allows downloading diagnostic data for specific integrations to assist in identifying and resolving complex configuration or runtime issues.
- Safe Modes - Home Assistant supports restarting the system in a restricted environment that disables custom integrations to isolate and identify performance issues.
- Energy Tariff Configurations - Home Assistant allows configuring energy usage tracking to account for time-of-day pricing, separating consumption data into peak and off-peak periods.
- Gas Meter Integrations - Home Assistant enables connecting gas meters using P1 ports, optical recognition, or wireless signals to track real-time consumption data.
- Home Battery Integrations - Home Assistant allows integrating battery energy data using vendor APIs or by measuring current flow with external hardware sensors.
- Solar Inverter Integrations - Home Assistant supports connecting solar inverters directly to the energy monitoring system using APIs to track and report real-time production data.
- Debug Logging Management - Home Assistant enables the management of debug logging for specific integrations to capture detailed runtime information for troubleshooting and issue reporting.
- System Command Execution - Home Assistant enables the execution of administrative commands, including integration reloads or server management tasks, directly from the quick search interface.
- System Configuration Management - Organizing and validating complex infrastructure settings through modular files, version-controlled configurations, and administrative diagnostic tools.
- Recovery Modes - Home Assistant provides a restricted recovery mode that loads only essential integrations, allowing users to perform manual repairs on configuration issues.
- Identity and Access Control - Managing secure user authentication, multi-factor security, and granular permission levels for local and remote system access.
- User Account Management - Home Assistant allows administrators to create and manage user accounts, defining security settings, access privileges, and multi-factor authentication requirements for individual system users.
- Secrets Management - Home Assistant centralizes sensitive configuration data into a dedicated secrets file to prevent hardcoding credentials within the main system configuration.
- Secret Management Systems - Home Assistant allows managing sensitive credentials by storing them in a dedicated file and referencing them via identifiers to prevent exposure.
- Dynamic Templates - Home Assistant allows defining dynamic content in scripts using a templating language to process states and attributes for customized output.
- Command Palettes - Home Assistant provides a global search dialog accessible via keyboard shortcuts to instantly access entities, devices, commands, and system links.
- Configuration Reloaders - Home Assistant supports reloading configuration files and validating settings for specific integrations to apply changes immediately without requiring a full system restart.
- Entity State Inspection - Home Assistant enables manual inspection and overriding of entity states and attributes at runtime to simulate device behavior for testing purposes.
- Event Bus Management - Home Assistant allows firing custom events onto the internal bus or subscribing to active event streams to inspect real-time data payloads for debugging.
- Live Template Editors - Home Assistant includes a live editor for templates that provides real-time output and access to live entity data for rapid iteration.
- Statistics Data Management - Home Assistant provides tools to view long-term historical data for entities, allowing users to identify trends and correct inaccurate data points.
- Script Variable Management - Home Assistant allows setting or overriding variables within a script sequence to store data accessible to subsequent actions and templates.
- Area Management Systems - Home Assistant allows creating and editing areas by defining names, icons, floor assignments, and voice assistant aliases.