Presence Card
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
type: custom:presence-cardInstall
- 1Open the repository in the Marketplace with the Add to Marketplace button above, or add
github.com/juju35/ha-presence-cardas a custom repository (category Dashboard). - 2Download it from the Marketplace.
- 3Reload the browser and add the card from the dashboard editor.
Gallery 4
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
personentities 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:
homeis at home,not_homeis away,unknown/unavailableis unknown, any other state is the name of the zone the person is in. - Since: the
last_changedtime 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/longitudeandzone.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_travelandsensor.<proximity>_<person>_distancein English). The card finds them in the entity registry (platformproximity, whatever the language of their names), matching the person's id or name in their entity id;proximity_direction/proximity_distanceon a person set them by hand.towardsshows as arriving,away_fromas leaving,stationaryas stationary;arrivedandunknownshow 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_levelorsensor.*_battery, as created by the Companion app), else the tracker'sbattery_level/batteryattribute.
Changelog
All 28 versions 1.12.0Nov 12, 2026Latest
Features
show_titleandshow_subtitleoptions (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_timesensor (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: falsehides 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>.jsfile 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.mjssplits 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.