Picture Entity Card


The Picture Entity card displays an entity in the form of an image. Instead of images from URL, it can also show the picture of camera entities.

Picture entity card Background changes according to the entity state.

Configuration Variables

type string Required

picture-entity

entity string Required

An entity_id used for the picture.

camera_image string (Optional)

Camera entity_id to use. (not required if entity is already a camera-entity).

camera_view string (Optional, default: auto)

“live” will show the live view if stream is enabled.

image string (Optional)

URL of an image.

state_image map (Optional)

Map entity states to images (state: image URL, check the example below).

state_filter map (Optional)
aspect_ratio string (Optional)

Forces the height of the image to be a ratio of the width. You may enter a value such as: 16x9, 16:9, 1.78.

name string (Optional)

Overwrite entity name.

show_name boolean (Optional, default: true)

Shows name in footer.

show_state boolean (Optional, default: true)

Shows state in footer.

theme string (Optional)

Set to any theme within themes.yaml

tap_action map (Optional)

Action taken on card tap. See action documentation.

hold_action map (Optional)

Action taken on card tap and hold. See action documentation.

double_tap_action map (Optional)

Action taken on card double tap. See action documentation.

How to use state_filter

Specify different CSS filters

state_filter:
  "on": brightness(110%) saturate(1.2)
  "off": brightness(50%) hue-rotate(45deg)

Examples

Basic example:

type: picture-entity
entity: light.bed_light
image: /local/bed_light.png

Different images for each state:

type: picture-entity
entity: light.bed_light
state_image:
  "on": /local/bed_light_on.png
  "off": /local/bed_light_off.png

Displaying a live feed from an FFmpeg camera:

type: picture-entity
entity: camera.backdoor
camera_view: live
tap_action:
  action: call-service
  service: camera.snapshot
  service_data:
    entity_id: camera.backdoor
    filename: '/shared/backdoor-{{ now().strftime("%Y-%m-%d-%H%M%S") }}.jpg'

The filename needs to be a path that is writable by Home Assistant in your system. You may need to configure allowlist_external_dirs (documentation).