Home Assistant projects
All projects

Presence Card

Lovelace card · Security & presence
v1.12.0 · Nov 12, 2026 HA 2024.8.0+ Marketplace

The people of the house: at home, in a zone or away, since when and how far.

Reads the person entities, nothing to install: each person with their picture, place, time there, distance from home and phone battery, plus a single-row mini card.

Highlights

  • Every person found automatically
  • Badge and colour per state: home, zone, away, unknown
  • Time in the current place and distance from home
  • Phone battery level
  • Movements of the last 24 hours
  • Direction of travel from the Proximity integration
  • Travel time home for people away, from a Waze or Google Maps sensor
  • Mini card on a single row with a zoom button

Cards

presence-cardpresence-mini-card
type: custom:presence-card

Install

  1. 1Open the repository in the Marketplace with the Add to Marketplace button above, or addgithub.com/juju35/ha-presence-card as a custom repository (category Dashboard).
  2. 2Download it from the Marketplace.
  3. 3Reload the browser and add the card from the dashboard editor.

Documentation

From the README

Features

Features

  • Two cards: a full Presence Card and a compact Presence Mini Card
  • Mini card on a single row, like the Alarm mini card: logo, title, summary in color and round avatars (name and place on hover); the avatars go under the title as soon as the title and summary would no longer fit in full next to them
  • Zoom button at the top right of the mini card: it switches to the full card and back; a click anywhere outside the card brings the compact view back
  • All person entities by default, or a chosen list, with an optional name or picture per person
  • Person picture, or colored initials when the person has none
  • Badge and color per state: home (green), zone (blue, with the zone name), away (grey), unknown (orange)
  • How long each person has been there ("for 3 h 12 min"), refreshed every minute
  • Distance from home for people away, in km or miles following the Home Assistant unit system
  • Direction of travel (arriving, leaving, stationary) for people away, from the core Proximity integration's sensors, found automatically
  • Travel time home for people away, from a travel time sensor you give each person (Waze, Google Maps)
  • Phone battery, found automatically: battery sensor of the tracker's device (Companion app) or the tracker's battery attribute; orange at 40 %, red at 20 %
  • Header summary: "2 of 4 at home", "Everyone is home", "Nobody home"
  • People at home first, by name, or as listed
  • Last 24 hours: a folded section under the people with their movements of the day — arrivals home, departures, arrivals in and departures from a zone, with the time — read from the history when unfolded; it folds back on a click elsewhere
  • Click a person or a battery to open its more-info dialog
  • Visual editor in the dashboard UI for both cards (no YAML needed)
  • Light and dark mode, English, French, German, Spanish, Serbian (Cyrillic and Latin), Italian, Dutch, European Portuguese, Polish, Romanian, Danish, Swedish, Bulgarian, Russian, Ukrainian, Hungarian, Slovak, Czech, Slovenian, Latvian and Greek
  • Single file, no external dependency

Prerequisites

Prerequisites

Home Assistant 2024.8 or later, with people set up in Settings → People (each with a device tracker for the location).

Configuration

Configuration

Visual editor#

Edit a dashboard, click Add card and search for Presence Card or Presence Mini Card. Every person is shown by default; pick some in the list to restrict it, set an optional title, the order, what to display and the language. Options left at their default are kept out of the generated YAML.

Minimal#

type: custom:presence-card
type: custom:presence-mini-card

Full options#

type: custom:presence-card
entities:
  - person.alex
  - entity: person.sam
    name: Sam
    picture: /local/sam.jpg
    proximity_direction: sensor.home_sam_direction_of_travel
    proximity_distance: sensor.home_sam_distance
    travel_time: sensor.sam_to_home
title: Family
sort: presence
show_since: true
show_distance: true
show_direction: true
show_travel: true
show_battery: true
show_away: true
language: fr
type: custom:presence-mini-card
entities:
  - person.alex
  - person.sam
title: Family
sort: presence
show_away: true
zoom: true
language: fr

Options reference#

