Files
advanced-camera-card/docs/configuration/conditions.md
T

21 KiB

conditions

conditions is not a top-level configuration block, but can be used as part of multiple other blocks.

Conditions are used to conditionally take action (in automations), to apply certain configurations (in overrides) or to display "picture elements" (in elements) depending on runtime evaluation.

[used as part of other configuration]
  conditions:
    - [condition_1]
    - [condition_2]

and

Evaluates to true if all embedded conditions evaluate to true. At least one condition is required.

conditions:
  - condition: and
    # [...]
Parameter Description
condition Must be and.
conditions A list of other conditions all of which must evaluate true in order for this condition to evaluate true.

camera

Matches based on the selected camera. Does not match other cameras (whether visible or not).

conditions:
  - condition: camera
    # [...]
Parameter Description
condition Must be camera.
cameras An optional list of camera IDs in which this condition is satisfied. If not specified, any camera change will satisy the condition. See the camera id parameter.

config

Matches when card configuration changes (e.g. on startup, or when Configuration Overrides are applied).

conditions:
  - condition: config
    # [...]
Parameter Description
condition Must be config.
paths An optional array of configuration paths (e.g. menu.style). If provided condition matches if ANY of the provided configuration paths has changed.

display_mode

Matches when card display mode changes (e.g. single or grid mode). See the display settings for live or media_viewer.

conditions:
  - condition: display_mode
    # [...]
Parameter Description
condition Must be display_mode.
display_mode Must be single or grid.

expand

Matches based on whether the card is in "expanded" mode.

conditions:
  - condition: expand
    # [...]
Parameter Description
condition Must be expand.
expand If true the condition is satisfied if the card is in expanded mode (in a dialog/popup). If false the condition is satisfied if the card is NOT in expanded mode (in a dialog/popup).

fullscreen

Matches based on whether the card (or media within it) is in fullscreen mode.

Warning

When fullscreen is entered via a video player's built-in controls (rather than the card's own fullscreen action or menu button), the browser fullscreens the video element itself rather than the card. Any automation action that replaces that video element (e.g. switching substreams) will immediately exit fullscreen. A partial workaround may be to use the card's fullscreen action instead. See Fullscreen with HD substream switching for an approach that combines substream switching with the card's fullscreen.

conditions:
  - condition: fullscreen
    # [...]
Parameter Description
condition Must be fullscreen.
fullscreen If true the condition is satisfied if the card is in fullscreen mode. If false the condition is satisfied if the card is NOT in fullscreen mode.

initialized

Matches when the card is first initialized.

conditions:
  - condition: initialized
Parameter Description
condition Must be initialized.

Note

This is exclusively useful for running automations on card start.

interaction

Matches based on whether the card has been interacted with.

conditions:
  - condition: interaction
    # [...]
Parameter Description
condition Must be interaction.
interaction If true the condition is satisfied if the card has had human interaction within view.interaction_seconds elapsed seconds. If false the condition is satisfied if the card has NOT had human interaction in that time.

key

Matches based on key state.

conditions:
  - condition: key
    # [...]
Parameter Default Description
condition - Must be key.
alt false An optional value to match whether the alt key is being held.
ctrl false An optional value to match whether the ctrl key is being held.
key Any keyboard key value, e.g. ArrowLeft.
meta false An optional value to match whether the meta key is being held.
shift false An optional value to match whether the shift key is being held.
state down An optional value to match the state of the key. Must be one of down or up.

media_loaded

Matches based on whether the selected live or media stream has loaded.

conditions:
  - condition: media_loaded
    # [...]
Parameter Description
condition Must be media_loaded.
media_loaded If true the condition is satisfied if there is media loadED (not loadING) in the card (e.g. a clip, snapshot or live view). This may be used to hide controls during media loading or when a message (not media) is being displayed.

Note

Toggling a substream on or off does not cause this condition to transition. Substream is treated as a playback-layer detail of the same logical camera, so the condition remains satisfied while any stream of the camera continues to render.

microphone

Matches based on microphone state.

conditions:
  - condition: microphone
    # [...]
Parameter Description
condition Must be microphone.
connected Optional: If true or false the condition is satisfied if the microphone is connected or disconnected respectively.
muted Optional: If true or false the condition is satisfied if the microphone is muted or unmuted respectively.

When multiple parameters are specified they must all match for the condition to match.

not

Evaluates to true if every embedded condition is false. At least one condition is required.

