window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster already exists') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Automatic Cat Feeder - The Codest
The Codest
  • About us
  • Services
    • Software Development
      • Frontend Development
      • Backend Development
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Data Engineers
      • Cloud Engineers
      • QA Engineers
      • Other
    • It Advisory
      • Audit & Consulting
  • Industries
    • Fintech & Banking
    • E-commerce
    • Adtech
    • Healthtech
    • Manufacturing
    • Logistics
    • Automotive
    • IOT
  • Value for
    • CEO
    • CTO
    • Delivery Manager
  • Our team
  • Case Studies
  • Know How
    • Blog
    • Meetups
    • Webinars
    • Resources
Careers Get in touch
  • About us
  • Services
    • Software Development
      • Frontend Development
      • Backend Development
    • Staff Augmentation
      • Frontend Developers
      • Backend Developers
      • Data Engineers
      • Cloud Engineers
      • QA Engineers
      • Other
    • It Advisory
      • Audit & Consulting
  • Value for
    • CEO
    • CTO
    • Delivery Manager
  • Our team
  • Case Studies
  • Know How
    • Blog
    • Meetups
    • Webinars
    • Resources
Careers Get in touch
Back arrow GO BACK
2020-04-28
The Codest

Automatic Cat Feeder

Arkadiusz Buras

Imagine such a situation: it is 6:00 AM on a Saturday morning, you are laying comfortably in your bed, still sleeping soundly. Suddenly, you hear your cat scratching on the door, its loud meows become unbearable and your cat has all the time in the world to let you know what its needs. Do you know what it really needs?

Imagine such a situation: it is 6:00 AM on a Saturday morning, you are laying comfortably in your bed, still sleeping soundly. Suddenly, you hear your cat scratching on the door, its loud meows become unbearable and your cat has all the time in the world to let you know what its needs. Do you know what it really needs? I know – your cat wants food now! Right now! How do I know that? Because at some point I started feeding my cat at that time… And, of course, it became a new standard time for getting food.

This scenario inspired me to build an automatic cat feeder, which would remove the troubles of morning cat feeding and keep the cat happy.

First generation

The first generation of the cat feeder was a simple MVP made of some cardboard, simple servo and ESP WeMos. It used servo to rotate the top container by 180 degrees to dispense the food.

A microcontroller was connected to my local Wi-Fi and communicated with the Smart Home server running HomeAssistant over the MQTT protocol. Thanks to that, I was able to use the HomeAssistant automation system to schedule feeding and dispensing food through Google Home commands. Each feeding was defined as a special event in the Google Calendar. It allowed me to easily control the cat’s feeding time and change it when necessary.

Of course, this generation encountered some problems:

  • the top container would sometimes detach from the servo handle and spill the whole food (I called it “the Jackpot Effect”),
  • it didn’t have the best design,
  • the cardboard started to deteriorate.

As with most MVPs, it was used for only 2 years until it broke.

Second generation

I decided that next cat feeder should:

  • be built from 3D printed parts,
  • use Raspberry Pi 3,
  • have a small camera to watch how cat reacted and what the animal was doing.

I started whole process from designing basic elements for food partitioning. Then, when the designs were ready, all elements were printed using the Creality Ender-3 and PLA

Parts

After ensuring that everything worked, I proceeded to designing and printing the rest of the parts:

Base for RaspberryPi (Level 0)

It has special places for screws to help install Raspberry Pi. Additionally, on the front, there is a small hole for easy access to Raspberry Pi’s SD card.

Bowl holder

This plastic part is used for placing a metal food bowl (of course, it was printed with gold filaments, for my cat’s fame and glory). It is connected with the base using 2 neodymium magnets.

Servo holder (Level 1)

This level is used for holding the servo while it rotates the part on the next level. It also has a small slope for better food serving.

Ration mechanism container (Level 2)

This is a simple generic level that portions food from a container placed above. It is rotated by the servo.

Food container holder (Level 3)

