Home Assistant scenes are one of the most satisfying features to set up. In a single action — a dashboard tap, a voice command, or a scheduled automation — a scene instantly sets every light, blind, speaker, and switch in a room to exactly the state you want. This guide explains what scenes are, how they differ from scripts and automations, and walks you through creating them both via the visual editor and YAML configuration.
What Are Home Assistant Scenes?
A scene is a snapshot of device states. When you activate a scene, Home Assistant restores every entity listed in that scene to its saved state — brightness, colour temperature, on/off, media source, and so on. Scenes do not have an "on" or "off" state themselves; they are stateless actions. Home Assistant does record the timestamp of the last time each scene was called, which you can use in automations if needed.
Unlike an automation — which fires automatically when a trigger occurs — or a script — which executes a sequence of steps in order — a scene simply applies a fixed set of desired states to your devices all at once. That makes scenes ideal for ambiance presets: a scene does not loop, delay, wait for conditions, or branch. It sets states and exits.
Think of scenes as named presets. Once you save a "Movie Night" scene, any part of Home Assistant — an automation, a dashboard button, or a voice assistant — can invoke it with a single call.
Scenes vs Scripts vs Automations
Knowing which tool to reach for saves a lot of frustration. Here is a quick comparison:
- Scene: Sets multiple devices to predefined states instantly. No triggers, no logic, no sequences. Best for ambiance presets.
- Script: Executes a sequence of actions, which may include delays, conditions, and service calls. Has no built-in trigger — something else must call it. Best for reusable multi-step procedures. See our scripts guide for a full walkthrough.
- Automation: Combines a trigger, optional conditions, and actions (which can include calling scenes or scripts). Best for hands-free, event-driven behaviour. Our Home Assistant automations guide covers this in depth.
A common pattern is to use scenes as building blocks inside automations: the automation detects that it is evening and someone is home, then calls the "Evening Relax" scene as its action.
Creating a Scene via the UI
The visual scene editor is the easiest starting point. Navigate to Settings → Automations & Scenes → Scenes tab, then click Add Scene in the lower-right corner. Give your scene a meaningful name — "Movie Night", "Good Morning", "Away" — and optionally pick an icon from the Material Design Icons set.
Next, add the devices and entities you want the scene to control. Click Add device to browse your paired hardware, or Add entity to select specific entities (for example, individual bulbs within a Philips Hue group). Home Assistant immediately enters "edit mode": adjust every device to its desired state now — dim the lights, set colour temperature, turn off what should be off. The editor updates your devices in real time so you can see exactly what the scene will look like.
When everything looks right, click Save. Home Assistant captures the current state of every selected entity and stores it in the scene. When you leave the editor, your devices return to the states they were in before you started editing — your home does not stay in scene mode.
You can return to edit a scene at any time: open it, adjust devices as needed, and save again to update the stored states.
Creating Scenes via YAML
YAML gives you precise control and is reproducible across installations. Scenes can be defined in your main configuration.yaml file, or — to keep things tidy — in a separate scenes.yaml file that you reference with scene: !include scenes.yaml.
The minimum required fields are name and entities. Entity states can be simple on/off strings, or full attribute dictionaries for lights with colour and brightness:
scene:
- name: Movie Night
icon: mdi:television-play
entities:
light.living_room_ceiling:
state: "on"
brightness: 50
color_temp: 400
light.tv_backlight:
state: "on"
brightness: 80
color_mode: "xy"
xy_color: [0.18, 0.08]
light.floor_lamp: "off"
media_player.tv:
state: "on"
source: "HDMI 1"
cover.living_room_blinds:
state: "closed"
- name: Good Morning
icon: mdi:weather-sunny
entities:
light.bedroom_ceiling:
state: "on"
brightness: 180
color_temp: 250
cover.bedroom_blinds:
state: "open"
climate.thermostat:
state: "heat"
temperature: 20
Brightness values run from 0 to 255. Colour temperature is in mireds (lower = cooler white, higher = warmer). After editing YAML scenes, reload them without restarting Home Assistant: go to Developer Tools → YAML → Reload Scenes, or call the scene.reload action.
Activating Scenes
Scenes can be triggered from almost anywhere in Home Assistant.
Dashboard Button
Add a Button card to your dashboard and set the tap action to Call service → scene.turn_on, selecting your scene entity. Alternatively, add a Scene card, which shows the scene name, icon, and last-activated timestamp. For a more polished layout, the Lovelace dashboard guide covers card types and layouts in detail.
Automation Action
Inside an automation, add an action of type Activate scene and pick your scene from the dropdown:
action:
- action: scene.turn_on
target:
entity_id: scene.movie_night
data:
transition: 2
The optional transition parameter smoothly fades lights to their target brightness over the specified number of seconds — useful for a gentle evening wind-down.
Voice Command
If you have Google Assistant or Amazon Alexa connected to Home Assistant, scenes are exposed as routines or scenes in those ecosystems. Say "Hey Google, activate Movie Night" and the cloud assistant calls scene.turn_on on your local instance. Home Assistant's built-in voice assistant (powered by local Whisper and Piper) can also activate scenes once configured.
Script Step
You can call a scene from within a script, which lets you sequence scene changes with delays — for example, activate "Sunrise Warm" and then two minutes later activate "Morning Bright":
sequence:
- action: scene.turn_on
target:
entity_id: scene.sunrise_warm
- delay: "00:02:00"
- action: scene.turn_on
target:
entity_id: scene.morning_bright
Practical Examples
Movie Night
Goal: dim the lights to a low warm glow, lower the blinds, switch the TV to the correct input, and turn off bright overhead lights.
- name: Movie Night
entities:
light.living_room_ceiling:
state: "on"
brightness: 40
color_temp: 450
light.tv_backlight:
state: "on"
brightness: 90
light.kitchen_lights: "off"
cover.living_room_blinds:
state: "closed"
media_player.tv:
state: "on"
source: "HDMI 2"
Good Morning
Goal: ease into the day with cool-white light, open the bedroom blinds, and nudge the thermostat up to a comfortable temperature.
- name: Good Morning
entities:
light.bedroom_ceiling:
state: "on"
brightness: 200
color_temp: 250
cover.bedroom_blinds:
state: "open"
climate.heating:
state: "heat"
temperature: 20
Pair this with a time-based automation set to 07:00 on weekdays and your home begins its day before you even pick up your phone.
Away Mode
Goal: ensure everything is off when the last person leaves home. Combine with presence detection automations for a fully hands-free result.
- name: Away
entities:
light.all_lights: "off"
switch.sockets: "off"
climate.thermostat:
state: "heat"
temperature: 15
cover.all_blinds:
state: "open"
Dynamic Scenes with Adaptive Lighting
Adaptive Lighting is a popular HACS custom component that adjusts your lights' colour temperature and brightness throughout the day to follow the sun — warm amber in the evening, cool white at noon. It works well alongside scenes, but there is one important caveat: if your scene explicitly sets a colour or brightness value, Adaptive Lighting treats those lights as manually controlled and stops adapting them.
The recommended approach is to activate your scene and then immediately call the adaptive_lighting.set_manual_control service with manual_control: false for the relevant lights. This signals to the integration that the lights are now free to be adapted again. Some users prefer to create scenes that only set the on/off state — leaving colour and brightness unspecified — so Adaptive Lighting retains full control of those parameters.
For scene-based setups that want fully automatic colour tuning, consider pairing the best smart bulbs with Adaptive Lighting and keeping scenes focused on which devices are on or off rather than their exact colour values.
On-the-Fly Scenes with scene.apply and scene.create
scene.apply lets you specify states inline without needing a pre-saved scene entity — useful in automations where you want to apply states that depend on runtime conditions:
action: scene.apply
data:
entities:
light.living_room:
state: "on"
brightness: 120
color_temp: 350
transition: 1
scene.create goes further: it creates a named, reusable scene at runtime. Combine it with snapshot_entities to capture the current state of a device and store it for later recall — handy for "save my current lighting" buttons:
action: scene.create
data:
scene_id: my_saved_state
snapshot_entities:
- light.living_room_ceiling
- light.floor_lamp
Note that scenes created with scene.create are held in memory and discarded when Home Assistant restarts or when scene.reload is called.
Troubleshooting Common Issues
Scene does not seem to do anything. Check that the entities in the scene are available (not unavailable) in Developer Tools → States. If a device is offline, Home Assistant skips it silently.
Lights flash briefly then return to their previous state. This often means Adaptive Lighting is overriding the scene states. Either set manual_control: false after activating the scene, or remove colour/brightness attributes from the scene so Adaptive Lighting is not competing.
YAML scene changes are not picked up. After editing scenes.yaml, use Developer Tools → YAML → Reload Scenes rather than restarting the entire instance. A full restart is not needed for scene changes.
Voice assistant cannot find the scene. Scene names are exposed to voice assistants through the cloud integration. Ensure scenes are not marked as hidden in entity settings, and try resyncing your Google Home or Alexa account from the integration settings page.
Scene entity ID is not what I expected. Home Assistant derives the entity ID from the scene name at creation time. Rename a scene and the entity ID does not automatically update — you may need to manually edit the entity ID in Settings → Entities to keep automations working.




