PetFeedr

wip repo Updated Apr 2026

Raspberry Pi automated pet feeder with a PWA web interface, smart scheduling with randomization, and one-command deployment.

I have two ragdoll cats - Frida and Charlie - and the store-bought feeder wasn’t cutting it.

Store-boughtPetFeedr
Power4x D batteriesUSB-powered Pi
CapacitySmall hopper, frequent refillsCustom hopper size
StabilityLightweight, cats knocked it overHeavy, secured base
LidPopped open on impact, food everywhereLocking lid
ProgrammingTiny LCD, bad button ergonomicsWeb interface from any device
ScheduleFixed times onlyRandomization mode (±30 min)

I built a Raspberry Pi-powered feeder with a web interface, microstepping motor control, and a deploy pipeline - admittedly a lot of engineering for two cats, but it’s been running reliably for about two years now.

What it does

Configurable feeding schedule with portion sizes - small, medium, or large. An optional randomization mode shifts each feeding by up to 30 minutes daily so the cats don’t learn the exact schedule. (They figured out the general window anyway.)

The web interface shows a visual timeline of today’s schedule, a 14-day activity log, and weekly stats with portion tracking. There’s a manual feed button for on-demand use. The whole thing installs as a PWA.

PetFeedr dashboard in dark mode

How it works

flowchart TD
  A[Schedule engine] --> B{Feed?}
  B -->|No| F[Sleep + retry]
  F -.-> A
  B -->|Yes| C[Anti-jam agitation]
  C --> D[Stepper motor dispense]
  D --> E[Log portion + timestamp]

Python and Flask on a Raspberry Pi, driving a NEMA 17 stepper motor through a DRV8825 driver. The motor runs at 1/16 microstepping for quiet operation, with an anti-jam agitation cycle that reverses slightly before each dispense. Portion control is calibrated to step count - 100 steps per quarter cup.

PetFeedr settings sidebar showing feeding time configuration with portion sizes and randomization toggle

The scheduling engine runs as a systemd service that auto-restarts on failure. A deploy script handles SSH-based updates with automatic backups. Runs headless on the local network.

A simulation mode auto-detects missing GPIO and mocks it, so the web interface works on any machine during development.

Updates

2026-04-26

V1 has been running reliably for about two years. I’m exploring a v2 focused on simplifying the design, reducing cost, and improving the aesthetics.