This part is used for holding the food container. It is the only plastic part that was not 3D printed. I wanted to minimize food contact with 3D printed parts. In theory, transparent PLA plastic doesn’t have any toxic contaminants, but I bought the cheapest cereal dispenser and took the food container part, just to be on the safe side. Also, it looks really cool.

Housing and lid

The last two parts were the housing and the lid. Nothing special here, except for more gold to make it look better and win the cat’s admiration.

All parts

Final assembly

Software

Raspberry Pi is running a Raspbian provisioned using the ansible playbook to run these services:

MotionEye

MotionEye is an open source software for building your own private monitoring. It detects any camera connected to Raspberry Pi. Additionally, out of the box, you get motion detection, an endpoint for sharing the stream and webhook support.

Servo service

This service controls the rotation of the servo. It is a simple Python script that connects to the MQTT server running my Smart House software and awaits for a message to trigger the rotation.

Led service

Just as the servo service, it implements a protocol for light source controlled by the MQTT in HomeAssistant.

Home assistant automation

And, finally, the HomeAssistant automation that triggers feeding.

It triggers food dispensing in two situations:

  • when the feeding time pops up in the calendar,
  • when the International Space Station is above my home location.

This automation code looks like this:

– alias: Feed the cat
trigger:
– platform: state
entity_id: ‘binary_sensor.iss’
from: ‘off’
to: ‘on’
– platform: state
entity_id: calendar.cat_feed_schedule
from: ‘off’
to: ‘on’
action:
– service: script.feed_the_cat

Summary

Obviously, this version isn’t the last one. But it serves its purpose – the cat is well nourished and I have my lazy mornings 🙂

Read more:

– E-commerce: New state of the game 2020 (report)

– How to run a business during the crisis?

– Ruby programming. Beginner’s terminal – part 2

Related articles

The Codest

The Codest Core Value #1

The Codest believes in four crucial values that are the core of all actions taken by The Codest teams. In this article, our CEO and co-founder, Greg Polec, explains what...

The Codest
Greg Polec CEO
The Codest

The Codest’s Success Story: Meet our Finance Lead Iza

In this article series, we share the stories of The Codest teammates who have had an impact on the present shape of our company. In the following piece, we ask...

The Codest
Monika Krupa Marketing Lead
The Codest

The Codest’s Success Story: Meet Lukasz Brzeszcz

This time the star of The Codest Success Story is Lukasz Brzeszcz, our Ruby software developer and programmer. How did Lukasz’s journey with The Codest begin and what helped him...

The Codest
Monika Krupa Marketing Lead
The Codest

Used MVP approach to successfully rebrand The Codest

Some time ago, we boasted about the new opening for The Codest. We carried out an intensive rebranding process and presented it to the world a few days ago. It...

The Codest
Jakub Czosnyka Marketing Lead
The Codest

TheCodestReview #2 – weekly software engineering juice

Hello and warm welcome in the 2nd episode of our TheCodesReview series. This week we have focused on quality in software engineering projects, the importance of frontend architecture and transition...

The Codest
Kamil Ferens Head of Growth

Subscribe to our knowledge base and stay up to date on the expertise from the IT sector.

    About us

    The Codest – International software development company with tech hubs in Poland.

    United Kingdom - Headquarters

    • Office 303B, 182-184 High Street North E6 2JA
      London, England

    Poland - Local Tech Hubs

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warsaw, Poland

      The Codest

    • Home
    • About us
    • Services
    • Case Studies
    • Know How
    • Careers
    • Dictionary

      Services

    • It Advisory
    • Software Development
    • Backend Development
    • Frontend Development
    • Staff Augmentation
    • Backend Developers
    • Cloud Engineers
    • Data Engineers
    • Other
    • QA Engineers

      Resources

    • Facts and Myths about Cooperating with External Software Development Partner
    • From the USA to Europe: Why do American startups decide to relocate to Europe
    • Tech Offshore Development Hubs Comparison: Tech Offshore Europe (Poland), ASEAN (Philippines), Eurasia (Turkey)
    • What are the top CTOs and CIOs Challenges?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Website terms of use

    Copyright © 2025 by The Codest. All rights reserved.

    en_USEnglish
    de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek en_USEnglish