Option Card Default Description
entities both All people People to show: person entity ids, or objects with entity and an optional name, picture, proximity_direction and proximity_distance (the person's Proximity sensors, when not found automatically), and travel_time (a travel time sensor home, such as Waze Travel Time)
title both Presence Card title
show_title both true Show the title in the header (e.g. false under a section heading of your own)
show_subtitle both true Show the subtitle under the title
sort both presence Order: presence (at home, then in a zone, then away), name, or config (as listed)
show_since both true How long each person has been in their current state
show_distance both true Distance from home for people away
show_direction both true Direction of travel (arriving, leaving, stationary) for people away, from the Proximity sensors
show_travel both true Travel time home of the people away, from their travel_time sensor (in any unit: s, min, h)
show_battery both true Phone battery
show_away both true Show the people away (false keeps only people at home or in a zone)
show_moves both true Folded Last 24 hours section with the arrivals and departures from the history (false removes it)
zoom mini true Zoom button at the top right: switches to the full card and back (false removes it)
language both Auto Force language: en, fr, de, es, sr, sr-Latn, it, nl, pt, pl, ro, da, sv, bg, ru, uk, hu, sk, cs, sl, lv or el (auto-detects from HA settings; pt-BR uses pt)

show_since, show_distance, show_direction, show_battery and show_moves apply to the mini card once zoomed in; the mini card also adds the direction of travel to each avatar's tooltip.

Note for the sections view: Lovelace sizes the cell when the dashboard loads and offers no way for a card to ask for a resize afterwards, so the zoomed-in mini card keeps the compact card's cell and simply grows taller inside it.

How it works

How it works

  • State: home is at home, not_home is away, unknown / unavailable is unknown, any other state is the name of the zone the person is in.
  • Since: the last_changed time of the person entity.
  • Distance: the person's Proximity distance sensor when there is one, else the great-circle distance between the person's latitude / longitude and zone.home.
  • Direction of travel: the Proximity integration creates, for each person it tracks, a direction of travel sensor and a distance sensor (sensor.<proximity>_<person>_direction_of_travel and sensor.<proximity>_<person>_distance in English). The card finds them in the entity registry (platform proximity, whatever the language of their names), matching the person's id or name in their entity id; proximity_direction / proximity_distance on a person set them by hand. towards shows as arriving, away_from as leaving, stationary as stationary; arrived and unknown show nothing. With several proximities for one person, the first one found is used: set the sensors by hand to choose.
  • Battery: for each tracker of the person (the one in use first), the battery sensor of the same device (sensor.*_battery_level or sensor.*_battery, as created by the Companion app), else the tracker's battery_level / battery attribute.

Support

Support

If you find this project useful, you can support its development:

Buy Me a Coffee

1.12.0Nov 12, 2026Latest

Features

  • show_title and show_subtitle options (also in the visual editor) hide the header's title and its subtitle, separately, for a card placed under a section heading of its own (asked in juju35/ha-vehicle-card#72).

1.11.1Nov 9, 2026

Maintenance

  • No code change: released again to check the installation from the Marketplace.

1.11.0Nov 9, 2026

Features

  • Travel time home: give a person a travel_time sensor (Waze Travel Time, Google Maps Travel Time…) and the card shows how long they are from home while they are away, next to the distance. show_travel: false hides it.

1.10.1Nov 9, 2026

Fixes

  • Translations: the cards are defined once the page's language file has arrived (at most 1.5 s; Home Assistant builds a card when its element gets defined), so the first render is already translated instead of English then redrawn; until a language file is in, a missing text reads the English one wherever the card has no fallback of its own.

1.10.0Nov 9, 2026

Performance

  • Translations load on demand: the bundle keeps English only (94 KB → 65 KB) and each other language is its own presence-card.i18n.<lang>.js file next to it, fetched the first time a card needs it. Home Assistant loads every dashboard resource on every dashboard, so each page used to download and parse all 22 languages to use one. Until a language file has arrived (a few milliseconds), texts fall back to English, and the cards redraw once it is there.

Maintenance

  • Build: scripts/i18n-split.mjs splits the built bundle and rebuilds every table from the split files to check them (the build fails on any difference); src/ keeps every language as before.
  • Release: every file of dist/ is attached. Manual installation copies the translation files too.

1.9.0Nov 8, 2026

What's new

  • Distances are written in the number format of the card's language (decimal separator, thousands, unit).
  • Dates, times and distances keep the region of the Home Assistant profile (pt-BR, en-GB, fr-CA…), and Portuguese uses European Portuguese formats.
  • In a Home Assistant language the card does not translate (Japanese, Finnish, Turkish…), dates, times and distances keep that language's formats; only the texts are in English.
  • Without any Proximity sensor in the entity registry, the card no longer searches the states for them at each update.