Docs/bilresa-scroll-wheel.yaml
IKEA BILRESA Scroll Wheel - 3 Light Presets
Manual import URL: https://github.com/0libote/HA-BPs/blob/main/blueprints/bilresa-scroll-wheel.yaml
Setup guide
IKEA BILRESA Scroll Wheel
IKEA BILRESA Scroll Wheel

Manual import URL:
https://github.com/0libote/HA-BPs/blob/main/blueprints/bilresa-scroll-wheel.yaml
This blueprint turns the three physical BILRESA presets into light profiles with one shared wheel feel. Each preset keeps its own lights and ordered colour list, or duplicates another preset. Brightness step, range, transitions and the centre-button layout are shared so there is far less to tune.
Presets 2 and 3 duplicate Preset 1 by default, so a single room works after configuring Preset 1 only.
Before you start
- Pair the BILRESA with Home Assistant through Matter.
- On the device page, identify the three
evententities for each preset: - Confirm that turning or pressing the control updates those event entities.
right/brighter, left/dimmer and centre push.
Configure
- Import the blueprint and select Create automation.
- In Remote buttons, select the 9 event entities, three per preset.
- In Lights and presets, select Preset 1 lights. Keep Presets 2 and 3
- In Wheel and centre button, set the shared brightness step, limits,
- In Colours, order Preset 1 colours. Add custom lists for Presets 2 and
- Save the automation and test tap, hold and both wheel directions.
duplicating Preset 1, or switch them to custom lights or disabled.
transition and tap/hold layout.
3 only when they use custom profiles.
Scrolling right while a preset's lights are off turns them on at the minimum brightness. Colour while off turns them on with the first colour.
Fast wheel movement uses Matter's totalNumberOfPressesCounted value. If the device itself aborts an over-limit multi-press and publishes no completed event, Home Assistant has no movement for the blueprint to recover.
Updating from an older version resets per-preset tuning to the new shared Wheel and Colour settings. Re-check those once after updating.
Troubleshooting
- No response: watch the selected event entity in Developer tools > States
- Wrong direction or button: re-check the three event entities selected for that
- Centre button does nothing: check the shared centre-button layout. Tap and
- Unexpected brightness: check the shared minimum, maximum and per-detent
and confirm it updates when the control is used.
preset.
hold are matched permissively across Matter tap/hold event names.
step before changing the automation logic.
Input reference
Every field, default and selector — generated from the YAML at build time.
| Input | Selector | Default |
|---|---|---|
Preset 1 - Right / Brighterbutton_1Preset 1 scroll-right event entity. | entity | "event.bilresa_unused_preset_1_button_1" |
Preset 1 - Left / Dimmerbutton_2Preset 1 scroll-left event entity. | entity | "event.bilresa_unused_preset_1_button_2" |
Preset 1 - Centre Pushbutton_3Preset 1 centre/push event entity. | entity | "event.bilresa_unused_preset_1_button_3" |
Preset 2 - Right / Brighterbutton_4Preset 2 scroll-right event entity. | entity | "event.bilresa_unused_preset_2_button_4" |
Preset 2 - Left / Dimmerbutton_5Preset 2 scroll-left event entity. | entity | "event.bilresa_unused_preset_2_button_5" |
Preset 2 - Centre Pushbutton_6Preset 2 centre/push event entity. | entity | "event.bilresa_unused_preset_2_button_6" |
Preset 3 - Right / Brighterbutton_7Preset 3 scroll-right event entity. | entity | "event.bilresa_unused_preset_3_button_7" |
Preset 3 - Left / Dimmerbutton_8Preset 3 scroll-left event entity. | entity | "event.bilresa_unused_preset_3_button_8" |
Preset 3 - Centre Pushbutton_9Preset 3 centre/push event entity. | entity | "event.bilresa_unused_preset_3_button_9" |
| Input | Selector | Default |
|---|---|---|
Preset 1 Modepreset_1_mode | select | "custom" |
Preset 1 Lightspreset_1_lightsLights controlled by this preset. Ignored when disabled. | entity | [] |
Preset 2 Modepreset_2_mode | select | "duplicate_preset_1" |
Preset 2 Lightspreset_2_lightsIgnored when duplicating Preset 1 or when disabled. | entity | [] |
Preset 3 Modepreset_3_mode | select | "duplicate_preset_1" |
Preset 3 Lightspreset_3_lightsIgnored when duplicating another preset or when disabled. | entity | [] |
| Input | Selector | Default |
|---|---|---|
Brightness Per Wheel Detentbrightness_stepPercentage changed for each reported wheel detent. | number | 10 |
Minimum Brightnessbrightness_minScrolling left will never go below this percentage. | number | 1 |
Maximum Brightnessbrightness_maxScrolling right will never go above this percentage. | number | 100 |
Brightness Transitionbrightness_transition | number | 0.2 |
Centre Button Behaviourcentre_layout | select | "tap_colour_hold_power" |
| Input | Selector | Default |
|---|---|---|
Preset 1 Colours to Cyclepreset_1_colour_presets | object | [{"name":"Warm White","colour":[255,166,87]},{"name":"Soft White","colour":[255, |
Preset 2 Colours to Cyclepreset_2_colour_presetsIgnored when duplicating Preset 1. | object | [] |
Preset 3 Colours to Cyclepreset_3_colour_presetsIgnored when duplicating another preset. | object | [] |
Colour Transitioncolour_transition | number | 0.5 |
Source
Full blueprint — also on GitHub.
blueprint:
name: IKEA BILRESA Scroll Wheel - 3 Light Presets
author: 0libote
description: |
Flexible light control for the IKEA BILRESA scroll wheel remote via Matter.
Created by @0libote
GitHub: https://github.com/0libote/HA-BPs
Setup is top-down: pick the 9 remote event entities, pick the lights for
each preset, then tune the shared wheel and colour feel once.
Each of the three physical BILRESA presets can:
- Control its own set of lights.
- Be disabled.
- Duplicate another preset's lights and colours.
- Share one brightness step, range and transition.
- Share one centre-button layout (Tap = Colour / Hold = Power, or reversed).
- Use its own ordered colour list with Home Assistant's RGB colour picker.
- Reorder colours by dragging them in the blueprint editor.
Presets 2 and 3 duplicate Preset 1 by default, so a single room works after
configuring Preset 1 only. Switch a preset to a custom profile when it
should control different lights or cycle different colours.
Wheel movement uses Matter's totalNumberOfPressesCounted value, so a quick
multi-detent spin is applied as one larger brightness change. Brightness is
clamped to the configured minimum and maximum. Scrolling right while the
preset's lights are off turns them on at the minimum brightness. Tapping
for colour while off turns them on with the first colour.
Updating from an older version resets per-preset tuning to the new shared
Wheel and Colour settings. Re-check those once after updating.
Important Matter limitation:
If the BILRESA itself aborts an over-limit multi-press sequence and sends no
completed event, a blueprint cannot recover that missing movement.
domain: automation
source_url: https://github.com/0libote/HA-BPs/blob/main/blueprints/bilresa-scroll-wheel.yaml
homeassistant:
min_version: 2025.7.0
input:
# ============================================================
# REMOTE
# ============================================================
remote:
name: Remote buttons
icon: mdi:remote
collapsed: false
description: |
The 9 BILRESA event entities, three per physical preset. On the device
page, identify right/brighter, left/dimmer and centre push for each
preset and confirm they update when the control is used.
input:
button_1:
name: Preset 1 - Right / Brighter
description: Preset 1 scroll-right event entity.
default: event.bilresa_unused_preset_1_button_1
selector:
entity:
filter:
- domain: event
button_2:
name: Preset 1 - Left / Dimmer
description: Preset 1 scroll-left event entity.
default: event.bilresa_unused_preset_1_button_2
selector:
entity:
filter:
- domain: event
button_3:
name: Preset 1 - Centre Push
description: Preset 1 centre/push event entity.
default: event.bilresa_unused_preset_1_button_3
selector:
entity:
filter:
- domain: event
button_4:
name: Preset 2 - Right / Brighter
description: Preset 2 scroll-right event entity.
default: event.bilresa_unused_preset_2_button_4
selector:
entity:
filter:
- domain: event
button_5:
name: Preset 2 - Left / Dimmer
description: Preset 2 scroll-left event entity.
default: event.bilresa_unused_preset_2_button_5
selector:
entity:
filter:
- domain: event
button_6:
name: Preset 2 - Centre Push
description: Preset 2 centre/push event entity.
default: event.bilresa_unused_preset_2_button_6
selector:
entity:
filter:
- domain: event
button_7:
name: Preset 3 - Right / Brighter
description: Preset 3 scroll-right event entity.
default: event.bilresa_unused_preset_3_button_7
selector:
entity:
filter:
- domain: event
button_8:
name: Preset 3 - Left / Dimmer
description: Preset 3 scroll-left event entity.
default: event.bilresa_unused_preset_3_button_8
selector:
entity:
filter:
- domain: event
button_9:
name: Preset 3 - Centre Push
description: Preset 3 centre/push event entity.
default: event.bilresa_unused_preset_3_button_9
selector:
entity:
filter:
- domain: event
# ============================================================
# LIGHTS
# ============================================================
lights:
name: Lights and presets
icon: mdi:lightbulb-group
collapsed: false
description: |
Pick which lights each preset controls. Duplicating reuses that
preset's lights and colour list. Disabled presets do nothing.
input:
preset_1_mode:
name: Preset 1 Mode
default: custom
selector:
select:
mode: dropdown
options:
- label: Custom profile
value: custom
- label: Disabled
value: disabled
preset_1_lights:
name: Preset 1 Lights
description: Lights controlled by this preset. Ignored when disabled.
default: []
selector:
entity:
multiple: true
filter:
- domain: light
preset_2_mode:
name: Preset 2 Mode
default: duplicate_preset_1
selector:
sel
… (truncated — see GitHub for full file)