A Home Assistant dashboard custom card for composing and sending rich PiPup notifications to Android TV and Fire TV — with reusable notification profiles, a full visual editor, and per-TV power control.
This card drives the PiPup fork by @mhoogenbosch. You need both pieces:
-
Home Assistant PiPup integration — provides the
pipup.showaction and the per-devicenotify/binary_sensor/switchentities this card uses.- Repo: https://github.com/mhoogenbosch/ha-pipup
- Install via HACS → Integrations → Custom repositories → add that repo as an Integration → install PiPup → restart Home Assistant.
- (Manual: copy
custom_components/pipupinto yourcustom_components/folder and restart.)
-
PiPup Android TV / Fire TV app (APK) — installed on each TV.
-
This fork is required — the Play Store build lacks the
/stateendpoint and indefinite popups. -
Some features gate on app version:
App version Unlocks ≥ 0.3.0 Buttons, progress bar, urgency border presets ≥ 0.7.0 Screen switch (TV power on/off), border styling
- Copy
pipup-notify-card.jsinto your Home Assistantconfig/www/folder. - Add it as a dashboard resource:
- Settings → Dashboards → ⋮ → Resources → Add Resource
- URL:
/local/pipup-notify-card.js· Type: JavaScript Module
- Hard-refresh the browser (Ctrl/Cmd+Shift+R). Confirm the console shows the loaded version, e.g.
[v2026.08.19.54]. - Add the card to a dashboard: Add Card → Custom: PiPup Notify Card (or
type: custom:pipup-notify-card).
- Compose & send a PiPup notification to one or more selected TVs.
- Target TVs list — each device is a collapsible row showing:
- a checkbox to include it as a send target,
- a Power chip (green On / yellow Off / grey Unknown),
- a connectivity Online/Offline chip (red = offline/problem),
- an expander that reveals per-device Power On / Power Off buttons and power automation options.
- Advanced Settings (collapsible) — Notification Title, Message, Display Time, Position, Urgency, background Color + Transparency, Title Color, Show progress / Speak aloud (TTS) / Dismissible, Action Buttons, Image/Video URL, Media Width.
- Profiles dropdown to instantly load a saved preset.
- Jinja templates supported in the Message field for live sensor data.
- Turn each TV on/off individually from the card.
- Power source per device is configurable (in the editor): the built-in PiPup Screen switch (auto), or an alternative
switch/remote/media_playerentity — e.g. the native Android TV (media_player/remote) or Google Cast (media_player) integrations. Domain filter checkboxes narrow the picker. - Turn On if Off — when sending, automatically wake a TV that's currently off.
- Turn Off After Send — automatically power a TV off after the notification, with a per-TV Off Delay slider (extra seconds added after the notification duration).
- Title (+ optional emoji), message, display time, screen position.
- Urgency presets (Info / Warning / Critical) for colored borders.
- Background color + transparency (0% solid → 100% invisible).
- Title color, show-progress bar, TTS ("speak aloud"), dismissible.
- Up to 3 action buttons — each fires a
pipup_buttonevent for automations. - Image / Video / media URL with adjustable media width.
- Save the full set of notification + target settings as a named profile.
- A built-in Default profile that can be edited but not deleted.
- Profiles are stored in the card config (shared dashboard YAML) and browser localStorage, so they sync across devices (PC ↔ mobile) once saved.
- Section visibility toggles (show/hide Advanced Settings, Message, Selected TVs).
- Title text, MDI icon, indent, font size, font weight, colors.
- Collapsible card; optional "use title icon in place of chevron"; expander rotates only when expanded.
- Title icon color: fixed, or by TV status (on/off colors driven by whether any TV is online).
- Card background: theme default / transparent / custom color.
- Border (per-side), glow (with "glow when any TV is online" and border-only options), and a plain drop shadow (color, offset, blur, spread, opacity).
- Fully collapsible, accordion-style settings panels (one open at a time), default collapsed.
- Color swatches carry a faint outline so dark colors stay visible on dark cards.
- Optional version-number display on the card (Admin Settings).
pipup.showtargets each TV'sbinary_sensor.pipup_*_popupentity, which the card resolves automatically from the selectednotify.*entity.- Turning a TV off via the PiPup Screen switch may require a one-time ADB grant per TV (see the integration docs).
- "Turn Off After Send" is scheduled client-side (
setTimeout) — it only fires while the dashboard/card stays loaded in the browser. For guaranteed off-timing, use a Home Assistant automation instead. - Fields not supported by the current integration schema (e.g. corner radius, animation, per-button color) are hidden in the editor but retained in the code for when/if the integration adds them.
Build number format: v<year>.<month>.<day>.<increment> — the trailing increment is a monotonic version counter that never resets. It's defined once at the top of pipup-notify-card.js (BUILD_NUMBER) and shown in the editor header and browser console on load.
- Card: LTek — github.com/Ltek/pipup-notify-card
- PiPup integration & Android app (fork): @mhoogenbosch — ha-pipup · PiPup APK
- Original PiPup app: rundfunk / PiPup project.