Integration
The Pivot HA integration provisions all required entities for a Pivot device and, depending on setup mode, can create the required scripts and automations automatically.
Install via HACS from alistairmerritt/pivot-integration.
Setup modes
| Mode | What Pivot does |
|---|---|
| Automatic | Writes files to /config/pivot/ and adds a single !include line to your scripts.yaml and automations.yaml. Fully managed — created and removed automatically. |
| Blueprints | Copies blueprint files into /config/blueprints/. You create the automations yourself from the HA UI. |
| Manual | Pivot does not touch any YAML files. Bank control and event firing still work — see Custom Automations for a guide to building your own. |
The setup mode can be changed at any time from the integration’s Configure menu. Switching away from Automatic will remove the files Pivot created.
Entities
Number entities
| Entity | Purpose |
|---|---|
number.{suffix}_bank_0_value |
Bank 1 value (0–100%) |
number.{suffix}_bank_1_value |
Bank 2 value (0–100%) |
number.{suffix}_bank_2_value |
Bank 3 value (0–100%) |
number.{suffix}_bank_3_value |
Bank 4 value (0–100%) |
number.{suffix}_active_bank |
Active bank (1–4) |
Switch entities
| Entity | Purpose |
|---|---|
switch.{suffix}_control_mode |
Control Mode vs Normal (voice) Mode |
switch.{suffix}_show_control_value |
Keep gauge LEDs permanently visible in control mode |
switch.{suffix}_dim_when_idle |
Dim gauge LEDs to 50% after 2 s of inactivity (requires Show Control Value) |
switch.{suffix}_announcements |
Enable/disable spoken announcements |
switch.{suffix}_bank_0_mirror_light |
Bank 1 — mirror assigned RGB light colour |
switch.{suffix}_bank_1_mirror_light |
Bank 2 — mirror assigned RGB light colour |
switch.{suffix}_bank_2_mirror_light |
Bank 3 — mirror assigned RGB light colour |
switch.{suffix}_bank_3_mirror_light |
Bank 4 — mirror assigned RGB light colour |
Text entities
| Entity | Purpose |
|---|---|
text.{suffix}_bank_0_entity |
Entity assigned to Bank 1 |
text.{suffix}_bank_1_entity |
Entity assigned to Bank 2 |
text.{suffix}_bank_2_entity |
Entity assigned to Bank 3 |
text.{suffix}_bank_3_entity |
Entity assigned to Bank 4 |
Reserved value: Setting a bank entity to
timer(lowercase) marks that bank as a timer bank for use with the Pivot Timer blueprint. The knob has no effect on a timer bank — the LED gauge is managed entirely by the blueprint. Any other value is treated as a Home Assistant entity ID.
Binary sensor entities
| Entity | Purpose |
|---|---|
binary_sensor.{suffix}_bank_0_passive |
On when Bank 1 entity is a scene, script, switch, or input_boolean (knob disabled) |
binary_sensor.{suffix}_bank_1_passive |
On when Bank 2 entity is a scene, script, switch, or input_boolean (knob disabled) |
binary_sensor.{suffix}_bank_2_passive |
On when Bank 3 entity is a scene, script, switch, or input_boolean (knob disabled) |
binary_sensor.{suffix}_bank_3_passive |
On when Bank 4 entity is a scene, script, switch, or input_boolean (knob disabled) |
Timer entities
These entities are provisioned per device but disabled by default. Enable them individually in the HA entity registry if you want to use the Pivot Timer feature.
| Entity | Purpose |
|---|---|
number.{suffix}_timer_duration |
Timer duration in minutes (1–60, default 25) |
select.{suffix}_timer_state |
Timer state — idle, running, or paused |
text.{suffix}_timer_end |
Internal — stores the countdown end time while the timer is running |
Do not rename Pivot entity IDs. The firmware and integration use your
device_suffixto build entity IDs at runtime. Renaming any of these entities in Home Assistant will break the connection between the firmware and the integration. If you need to label entities more clearly, change the entity’s Name — not its Entity ID.
Mirror light colour
Each bank has an optional Mirror light colour switch (switch.{suffix}_bank_N_mirror_light). When enabled for a bank that is assigned to an RGB light, the bank’s LED ring colour will match the current colour of that light instead of the fixed default bank colour.
- Mirror on, knob idle — LED ring uses the light’s current RGB colour, updating whenever the light changes.
- Mirror on, knob turning (value change) — the gauge arc shows the light’s current colour as it updates the brightness or volume, just as at idle.
- Mirror on, bank switching (press + turn) — the Bank Indicator quadrant shows the bank’s configured colour (Blue/Orange/Green/Purple or your custom colour from the picker), not the light colour, so you can tell which bank you are on even when all your lights are the same colour (e.g. white).
- Mirror on, light off — LED ring stays at the last mirrored colour until the light comes back on.
- Mirror off — LED ring shows the colour set in the bank’s colour picker. If you haven’t changed it, this will be the default bank colour (Blue, Orange, Green, or Purple).
This is a persistent per-bank setting, not a temporary effect. It only applies to RGB lights — if the assigned entity is not a compatible RGB light, the bank falls back to its default colour automatically.
Dim LEDs when idle
When Dim LEDs When Idle is enabled, the control mode gauge dims to 50% brightness after 2 seconds of no interaction and returns to full brightness the moment you touch the device again.
- Idle means no knob turns, button presses, or bank switches for 2 seconds.
- Waking is instant — LEDs snap back to full brightness on the first interaction.
- Fading to dim is smooth — a 1.5 second transition so there is no sudden flicker.
- This is a pure brightness modifier — it does not change colours, values, or any other behaviour.
Requires Show Control Value to be on. Dim when idle has no effect if the gauge is not permanently visible. Enable Show Control Value first, then enable Dim LEDs When Idle.
Supported entity domains
When an assigned entity is changed externally — by a voice command, another dashboard, an automation, or a physical switch — Pivot automatically syncs the new state back into the bank value. The LED gauge will update to reflect the change without any additional configuration.
| Domain | Knob (Control Mode) | Button press |
|---|---|---|
light |
Brightness % | Toggle on/off |
media_player |
Volume (0–100%) | Play/pause |
fan |
Speed % | Toggle on/off |
climate |
Temperature (16–30°C) | Toggle on/off |
cover |
Position % | Toggle open/close |
input_number / number |
Value scaled to entity min–max | — |
switch / input_boolean |
— | Toggle |
scene |
— | Activate |
script |
— | Run |
Passive banks show no gauge. When a bank is assigned to a passive domain (switch, input_boolean, scene, or script), the LEDs turn off — there is no value for the knob to control, so nothing is shown. The bank colour ring still appears briefly while pressing and turning to switch banks as normal.
Events
Pivot fires two events on the HA event bus regardless of setup mode.
pivot_knob_turn
Fired whenever the knob is turned in Control Mode.
| Field | Description |
|---|---|
suffix |
Device suffix |
bank |
Active bank (1–4) |
bank_entity |
Entity assigned to the active bank |
value |
New value (0–100) |
delta |
Change since last turn (positive = clockwise) |
pivot_button_press
Fired on every button press regardless of mode.
| Field | Description |
|---|---|
suffix |
Device suffix |
bank |
Active bank (1–4) |
bank_entity |
Entity assigned to the active bank |
press_type |
single_press, double_press, triple_press, or long_press |
control_mode |
true if in Control Mode |
Built-in press behaviours
| Press type | Built-in behaviour |
|---|---|
single_press |
Toggles or activates the active bank’s assigned entity (Automatic mode only, requires entity assigned) |
double_press |
Toggles Control Mode on/off |
triple_press |
Announces the active bank’s assigned entity name via TTS (if announcements configured) |
long_press |
No built-in behaviour |
Custom automations triggered by these events always stack on top of built-in behaviour — they do not replace it. If you want a press that only runs your automation:
- Use
long_press— no built-in behaviour regardless of entity assignment - Leave the bank entity field empty and use
single_press— with no entity assigned, Pivot has nothing to toggle
How Automatic mode manages files
Pivot writes its own dedicated files to a /config/pivot/ subfolder — they do not appear alongside your other config files in /config/.
| File | Description |
|---|---|
pivot/pivot_{suffix}_bank_toggle.yaml |
Bank toggle script |
pivot/pivot_{suffix}_announcements.yaml |
Announcements automation |
It adds a single !include line for each file into your scripts.yaml and automations.yaml. These are the only changes Pivot makes to those files — it never touches any other content.
On every load, Pivot rewrites its own !include lines from scratch: any stale, duplicate, or broken entries for its keys are removed and replaced with a single correct line. This means the integration is self-healing — if an include line ever becomes inconsistent (e.g. after a manual edit or a failed update), it will be corrected automatically without any user action.
On removal or mode change, Pivot removes the files it created and its !include lines from scripts.yaml and automations.yaml.
Before modifying scripts.yaml or automations.yaml for the first time, Pivot creates a one-time backup:
scripts.yaml.pivot_backupautomations.yaml.pivot_backup
Pivot also validates its generated YAML before writing — if anything is invalid, it aborts and logs an error rather than writing a broken file.