See the Setup modes table on the Integration page if you are unfamiliar with the setup modes mentioned below.

In Manual mode, Pivot creates all the required entities and fires events on the HA event bus, but does not create any scripts or automations itself — you build everything from scratch.

If you use Automatic mode, custom automations are an optional layer you can add on top. Because Pivot fires events on every interaction regardless of mode, you can trigger your own automations in response to things the built-in behaviour does not handle — like using a button press on a specific bank to trigger a shell command or run a scene.

Pivot events carry enough context to let automations be as specific or as broad as you need:

  • which Pivot device was used
  • which bank was active
  • which entity is assigned to that bank
  • which button press type occurred (single_press, long_press, etc.)
  • the new value and direction of a knob turn

Example: Controlling a light in Manual mode

In Manual mode you need to handle both the knob and the button yourself. The example below sets a light’s brightness from the knob value and toggles it with a single press, for a device with suffix ha_voice_lounge and Bank 1 assigned to light.living_room.

Knob — set brightness

alias: Pivot Manual - Living Room Brightness

triggers:
  - trigger: event
    event_type: pivot_knob_turn
    event_data:
      suffix: ha_voice_lounge
      bank: 1

actions:
  - action: light.turn_on
    target:
      entity_id: light.living_room
    data:
      brightness_pct: "{{ trigger.event.data.value }}"

mode: single

Button — toggle on/off

alias: Pivot Manual - Living Room Toggle

triggers:
  - trigger: event
    event_type: pivot_button_press
    event_data:
      suffix: ha_voice_lounge
      bank: 1
      press_type: single_press

actions:
  - action: light.toggle
    target:
      entity_id: light.living_room

mode: single

Create one pair of automations like this per bank. You can use any entity domain and any action — the pattern is the same regardless of what you are controlling.

Available event fields — see the Integration reference for the full list of fields available on pivot_knob_turn and pivot_button_press events.


Example: Play/Pause computer media while Bank 1 is assigned to computer volume

This example adds behaviour on top of Automatic mode. Bank 1 is already controlling computer volume via an input_number helper — this automation adds a play/pause shell command to the same button press, but only fires it when that specific helper is assigned to Bank 1. Any other bank behaves normally.

The helper entity is input_number.example_computer_volume and the shell command is shell_command.music_playpause.

alias: Pivot Example - Computer Play Pause

triggers:
  - trigger: state
    entity_id: event.example_vpe_button_press
    not_from:
      - unavailable
    not_to:
      - unavailable
      - unknown

conditions:
  - condition: state
    entity_id: event.example_pivot_button_press
    attribute: event_type
    state: single_press

  - condition: numeric_state
    entity_id: number.example_pivot_active_bank
    above: 0
    below: 2

  - condition: template
    value_template: >
      {{ states('text.example_pivot_bank_0_entity') == 'input_number.example_computer_volume' }}

actions:
  - action: shell_command.music_playpause

mode: single