-
-
Notifications
You must be signed in to change notification settings - Fork 45
Custom Integrations & Cards
A custom Lovelace card for Home Assistant to view and manage feeding schedules for supported pet feeders (such as PetLibro Smart Pet Food Feeders).
🔗 Source repository: https://github.com/cristianchelu/dispenser-schedule-card
The Dispenser Schedule Card provides a simple interface for managing automated feeding schedules directly from the Home Assistant dashboard.
It supports:
- Viewing scheduled feed times
- Adding, editing, and removing schedule entries
- Toggling schedules on/off
- Displaying feed amounts and statuses
The card is designed for use with Home Assistant Lovelace and integrates with feeder devices via sensors and services.
- 📅 Schedule visualization (daily / weekly support)
- ✏️ Edit, add, and remove feed entries
- 🔄 Enable/disable individual schedule entries
- ⚖️ Custom units and alternate unit conversion
- 🌍 Multi-language support
- 🐾 Support for multiple feeder types
Recent updates include:
- Weekly schedule support
- Multi-compartment feeder support
- Improved UI and compatibility fixes for newer Home Assistant versions
Or follow these steps:
- Open HACS (Home Assistant Community Store)
- Click on the three dots in the top right corner
- Click on
Custom repositories - In the Repository field, enter https://github.com/cristianchelu/dispenser-schedule-card/
- In the Category field, select
Dashboard - Click on
Add - Search for
Dispenser Schedule Cardin the list - Install the card
More information and screenshots in the official guide: https://hacs.xyz/docs/faq/custom_repositories/
Download dispenser-schedule-card.min.js from the Releases tab of this
repository and place it in under your www folder, then add this as resource
type "Javascript Module", by following the official HA guide:
https://developers.home-assistant.io/docs/frontend/custom-ui/registering-resources
The Dispenser Schedule Card can be used with PetLibro feeders by setting the device type to petlibro and providing your feeder's device_id.
The
device_idshould be your specific dry food feeder's device ID. The easiest way to find it is by opening the device in Home Assistant and checking the device URL.
type: custom:dispenser-schedule-card
device:
type: petlibro
device_id: 3eec2118e5895c302f33ba8d0e14a80aThis example adds support for toggling today's feeding schedule on or off from the card.
type: custom:dispenser-schedule-card
device:
type: petlibro
device_id: 3eec2118e5895c302f33ba8d0e14a80a
switch:
state_entity: binary_sensor.jet_s_feeder_today_s_feeding_schedule
off_button: button.jet_s_feeder_disable_all_plans_today
on_button: button.jet_s_feeder_enable_all_plans_todayReplace the
device_id,binary_sensor, andbuttonentities with the ones from your own PetLibro feeder.
- Full schedule view for today
- Toggle support for enabling/disabling today's schedule
- Skipping today's remaining feeds
- Skipping, disabling, deleting, and editing individual entries
- Adding new scheduled feeds
- This can be configured to control only today's schedule instead of the full schedule.
Disabling the schedule skips all remaining feeds for today (excluding feeds that have already occurred).
Supports skipping, disabling, deleting, and editing individual entries.
Supports adding feeds to the schedule (maximum of 10 entries, limited by PetLibro).
For users who previously used the custom markdown card created by @yuejon, you can continue using a similar layout with the updated PetLibro schedule format.
This version also supports displaying disabled feeds.
| Meal | Time | Amount | Recurring | Status |
| {{ plan.label }} | {{ plan.time }} | {{ plan.amount_g }}g | ||
| {{ plan.label }} | {{ plan.time }} | {{ plan.amount_g }}g | {% if plan.recurring == true %} {% else %} {% endif %} | {% if plan.state == 'dispensed' %} {% elif plan.state == 'to_be_skipped' %} {% elif plan.state == 'skipped' %} {% elif plan.state == 'pending' %} {% elif plan.state == 'unknown' %} {% else %} {% endif %} |
Replace
binary_sensor.jet_s_feeder_feeding_schedulewith your own feeder's binary sensor.
| Option | Required | Description |
|---|---|---|
device |
✅ | Device configuration |
editable |
❌ |
always, toggle, or never
|
unit_of_measurement |
❌ | Label for feed amount |
alternate_unit |
❌ | Secondary unit conversion |
display |
❌ | Customize states and UI |
| Option | Required | Description |
|---|---|---|
type |
✅ |
xiaomi-smart-feeder, xiaomi-smart-feeder-2, petlibro, or custom
|
entity |
❌ | Sensor containing schedule data (required for some device types, e.g. Xiaomi) |
device_id |
❌ | Device ID (required for petlibro devices) |
switch |
❌ | Switch configuration (entity or buttons depending on device type) |
actions |
❌ | Add/edit/remove/toggle services |
You can override labels, colors, and icons for statuses:
display:
failed:
color: var(--success-color)
label: Task failed successfully
My Custom State:
color: hotpink
icon: mdi:scale- Home Assistant with Lovelace UI
- Home Assistant version 2026.4.0 or newer
- A compatible feeder integration (e.g., ESPHome or Xiaomi)
Note: For v0.7.0 and newer, the
device:configuration block is required.
Created by Cristian Chelu.
PetLibro integration support and contributions by C4-Dimitri.
Original markdown card concept by yuejon.
If you enjoy this integration and want to support its development, please consider backing the co-developers. On the discussions board, you’ll find their support links along with direct links to their GitHub profiles.