[!IMPORTANT] > not is a NOR operation, not a NAND. If any sub-condition is true, the not condition evaluates to false — even if other sub-conditions are false. To pass, all sub-conditions must be false. This behavior matches the Home Assistant equivalent.

conditions:
  - condition: not
    # [...]
Parameter Description
condition Must be not.
conditions A list of other conditions none of which must evaluate true in order for this condition to evaluate true.

numeric_state

Matches based on numeric Home Assistant state.

conditions:
  - condition: numeric_state
    # [...]

See Home Assistant conditions documentation.

or

Evaluates to true if any embedded condition evaluates to true. At least one condition is required.

conditions:
  - condition: or
    # [...]
Parameter Description
condition Must be or.
conditions A list of conditions any of which must evaluate true in order for this condition to evaluate true.

screen

Matches based on media queries.

conditions:
  - condition: screen
    # [...]
Parameter Description
condition Must be screen.
media_query Any valid media query string. Media queries must start and end with parentheses. This may be used to alter card configuration based on device/media properties (e.g. viewport width, orientation). Please note that width and height refer to the entire viewport not just the card.

See the screen conditions examples.

state

Matches based on Home Assistant state.

conditions:
  - condition: state
    # [...]
Parameter Description
condition Must be state.
entity The entity to check the state of.
state A single entity state, or list of entity states, against which the entity state is compared.
state_not A single entity state, or list of entity states, against which the entity state is inversely compared.

Note

If multiple state conditions are used together with neither state nor state_not specified, this effectively means the state for multiple entities needs to change simultaneously. This is unlikely to happen in reality, and almost certainly not useful / reliable as a condition.

See Home Assistant conditions documentation.

template

Matches based on a template.

conditions:
  - condition: template
    # [...]
Parameter Description
condition Must be template.
value_template The Home Assistant template to check, e.g. {{ states('switch.office') == 'on' }}

See Home Assistant conditions documentation.

Tip

The Advanced Camera Card uses ha-nunjucks to process templates. Consult its documentation for the wide variety of different template values supported.

triggered

Matches based on whether the selected camera has been triggered.

conditions:
  - condition: triggered
    # [...]
Parameter Description
condition Must be triggered.
triggered A list of camera IDs which, if triggered, satisfy the condition.

user

Matches based on the Home Assistant user that is logged in. See Home Assistant conditions documentation.

conditions:
  - condition: user
    # [...]

user_agent

Matches based on the User-Agent.

conditions:
  - condition: user_agent
    # [...]
Parameter Description
condition Must be user_agent.
user_agent Exactly matches a user-agent, e.g. Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
user_agent_re Matches a user-agent based on a regular expression, e.g. Chrome/.
casting If true matches if the card is being cast to a Chromecast / TV device, if false matches if the card is NOT being cast.
companion If true matches if the user-agent is the Home Assistant companion app, if false matches if the user-agent is NOT the Home Assistant companion app.

When multiple parameters are specified they must all match for the condition to match.

See the user-agent overrides example.

view

Matches based on the selected view.

conditions:
  - condition: view
    # [...]
Parameter Description
condition Must be view.
views An optional list of views in which this condition is satified (e.g. clips). If not specified, any view change will satisy the condition.

Important

Internally, views associated with the media viewer (e.g. clip, snapshot, review recording) are translated to the media view after the relevant media is fetched. When including views as part of a condition, you may need to refer to the media view.

Fully expanded reference

conditions:
 - condition: camera
   cameras:
     - camera.office
  - condition: config
    paths:
      - "menu.style"
  - condition: display_mode
    display_mode: single
  - condition: expand
    expand: true
  - condition: fullscreen
    fullscreen: true
  - condition: initialized
  - condition: interaction
    interaction: true
  - condition: key
    alt: false
    ctrl: false
    key: F
    meta: false
    shift: false
    state: down
  - condition: media_loaded
    media_loaded: true
  - condition: microphone
    connected: true
    muted: true
  - condition: numeric_state
    entity: sensor.office_temperature
    above: 10
    below: 20
  - condition: screen
    media_query: '(orientation: landscape)'
  - condition: state
    entity: climate.office
    state: heat
    state_not: off
  - condition: triggered
    triggered:
      - camera.office
  - condition: user
    users:
      - 581fca7fdc014b8b894519cc531f9a04
  - condition: user_agent
    user_agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"
    user_agent_re: "Chrome/"
    casting: true
    companion: true
  - condition: view
    views:
      - live